diff --git a/internal/db/models/http_web_dao.go b/internal/db/models/http_web_dao.go index 3a979076..24cdf545 100644 --- a/internal/db/models/http_web_dao.go +++ b/internal/db/models/http_web_dao.go @@ -228,18 +228,9 @@ func (this *HTTPWebDAO) ComposeWebConfig(webId int64) (*serverconfigs.HTTPWebCon if err != nil { return nil, err } - for _, cacheRef := range cacheConfig.CacheRefs { - if cacheRef.CachePolicyId > 0 { - cachePolicy, err := SharedHTTPCachePolicyDAO.ComposeCachePolicy(cacheRef.CachePolicyId) - if err != nil { - return nil, err - } - if cachePolicy != nil { - cacheRef.CachePolicy = cachePolicy - } - } - } config.Cache = cacheConfig + + // 暂不支持自定义缓存策略设置,因为同一个集群下的服务需要集中管理 } // 防火墙配置 @@ -251,17 +242,7 @@ func (this *HTTPWebDAO) ComposeWebConfig(webId int64) (*serverconfigs.HTTPWebCon } config.FirewallRef = firewallRef - if firewallRef.FirewallPolicyId > 0 { - firewallPolicy, err := SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(firewallRef.FirewallPolicyId) - if err != nil { - return nil, err - } - if firewallPolicy == nil { - config.FirewallRef = nil - } else { - config.FirewallPolicy = firewallPolicy - } - } + // 暂不支持自定义防火墙策略设置,因为同一个集群下的服务需要集中管理 } // 路径规则 diff --git a/internal/db/models/node_cluster_dao.go b/internal/db/models/node_cluster_dao.go index 8e0192a0..80f057b3 100644 --- a/internal/db/models/node_cluster_dao.go +++ b/internal/db/models/node_cluster_dao.go @@ -609,6 +609,14 @@ func (this *NodeClusterDAO) FindAllEnabledNodeClustersWithHTTPFirewallPolicyId(h return } +// 获取集群的WAF策略ID +func (this *NodeClusterDAO) FindClusterHTTPFirewallPolicyId(clusterId int64) (int64, error) { + return this.Query(). + Pk(clusterId). + Result("httpFirewallPolicyId"). + FindInt64Col(0) +} + // 设置集群的缓存策略 func (this *NodeClusterDAO) UpdateNodeClusterHTTPCachePolicyId(clusterId int64, httpCachePolicyId int64) error { _, err := this.Query(). @@ -618,6 +626,14 @@ func (this *NodeClusterDAO) UpdateNodeClusterHTTPCachePolicyId(clusterId int64, return err } +// 获取集群的缓存策略ID +func (this *NodeClusterDAO) FindClusterHTTPCachePolicyId(clusterId int64) (int64, error) { + return this.Query(). + Pk(clusterId). + Result("cachePolicyId"). + FindInt64Col(0) +} + // 设置集群的WAF策略 func (this *NodeClusterDAO) UpdateNodeClusterHTTPFirewallPolicyId(clusterId int64, httpFirewallPolicyId int64) error { _, err := this.Query(). diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index 30a59ad5..4b57d8ef 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -143,7 +143,7 @@ func (this *NodeDAO) UpdateNodeLatestVersion(nodeId int64) error { } // 批量更新节点版本 -func (this *NodeDAO) UpdateAllNodesLatestVersionMatch(clusterId int64) error { +func (this *NodeDAO) IncreaseAllNodesLatestVersionMatch(clusterId int64) error { _, err := this.Query(). Attr("clusterId", clusterId). Set("latestVersion", dbs.SQL("latestVersion+1")). @@ -459,6 +459,7 @@ func (this *NodeDAO) UpdateNodeInstallStatus(nodeId int64, status *NodeInstallSt } // 组合配置 +// TODO 提升运行速度 func (this *NodeDAO) ComposeNodeConfig(nodeId int64) (*nodeconfigs.NodeConfig, error) { node, err := this.FindEnabledNode(nodeId) if err != nil { @@ -513,8 +514,39 @@ func (this *NodeDAO) ComposeNodeConfig(nodeId int64) (*nodeconfigs.NodeConfig, e config.GlobalConfig = globalConfig } + // WAF + clusterId := int64(node.ClusterId) + httpFirewallPolicyId, err := SharedNodeClusterDAO.FindClusterHTTPFirewallPolicyId(clusterId) + if err != nil { + return nil, err + } + if httpFirewallPolicyId > 0 { + firewallPolicy, err := SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(httpFirewallPolicyId) + if err != nil { + return nil, err + } + if firewallPolicy != nil { + config.HTTPFirewallPolicy = firewallPolicy + } + } + + // 缓存策略 + httpCachePolicyId, err := SharedNodeClusterDAO.FindClusterHTTPCachePolicyId(clusterId) + if err != nil { + return nil, err + } + if httpCachePolicyId > 0 { + cachePolicy, err := SharedHTTPCachePolicyDAO.ComposeCachePolicy(httpCachePolicyId) + if err != nil { + return nil, err + } + if cachePolicy != nil { + config.HTTPCachePolicy = cachePolicy + } + } + // TOA - toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(int64(node.ClusterId)) + toaConfig, err := SharedNodeClusterDAO.FindClusterTOAConfig(clusterId) if err != nil { return nil, err } diff --git a/internal/db/models/sys_event_types.go b/internal/db/models/sys_event_types.go index 3e88f265..83635f16 100644 --- a/internal/db/models/sys_event_types.go +++ b/internal/db/models/sys_event_types.go @@ -54,7 +54,7 @@ func (this *ServerChangeEvent) Run() error { if !isOk { continue } - err = SharedNodeDAO.UpdateAllNodesLatestVersionMatch(clusterId) + err = SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(clusterId) if err != nil { return err } diff --git a/internal/rpc/services/service_message.go b/internal/rpc/services/service_message.go index 5ac997fe..120b81e8 100644 --- a/internal/rpc/services/service_message.go +++ b/internal/rpc/services/service_message.go @@ -70,15 +70,15 @@ func (this *MessageService) ListUnreadMessages(ctx context.Context, req *pb.List } result = append(result, &pb.Message{ - Id: int64(message.Id), - Type: message.Type, - Body: message.Body, - Level: message.Level, - ParamsJSON: []byte(message.Params), - IsRead: message.IsRead == 1, - CreatedAt: int64(message.CreatedAt), - Cluster: pbCluster, - Node: pbNode, + Id: int64(message.Id), + Type: message.Type, + Body: message.Body, + Level: message.Level, + ParamsJSON: []byte(message.Params), + IsRead: message.IsRead == 1, + CreatedAt: int64(message.CreatedAt), + NodeCluster: pbCluster, + Node: pbNode, }) } diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index 1c89f9da..0cbf3c60 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -255,7 +255,7 @@ func (this *NodeService) ListEnabledNodesMatch(ctx context.Context, req *pb.List Version: int64(node.Version), IsInstalled: node.IsInstalled == 1, StatusJSON: []byte(node.Status), - Cluster: &pb.NodeCluster{ + NodeCluster: &pb.NodeCluster{ Id: int64(node.ClusterId), Name: clusterName, }, @@ -478,7 +478,7 @@ func (this *NodeService) FindEnabledNode(ctx context.Context, req *pb.FindEnable Secret: node.Secret, InstallDir: node.InstallDir, IsInstalled: node.IsInstalled == 1, - Cluster: &pb.NodeCluster{ + NodeCluster: &pb.NodeCluster{ Id: int64(node.ClusterId), Name: clusterName, }, @@ -744,7 +744,7 @@ func (this *NodeService) FindAllEnabledNodesWithGrantId(ctx context.Context, req Version: int64(node.Version), IsInstalled: node.IsInstalled == 1, StatusJSON: []byte(node.Status), - Cluster: &pb.NodeCluster{ + NodeCluster: &pb.NodeCluster{ Id: int64(node.ClusterId), Name: clusterName, }, diff --git a/internal/rpc/services/service_node_cluster.go b/internal/rpc/services/service_node_cluster.go index 71bee7a1..e72889a2 100644 --- a/internal/rpc/services/service_node_cluster.go +++ b/internal/rpc/services/service_node_cluster.go @@ -78,7 +78,7 @@ func (this *NodeClusterService) FindEnabledNodeCluster(ctx context.Context, req return &pb.FindEnabledNodeClusterResponse{}, nil } - return &pb.FindEnabledNodeClusterResponse{Cluster: &pb.NodeCluster{ + return &pb.FindEnabledNodeClusterResponse{NodeCluster: &pb.NodeCluster{ Id: int64(cluster.Id), Name: cluster.Name, CreatedAt: int64(cluster.CreatedAt), @@ -168,7 +168,7 @@ func (this *NodeClusterService) FindAllEnabledNodeClusters(ctx context.Context, } return &pb.FindAllEnabledNodeClustersResponse{ - Clusters: result, + NodeClusters: result, }, nil } @@ -185,7 +185,7 @@ func (this *NodeClusterService) FindAllChangedNodeClusters(ctx context.Context, } if len(clusterIds) == 0 { return &pb.FindAllChangedNodeClustersResponse{ - Clusters: []*pb.NodeCluster{}, + NodeClusters: []*pb.NodeCluster{}, }, nil } result := []*pb.NodeCluster{} @@ -205,7 +205,7 @@ func (this *NodeClusterService) FindAllChangedNodeClusters(ctx context.Context, Secret: cluster.Secret, }) } - return &pb.FindAllChangedNodeClustersResponse{Clusters: result}, nil + return &pb.FindAllChangedNodeClustersResponse{NodeClusters: result}, nil } // 计算所有集群数量 @@ -250,7 +250,7 @@ func (this *NodeClusterService) ListEnabledNodeClusters(ctx context.Context, req }) } - return &pb.ListEnabledNodeClustersResponse{Clusters: result}, nil + return &pb.ListEnabledNodeClustersResponse{NodeClusters: result}, nil } // 查找集群的健康检查配置 @@ -354,7 +354,7 @@ func (this *NodeClusterService) FindAllEnabledNodeClustersWithGrantId(ctx contex Secret: cluster.Secret, }) } - return &pb.FindAllEnabledNodeClustersWithGrantIdResponse{Clusters: result}, nil + return &pb.FindAllEnabledNodeClustersWithGrantIdResponse{NodeClusters: result}, nil } // 查找集群的DNS配置 @@ -566,8 +566,8 @@ func (this *NodeClusterService) UpdateNodeClusterTOA(ctx context.Context, req *p return nil, err } - // 更新节点版本 - err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId) + // 增加节点版本号 + err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId) if err != nil { return nil, err } @@ -655,6 +655,13 @@ func (this *NodeClusterService) UpdateNodeClusterHTTPCachePolicyId(ctx context.C if err != nil { return nil, err } + + // 增加节点版本号 + err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId) + if err != nil { + return nil, err + } + return this.Success() } @@ -668,5 +675,12 @@ func (this *NodeClusterService) UpdateNodeClusterHTTPFirewallPolicyId(ctx contex if err != nil { return nil, err } + + // 增加节点版本号 + err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId) + if err != nil { + return nil, err + } + return this.Success() } diff --git a/internal/rpc/services/service_server.go b/internal/rpc/services/service_server.go index afea245a..e98f2ca5 100644 --- a/internal/rpc/services/service_server.go +++ b/internal/rpc/services/service_server.go @@ -28,7 +28,7 @@ func (this *ServerService) CreateServer(ctx context.Context, req *pb.CreateServe } // 更新节点版本 - err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId) + err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId) if err != nil { return nil, err } @@ -75,14 +75,14 @@ func (this *ServerService) UpdateServerBasic(ctx context.Context, req *pb.Update // 更新老的节点版本 if req.NodeClusterId != int64(server.ClusterId) { - err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(int64(server.ClusterId)) + err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(int64(server.ClusterId)) if err != nil { return nil, err } } // 更新新的节点版本 - err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId) + err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(req.NodeClusterId) if err != nil { return nil, err } @@ -461,7 +461,7 @@ func (this *ServerService) ListEnabledServersMatch(ctx context.Context, req *pb. ServerNamesJSON: []byte(server.ServerNames), CreatedAt: int64(server.CreatedAt), DnsName: server.DnsName, - Cluster: &pb.NodeCluster{ + NodeCluster: &pb.NodeCluster{ Id: int64(server.ClusterId), Name: clusterName, }, @@ -497,7 +497,7 @@ func (this *ServerService) DisableServer(ctx context.Context, req *pb.DisableSer } // 更新节点版本 - err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(int64(server.ClusterId)) + err = models.SharedNodeDAO.IncreaseAllNodesLatestVersionMatch(int64(server.ClusterId)) if err != nil { return nil, err } @@ -572,7 +572,7 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn IncludeNodes: []byte(server.IncludeNodes), ExcludeNodes: []byte(server.ExcludeNodes), CreatedAt: int64(server.CreatedAt), - Cluster: &pb.NodeCluster{ + NodeCluster: &pb.NodeCluster{ Id: int64(server.ClusterId), Name: clusterName, }, diff --git a/internal/rpc/services/service_user.go b/internal/rpc/services/service_user.go index c6c8c228..98ee72b3 100644 --- a/internal/rpc/services/service_user.go +++ b/internal/rpc/services/service_user.go @@ -99,16 +99,16 @@ func (this *UserService) ListEnabledUsers(ctx context.Context, req *pb.ListEnabl } result = append(result, &pb.User{ - Id: int64(user.Id), - Username: user.Username, - Fullname: user.Fullname, - Mobile: user.Mobile, - Tel: user.Tel, - Email: user.Email, - Remark: user.Remark, - IsOn: user.IsOn == 1, - CreatedAt: int64(user.CreatedAt), - Cluster: pbCluster, + Id: int64(user.Id), + Username: user.Username, + Fullname: user.Fullname, + Mobile: user.Mobile, + Tel: user.Tel, + Email: user.Email, + Remark: user.Remark, + IsOn: user.IsOn == 1, + CreatedAt: int64(user.CreatedAt), + NodeCluster: pbCluster, }) } @@ -144,16 +144,16 @@ func (this *UserService) FindEnabledUser(ctx context.Context, req *pb.FindEnable } return &pb.FindEnabledUserResponse{User: &pb.User{ - Id: int64(user.Id), - Username: user.Username, - Fullname: user.Fullname, - Mobile: user.Mobile, - Tel: user.Tel, - Email: user.Email, - Remark: user.Remark, - IsOn: user.IsOn == 1, - CreatedAt: int64(user.CreatedAt), - Cluster: pbCluster, + Id: int64(user.Id), + Username: user.Username, + Fullname: user.Fullname, + Mobile: user.Mobile, + Tel: user.Tel, + Email: user.Email, + Remark: user.Remark, + IsOn: user.IsOn == 1, + CreatedAt: int64(user.CreatedAt), + NodeCluster: pbCluster, }}, nil }