修改服务组合配置为动态

This commit is contained in:
GoEdgeLab
2021-08-01 14:56:08 +08:00
parent e459346e36
commit 131c2fbb1d
4 changed files with 71 additions and 40 deletions

3
go.mod
View File

@@ -4,12 +4,11 @@ go 1.15
replace github.com/TeaOSLab/EdgeCommon => ../EdgeCommon replace github.com/TeaOSLab/EdgeCommon => ../EdgeCommon
replace github.com/TeaOSLab/EdgePlus => ../EdgePlus
require ( require (
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
github.com/TeaOSLab/EdgeCommon v0.0.0-00010101000000-000000000000 github.com/TeaOSLab/EdgeCommon v0.0.0-00010101000000-000000000000
github.com/TeaOSLab/EdgePlus v0.0.0-00010101000000-000000000000
github.com/aliyun/alibaba-cloud-sdk-go v1.61.641 github.com/aliyun/alibaba-cloud-sdk-go v1.61.641
github.com/cespare/xxhash/v2 v2.1.1 github.com/cespare/xxhash/v2 v2.1.1
github.com/go-acme/lego/v4 v4.1.2 github.com/go-acme/lego/v4 v4.1.2

View File

@@ -646,11 +646,13 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64) (*nodeconfigs.N
continue continue
} }
serverConfig := &serverconfigs.ServerConfig{} serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server)
err = json.Unmarshal([]byte(server.Config), serverConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if serverConfig == nil {
continue
}
config.Servers = append(config.Servers, serverConfig) config.Servers = append(config.Servers, serverConfig)
} }
@@ -669,8 +671,10 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64) (*nodeconfigs.N
config.GlobalConfig = globalConfig config.GlobalConfig = globalConfig
} }
// WAF var primaryClusterId = int64(node.ClusterId)
clusterId := int64(node.ClusterId) var clusterIds = []int64{primaryClusterId}
clusterIds = append(clusterIds, node.DecodeSecondaryClusterIds()...)
for _, clusterId := range clusterIds {
httpFirewallPolicyId, err := SharedNodeClusterDAO.FindClusterHTTPFirewallPolicyId(tx, clusterId) httpFirewallPolicyId, err := SharedNodeClusterDAO.FindClusterHTTPFirewallPolicyId(tx, clusterId)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -681,7 +685,7 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64) (*nodeconfigs.N
return nil, err return nil, err
} }
if firewallPolicy != nil { if firewallPolicy != nil {
config.HTTPFirewallPolicy = firewallPolicy config.HTTPFirewallPolicies = append(config.HTTPFirewallPolicies, firewallPolicy)
} }
} }
@@ -696,7 +700,8 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64) (*nodeconfigs.N
return nil, err return nil, err
} }
if cachePolicy != nil { if cachePolicy != nil {
config.HTTPCachePolicy = cachePolicy config.HTTPCachePolicies = append(config.HTTPCachePolicies, cachePolicy)
}
} }
} }
@@ -724,14 +729,14 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64) (*nodeconfigs.N
} }
// TOA // TOA
toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(tx, clusterId) toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(tx, primaryClusterId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
config.TOA = toaConfig config.TOA = toaConfig
// 系统服务 // 系统服务
services, err := SharedNodeClusterDAO.FindNodeClusterSystemServices(tx, clusterId) services, err := SharedNodeClusterDAO.FindNodeClusterSystemServices(tx, primaryClusterId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -740,7 +745,7 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64) (*nodeconfigs.N
} }
// 防火墙动作 // 防火墙动作
actions, err := SharedNodeClusterFirewallActionDAO.FindAllEnabledFirewallActions(tx, clusterId) actions, err := SharedNodeClusterFirewallActionDAO.FindAllEnabledFirewallActions(tx, primaryClusterId)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -775,8 +775,8 @@ func (this *ServerDAO) FindServerNodeFilters(tx *dbs.Tx, serverId int64) (isOk b
return true, int64(server.ClusterId), nil return true, int64(server.ClusterId), nil
} }
// ComposeServerConfig 构造服务的Config // ComposeServerConfigWithServerId 构造服务的Config
func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverconfigs.ServerConfig, error) { func (this *ServerDAO) ComposeServerConfigWithServerId(tx *dbs.Tx, serverId int64) (*serverconfigs.ServerConfig, error) {
server, err := this.FindEnabledServer(tx, serverId) server, err := this.FindEnabledServer(tx, serverId)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -784,9 +784,17 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
if server == nil { if server == nil {
return nil, ErrNotFound return nil, ErrNotFound
} }
return this.ComposeServerConfig(tx, server)
}
// ComposeServerConfig 构造服务的Config
func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server) (*serverconfigs.ServerConfig, error) {
if server == nil {
return nil, ErrNotFound
}
config := &serverconfigs.ServerConfig{} config := &serverconfigs.ServerConfig{}
config.Id = serverId config.Id = int64(server.Id)
config.ClusterId = int64(server.ClusterId) config.ClusterId = int64(server.ClusterId)
config.Type = server.Type config.Type = server.Type
config.IsOn = server.IsOn == 1 config.IsOn = server.IsOn == 1
@@ -796,7 +804,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// ServerNames // ServerNames
if len(server.ServerNames) > 0 && server.ServerNames != "null" { if len(server.ServerNames) > 0 && server.ServerNames != "null" {
serverNames := []*serverconfigs.ServerNameConfig{} serverNames := []*serverconfigs.ServerNameConfig{}
err = json.Unmarshal([]byte(server.ServerNames), &serverNames) err := json.Unmarshal([]byte(server.ServerNames), &serverNames)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -824,7 +832,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// HTTP // HTTP
if len(server.Http) > 0 && server.Http != "null" { if len(server.Http) > 0 && server.Http != "null" {
httpConfig := &serverconfigs.HTTPProtocolConfig{} httpConfig := &serverconfigs.HTTPProtocolConfig{}
err = json.Unmarshal([]byte(server.Http), httpConfig) err := json.Unmarshal([]byte(server.Http), httpConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -834,7 +842,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// HTTPS // HTTPS
if len(server.Https) > 0 && server.Https != "null" { if len(server.Https) > 0 && server.Https != "null" {
httpsConfig := &serverconfigs.HTTPSProtocolConfig{} httpsConfig := &serverconfigs.HTTPSProtocolConfig{}
err = json.Unmarshal([]byte(server.Https), httpsConfig) err := json.Unmarshal([]byte(server.Https), httpsConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -856,7 +864,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// TCP // TCP
if len(server.Tcp) > 0 && server.Tcp != "null" { if len(server.Tcp) > 0 && server.Tcp != "null" {
tcpConfig := &serverconfigs.TCPProtocolConfig{} tcpConfig := &serverconfigs.TCPProtocolConfig{}
err = json.Unmarshal([]byte(server.Tcp), tcpConfig) err := json.Unmarshal([]byte(server.Tcp), tcpConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -866,7 +874,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// TLS // TLS
if len(server.Tls) > 0 && server.Tls != "null" { if len(server.Tls) > 0 && server.Tls != "null" {
tlsConfig := &serverconfigs.TLSProtocolConfig{} tlsConfig := &serverconfigs.TLSProtocolConfig{}
err = json.Unmarshal([]byte(server.Tls), tlsConfig) err := json.Unmarshal([]byte(server.Tls), tlsConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -888,7 +896,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// Unix // Unix
if len(server.Unix) > 0 && server.Unix != "null" { if len(server.Unix) > 0 && server.Unix != "null" {
unixConfig := &serverconfigs.UnixProtocolConfig{} unixConfig := &serverconfigs.UnixProtocolConfig{}
err = json.Unmarshal([]byte(server.Unix), unixConfig) err := json.Unmarshal([]byte(server.Unix), unixConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -898,7 +906,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// UDP // UDP
if len(server.Udp) > 0 && server.Udp != "null" { if len(server.Udp) > 0 && server.Udp != "null" {
udpConfig := &serverconfigs.UDPProtocolConfig{} udpConfig := &serverconfigs.UDPProtocolConfig{}
err = json.Unmarshal([]byte(server.Udp), udpConfig) err := json.Unmarshal([]byte(server.Udp), udpConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -919,7 +927,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
// ReverseProxy // ReverseProxy
if IsNotNull(server.ReverseProxy) { if IsNotNull(server.ReverseProxy) {
reverseProxyRef := &serverconfigs.ReverseProxyRef{} reverseProxyRef := &serverconfigs.ReverseProxyRef{}
err = json.Unmarshal([]byte(server.ReverseProxy), reverseProxyRef) err := json.Unmarshal([]byte(server.ReverseProxy), reverseProxyRef)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -934,12 +942,31 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, serverId int64) (*serverc
} }
} }
// WAF策略
clusterId := int64(server.ClusterId)
httpFirewallPolicyId, err := SharedNodeClusterDAO.FindClusterHTTPFirewallPolicyId(tx, clusterId)
if err != nil {
return nil, err
}
if httpFirewallPolicyId > 0 {
config.HTTPFirewallPolicyId = httpFirewallPolicyId
}
// 缓存策略
httpCachePolicyId, err := SharedNodeClusterDAO.FindClusterHTTPCachePolicyId(tx, clusterId)
if err != nil {
return nil, err
}
if httpCachePolicyId > 0 {
config.HTTPCachePolicyId = httpCachePolicyId
}
return config, nil return config, nil
} }
// RenewServerConfig 更新服务的Config配置 // RenewServerConfig 更新服务的Config配置
func (this *ServerDAO) RenewServerConfig(tx *dbs.Tx, serverId int64, updateMd5 bool) (isChanged bool, err error) { func (this *ServerDAO) RenewServerConfig(tx *dbs.Tx, serverId int64, updateMd5 bool) (isChanged bool, err error) {
serverConfig, err := this.ComposeServerConfig(tx, serverId) serverConfig, err := this.ComposeServerConfigWithServerId(tx, serverId)
if err != nil { if err != nil {
return false, err return false, err
} }

View File

@@ -733,7 +733,7 @@ func (this *ServerService) FindEnabledServerConfig(ctx context.Context, req *pb.
} }
} }
config, err := models.SharedServerDAO.ComposeServerConfig(tx, req.ServerId) config, err := models.SharedServerDAO.ComposeServerConfigWithServerId(tx, req.ServerId)
if err != nil { if err != nil {
return nil, err return nil, err
} }