From bbc25168c245940c719fd4ef24cc68090d7d2436 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Sat, 18 Mar 2023 22:18:13 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8A=82=E7=82=B9=E7=BB=84=E5=90=88=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=97=B6=E6=9C=8D=E5=8A=A1=E9=97=B4=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E5=85=B1=E7=94=A8=E8=AF=81=E4=B9=A6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/acme/acme_task_dao.go | 2 +- internal/db/models/api_node_model_ext.go | 14 +++++------ internal/db/models/http_location_dao.go | 12 +++++----- internal/db/models/http_web_dao.go | 4 ++-- internal/db/models/node_dao.go | 6 +++-- internal/db/models/node_dao_test.go | 22 +++++++++++------ internal/db/models/origin_dao.go | 4 ++-- internal/db/models/origin_dao_test.go | 2 +- internal/db/models/reverse_proxy_dao.go | 6 ++--- internal/db/models/reverse_proxy_dao_test.go | 2 +- internal/db/models/server_dao.go | 15 ++++++------ internal/db/models/server_dao_test.go | 4 ++-- internal/db/models/server_group_dao.go | 11 +++++---- internal/db/models/server_model_ext.go | 4 ++-- internal/db/models/ssl_cert_dao.go | 24 +++++++++++++++---- internal/db/models/ssl_policy_dao.go | 7 +++--- internal/db/models/user_node_model_ext.go | 6 ++--- .../rpc/services/service_http_location.go | 6 ++--- internal/rpc/services/service_http_web.go | 2 +- internal/rpc/services/service_node.go | 6 ++++- internal/rpc/services/service_origin.go | 2 +- .../rpc/services/service_reverse_proxy.go | 2 +- internal/rpc/services/service_server.go | 10 ++++---- internal/rpc/services/service_server_group.go | 10 ++++---- internal/rpc/services/service_ssl_cert.go | 4 ++-- internal/rpc/services/service_ssl_policy.go | 2 +- 26 files changed, 111 insertions(+), 78 deletions(-) diff --git a/internal/db/models/acme/acme_task_dao.go b/internal/db/models/acme/acme_task_dao.go index 12535965..f1b599a2 100644 --- a/internal/db/models/acme/acme_task_dao.go +++ b/internal/db/models/acme/acme_task_dao.go @@ -434,7 +434,7 @@ func (this *ACMETaskDAO) runTaskWithoutLog(tx *dbs.Tx, taskId int64) (isOk bool, CertData: certData, KeyData: keyData, } - err = sslConfig.Init() + err = sslConfig.Init(nil) if err != nil { errMsg = "证书生成成功,但是分析证书信息时发生错误:" + err.Error() return diff --git a/internal/db/models/api_node_model_ext.go b/internal/db/models/api_node_model_ext.go index 8d0b32ec..604937e5 100644 --- a/internal/db/models/api_node_model_ext.go +++ b/internal/db/models/api_node_model_ext.go @@ -37,7 +37,7 @@ func (this *APINode) DecodeHTTPS(tx *dbs.Tx, cacheMap *utils.CacheMap) (*serverc return nil, err } - err = config.Init() + err = config.Init(nil) if err != nil { return nil, err } @@ -45,7 +45,7 @@ func (this *APINode) DecodeHTTPS(tx *dbs.Tx, cacheMap *utils.CacheMap) (*serverc if config.SSLPolicyRef != nil { var policyId = config.SSLPolicyRef.SSLPolicyId if policyId > 0 { - sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, policyId, false, cacheMap) + sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, policyId, false, nil, cacheMap) if err != nil { return nil, err } @@ -55,7 +55,7 @@ func (this *APINode) DecodeHTTPS(tx *dbs.Tx, cacheMap *utils.CacheMap) (*serverc } } - err = config.Init() + err = config.Init(nil) if err != nil { return nil, err } @@ -129,13 +129,13 @@ func (this *APINode) DecodeRestHTTPS(tx *dbs.Tx, cacheMap *utils.CacheMap) (*ser if !IsNotNull(this.RestHTTPS) { return nil, nil } - config := &serverconfigs.HTTPSProtocolConfig{} + var config = &serverconfigs.HTTPSProtocolConfig{} err := json.Unmarshal(this.RestHTTPS, config) if err != nil { return nil, err } - err = config.Init() + err = config.Init(nil) 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, false, cacheMap) + sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, policyId, false, nil, cacheMap) if err != nil { return nil, err } @@ -153,7 +153,7 @@ func (this *APINode) DecodeRestHTTPS(tx *dbs.Tx, cacheMap *utils.CacheMap) (*ser } } - err = config.Init() + err = config.Init(nil) if err != nil { return nil, err } diff --git a/internal/db/models/http_location_dao.go b/internal/db/models/http_location_dao.go index 3ee1692b..d77fb27f 100644 --- a/internal/db/models/http_location_dao.go +++ b/internal/db/models/http_location_dao.go @@ -150,7 +150,7 @@ func (this *HTTPLocationDAO) UpdateLocation(tx *dbs.Tx, locationId int64, name s } // ComposeLocationConfig 组合配置 -func (this *HTTPLocationDAO) ComposeLocationConfig(tx *dbs.Tx, locationId int64, forNode bool, cacheMap *utils.CacheMap) (*serverconfigs.HTTPLocationConfig, error) { +func (this *HTTPLocationDAO) ComposeLocationConfig(tx *dbs.Tx, locationId int64, forNode bool, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*serverconfigs.HTTPLocationConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -179,7 +179,7 @@ func (this *HTTPLocationDAO) ComposeLocationConfig(tx *dbs.Tx, locationId int64, // web if location.WebId > 0 { - webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(location.WebId), true, forNode, cacheMap) + webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(location.WebId), true, forNode, dataMap, cacheMap) if err != nil { return nil, err } @@ -195,7 +195,7 @@ func (this *HTTPLocationDAO) ComposeLocationConfig(tx *dbs.Tx, locationId int64, } config.ReverseProxyRef = ref if ref.ReverseProxyId > 0 { - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, ref.ReverseProxyId, cacheMap) + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, ref.ReverseProxyId, dataMap, cacheMap) if err != nil { return nil, err } @@ -292,13 +292,13 @@ func (this *HTTPLocationDAO) UpdateLocationWeb(tx *dbs.Tx, locationId int64, web } // ConvertLocationRefs 转换引用为配置 -func (this *HTTPLocationDAO) ConvertLocationRefs(tx *dbs.Tx, refs []*serverconfigs.HTTPLocationRef, forNode bool, cacheMap *utils.CacheMap) (locations []*serverconfigs.HTTPLocationConfig, err error) { +func (this *HTTPLocationDAO) ConvertLocationRefs(tx *dbs.Tx, refs []*serverconfigs.HTTPLocationRef, forNode bool, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (locations []*serverconfigs.HTTPLocationConfig, err error) { for _, ref := range refs { - config, err := this.ComposeLocationConfig(tx, ref.LocationId, forNode, cacheMap) + config, err := this.ComposeLocationConfig(tx, ref.LocationId, forNode, dataMap, cacheMap) if err != nil { return nil, err } - children, err := this.ConvertLocationRefs(tx, ref.Children, forNode, cacheMap) + children, err := this.ConvertLocationRefs(tx, ref.Children, forNode, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/db/models/http_web_dao.go b/internal/db/models/http_web_dao.go index 9b018695..05a99a7d 100644 --- a/internal/db/models/http_web_dao.go +++ b/internal/db/models/http_web_dao.go @@ -77,7 +77,7 @@ func (this *HTTPWebDAO) FindEnabledHTTPWeb(tx *dbs.Tx, id int64) (*HTTPWeb, erro } // ComposeWebConfig 组合配置 -func (this *HTTPWebDAO) ComposeWebConfig(tx *dbs.Tx, webId int64, isLocationOrGroup bool, forNode bool, cacheMap *utils.CacheMap) (*serverconfigs.HTTPWebConfig, error) { +func (this *HTTPWebDAO) ComposeWebConfig(tx *dbs.Tx, webId int64, isLocationOrGroup bool, forNode bool, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*serverconfigs.HTTPWebConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -313,7 +313,7 @@ func (this *HTTPWebDAO) ComposeWebConfig(tx *dbs.Tx, webId int64, isLocationOrGr if len(refs) > 0 { config.LocationRefs = refs - locations, err := SharedHTTPLocationDAO.ConvertLocationRefs(tx, refs, forNode, cacheMap) + locations, err := SharedHTTPLocationDAO.ConvertLocationRefs(tx, refs, forNode, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index ba654a33..be995df6 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -962,7 +962,7 @@ func (this *NodeDAO) UpdateNodeInstallStatus(tx *dbs.Tx, nodeId int64, status *N // ComposeNodeConfig 组合配置 // TODO 提升运行速度 -func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils.CacheMap) (*nodeconfigs.NodeConfig, error) { +func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*nodeconfigs.NodeConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -993,6 +993,8 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils GroupId: int64(node.GroupId), EnableIPLists: node.EnableIPLists, APINodeAddrs: node.DecodeAPINodeAddrs(), + + DataMap: dataMap, } // API节点IP @@ -1029,7 +1031,7 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap *utils } for _, server := range servers { - serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, false, cacheMap, true, false) + serverConfig, err := SharedServerDAO.ComposeServerConfig(tx, server, false, dataMap, cacheMap, true, false) if err != nil { return nil, err } diff --git a/internal/db/models/node_dao_test.go b/internal/db/models/node_dao_test.go index 36a710c9..6f672d38 100644 --- a/internal/db/models/node_dao_test.go +++ b/internal/db/models/node_dao_test.go @@ -4,9 +4,11 @@ package models_test import ( + "encoding/json" teaconst "github.com/TeaOSLab/EdgeAPI/internal/const" "github.com/TeaOSLab/EdgeAPI/internal/db/models" "github.com/TeaOSLab/EdgeAPI/internal/utils" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" _ "github.com/go-sql-driver/mysql" "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/logs" @@ -47,21 +49,27 @@ func TestNodeDAO_FindEnabledNodeClusterIds(t *testing.T) { func TestNodeDAO_ComposeNodeConfig(t *testing.T) { dbs.NotifyReady() - before := time.Now() - defer func() { - t.Log(time.Since(before).Seconds()*1000, "ms") - }() + var before = time.Now() var tx *dbs.Tx var cacheMap = utils.NewCacheMap() - nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, 48, cacheMap) + var dataMap = shared.NewDataMap() + //var dataMap *nodeconfigs.DataMap + nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, 48, dataMap, cacheMap) if err != nil { t.Fatal(err) } + nodeConfig.DataMap = dataMap t.Log(len(nodeConfig.Servers), "servers") t.Log(cacheMap.Len(), "items") - // old: 77ms => new: 56ms + t.Log(time.Since(before).Seconds()*1000, "ms") + + data, err := json.Marshal(nodeConfig) + if err != nil { + t.Fatal(err) + } + t.Log(len(data), "bytes") } func TestNodeDAO_ComposeNodeConfig_ParentNodes(t *testing.T) { @@ -71,7 +79,7 @@ func TestNodeDAO_ComposeNodeConfig_ParentNodes(t *testing.T) { var tx *dbs.Tx var cacheMap = utils.NewCacheMap() - nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, 48, cacheMap) + nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, 48, nil, cacheMap) if err != nil { t.Fatal(err) } diff --git a/internal/db/models/origin_dao.go b/internal/db/models/origin_dao.go index e67a4c46..7667c7c7 100644 --- a/internal/db/models/origin_dao.go +++ b/internal/db/models/origin_dao.go @@ -276,7 +276,7 @@ func (this *OriginDAO) UpdateOrigin(tx *dbs.Tx, } // ComposeOriginConfig 将源站信息转换为配置 -func (this *OriginDAO) ComposeOriginConfig(tx *dbs.Tx, originId int64, cacheMap *utils.CacheMap) (*serverconfigs.OriginConfig, error) { +func (this *OriginDAO) ComposeOriginConfig(tx *dbs.Tx, originId int64, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*serverconfigs.OriginConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -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, false, cacheMap) + certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, false, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/db/models/origin_dao_test.go b/internal/db/models/origin_dao_test.go index e5ef2292..9352b241 100644 --- a/internal/db/models/origin_dao_test.go +++ b/internal/db/models/origin_dao_test.go @@ -8,7 +8,7 @@ import ( func TestOriginServerDAO_ComposeOriginConfig(t *testing.T) { var tx *dbs.Tx - config, err := SharedOriginDAO.ComposeOriginConfig(tx, 1, nil) + config, err := SharedOriginDAO.ComposeOriginConfig(tx, 1, nil, nil) if err != nil { t.Fatal(err) } diff --git a/internal/db/models/reverse_proxy_dao.go b/internal/db/models/reverse_proxy_dao.go index 6b6c0e3c..922b9bdd 100644 --- a/internal/db/models/reverse_proxy_dao.go +++ b/internal/db/models/reverse_proxy_dao.go @@ -81,7 +81,7 @@ func (this *ReverseProxyDAO) FindEnabledReverseProxy(tx *dbs.Tx, id int64) (*Rev } // ComposeReverseProxyConfig 根据ID组合配置 -func (this *ReverseProxyDAO) ComposeReverseProxyConfig(tx *dbs.Tx, reverseProxyId int64, cacheMap *utils.CacheMap) (*serverconfigs.ReverseProxyConfig, error) { +func (this *ReverseProxyDAO) ComposeReverseProxyConfig(tx *dbs.Tx, reverseProxyId int64, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*serverconfigs.ReverseProxyConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -125,7 +125,7 @@ func (this *ReverseProxyDAO) ComposeReverseProxyConfig(tx *dbs.Tx, reverseProxyI return nil, err } for _, ref := range originRefs { - originConfig, err := SharedOriginDAO.ComposeOriginConfig(tx, ref.OriginId, cacheMap) + originConfig, err := SharedOriginDAO.ComposeOriginConfig(tx, ref.OriginId, dataMap, cacheMap) if err != nil { return nil, err } @@ -142,7 +142,7 @@ func (this *ReverseProxyDAO) ComposeReverseProxyConfig(tx *dbs.Tx, reverseProxyI return nil, err } for _, ref := range originRefs { - originConfig, err := SharedOriginDAO.ComposeOriginConfig(tx, ref.OriginId, cacheMap) + originConfig, err := SharedOriginDAO.ComposeOriginConfig(tx, ref.OriginId, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/db/models/reverse_proxy_dao_test.go b/internal/db/models/reverse_proxy_dao_test.go index 1774976a..5ee297fe 100644 --- a/internal/db/models/reverse_proxy_dao_test.go +++ b/internal/db/models/reverse_proxy_dao_test.go @@ -8,7 +8,7 @@ import ( func TestReverseProxyDAO_ComposeReverseProxyConfig(t *testing.T) { var tx *dbs.Tx - config, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, 1, nil) + config, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, 1, nil, nil) if err != nil { t.Fatal(err) } diff --git a/internal/db/models/server_dao.go b/internal/db/models/server_dao.go index 6d0aef5f..fe961d60 100644 --- a/internal/db/models/server_dao.go +++ b/internal/db/models/server_dao.go @@ -12,6 +12,7 @@ import ( "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" _ "github.com/go-sql-driver/mysql" "github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/dbs" @@ -1009,12 +1010,12 @@ func (this *ServerDAO) ComposeServerConfigWithServerId(tx *dbs.Tx, serverId int6 if server == nil { return nil, ErrNotFound } - return this.ComposeServerConfig(tx, server, ignoreCertData, nil, forNode, false) + return this.ComposeServerConfig(tx, server, ignoreCertData, nil, nil, forNode, false) } // ComposeServerConfig 构造服务的Config // forNode 是否是节点请求 -func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCerts bool, cacheMap *utils.CacheMap, forNode bool, forList bool) (*serverconfigs.ServerConfig, error) { +func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCerts bool, dataMap *shared.DataMap, cacheMap *utils.CacheMap, forNode bool, forList bool) (*serverconfigs.ServerConfig, error) { if server == nil { return nil, ErrNotFound } @@ -1039,7 +1040,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCer var groupConfig *serverconfigs.ServerGroupConfig for _, groupId := range server.DecodeGroupIds() { - groupConfig1, err := SharedServerGroupDAO.ComposeGroupConfig(tx, groupId, forNode, forList, cacheMap) + groupConfig1, err := SharedServerGroupDAO.ComposeGroupConfig(tx, groupId, forNode, forList, dataMap, cacheMap) if err != nil { return nil, err } @@ -1114,7 +1115,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCer if !forNode || httpsConfig.IsOn { // SSL if httpsConfig.SSLPolicyRef != nil && httpsConfig.SSLPolicyRef.SSLPolicyId > 0 && !ignoreCerts { - sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, httpsConfig.SSLPolicyRef.SSLPolicyId, false, cacheMap) + sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, httpsConfig.SSLPolicyRef.SSLPolicyId, false, dataMap, cacheMap) if err != nil { return nil, err } @@ -1150,7 +1151,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCer if !forNode || tlsConfig.IsOn { // SSL if tlsConfig.SSLPolicyRef != nil && !ignoreCerts { - sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, tlsConfig.SSLPolicyRef.SSLPolicyId, false, cacheMap) + sslPolicyConfig, err := SharedSSLPolicyDAO.ComposePolicyConfig(tx, tlsConfig.SSLPolicyRef.SSLPolicyId, false, dataMap, cacheMap) if err != nil { return nil, err } @@ -1190,7 +1191,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCer // Web if !forList { if server.WebId > 0 { - webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(server.WebId), false, forNode, cacheMap) + webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(server.WebId), false, forNode, dataMap, cacheMap) if err != nil { return nil, err } @@ -1211,7 +1212,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, ignoreCer if !forNode || reverseProxyRef.IsOn { config.ReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/db/models/server_dao_test.go b/internal/db/models/server_dao_test.go index b75a6f33..7dc77fe8 100644 --- a/internal/db/models/server_dao_test.go +++ b/internal/db/models/server_dao_test.go @@ -190,7 +190,7 @@ func TestServerDAO_FindAllEnabledServersWithNode_Cache(t *testing.T) { t.Fatal(err) } for _, server := range servers { - _, _ = models.SharedServerDAO.ComposeServerConfig(nil, server, false, cacheMap, true, false) + _, _ = models.SharedServerDAO.ComposeServerConfig(nil, server, false, nil, cacheMap, true, false) } } @@ -201,7 +201,7 @@ func TestServerDAO_FindAllEnabledServersWithNode_Cache(t *testing.T) { t.Fatal(err) } for _, server := range servers { - _, _ = models.SharedServerDAO.ComposeServerConfig(nil, server, false, cacheMap, true, false) + _, _ = models.SharedServerDAO.ComposeServerConfig(nil, server, false, nil, cacheMap, true, false) } } t.Log(time.Since(before).Seconds()*1000, "ms") diff --git a/internal/db/models/server_group_dao.go b/internal/db/models/server_group_dao.go index 05898ef0..aff04dab 100644 --- a/internal/db/models/server_group_dao.go +++ b/internal/db/models/server_group_dao.go @@ -5,6 +5,7 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/errors" "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" _ "github.com/go-sql-driver/mysql" "github.com/iwind/TeaGo/Tea" "github.com/iwind/TeaGo/dbs" @@ -279,7 +280,7 @@ func (this *ServerGroupDAO) InitGroupWeb(tx *dbs.Tx, groupId int64) (int64, erro } // ComposeGroupConfig 组合配置 -func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, forNode bool, forList bool, cacheMap *utils.CacheMap) (*serverconfigs.ServerGroupConfig, error) { +func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, forNode bool, forList bool, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*serverconfigs.ServerGroupConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -324,7 +325,7 @@ func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, forNod } config.HTTPReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, dataMap, cacheMap) if err != nil { return nil, err } @@ -341,7 +342,7 @@ func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, forNod } config.TCPReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, dataMap, cacheMap) if err != nil { return nil, err } @@ -358,7 +359,7 @@ func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, forNod } config.UDPReverseProxyRef = reverseProxyRef - reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, cacheMap) + reverseProxyConfig, err := SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, dataMap, cacheMap) if err != nil { return nil, err } @@ -369,7 +370,7 @@ func (this *ServerGroupDAO) ComposeGroupConfig(tx *dbs.Tx, groupId int64, forNod // web if group.WebId > 0 { - webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(group.WebId), true, forNode, cacheMap) + webConfig, err := SharedHTTPWebDAO.ComposeWebConfig(tx, int64(group.WebId), true, forNode, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/db/models/server_model_ext.go b/internal/db/models/server_model_ext.go index 4b3aec19..a06cea4f 100644 --- a/internal/db/models/server_model_ext.go +++ b/internal/db/models/server_model_ext.go @@ -78,7 +78,7 @@ func (this *Server) DecodeHTTPSPorts() (ports []int) { if err != nil { return nil } - err = config.Init() + err = config.Init(nil) if err != nil { return nil } @@ -120,7 +120,7 @@ func (this *Server) DecodeTLSPorts() (ports []int) { if err != nil { return nil } - err = config.Init() + err = config.Init(nil) if err != nil { return nil } diff --git a/internal/db/models/ssl_cert_dao.go b/internal/db/models/ssl_cert_dao.go index fb0b9dee..cc52734d 100644 --- a/internal/db/models/ssl_cert_dao.go +++ b/internal/db/models/ssl_cert_dao.go @@ -6,6 +6,7 @@ import ( "errors" dbutils "github.com/TeaOSLab/EdgeAPI/internal/db/utils" "github.com/TeaOSLab/EdgeAPI/internal/utils" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs" _ "github.com/go-sql-driver/mysql" "github.com/iwind/TeaGo/Tea" @@ -201,7 +202,7 @@ func (this *SSLCertDAO) UpdateCert(tx *dbs.Tx, // ComposeCertConfig 组合配置 // ignoreData 是否忽略证书数据,避免因为数据过大影响传输 -func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, ignoreData bool, cacheMap *utils.CacheMap) (*sslconfigs.SSLCertConfig, error) { +func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, ignoreData bool, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*sslconfigs.SSLCertConfig, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -227,8 +228,17 @@ func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, ignoreData b config.Name = cert.Name config.Description = cert.Description if !ignoreData { - config.CertData = cert.CertData - config.KeyData = cert.KeyData + if dataMap != nil { + if len(cert.CertData) > 0 { + config.CertData = dataMap.Put(cert.CertData) + } + if len(cert.KeyData) > 0 { + config.KeyData = dataMap.Put(cert.KeyData) + } + } else { + config.CertData = cert.CertData + config.KeyData = cert.KeyData + } } config.ServerName = cert.ServerName config.TimeBeginAt = int64(cert.TimeBeginAt) @@ -236,7 +246,13 @@ func (this *SSLCertDAO) ComposeCertConfig(tx *dbs.Tx, certId int64, ignoreData b // OCSP if int64(cert.OcspExpiresAt) > time.Now().Unix() { - config.OCSP = cert.Ocsp + if dataMap != nil { + if len(cert.Ocsp) > 0 { + config.OCSP = dataMap.Put(cert.Ocsp) + } + } else { + config.OCSP = cert.Ocsp + } config.OCSPExpiresAt = int64(cert.OcspExpiresAt) } config.OCSPError = cert.OcspError diff --git a/internal/db/models/ssl_policy_dao.go b/internal/db/models/ssl_policy_dao.go index 492434c8..5a54dd18 100644 --- a/internal/db/models/ssl_policy_dao.go +++ b/internal/db/models/ssl_policy_dao.go @@ -4,6 +4,7 @@ import ( "encoding/json" "errors" "github.com/TeaOSLab/EdgeAPI/internal/utils" + "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared" "github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/sslconfigs" _ "github.com/go-sql-driver/mysql" "github.com/iwind/TeaGo/Tea" @@ -77,7 +78,7 @@ func (this *SSLPolicyDAO) FindEnabledSSLPolicy(tx *dbs.Tx, id int64) (*SSLPolicy } // ComposePolicyConfig 组合配置 -func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, ignoreData bool, cacheMap *utils.CacheMap) (*sslconfigs.SSLPolicy, error) { +func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, ignoreData bool, dataMap *shared.DataMap, cacheMap *utils.CacheMap) (*sslconfigs.SSLPolicy, error) { if cacheMap == nil { cacheMap = utils.NewCacheMap() } @@ -111,7 +112,7 @@ func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, ignore } if len(refs) > 0 { for _, ref := range refs { - certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, ignoreData, cacheMap) + certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, ignoreData, dataMap, cacheMap) if err != nil { return nil, err } @@ -133,7 +134,7 @@ func (this *SSLPolicyDAO) ComposePolicyConfig(tx *dbs.Tx, policyId int64, ignore } if len(refs) > 0 { for _, ref := range refs { - certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, ignoreData, cacheMap) + certConfig, err := SharedSSLCertDAO.ComposeCertConfig(tx, ref.CertId, ignoreData, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/db/models/user_node_model_ext.go b/internal/db/models/user_node_model_ext.go index 6a2e020d..7b6e0adb 100644 --- a/internal/db/models/user_node_model_ext.go +++ b/internal/db/models/user_node_model_ext.go @@ -36,7 +36,7 @@ func (this *UserNode) DecodeHTTPS(cacheMap *utils.CacheMap) (*serverconfigs.HTTP return nil, err } - err = config.Init() + err = config.Init(nil) 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, false, cacheMap) + sslPolicy, err := SharedSSLPolicyDAO.ComposePolicyConfig(nil, policyId, false, nil, cacheMap) if err != nil { return nil, err } @@ -54,7 +54,7 @@ func (this *UserNode) DecodeHTTPS(cacheMap *utils.CacheMap) (*serverconfigs.HTTP } } - err = config.Init() + err = config.Init(nil) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_http_location.go b/internal/rpc/services/service_http_location.go index 76388137..057077cd 100644 --- a/internal/rpc/services/service_http_location.go +++ b/internal/rpc/services/service_http_location.go @@ -60,7 +60,7 @@ func (this *HTTPLocationService) FindEnabledHTTPLocationConfig(ctx context.Conte var tx = this.NullTx() - config, err := models.SharedHTTPLocationDAO.ComposeLocationConfig(tx, req.LocationId, false, nil) + config, err := models.SharedHTTPLocationDAO.ComposeLocationConfig(tx, req.LocationId, false, nil, nil) if err != nil { return nil, err } @@ -121,7 +121,7 @@ func (this *HTTPLocationService) FindAndInitHTTPLocationReverseProxyConfig(ctx c } } - reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil) + reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil, nil) if err != nil { return nil, err } @@ -167,7 +167,7 @@ func (this *HTTPLocationService) FindAndInitHTTPLocationWebConfig(ctx context.Co } } - config, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, webId, true, false, nil) + config, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, webId, true, false, nil, nil) if err != nil { return nil, rpcutils.Wrap("ComposeWebConfig()", err) } diff --git a/internal/rpc/services/service_http_web.go b/internal/rpc/services/service_http_web.go index b889b668..b75d1e41 100644 --- a/internal/rpc/services/service_http_web.go +++ b/internal/rpc/services/service_http_web.go @@ -83,7 +83,7 @@ func (this *HTTPWebService) FindEnabledHTTPWebConfig(ctx context.Context, req *p var tx = this.NullTx() - config, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, req.HttpWebId, false, false, nil) + config, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, req.HttpWebId, false, false, nil, nil) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index 9894d606..84bb8d36 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -743,8 +743,12 @@ func (this *NodeService) FindCurrentNodeConfig(ctx context.Context, req *pb.Find if err != nil { return nil, err } + var dataMap *shared.DataMap + if req.UseDataMap { + dataMap = shared.NewDataMap() + } var cacheMap = this.findClusterCacheMap(clusterId, req.NodeTaskVersion) - nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, nodeId, cacheMap) + nodeConfig, err := models.SharedNodeDAO.ComposeNodeConfig(tx, nodeId, dataMap, cacheMap) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_origin.go b/internal/rpc/services/service_origin.go index 45c16e45..4a679747 100644 --- a/internal/rpc/services/service_origin.go +++ b/internal/rpc/services/service_origin.go @@ -211,7 +211,7 @@ func (this *OriginService) FindEnabledOriginConfig(ctx context.Context, req *pb. } } - config, err := models.SharedOriginDAO.ComposeOriginConfig(tx, req.OriginId, nil) + config, err := models.SharedOriginDAO.ComposeOriginConfig(tx, req.OriginId, nil, nil) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_reverse_proxy.go b/internal/rpc/services/service_reverse_proxy.go index 004775f9..ad746eb1 100644 --- a/internal/rpc/services/service_reverse_proxy.go +++ b/internal/rpc/services/service_reverse_proxy.go @@ -86,7 +86,7 @@ func (this *ReverseProxyService) FindEnabledReverseProxyConfig(ctx context.Conte var tx = this.NullTx() - config, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, req.ReverseProxyId, nil) + config, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, req.ReverseProxyId, nil, nil) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_server.go b/internal/rpc/services/service_server.go index 8b809425..9d3ca50f 100644 --- a/internal/rpc/services/service_server.go +++ b/internal/rpc/services/service_server.go @@ -845,7 +845,7 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb. } // 配置 - config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, req.IgnoreSSLCerts, nil, false, true) + config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, req.IgnoreSSLCerts, nil, nil, false, true) if err != nil { return nil, err } @@ -1008,7 +1008,7 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn } // 配置 - config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, req.IgnoreSSLCerts, nil, userId > 0, false) + config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, req.IgnoreSSLCerts, nil, nil, userId > 0, false) if err != nil { return nil, err } @@ -1144,7 +1144,7 @@ func (this *ServerService) FindAndInitServerReverseProxyConfig(ctx context.Conte } } - reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil) + reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil, nil) if err != nil { return nil, err } @@ -1191,7 +1191,7 @@ func (this *ServerService) FindAndInitServerWebConfig(ctx context.Context, req * } } - config, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, webId, false, false, nil) + config, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, webId, false, false, nil, nil) if err != nil { return nil, err } @@ -1519,7 +1519,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, false, cacheMap, true, false) + config, err := models.SharedServerDAO.ComposeServerConfig(tx, server, false, nil, cacheMap, true, 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 2034d6f2..55e66bb8 100644 --- a/internal/rpc/services/service_server_group.go +++ b/internal/rpc/services/service_server_group.go @@ -193,7 +193,7 @@ func (this *ServerGroupService) FindAndInitServerGroupHTTPReverseProxyConfig(ctx } } - reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil) + reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil, nil) if err != nil { return nil, err } @@ -246,7 +246,7 @@ func (this *ServerGroupService) FindAndInitServerGroupTCPReverseProxyConfig(ctx } } - reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil) + reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil, nil) if err != nil { return nil, err } @@ -299,7 +299,7 @@ func (this *ServerGroupService) FindAndInitServerGroupUDPReverseProxyConfig(ctx } } - reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil) + reverseProxyConfig, err := models.SharedReverseProxyDAO.ComposeReverseProxyConfig(tx, reverseProxyRef.ReverseProxyId, nil, nil) if err != nil { return nil, err } @@ -463,7 +463,7 @@ func (this *ServerGroupService) FindEnabledServerGroupConfigInfo(ctx context.Con result.HasUDPReverseProxy = ref.IsPrior } - config, err := models.SharedServerGroupDAO.ComposeGroupConfig(tx, int64(group.Id), false, false, nil) + config, err := models.SharedServerGroupDAO.ComposeGroupConfig(tx, int64(group.Id), false, false, nil, nil) if err != nil { return nil, err } @@ -510,7 +510,7 @@ func (this *ServerGroupService) FindAndInitServerGroupWebConfig(ctx context.Cont } } - webConfig, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, webId, true, false, nil) + webConfig, err := models.SharedHTTPWebDAO.ComposeWebConfig(tx, webId, true, false, nil, nil) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_ssl_cert.go b/internal/rpc/services/service_ssl_cert.go index b587228f..836e8f88 100644 --- a/internal/rpc/services/service_ssl_cert.go +++ b/internal/rpc/services/service_ssl_cert.go @@ -92,7 +92,7 @@ func (this *SSLCertService) FindEnabledSSLCertConfig(ctx context.Context, req *p } } - config, err := models.SharedSSLCertDAO.ComposeCertConfig(tx, req.SslCertId, false, nil) + config, err := models.SharedSSLCertDAO.ComposeCertConfig(tx, req.SslCertId, false, nil, 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, false, nil) + certConfig, err := models.SharedSSLCertDAO.ComposeCertConfig(tx, certId, false, nil, nil) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_ssl_policy.go b/internal/rpc/services/service_ssl_policy.go index 9d8e3605..330405d2 100644 --- a/internal/rpc/services/service_ssl_policy.go +++ b/internal/rpc/services/service_ssl_policy.go @@ -88,7 +88,7 @@ func (this *SSLPolicyService) FindEnabledSSLPolicyConfig(ctx context.Context, re var tx = this.NullTx() - config, err := models.SharedSSLPolicyDAO.ComposePolicyConfig(tx, req.SslPolicyId, req.IgnoreData, nil) + config, err := models.SharedSSLPolicyDAO.ComposePolicyConfig(tx, req.SslPolicyId, req.IgnoreData, nil, nil) if err != nil { return nil, err }