支持Server自定义WAF策略、改进节点版本号等等

This commit is contained in:
刘祥超
2021-01-18 20:41:37 +08:00
parent d48eb8c7b0
commit 25d9d79c67
7 changed files with 543 additions and 251 deletions

View File

@@ -33,6 +33,8 @@ type NodeConfig struct {
SystemServices map[string]maps.Map `yaml:"systemServices" json:"systemServices"` // 系统服务配置 type => params
paddedId string
firewallPolicies []*firewallconfigs.HTTPFirewallPolicy
}
// 取得当前节点配置单例
@@ -110,6 +112,17 @@ func (this *NodeConfig) Init() error {
}
}
// 查找FirewallPolicy
this.firewallPolicies = []*firewallconfigs.HTTPFirewallPolicy{}
if this.HTTPFirewallPolicy != nil && this.HTTPFirewallPolicy.IsOn {
this.firewallPolicies = append(this.firewallPolicies, this.HTTPFirewallPolicy)
}
for _, server := range this.Servers {
if server.Web != nil {
this.lookupWeb(server.Web)
}
}
return nil
}
@@ -138,6 +151,11 @@ func (this *NodeConfig) AvailableGroups() []*serverconfigs.ServerGroup {
return result
}
// 获取所有的防火墙策略
func (this *NodeConfig) FindAllFirewallPolicies() []*firewallconfigs.HTTPFirewallPolicy {
return this.firewallPolicies
}
// 写入到文件
func (this *NodeConfig) Save() error {
shared.Locker.Lock()
@@ -155,3 +173,20 @@ func (this *NodeConfig) Save() error {
func (this *NodeConfig) PaddedId() string {
return this.paddedId
}
// 搜索WAF策略
func (this *NodeConfig) lookupWeb(web *serverconfigs.HTTPWebConfig) {
if web == nil || !web.IsOn {
return
}
if web.FirewallPolicy != nil && web.FirewallPolicy.IsOn {
this.firewallPolicies = append(this.firewallPolicies, web.FirewallPolicy)
}
if len(web.Locations) > 0 {
for _, location := range web.Locations {
if location.Web != nil && location.Web.IsOn {
this.lookupWeb(location.Web)
}
}
}
}

View File

@@ -2,8 +2,9 @@ package nodeconfigs
// 节点状态
type NodeStatus struct {
BuildVersion string `json:"buildVersion"` // 编译版本
ConfigVersion int64 `json:"configVersion"` // 节点配置版本
BuildVersion string `json:"buildVersion"` // 编译版本
BuildVersionCode uint32 `json:"buildVersionCode"` // 版本数字
ConfigVersion int64 `json:"configVersion"` // 节点配置版本
OS string `json:"os"`
Arch string `json:"arch"`

View File

@@ -0,0 +1,45 @@
package nodeconfigs
import "testing"
func TestNodeStatus_ComputerBuildVersionCode(t *testing.T) {
{
status := &NodeStatus{}
status.ComputerBuildVersionCode()
t.Log(status.BuildVersion, status.BuildVersionCode)
}
{
status := &NodeStatus{BuildVersion: "0.0.6"}
status.ComputerBuildVersionCode()
t.Log(status.BuildVersion, status.BuildVersionCode)
}
{
status := &NodeStatus{BuildVersion: "0.0.6.1"}
status.ComputerBuildVersionCode()
t.Log(status.BuildVersion, status.BuildVersionCode)
}
{
status := &NodeStatus{BuildVersion: "0.0.7"}
status.ComputerBuildVersionCode()
t.Log(status.BuildVersion, status.BuildVersionCode)
}
{
status := &NodeStatus{BuildVersion: "0.7"}
status.ComputerBuildVersionCode()
t.Log(status.BuildVersion, status.BuildVersionCode)
}
{
status := &NodeStatus{BuildVersion: "7"}
status.ComputerBuildVersionCode()
t.Log(status.BuildVersion, status.BuildVersionCode)
}
{
status := &NodeStatus{BuildVersion: "7.0.1"}
status.ComputerBuildVersionCode()
t.Log(status.BuildVersion, status.BuildVersionCode)
}
}