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).