diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index a09d9bcf..496281c8 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -976,7 +976,7 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils } for _, server := range servers { - serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, cacheMap, true) + serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, cacheMap, true, false) if err != nil { return nil, err } diff --git a/internal/db/models/server_dao.go b/internal/db/models/server_dao.go index 10270faf..adcd6599 100644 --- a/internal/db/models/server_dao.go +++ b/internal/db/models/server_dao.go @@ -1009,12 +1009,12 @@ func (this *ServerDAO) ComposeServerConfigWithServerId(tx *dbs.Tx, serverId int6 if server == nil { return nil, ErrNotFound } - return this.ComposeServerConfig(tx, server, nil, forNode) + return this.ComposeServerConfig(tx, server, nil, forNode, false) } // ComposeServerConfig 构造服务的Config // forNode 是否是节点请求 -func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap *utils.CacheMap, forNode bool) (*serverconfigs.ServerConfig, error) { +func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap *utils.CacheMap, forNode bool, forList bool) (*serverconfigs.ServerConfig, error) { if server == nil { return nil, ErrNotFound } @@ -1039,7 +1039,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap var groupConfig *serverconfigs.ServerGroupConfig for _, groupId := range server.DecodeGroupIds() { - groupConfig1, err := SharedServerGroupDAO.ComposeGroupConfig(tx, groupId, cacheMap) + groupConfig1, err := SharedServerGroupDAO.ComposeGroupConfig(tx, groupId, forList, cacheMap) if err != nil { return nil, err } @@ -1062,28 +1062,30 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap } // CNAME - config.SupportCNAME = server.SupportCNAME == 1 - if server.ClusterId > 0 && len(server.DnsName) > 0 { - clusterDNS, err := SharedNodeClusterDAO.FindClusterDNSInfo(tx, int64(server.ClusterId), cacheMap) - if err != nil { - return nil, err - } - if clusterDNS != nil && clusterDNS.DnsDomainId > 0 { - clusterDNSConfig, err := clusterDNS.DecodeDNSConfig() + if !forList { + config.SupportCNAME = server.SupportCNAME == 1 + if server.ClusterId > 0 && len(server.DnsName) > 0 { + clusterDNS, err := SharedNodeClusterDAO.FindClusterDNSInfo(tx, int64(server.ClusterId), cacheMap) if err != nil { return nil, err } + if clusterDNS != nil && clusterDNS.DnsDomainId > 0 { + clusterDNSConfig, err := clusterDNS.DecodeDNSConfig() + if err != nil { + return nil, err + } - domain, err := dns.SharedDNSDomainDAO.FindEnabledDNSDomain(tx, int64(clusterDNS.DnsDomainId), cacheMap) - if err != nil { - return nil, err - } - if domain != nil { - var cname = server.DnsName + "." + domain.Name - config.CNameDomain = cname - if clusterDNSConfig.CNAMEAsDomain { - config.CNameAsDomain = true - config.AliasServerNames = append(config.AliasServerNames, cname) + domain, err := dns.SharedDNSDomainDAO.FindEnabledDNSDomain(tx, int64(clusterDNS.DnsDomainId), cacheMap) + if err != nil { + return nil, err + } + if domain != nil { + var cname = server.DnsName + "." + domain.Name + config.CNameDomain = cname + if clusterDNSConfig.CNAMEAsDomain { + config.CNameAsDomain = true + config.AliasServerNames = append(config.AliasServerNames, cname) + } } } } @@ -1174,61 +1176,71 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap } // Web - if server.WebId > 0 { - webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(server.WebId), cacheMap) - if err != nil { - return nil, err - } - if webConfig != nil { - config.Web = webConfig + if !forList { + if server.WebId > 0 { + webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(server.WebId), cacheMap) + if err != nil { + return nil, err + } + if webConfig != nil { + config.Web = webConfig + } } } // ReverseProxy - if IsNotNull(server.ReverseProxy) { - var reverseProxyRef = &serverconfigs.ReverseProxyRef{} - err := json.Unmarshal(server.ReverseProxy, reverseProxyRef) - if err != nil { - return nil, err - } - config.ReverseProxyRef = reverseProxyRef + if !forList { + if IsNotNull(server.ReverseProxy) { + var reverseProxyRef = &serverconfigs.ReverseProxyRef{} + err := json.Unmarshal(server.ReverseProxy, reverseProxyRef) + if err != nil { + return nil, err + } + config.ReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) - if err != nil { - return nil, err - } - if reverseProxyConfig != nil { - config.ReverseProxy = reverseProxyConfig + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + if err != nil { + return nil, err + } + if reverseProxyConfig != nil { + config.ReverseProxy = reverseProxyConfig + } } } // WAF策略 var clusterId = int64(server.ClusterId) - httpFirewallPolicyId, err := SharedNodeClusterDAO.FindClusterHTTPFirewallPolicyId(tx, clusterId, cacheMap) - if err != nil { - return nil, err - } - if httpFirewallPolicyId > 0 { - config.HTTPFirewallPolicyId = httpFirewallPolicyId - } - - // 缓存策略 - httpCachePolicyId, err := SharedNodeClusterDAO.FindClusterHTTPCachePolicyId(tx, clusterId, cacheMap) - if err != nil { - return nil, err - } - if httpCachePolicyId > 0 { - config.HTTPCachePolicyId = httpCachePolicyId - } - - // traffic limit - if len(server.TrafficLimit) > 0 { - var trafficLimitConfig = &serverconfigs.TrafficLimitConfig{} - err = json.Unmarshal(server.TrafficLimit, trafficLimitConfig) + if !forList { + httpFirewallPolicyId, err := SharedNodeClusterDAO.FindClusterHTTPFirewallPolicyId(tx, clusterId, cacheMap) if err != nil { return nil, err } - config.TrafficLimit = trafficLimitConfig + if httpFirewallPolicyId > 0 { + config.HTTPFirewallPolicyId = httpFirewallPolicyId + } + } + + // 缓存策略 + if !forList { + httpCachePolicyId, err := SharedNodeClusterDAO.FindClusterHTTPCachePolicyId(tx, clusterId, cacheMap) + if err != nil { + return nil, err + } + if httpCachePolicyId > 0 { + config.HTTPCachePolicyId = httpCachePolicyId + } + } + + // traffic limit + if !forList { + if len(server.TrafficLimit) > 0 { + var trafficLimitConfig = &serverconfigs.TrafficLimitConfig{} + err := json.Unmarshal(server.TrafficLimit, trafficLimitConfig) + if err != nil { + return nil, err + } + config.TrafficLimit = trafficLimitConfig + } } // 用户套餐 @@ -1271,7 +1283,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap if config.TrafficLimit != nil && config.TrafficLimit.IsOn && !config.TrafficLimit.IsEmpty() { if len(server.TrafficLimitStatus) > 0 { var status = &serverconfigs.TrafficLimitStatus{} - err = json.Unmarshal(server.TrafficLimitStatus, status) + err := json.Unmarshal(server.TrafficLimitStatus, status) if err != nil { return nil, err } @@ -1282,14 +1294,16 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap } // UAM - if teaconst.IsPlus && IsNotNull(server.Uam) { - var uamConfig = &serverconfigs.UAMConfig{} - err = json.Unmarshal(server.Uam, uamConfig) - if err != nil { - return nil, err - } - if uamConfig.IsOn { - config.UAM = uamConfig + if !forList { + if teaconst.IsPlus && IsNotNull(server.Uam) { + var uamConfig = &serverconfigs.UAMConfig{} + err := json.Unmarshal(server.Uam, uamConfig) + if err != nil { + return nil, err + } + if uamConfig.IsOn { + config.UAM = uamConfig + } } } diff --git a/internal/db/models/server_group_dao.go b/internal/db/models/server_group_dao.go index 0db82a83..222f7797 100644 --- a/internal/db/models/server_group_dao.go +++ b/internal/db/models/server_group_dao.go @@ -279,7 +279,7 @@ func (this *ServerGroupDAO) InitGroupWeb(tx *dbs.Tx, groupId int64) (int64, erro } // ComposeGroupConfig 组合配置 -func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, cacheMap *utils.CacheMap) (*serverconfigs.ServerGroupConfig, error) { +func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, forList bool, cacheMap *utils.CacheMap) (*serverconfigs.ServerGroupConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -315,65 +315,67 @@ func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, cacheM IsOn: group.IsOn, } - if IsNotNull(group.HttpReverseProxy) { - reverseProxyRef := &serverconfigs.ReverseProxyRef{} - err := json.Unmarshal(group.HttpReverseProxy, reverseProxyRef) - if err != nil { - return nil, err - } - config.HTTPReverseProxyRef = reverseProxyRef + if !forList { + if IsNotNull(group.HttpReverseProxy) { + reverseProxyRef := &serverconfigs.ReverseProxyRef{} + err := json.Unmarshal(group.HttpReverseProxy, reverseProxyRef) + if err != nil { + return nil, err + } + config.HTTPReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) - if err != nil { - return nil, err + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + if err != nil { + return nil, err + } + if reverseProxyConfig != nil { + config.HTTPReverseProxy = reverseProxyConfig + } } - if reverseProxyConfig != nil { - config.HTTPReverseProxy = reverseProxyConfig - } - } - if IsNotNull(group.TcpReverseProxy) { - reverseProxyRef := &serverconfigs.ReverseProxyRef{} - err := json.Unmarshal(group.TcpReverseProxy, reverseProxyRef) - if err != nil { - return nil, err - } - config.TCPReverseProxyRef = reverseProxyRef + if IsNotNull(group.TcpReverseProxy) { + reverseProxyRef := &serverconfigs.ReverseProxyRef{} + err := json.Unmarshal(group.TcpReverseProxy, reverseProxyRef) + if err != nil { + return nil, err + } + config.TCPReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) - if err != nil { - return nil, err + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + if err != nil { + return nil, err + } + if reverseProxyConfig != nil { + config.TCPReverseProxy = reverseProxyConfig + } } - if reverseProxyConfig != nil { - config.TCPReverseProxy = reverseProxyConfig - } - } - if IsNotNull(group.UdpReverseProxy) { - reverseProxyRef := &serverconfigs.ReverseProxyRef{} - err := json.Unmarshal(group.UdpReverseProxy, reverseProxyRef) - if err != nil { - return nil, err - } - config.UDPReverseProxyRef = reverseProxyRef + if IsNotNull(group.UdpReverseProxy) { + reverseProxyRef := &serverconfigs.ReverseProxyRef{} + err := json.Unmarshal(group.UdpReverseProxy, reverseProxyRef) + if err != nil { + return nil, err + } + config.UDPReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) - if err != nil { - return nil, err + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + if err != nil { + return nil, err + } + if reverseProxyConfig != nil { + config.UDPReverseProxy = reverseProxyConfig + } } - if reverseProxyConfig != nil { - config.UDPReverseProxy = reverseProxyConfig - } - } - // web - if group.WebId > 0 { - webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(group.WebId), cacheMap) - if err != nil { - return nil, err - } - if webConfig != nil { - config.Web = webConfig + // web + if group.WebId > 0 { + webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(group.WebId), cacheMap) + if err != nil { + return nil, err + } + if webConfig != nil { + config.Web = webConfig + } } } diff --git a/internal/rpc/services/service_server.go b/internal/rpc/services/service_server.go index f72d18cc..e1098c2f 100644 --- a/internal/rpc/services/service_server.go +++ b/internal/rpc/services/service_server.go @@ -840,21 +840,38 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb. } // 配置 - config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, nil, false) + config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, nil, false, true) if err != nil { return nil, err } + var countServerNames int32 = 0 + for _, serverName := range config.ServerNames { + if len(serverName.SubNames) > 0 { + countServerNames += int32(len(serverName.SubNames)) + } else { + countServerNames++ + } + } + if req.IgnoreServerNames && len(config.ServerNames) > 0 { + config.ServerNames = config.ServerNames[:1] + } configJSON, err := json.Marshal(config) if err != nil { return nil, err } + // 忽略信息 + if req.IgnoreServerNames { + server.ServerNames = nil + } + result = append(result, &pb.Server{ Id: int64(server.Id), IsOn: server.IsOn, Type: server.Type, Config: configJSON, Name: server.Name, + CountServerNames: countServerNames, Description: server.Description, HttpJSON: server.Http, HttpsJSON: server.Https, @@ -986,7 +1003,7 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn } // 配置 - config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, nil, userId > 0) + config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, nil, userId > 0, false) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_server_group.go b/internal/rpc/services/service_server_group.go index 64aae02d..51fb56c8 100644 --- a/internal/rpc/services/service_server_group.go +++ b/internal/rpc/services/service_server_group.go @@ -463,7 +463,7 @@ func (this *ServerGroupService) FindEnabledServerGroupConfigInfo(ctx context.Con result.HasUDPReverseProxy = ref.IsPrior } - config, err := models.SharedServerGroupDAO.ComposeGroupConfig(tx, int64(group.Id), nil) + config, err := models.SharedServerGroupDAO.ComposeGroupConfig(tx, int64(group.Id), false, nil) if err != nil { return nil, err }