From 9c9cee5537e1256cad110b4d5b5ffa7f98ece5df Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Mon, 11 Dec 2023 11:08:19 +0800 Subject: [PATCH] =?UTF-8?q?WebP=E7=AD=96=E7=95=A5=E5=8F=98=E5=8C=96?= =?UTF-8?q?=E6=97=B6=E5=8F=AA=E6=9B=B4=E6=96=B0=E7=9B=B8=E5=85=B3=E9=85=8D?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_cluster_dao.go | 11 ++++-- internal/db/models/node_dao.go | 2 +- internal/db/models/node_task_dao.go | 1 + internal/rpc/services/service_node.go | 36 +++++++++++++++++++ internal/rpc/services/service_node_cluster.go | 10 +++--- 5 files changed, 51 insertions(+), 9 deletions(-) diff --git a/internal/db/models/node_cluster_dao.go b/internal/db/models/node_cluster_dao.go index cabbb019..94572ae3 100644 --- a/internal/db/models/node_cluster_dao.go +++ b/internal/db/models/node_cluster_dao.go @@ -1043,7 +1043,7 @@ func (this *NodeClusterDAO) UpdateClusterWebPPolicy(tx *dbs.Tx, clusterId int64, return err } - return this.NotifyUpdate(tx, clusterId) + return this.NotifyWebPPolicyUpdate(tx, clusterId) } webpPolicyJSON, err := json.Marshal(webpPolicy) @@ -1058,7 +1058,7 @@ func (this *NodeClusterDAO) UpdateClusterWebPPolicy(tx *dbs.Tx, clusterId int64, return err } - return this.NotifyUpdate(tx, clusterId) + return this.NotifyWebPPolicyUpdate(tx, clusterId) } // FindClusterWebPPolicy 查询WebP设置 @@ -1083,7 +1083,7 @@ func (this *NodeClusterDAO) FindClusterWebPPolicy(tx *dbs.Tx, clusterId int64, c return nodeconfigs.DefaultWebPImagePolicy, nil } - var policy = &nodeconfigs.WebPImagePolicy{} + var policy = nodeconfigs.NewWebPImagePolicy() err = json.Unmarshal(webpJSON, policy) if err != nil { return nil, err @@ -1518,6 +1518,11 @@ func (this *NodeClusterDAO) NotifyTOAUpdate(tx *dbs.Tx, clusterId int64) error { return SharedNodeTaskDAO.CreateClusterTask(tx, nodeconfigs.NodeRoleNode, clusterId, 0, 0, NodeTaskTypeTOAChanged) } +// NotifyWebPPolicyUpdate 通知WebP策略更新 +func (this *NodeClusterDAO) NotifyWebPPolicyUpdate(tx *dbs.Tx, clusterId int64) error { + return SharedNodeTaskDAO.CreateClusterTask(tx, nodeconfigs.NodeRoleNode, clusterId, 0, 0, NodeTaskTypeWebPPolicyChanged) +} + // NotifyDNSUpdate 通知DNS更新 // TODO 更新新的DNS解析记录的同时,需要删除老的DNS解析记录 func (this *NodeClusterDAO) NotifyDNSUpdate(tx *dbs.Tx, clusterId int64) error { diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index bfdf0965..3dba04fd 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -1151,7 +1151,7 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, dataMap *shared // webp if IsNotNull(nodeCluster.Webp) { - var webpPolicy = &nodeconfigs.WebPImagePolicy{} + var webpPolicy = nodeconfigs.NewWebPImagePolicy() err = json.Unmarshal(nodeCluster.Webp, webpPolicy) if err != nil { return nil, err diff --git a/internal/db/models/node_task_dao.go b/internal/db/models/node_task_dao.go index 15ef6912..acab9fd5 100644 --- a/internal/db/models/node_task_dao.go +++ b/internal/db/models/node_task_dao.go @@ -31,6 +31,7 @@ const ( NodeTaskTypeHTTPCCPolicyChanged NodeTaskType = "httpCCPolicyChanged" // CC策略变化 NodeTaskTypeHTTP3PolicyChanged NodeTaskType = "http3PolicyChanged" // HTTP3策略变化 NodeTaskTypeNetworkSecurityPolicyChanged NodeTaskType = "networkSecurityPolicyChanged" // 网络安全策略变化 + NodeTaskTypeWebPPolicyChanged NodeTaskType = "webPPolicyChanged" // WebP策略变化 NodeTaskTypeUpdatingServers NodeTaskType = "updatingServers" // 更新一组服务 NodeTaskTypeTOAChanged NodeTaskType = "toaChanged" // TOA配置变化 diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index 3a390010..20b5d9c9 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -2257,3 +2257,39 @@ func (this *NodeService) UpdateNodeAPIConfig(ctx context.Context, req *pb.Update return this.Success() } + +// FindNodeWebPPolicies 查找节点的WebP策略 +func (this *NodeService) FindNodeWebPPolicies(ctx context.Context, req *pb.FindNodeWebPPoliciesRequest) (*pb.FindNodeWebPPoliciesResponse, error) { + nodeId, err := this.ValidateNode(ctx) + if err != nil { + return nil, err + } + + var tx = this.NullTx() + clusterIds, err := models.SharedNodeDAO.FindEnabledAndOnNodeClusterIds(tx, nodeId) + if err != nil { + return nil, err + } + + var pbPolicies = []*pb.FindNodeWebPPoliciesResponse_WebPPolicy{} + for _, clusterId := range clusterIds { + policy, err := models.SharedNodeClusterDAO.FindClusterWebPPolicy(tx, clusterId, nil) + if err != nil { + return nil, err + } + if policy == nil { + continue + } + policyJSON, err := json.Marshal(policy) + if err != nil { + return nil, err + } + pbPolicies = append(pbPolicies, &pb.FindNodeWebPPoliciesResponse_WebPPolicy{ + NodeClusterId: clusterId, + WebPPolicyJSON: policyJSON, + }) + } + return &pb.FindNodeWebPPoliciesResponse{ + WebPPolicies: pbPolicies, + }, nil +} diff --git a/internal/rpc/services/service_node_cluster.go b/internal/rpc/services/service_node_cluster.go index 2abfcc93..da9264eb 100644 --- a/internal/rpc/services/service_node_cluster.go +++ b/internal/rpc/services/service_node_cluster.go @@ -1126,14 +1126,14 @@ func (this *NodeClusterService) FindEnabledNodeClusterConfigInfo(ctx context.Con // webp if models.IsNotNull(cluster.Webp) { - var webpPolicy = &nodeconfigs.WebPImagePolicy{} + var webpPolicy = nodeconfigs.NewWebPImagePolicy() err = json.Unmarshal(cluster.Webp, webpPolicy) if err != nil { return nil, err } - result.WebpIsOn = webpPolicy.IsOn + result.WebPIsOn = webpPolicy.IsOn } else { - result.WebpIsOn = nodeconfigs.DefaultWebPImagePolicy.IsOn + result.WebPIsOn = nodeconfigs.DefaultWebPImagePolicy.IsOn } // UAM @@ -1247,8 +1247,8 @@ func (this *NodeClusterService) UpdateNodeClusterWebPPolicy(ctx context.Context, return nil, err } - var webpPolicy = &nodeconfigs.WebPImagePolicy{} - err = json.Unmarshal(req.WebpPolicyJSON, webpPolicy) + var webpPolicy = nodeconfigs.NewWebPImagePolicy() + err = json.Unmarshal(req.WebPPolicyJSON, webpPolicy) if err != nil { return nil, err }