mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	修改服务组合配置为动态
This commit is contained in:
		
							
								
								
									
										3
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								go.mod
									
									
									
									
									
								
							@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user