From cd2f5428ca0dd7027af435a2f99d66d2f1a110ee Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 26 Nov 2021 10:39:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E5=8D=87=E5=85=A8=E5=B1=80IP=E5=90=8D?= =?UTF-8?q?=E5=8D=95=E5=8F=98=E6=9B=B4=E9=80=9A=E7=9F=A5=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/ip_item_dao.go | 31 ++++++++++++++++++++++++++ internal/db/models/node_cluster_dao.go | 16 +++++++++++++ 2 files changed, 47 insertions(+) diff --git a/internal/db/models/ip_item_dao.go b/internal/db/models/ip_item_dao.go index 115e2cfc..a9f7ebf7 100644 --- a/internal/db/models/ip_item_dao.go +++ b/internal/db/models/ip_item_dao.go @@ -394,6 +394,37 @@ func (this *IPItemDAO) NotifyUpdate(tx *dbs.Tx, itemId int64) error { return nil } + if listId == firewallconfigs.GlobalListId { + sourceNodeId, err := this.Query(tx). + Pk(itemId). + Result("sourceNodeId"). + FindInt64Col(0) + if err != nil { + return err + } + if sourceNodeId > 0 { + clusterIds, err := SharedNodeDAO.FindEnabledNodeClusterIds(tx, sourceNodeId) + if err != nil { + return err + } + for _, clusterId := range clusterIds { + err = SharedNodeTaskDAO.CreateClusterTask(tx, nodeconfigs.NodeRoleNode, clusterId, NodeTaskTypeIPItemChanged) + if err != nil { + return err + } + } + } else { + clusterIds, err := SharedNodeClusterDAO.FindAllEnabledNodeClusterIds(tx) + for _, clusterId := range clusterIds { + err = SharedNodeTaskDAO.CreateClusterTask(tx, nodeconfigs.NodeRoleNode, clusterId, NodeTaskTypeIPItemChanged) + if err != nil { + return err + } + } + } + return nil + } + httpFirewallPolicyIds, err := SharedHTTPFirewallPolicyDAO.FindEnabledFirewallPolicyIdsWithIPListId(tx, listId) if err != nil { return err diff --git a/internal/db/models/node_cluster_dao.go b/internal/db/models/node_cluster_dao.go index 5233b3ea..f6d998e0 100644 --- a/internal/db/models/node_cluster_dao.go +++ b/internal/db/models/node_cluster_dao.go @@ -588,6 +588,22 @@ func (this *NodeClusterDAO) FindAllEnabledNodeClusterIdsWithHTTPFirewallPolicyId return } +// FindAllEnabledNodeClusterIds 查找所有可用的集群 +func (this *NodeClusterDAO) FindAllEnabledNodeClusterIds(tx *dbs.Tx) ([]int64, error) { + ones, err := this.Query(tx). + State(NodeClusterStateEnabled). + ResultPk(). + FindAll() + if err != nil { + return nil, err + } + var result = []int64{} + for _, one := range ones { + result = append(result, int64(one.(*NodeCluster).Id)) + } + return result, nil +} + // FindAllEnabledNodeClusterIdsWithCachePolicyId 查找使用缓存策略的所有集群Ids func (this *NodeClusterDAO) FindAllEnabledNodeClusterIdsWithCachePolicyId(tx *dbs.Tx, cachePolicyId int64) (result []int64, err error) { ones, err := this.Query(tx).