mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	优化证书数量很多时的页面加载速度
This commit is contained in:
		@@ -43,9 +43,9 @@ func (this *APINode) DecodeHTTPS(tx *dbs.Tx, cacheMap *utils.CacheMap) (*serverc
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if config.SSLPolicyRef != nil {
 | 
			
		||||
		policyId := config.SSLPolicyRef.SSLPolicyId
 | 
			
		||||
		var policyId = config.SSLPolicyRef.SSLPolicyId
 | 
			
		||||
		if policyId > 0 {
 | 
			
		||||
			sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, policyId, cacheMap)
 | 
			
		||||
			sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, policyId, false, cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
@@ -143,7 +143,7 @@ func (this *APINode) DecodeRestHTTPS(tx *dbs.Tx, cacheMap *utils.CacheMap) (*ser
 | 
			
		||||
	if config.SSLPolicyRef != nil {
 | 
			
		||||
		policyId := config.SSLPolicyRef.SSLPolicyId
 | 
			
		||||
		if policyId > 0 {
 | 
			
		||||
			sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, policyId, cacheMap)
 | 
			
		||||
			sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, policyId, false, cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -978,7 +978,7 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, server := range servers {
 | 
			
		||||
		serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, cacheMap, true, false)
 | 
			
		||||
		serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, false, cacheMap, true, false)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -403,7 +403,7 @@ func (this *OriginDAO) ComposeOriginConfig(tx *dbs.Tx, originId int64, cacheMap
 | 
			
		||||
		}
 | 
			
		||||
		config.CertRef = ref
 | 
			
		||||
		if ref.CertId > 0 {
 | 
			
		||||
			certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, cacheMap)
 | 
			
		||||
			certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, false, cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -1001,7 +1001,7 @@ func (this *ServerDAO) FindServerNodeFilters(tx *dbs.Tx, serverId int64) (isOk b
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ComposeServerConfigWithServerId 构造服务的Config
 | 
			
		||||
func (this *ServerDAO) ComposeServerConfigWithServerId(tx *dbs.Tx, serverId int64, forNode bool) (*serverconfigs.ServerConfig, error) {
 | 
			
		||||
func (this *ServerDAO) ComposeServerConfigWithServerId(tx *dbs.Tx, serverId int64, ignoreCertData bool, forNode bool) (*serverconfigs.ServerConfig, error) {
 | 
			
		||||
	server, err := this.FindEnabledServer(tx, serverId)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
@@ -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, false)
 | 
			
		||||
	return this.ComposeServerConfig(tx, server, ignoreCertData, nil, forNode, false)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ComposeServerConfig 构造服务的Config
 | 
			
		||||
// forNode 是否是节点请求
 | 
			
		||||
func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap *utils.CacheMap, forNode bool, forList bool) (*serverconfigs.ServerConfig, error) {
 | 
			
		||||
func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCertData bool, cacheMap *utils.CacheMap, forNode bool, forList bool) (*serverconfigs.ServerConfig, error) {
 | 
			
		||||
	if server == nil {
 | 
			
		||||
		return nil, ErrNotFound
 | 
			
		||||
	}
 | 
			
		||||
@@ -1111,7 +1111,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap
 | 
			
		||||
 | 
			
		||||
		// SSL
 | 
			
		||||
		if httpsConfig.SSLPolicyRef != nil && httpsConfig.SSLPolicyRef.SSLPolicyId > 0 {
 | 
			
		||||
			sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, httpsConfig.SSLPolicyRef.SSLPolicyId, cacheMap)
 | 
			
		||||
			sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, httpsConfig.SSLPolicyRef.SSLPolicyId, ignoreCertData, cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
@@ -1143,7 +1143,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap
 | 
			
		||||
 | 
			
		||||
		// SSL
 | 
			
		||||
		if tlsConfig.SSLPolicyRef != nil {
 | 
			
		||||
			sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, tlsConfig.SSLPolicyRef.SSLPolicyId, cacheMap)
 | 
			
		||||
			sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, tlsConfig.SSLPolicyRef.SSLPolicyId, ignoreCertData, cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -200,7 +200,8 @@ func (this *SSLCertDAO) UpdateCert(tx *dbs.Tx,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ComposeCertConfig 组合配置
 | 
			
		||||
func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, cacheMap *utils.CacheMap) (*sslconfigs.SSLCertConfig, error) {
 | 
			
		||||
// ignoreData 是否忽略证书数据,避免因为数据过大影响传输
 | 
			
		||||
func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, ignoreData bool, cacheMap *utils.CacheMap) (*sslconfigs.SSLCertConfig, error) {
 | 
			
		||||
	if cacheMap == nil {
 | 
			
		||||
		cacheMap = utils.NewCacheMap()
 | 
			
		||||
	}
 | 
			
		||||
@@ -218,15 +219,17 @@ func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, cacheMap *ut
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config := &sslconfigs.SSLCertConfig{}
 | 
			
		||||
	var config = &sslconfigs.SSLCertConfig{}
 | 
			
		||||
	config.Id = int64(cert.Id)
 | 
			
		||||
	config.IsOn = cert.IsOn
 | 
			
		||||
	config.IsCA = cert.IsCA
 | 
			
		||||
	config.IsACME = cert.IsACME
 | 
			
		||||
	config.Name = cert.Name
 | 
			
		||||
	config.Description = cert.Description
 | 
			
		||||
	config.CertData = cert.CertData
 | 
			
		||||
	config.KeyData = cert.KeyData
 | 
			
		||||
	if !ignoreData {
 | 
			
		||||
		config.CertData = cert.CertData
 | 
			
		||||
		config.KeyData = cert.KeyData
 | 
			
		||||
	}
 | 
			
		||||
	config.ServerName = cert.ServerName
 | 
			
		||||
	config.TimeBeginAt = int64(cert.TimeBeginAt)
 | 
			
		||||
	config.TimeEndAt = int64(cert.TimeEndAt)
 | 
			
		||||
@@ -239,7 +242,7 @@ func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, cacheMap *ut
 | 
			
		||||
	config.OCSPError = cert.OcspError
 | 
			
		||||
 | 
			
		||||
	if IsNotNull(cert.DnsNames) {
 | 
			
		||||
		dnsNames := []string{}
 | 
			
		||||
		var dnsNames = []string{}
 | 
			
		||||
		err := json.Unmarshal(cert.DnsNames, &dnsNames)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
@@ -248,7 +251,7 @@ func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, cacheMap *ut
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if cert.CommonNames.IsNotNull() {
 | 
			
		||||
		commonNames := []string{}
 | 
			
		||||
		var commonNames = []string{}
 | 
			
		||||
		err := json.Unmarshal(cert.CommonNames, &commonNames)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
 
 | 
			
		||||
@@ -77,7 +77,7 @@ func (this *SSLPolicyDAO) FindEnabledSSLPolicy(tx *dbs.Tx, id int64) (*SSLPolicy
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ComposePolicyConfig 组合配置
 | 
			
		||||
func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, cacheMap *utils.CacheMap) (*sslconfigs.SSLPolicy, error) {
 | 
			
		||||
func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, ignoreData bool, cacheMap *utils.CacheMap) (*sslconfigs.SSLPolicy, error) {
 | 
			
		||||
	if cacheMap == nil {
 | 
			
		||||
		cacheMap = utils.NewCacheMap()
 | 
			
		||||
	}
 | 
			
		||||
@@ -95,7 +95,7 @@ func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, cacheM
 | 
			
		||||
	if policy == nil {
 | 
			
		||||
		return nil, nil
 | 
			
		||||
	}
 | 
			
		||||
	config := &sslconfigs.SSLPolicy{}
 | 
			
		||||
	var config = &sslconfigs.SSLPolicy{}
 | 
			
		||||
	config.Id = int64(policy.Id)
 | 
			
		||||
	config.IsOn = policy.IsOn
 | 
			
		||||
	config.ClientAuthType = int(policy.ClientAuthType)
 | 
			
		||||
@@ -104,14 +104,14 @@ func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, cacheM
 | 
			
		||||
 | 
			
		||||
	// certs
 | 
			
		||||
	if IsNotNull(policy.Certs) {
 | 
			
		||||
		refs := []*sslconfigs.SSLCertRef{}
 | 
			
		||||
		var refs = []*sslconfigs.SSLCertRef{}
 | 
			
		||||
		err = json.Unmarshal(policy.Certs, &refs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		if len(refs) > 0 {
 | 
			
		||||
			for _, ref := range refs {
 | 
			
		||||
				certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, cacheMap)
 | 
			
		||||
				certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, ignoreData, cacheMap)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return nil, err
 | 
			
		||||
				}
 | 
			
		||||
@@ -126,14 +126,14 @@ func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, cacheM
 | 
			
		||||
 | 
			
		||||
	// client CA certs
 | 
			
		||||
	if IsNotNull(policy.ClientCACerts) {
 | 
			
		||||
		refs := []*sslconfigs.SSLCertRef{}
 | 
			
		||||
		var refs = []*sslconfigs.SSLCertRef{}
 | 
			
		||||
		err = json.Unmarshal(policy.ClientCACerts, &refs)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
		if len(refs) > 0 {
 | 
			
		||||
			for _, ref := range refs {
 | 
			
		||||
				certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, cacheMap)
 | 
			
		||||
				certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, ignoreData, cacheMap)
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					return nil, err
 | 
			
		||||
				}
 | 
			
		||||
@@ -159,7 +159,7 @@ func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, cacheM
 | 
			
		||||
 | 
			
		||||
	// hsts
 | 
			
		||||
	if IsNotNull(policy.Hsts) {
 | 
			
		||||
		hstsConfig := &sslconfigs.HSTSConfig{}
 | 
			
		||||
		var hstsConfig = &sslconfigs.HSTSConfig{}
 | 
			
		||||
		err = json.Unmarshal(policy.Hsts, hstsConfig)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ func (this *UserNode) DecodeHTTPS(cacheMap *utils.CacheMap) (*serverconfigs.HTTP
 | 
			
		||||
	if config.SSLPolicyRef != nil {
 | 
			
		||||
		policyId := config.SSLPolicyRef.SSLPolicyId
 | 
			
		||||
		if policyId > 0 {
 | 
			
		||||
			sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(nil, policyId, cacheMap)
 | 
			
		||||
			sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(nil, policyId, false, cacheMap)
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				return nil, err
 | 
			
		||||
			}
 | 
			
		||||
 
 | 
			
		||||
@@ -846,7 +846,7 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb.
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// 配置
 | 
			
		||||
		config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, nil, false, true)
 | 
			
		||||
		config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, false, nil, false, true)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
@@ -969,9 +969,9 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 分组信息
 | 
			
		||||
	pbGroups := []*pb.ServerGroup{}
 | 
			
		||||
	var pbGroups = []*pb.ServerGroup{}
 | 
			
		||||
	if len(server.GroupIds) > 0 {
 | 
			
		||||
		groupIds := []int64{}
 | 
			
		||||
		var groupIds = []int64{}
 | 
			
		||||
		err = json.Unmarshal(server.GroupIds, &groupIds)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
@@ -1009,7 +1009,7 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// 配置
 | 
			
		||||
	config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, nil, userId > 0, false)
 | 
			
		||||
	config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, req.IgnoreSSLCertData, nil, userId > 0, false)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -1069,7 +1069,7 @@ func (this *ServerService) FindEnabledServerConfig(ctx context.Context, req *pb.
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config, err := models.SharedServerDAO.ComposeServerConfigWithServerId(tx, req.ServerId, false)
 | 
			
		||||
	config, err := models.SharedServerDAO.ComposeServerConfigWithServerId(tx, req.ServerId, false, false)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -1520,7 +1520,7 @@ func (this *ServerService) ComposeAllUserServersConfig(ctx context.Context, req
 | 
			
		||||
	var configs = []*serverconfigs.ServerConfig{}
 | 
			
		||||
	var cacheMap = utils.NewCacheMap()
 | 
			
		||||
	for _, server := range servers {
 | 
			
		||||
		config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, cacheMap, true, false)
 | 
			
		||||
		config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, false, cacheMap, true, false)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
@@ -2227,7 +2227,7 @@ func (this *ServerService) ComposeServerConfig(ctx context.Context, req *pb.Comp
 | 
			
		||||
		return &pb.ComposeServerConfigResponse{ServerConfigJSON: nil}, nil
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	serverConfig, err := models.SharedServerDAO.ComposeServerConfigWithServerId(tx, req.ServerId, true)
 | 
			
		||||
	serverConfig, err := models.SharedServerDAO.ComposeServerConfigWithServerId(tx, req.ServerId, false, true)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if err == models.ErrNotFound {
 | 
			
		||||
			return &pb.ComposeServerConfigResponse{ServerConfigJSON: nil}, nil
 | 
			
		||||
 
 | 
			
		||||
@@ -92,7 +92,7 @@ func (this *SSLCertService) FindEnabledSSLCertConfig(ctx context.Context, req *p
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	config, err := models.SharedSSLCertDAO.ComposeCertConfig(tx, req.SslCertId, nil)
 | 
			
		||||
	config, err := models.SharedSSLCertDAO.ComposeCertConfig(tx, req.SslCertId, false, nil)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
@@ -179,7 +179,7 @@ func (this *SSLCertService) ListSSLCerts(ctx context.Context, req *pb.ListSSLCer
 | 
			
		||||
 | 
			
		||||
	certConfigs := []*sslconfigs.SSLCertConfig{}
 | 
			
		||||
	for _, certId := range certIds {
 | 
			
		||||
		certConfig, err := models.SharedSSLCertDAO.ComposeCertConfig(tx, certId, nil)
 | 
			
		||||
		certConfig, err := models.SharedSSLCertDAO.ComposeCertConfig(tx, certId, false, nil)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			return nil, err
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -88,7 +88,7 @@ func (this *SSLPolicyService) FindEnabledSSLPolicyConfig(ctx context.Context, re
 | 
			
		||||
 | 
			
		||||
	var tx = this.NullTx()
 | 
			
		||||
 | 
			
		||||
	config, err := models.SharedSSLPolicyDAO.ComposePolicyConfig(tx, req.SslPolicyId, nil)
 | 
			
		||||
	config, err := models.SharedSSLPolicyDAO.ComposePolicyConfig(tx, req.SslPolicyId, req.IgnoreData, nil)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return nil, err
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user