From 4ba539c687438d0f3b8976b2af7c00dc2cf722a0 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Thu, 17 Dec 2020 15:51:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E7=BE=A4=E5=8F=AF=E4=BB=A5=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=BB=98=E8=AE=A4=E7=9A=84WAF=E7=AD=96=E7=95=A5?= =?UTF-8?q?=E3=80=81=E7=BC=93=E5=AD=98=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_cluster_dao.go | 64 +++++++- internal/db/models/node_cluster_model.go | 82 +++++----- internal/db/models/user_dao.go | 6 +- internal/db/models/user_model.go | 2 + internal/rpc/services/service_api_node.go | 6 +- .../rpc/services/service_http_cache_policy.go | 33 +++- .../services/service_http_firewall_policy.go | 46 +++--- internal/rpc/services/service_node.go | 22 +-- internal/rpc/services/service_node_cluster.go | 144 +++++++++++++++--- internal/rpc/services/service_node_group.go | 4 +- internal/rpc/services/service_server.go | 126 +-------------- internal/rpc/services/service_user.go | 33 +++- 12 files changed, 337 insertions(+), 231 deletions(-) diff --git a/internal/db/models/node_cluster_dao.go b/internal/db/models/node_cluster_dao.go index 1a687289..8e0192a0 100644 --- a/internal/db/models/node_cluster_dao.go +++ b/internal/db/models/node_cluster_dao.go @@ -102,7 +102,7 @@ func (this *NodeClusterDAO) FindAllEnableClusters() (result []*NodeCluster, err } // 创建集群 -func (this *NodeClusterDAO) CreateCluster(adminId int64, name string, grantId int64, installDir string, dnsDomainId int64, dnsName string) (clusterId int64, err error) { +func (this *NodeClusterDAO) CreateCluster(adminId int64, name string, grantId int64, installDir string, dnsDomainId int64, dnsName string, cachePolicyId int64, httpFirewallPolicyId int64) (clusterId int64, err error) { uniqueId, err := this.genUniqueId() if err != nil { return 0, err @@ -133,6 +133,12 @@ func (this *NodeClusterDAO) CreateCluster(adminId int64, name string, grantId in } op.Dns = dnsJSON + // 缓存策略 + op.CachePolicyId = cachePolicyId + + // WAF策略 + op.HttpFirewallPolicyId = httpFirewallPolicyId + op.UseAllAPINodes = 1 op.ApiNodes = "[]" op.UniqueId = uniqueId @@ -565,6 +571,62 @@ func (this *NodeClusterDAO) UpdateClusterTOA(clusterId int64, toaJSON []byte) er return err } +// 计算使用某个缓存策略的集群数量 +func (this *NodeClusterDAO) CountAllEnabledNodeClustersWithHTTPCachePolicyId(httpCachePolicyId int64) (int64, error) { + return this.Query(). + State(NodeClusterStateEnabled). + Attr("cachePolicyId", httpCachePolicyId). + Count() +} + +// 查找使用缓存策略的所有集群 +func (this *NodeClusterDAO) FindAllEnabledNodeClustersWithHTTPCachePolicyId(httpCachePolicyId int64) (result []*NodeCluster, err error) { + _, err = this.Query(). + State(NodeClusterStateEnabled). + Attr("cachePolicyId", httpCachePolicyId). + DescPk(). + Slice(&result). + FindAll() + return +} + +// 计算使用某个WAF策略的集群数量 +func (this *NodeClusterDAO) CountAllEnabledNodeClustersWithHTTPFirewallPolicyId(httpFirewallPolicyId int64) (int64, error) { + return this.Query(). + State(NodeClusterStateEnabled). + Attr("httpFirewallPolicyId", httpFirewallPolicyId). + Count() +} + +// 查找使用WAF策略的所有集群 +func (this *NodeClusterDAO) FindAllEnabledNodeClustersWithHTTPFirewallPolicyId(httpFirewallPolicyId int64) (result []*NodeCluster, err error) { + _, err = this.Query(). + State(NodeClusterStateEnabled). + Attr("httpFirewallPolicyId", httpFirewallPolicyId). + DescPk(). + Slice(&result). + FindAll() + return +} + +// 设置集群的缓存策略 +func (this *NodeClusterDAO) UpdateNodeClusterHTTPCachePolicyId(clusterId int64, httpCachePolicyId int64) error { + _, err := this.Query(). + Pk(clusterId). + Set("cachePolicyId", httpCachePolicyId). + Update() + return err +} + +// 设置集群的WAF策略 +func (this *NodeClusterDAO) UpdateNodeClusterHTTPFirewallPolicyId(clusterId int64, httpFirewallPolicyId int64) error { + _, err := this.Query(). + Pk(clusterId). + Set("httpFirewallPolicyId", httpFirewallPolicyId). + Update() + return err +} + // 生成唯一ID func (this *NodeClusterDAO) genUniqueId() (string, error) { for { diff --git a/internal/db/models/node_cluster_model.go b/internal/db/models/node_cluster_model.go index 79710f52..5fcc24bb 100644 --- a/internal/db/models/node_cluster_model.go +++ b/internal/db/models/node_cluster_model.go @@ -2,47 +2,53 @@ package models // 节点集群 type NodeCluster struct { - Id uint32 `field:"id"` // ID - AdminId uint32 `field:"adminId"` // 管理员ID - UserId uint32 `field:"userId"` // 用户ID - Name string `field:"name"` // 名称 - UseAllAPINodes uint8 `field:"useAllAPINodes"` // 是否使用所有API节点 - ApiNodes string `field:"apiNodes"` // 使用的API节点 - InstallDir string `field:"installDir"` // 安装目录 - Order uint32 `field:"order"` // 排序 - CreatedAt uint64 `field:"createdAt"` // 创建时间 - GrantId uint32 `field:"grantId"` // 默认认证方式 - State uint8 `field:"state"` // 状态 - AutoRegister uint8 `field:"autoRegister"` // 是否开启自动注册 - UniqueId string `field:"uniqueId"` // 唯一ID - Secret string `field:"secret"` // 密钥 - HealthCheck string `field:"healthCheck"` // 健康检查 - DnsName string `field:"dnsName"` // DNS名称 - DnsDomainId uint32 `field:"dnsDomainId"` // 域名ID - Dns string `field:"dns"` // DNS配置 - Toa string `field:"toa"` // TOA配置 + Id uint32 `field:"id"` // ID + AdminId uint32 `field:"adminId"` // 管理员ID + UserId uint32 `field:"userId"` // 用户ID + Name string `field:"name"` // 名称 + UseAllAPINodes uint8 `field:"useAllAPINodes"` // 是否使用所有API节点 + ApiNodes string `field:"apiNodes"` // 使用的API节点 + InstallDir string `field:"installDir"` // 安装目录 + Order uint32 `field:"order"` // 排序 + CreatedAt uint64 `field:"createdAt"` // 创建时间 + GrantId uint32 `field:"grantId"` // 默认认证方式 + State uint8 `field:"state"` // 状态 + AutoRegister uint8 `field:"autoRegister"` // 是否开启自动注册 + UniqueId string `field:"uniqueId"` // 唯一ID + Secret string `field:"secret"` // 密钥 + HealthCheck string `field:"healthCheck"` // 健康检查 + DnsName string `field:"dnsName"` // DNS名称 + DnsDomainId uint32 `field:"dnsDomainId"` // 域名ID + Dns string `field:"dns"` // DNS配置 + Toa string `field:"toa"` // TOA配置 + CachePolicyId uint32 `field:"cachePolicyId"` // 缓存策略ID + HttpFirewallPolicyId uint32 `field:"httpFirewallPolicyId"` // WAF策略ID + AccessLog string `field:"accessLog"` // 访问日志设置 } type NodeClusterOperator struct { - Id interface{} // ID - AdminId interface{} // 管理员ID - UserId interface{} // 用户ID - Name interface{} // 名称 - UseAllAPINodes interface{} // 是否使用所有API节点 - ApiNodes interface{} // 使用的API节点 - InstallDir interface{} // 安装目录 - Order interface{} // 排序 - CreatedAt interface{} // 创建时间 - GrantId interface{} // 默认认证方式 - State interface{} // 状态 - AutoRegister interface{} // 是否开启自动注册 - UniqueId interface{} // 唯一ID - Secret interface{} // 密钥 - HealthCheck interface{} // 健康检查 - DnsName interface{} // DNS名称 - DnsDomainId interface{} // 域名ID - Dns interface{} // DNS配置 - Toa interface{} // TOA配置 + Id interface{} // ID + AdminId interface{} // 管理员ID + UserId interface{} // 用户ID + Name interface{} // 名称 + UseAllAPINodes interface{} // 是否使用所有API节点 + ApiNodes interface{} // 使用的API节点 + InstallDir interface{} // 安装目录 + Order interface{} // 排序 + CreatedAt interface{} // 创建时间 + GrantId interface{} // 默认认证方式 + State interface{} // 状态 + AutoRegister interface{} // 是否开启自动注册 + UniqueId interface{} // 唯一ID + Secret interface{} // 密钥 + HealthCheck interface{} // 健康检查 + DnsName interface{} // DNS名称 + DnsDomainId interface{} // 域名ID + Dns interface{} // DNS配置 + Toa interface{} // TOA配置 + CachePolicyId interface{} // 缓存策略ID + HttpFirewallPolicyId interface{} // WAF策略ID + AccessLog interface{} // 访问日志设置 } func NewNodeClusterOperator() *NodeClusterOperator { diff --git a/internal/db/models/user_dao.go b/internal/db/models/user_dao.go index f592f9d4..12a35bde 100644 --- a/internal/db/models/user_dao.go +++ b/internal/db/models/user_dao.go @@ -85,7 +85,7 @@ func (this *UserDAO) FindUserFullname(userId int64) (string, error) { } // 创建用户 -func (this *UserDAO) CreateUser(username string, password string, fullname string, mobile string, tel string, email string, remark string, source string) (int64, error) { +func (this *UserDAO) CreateUser(username string, password string, fullname string, mobile string, tel string, email string, remark string, source string, clusterId int64) (int64, error) { op := NewUserOperator() op.Username = username op.Password = stringutil.Md5(password) @@ -95,6 +95,7 @@ func (this *UserDAO) CreateUser(username string, password string, fullname strin op.Email = email op.Remark = remark op.Source = source + op.ClusterId = clusterId op.IsOn = true op.State = UserStateEnabled @@ -106,7 +107,7 @@ func (this *UserDAO) CreateUser(username string, password string, fullname strin } // 修改用户 -func (this *UserDAO) UpdateUser(userId int64, username string, password string, fullname string, mobile string, tel string, email string, remark string, isOn bool) error { +func (this *UserDAO) UpdateUser(userId int64, username string, password string, fullname string, mobile string, tel string, email string, remark string, isOn bool, clusterId int64) error { if userId <= 0 { return errors.New("invalid userId") } @@ -122,6 +123,7 @@ func (this *UserDAO) UpdateUser(userId int64, username string, password string, op.Email = email op.Remark = remark op.IsOn = isOn + op.ClusterId = clusterId err := this.Save(op) return err } diff --git a/internal/db/models/user_model.go b/internal/db/models/user_model.go index 4ed9c188..6c01a4ab 100644 --- a/internal/db/models/user_model.go +++ b/internal/db/models/user_model.go @@ -16,6 +16,7 @@ type User struct { UpdatedAt uint64 `field:"updatedAt"` // 修改时间 State uint8 `field:"state"` // 状态 Source string `field:"source"` // 来源 + ClusterId uint32 `field:"clusterId"` // 集群ID } type UserOperator struct { @@ -33,6 +34,7 @@ type UserOperator struct { UpdatedAt interface{} // 修改时间 State interface{} // 状态 Source interface{} // 来源 + ClusterId interface{} // 集群ID } func NewUserOperator() *UserOperator { diff --git a/internal/rpc/services/service_api_node.go b/internal/rpc/services/service_api_node.go index 1e25b5fd..5a3ecb39 100644 --- a/internal/rpc/services/service_api_node.go +++ b/internal/rpc/services/service_api_node.go @@ -79,7 +79,7 @@ func (this *APINodeService) FindAllEnabledAPINodes(ctx context.Context, req *pb. result = append(result, &pb.APINode{ Id: int64(node.Id), IsOn: node.IsOn == 1, - ClusterId: int64(node.ClusterId), + NodeClusterId: int64(node.ClusterId), UniqueId: node.UniqueId, Secret: node.Secret, Name: node.Name, @@ -131,7 +131,7 @@ func (this *APINodeService) ListEnabledAPINodes(ctx context.Context, req *pb.Lis result = append(result, &pb.APINode{ Id: int64(node.Id), IsOn: node.IsOn == 1, - ClusterId: int64(node.ClusterId), + NodeClusterId: int64(node.ClusterId), UniqueId: node.UniqueId, Secret: node.Secret, Name: node.Name, @@ -170,7 +170,7 @@ func (this *APINodeService) FindEnabledAPINode(ctx context.Context, req *pb.Find result := &pb.APINode{ Id: int64(node.Id), IsOn: node.IsOn == 1, - ClusterId: int64(node.ClusterId), + NodeClusterId: int64(node.ClusterId), UniqueId: node.UniqueId, Secret: node.Secret, Name: node.Name, diff --git a/internal/rpc/services/service_http_cache_policy.go b/internal/rpc/services/service_http_cache_policy.go index 9b55ba90..cd840a9e 100644 --- a/internal/rpc/services/service_http_cache_policy.go +++ b/internal/rpc/services/service_http_cache_policy.go @@ -47,7 +47,7 @@ func (this *HTTPCachePolicyService) CreateHTTPCachePolicy(ctx context.Context, r if err != nil { return nil, err } - return &pb.CreateHTTPCachePolicyResponse{CachePolicyId: policyId}, nil + return &pb.CreateHTTPCachePolicyResponse{HttpCachePolicyId: policyId}, nil } // 修改缓存策略 @@ -58,7 +58,7 @@ func (this *HTTPCachePolicyService) UpdateHTTPCachePolicy(ctx context.Context, r return nil, err } - err = models.SharedHTTPCachePolicyDAO.UpdateCachePolicy(req.CachePolicyId, req.IsOn, req.Name, req.Description, req.CapacityJSON, req.MaxKeys, req.MaxSizeJSON, req.Type, req.OptionsJSON) + err = models.SharedHTTPCachePolicyDAO.UpdateCachePolicy(req.HttpCachePolicyId, req.IsOn, req.Name, req.Description, req.CapacityJSON, req.MaxKeys, req.MaxSizeJSON, req.Type, req.OptionsJSON) if err != nil { return nil, err } @@ -74,7 +74,7 @@ func (this *HTTPCachePolicyService) DeleteHTTPCachePolicy(ctx context.Context, r return nil, err } - err = models.SharedHTTPCachePolicyDAO.DisableHTTPCachePolicy(req.CachePolicyId) + err = models.SharedHTTPCachePolicyDAO.DisableHTTPCachePolicy(req.HttpCachePolicyId) if err != nil { return nil, err } @@ -113,7 +113,7 @@ func (this *HTTPCachePolicyService) ListEnabledHTTPCachePolicies(ctx context.Con if err != nil { return nil, err } - return &pb.ListEnabledHTTPCachePoliciesResponse{CachePoliciesJSON: cachePoliciesJSON}, nil + return &pb.ListEnabledHTTPCachePoliciesResponse{HttpCachePoliciesJSON: cachePoliciesJSON}, nil } // 查找单个缓存策略配置 @@ -124,10 +124,31 @@ func (this *HTTPCachePolicyService) FindEnabledHTTPCachePolicyConfig(ctx context return nil, err } - cachePolicy, err := models.SharedHTTPCachePolicyDAO.ComposeCachePolicy(req.CachePolicyId) + cachePolicy, err := models.SharedHTTPCachePolicyDAO.ComposeCachePolicy(req.HttpCachePolicyId) if err != nil { return nil, err } cachePolicyJSON, err := json.Marshal(cachePolicy) - return &pb.FindEnabledHTTPCachePolicyConfigResponse{CachePolicyJSON: cachePolicyJSON}, nil + return &pb.FindEnabledHTTPCachePolicyConfigResponse{HttpCachePolicyJSON: cachePolicyJSON}, nil +} + +// 查找单个缓存策略信息 +func (this *HTTPCachePolicyService) FindEnabledHTTPCachePolicy(ctx context.Context, req *pb.FindEnabledHTTPCachePolicyRequest) (*pb.FindEnabledHTTPCachePolicyResponse, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + + policy, err := models.SharedHTTPCachePolicyDAO.FindEnabledHTTPCachePolicy(req.HttpCachePolicyId) + if err != nil { + return nil, err + } + if policy == nil { + return &pb.FindEnabledHTTPCachePolicyResponse{HttpCachePolicy: nil}, nil + } + return &pb.FindEnabledHTTPCachePolicyResponse{HttpCachePolicy: &pb.HTTPCachePolicy{ + Id: int64(policy.Id), + Name: policy.Name, + IsOn: policy.IsOn == 1, + }}, nil } diff --git a/internal/rpc/services/service_http_firewall_policy.go b/internal/rpc/services/service_http_firewall_policy.go index d03351bd..7c603206 100644 --- a/internal/rpc/services/service_http_firewall_policy.go +++ b/internal/rpc/services/service_http_firewall_policy.go @@ -63,7 +63,7 @@ func (this *HTTPFirewallPolicyService) CreateHTTPFirewallPolicy(ctx context.Cont templatePolicy := firewallconfigs.HTTPFirewallTemplate() if templatePolicy.Inbound != nil { for _, group := range templatePolicy.Inbound.Groups { - isOn := lists.ContainsString(req.FirewallGroupCodes, group.Code) + isOn := lists.ContainsString(req.HttpFirewallGroupCodes, group.Code) group.IsOn = isOn groupId, err := models.SharedHTTPFirewallRuleGroupDAO.CreateGroupFromConfig(group) @@ -78,7 +78,7 @@ func (this *HTTPFirewallPolicyService) CreateHTTPFirewallPolicy(ctx context.Cont } if templatePolicy.Outbound != nil { for _, group := range templatePolicy.Outbound.Groups { - isOn := lists.ContainsString(req.FirewallGroupCodes, group.Code) + isOn := lists.ContainsString(req.HttpFirewallGroupCodes, group.Code) group.IsOn = isOn groupId, err := models.SharedHTTPFirewallRuleGroupDAO.CreateGroupFromConfig(group) @@ -107,7 +107,7 @@ func (this *HTTPFirewallPolicyService) CreateHTTPFirewallPolicy(ctx context.Cont return nil, err } - return &pb.CreateHTTPFirewallPolicyResponse{FirewallPolicyId: policyId}, nil + return &pb.CreateHTTPFirewallPolicyResponse{HttpFirewallPolicyId: policyId}, nil } // 修改防火墙策略 @@ -121,7 +121,7 @@ func (this *HTTPFirewallPolicyService) UpdateHTTPFirewallPolicy(ctx context.Cont templatePolicy := firewallconfigs.HTTPFirewallTemplate() // 已经有的数据 - firewallPolicy, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(req.FirewallPolicyId) + firewallPolicy, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(req.HttpFirewallPolicyId) if err != nil { return nil, err } @@ -228,7 +228,7 @@ func (this *HTTPFirewallPolicyService) UpdateHTTPFirewallPolicy(ctx context.Cont return nil, err } - err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicy(req.FirewallPolicyId, req.IsOn, req.Name, req.Description, inboundConfigJSON, outboundConfigJSON, req.BlockOptionsJSON) + err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicy(req.HttpFirewallPolicyId, req.IsOn, req.Name, req.Description, inboundConfigJSON, outboundConfigJSON, req.BlockOptionsJSON) if err != nil { return nil, err } @@ -244,7 +244,7 @@ func (this *HTTPFirewallPolicyService) UpdateHTTPFirewallPolicyGroups(ctx contex return nil, err } - err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicyInboundAndOutbound(req.FirewallPolicyId, req.InboundJSON, req.OutboundJSON) + err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicyInboundAndOutbound(req.HttpFirewallPolicyId, req.InboundJSON, req.OutboundJSON) if err != nil { return nil, err } @@ -260,7 +260,7 @@ func (this *HTTPFirewallPolicyService) UpdateHTTPFirewallInboundConfig(ctx conte return nil, err } - err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicyInbound(req.FirewallPolicyId, req.InboundJSON) + err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicyInbound(req.HttpFirewallPolicyId, req.InboundJSON) if err != nil { return nil, err } @@ -269,7 +269,7 @@ func (this *HTTPFirewallPolicyService) UpdateHTTPFirewallInboundConfig(ctx conte } // 计算可用的防火墙策略数量 -func (this *HTTPFirewallPolicyService) CountAllEnabledFirewallPolicies(ctx context.Context, req *pb.CountAllEnabledFirewallPoliciesRequest) (*pb.RPCCountResponse, error) { +func (this *HTTPFirewallPolicyService) CountAllEnabledHTTPFirewallPolicies(ctx context.Context, req *pb.CountAllEnabledHTTPFirewallPoliciesRequest) (*pb.RPCCountResponse, error) { // 校验请求 _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) if err != nil { @@ -284,7 +284,7 @@ func (this *HTTPFirewallPolicyService) CountAllEnabledFirewallPolicies(ctx conte } // 列出单页的防火墙策略 -func (this *HTTPFirewallPolicyService) ListEnabledFirewallPolicies(ctx context.Context, req *pb.ListEnabledFirewallPoliciesRequest) (*pb.ListEnabledFirewallPoliciesResponse, error) { +func (this *HTTPFirewallPolicyService) ListEnabledHTTPFirewallPolicies(ctx context.Context, req *pb.ListEnabledHTTPFirewallPoliciesRequest) (*pb.ListEnabledHTTPFirewallPoliciesResponse, error) { // 校验请求 _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) if err != nil { @@ -308,18 +308,18 @@ func (this *HTTPFirewallPolicyService) ListEnabledFirewallPolicies(ctx context.C }) } - return &pb.ListEnabledFirewallPoliciesResponse{FirewallPolicies: result}, nil + return &pb.ListEnabledHTTPFirewallPoliciesResponse{HttpFirewallPolicies: result}, nil } // 删除某个防火墙策略 -func (this *HTTPFirewallPolicyService) DeleteFirewallPolicy(ctx context.Context, req *pb.DeleteFirewallPolicyRequest) (*pb.RPCSuccess, error) { +func (this *HTTPFirewallPolicyService) DeleteHTTPFirewallPolicy(ctx context.Context, req *pb.DeleteHTTPFirewallPolicyRequest) (*pb.RPCSuccess, error) { // 校验请求 _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) if err != nil { return nil, err } - err = models.SharedHTTPFirewallPolicyDAO.DisableHTTPFirewallPolicy(req.FirewallPolicyId) + err = models.SharedHTTPFirewallPolicyDAO.DisableHTTPFirewallPolicy(req.HttpFirewallPolicyId) if err != nil { return nil, err } @@ -328,19 +328,19 @@ func (this *HTTPFirewallPolicyService) DeleteFirewallPolicy(ctx context.Context, } // 查找单个防火墙配置 -func (this *HTTPFirewallPolicyService) FindEnabledFirewallPolicyConfig(ctx context.Context, req *pb.FindEnabledFirewallPolicyConfigRequest) (*pb.FindEnabledFirewallPolicyConfigResponse, error) { +func (this *HTTPFirewallPolicyService) FindEnabledHTTPFirewallPolicyConfig(ctx context.Context, req *pb.FindEnabledHTTPFirewallPolicyConfigRequest) (*pb.FindEnabledHTTPFirewallPolicyConfigResponse, error) { // 校验请求 _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) if err != nil { return nil, err } - config, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(req.FirewallPolicyId) + config, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(req.HttpFirewallPolicyId) if err != nil { return nil, err } if config == nil { - return &pb.FindEnabledFirewallPolicyConfigResponse{FirewallPolicyJSON: nil}, nil + return &pb.FindEnabledHTTPFirewallPolicyConfigResponse{HttpFirewallPolicyJSON: nil}, nil } configJSON, err := json.Marshal(config) @@ -348,25 +348,25 @@ func (this *HTTPFirewallPolicyService) FindEnabledFirewallPolicyConfig(ctx conte return nil, err } - return &pb.FindEnabledFirewallPolicyConfigResponse{FirewallPolicyJSON: configJSON}, nil + return &pb.FindEnabledHTTPFirewallPolicyConfigResponse{HttpFirewallPolicyJSON: configJSON}, nil } // 获取防火墙的基本信息 -func (this *HTTPFirewallPolicyService) FindEnabledFirewallPolicy(ctx context.Context, req *pb.FindEnabledFirewallPolicyRequest) (*pb.FindEnabledFirewallPolicyResponse, error) { +func (this *HTTPFirewallPolicyService) FindEnabledHTTPFirewallPolicy(ctx context.Context, req *pb.FindEnabledHTTPFirewallPolicyRequest) (*pb.FindEnabledHTTPFirewallPolicyResponse, error) { // 校验请求 _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) if err != nil { return nil, err } - policy, err := models.SharedHTTPFirewallPolicyDAO.FindEnabledHTTPFirewallPolicy(req.FirewallPolicyId) + policy, err := models.SharedHTTPFirewallPolicyDAO.FindEnabledHTTPFirewallPolicy(req.HttpFirewallPolicyId) if err != nil { return nil, err } if policy == nil { - return &pb.FindEnabledFirewallPolicyResponse{FirewallPolicy: nil}, nil + return &pb.FindEnabledHTTPFirewallPolicyResponse{HttpFirewallPolicy: nil}, nil } - return &pb.FindEnabledFirewallPolicyResponse{FirewallPolicy: &pb.HTTPFirewallPolicy{ + return &pb.FindEnabledHTTPFirewallPolicyResponse{HttpFirewallPolicy: &pb.HTTPFirewallPolicy{ Id: int64(policy.Id), Name: policy.Name, Description: policy.Description, @@ -385,7 +385,7 @@ func (this *HTTPFirewallPolicyService) ImportHTTPFirewallPolicy(ctx context.Cont // TODO 检查权限 - oldConfig, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(req.FirewallPolicyId) + oldConfig, err := models.SharedHTTPFirewallPolicyDAO.ComposeFirewallPolicy(req.HttpFirewallPolicyId) if err != nil { return nil, err } @@ -395,7 +395,7 @@ func (this *HTTPFirewallPolicyService) ImportHTTPFirewallPolicy(ctx context.Cont // 解析数据 newConfig := &firewallconfigs.HTTPFirewallPolicy{} - err = json.Unmarshal(req.FirewallPolicyJSON, newConfig) + err = json.Unmarshal(req.HttpFirewallPolicyJSON, newConfig) if err != nil { return nil, err } @@ -524,7 +524,7 @@ func (this *HTTPFirewallPolicyService) ImportHTTPFirewallPolicy(ctx context.Cont return nil, err } - err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicyInboundAndOutbound(req.FirewallPolicyId, inboundJSON, outboundJSON) + err = models.SharedHTTPFirewallPolicyDAO.UpdateFirewallPolicyInboundAndOutbound(req.HttpFirewallPolicyId, inboundJSON, outboundJSON) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index 5625fe47..1c89f9da 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -43,7 +43,7 @@ func (this *NodeService) CreateNode(ctx context.Context, req *pb.CreateNodeReque return nil, err } - nodeId, err := models.SharedNodeDAO.CreateNode(adminId, req.Name, req.ClusterId, req.GroupId, req.RegionId) + nodeId, err := models.SharedNodeDAO.CreateNode(adminId, req.Name, req.NodeClusterId, req.GroupId, req.RegionId) if err != nil { return nil, err } @@ -144,7 +144,7 @@ func (this *NodeService) CountAllEnabledNodesMatch(ctx context.Context, req *pb. if err != nil { return nil, err } - count, err := models.SharedNodeDAO.CountAllEnabledNodesMatch(req.ClusterId, configutils.ToBoolState(req.InstallState), configutils.ToBoolState(req.ActiveState), req.Keyword, req.GroupId, req.RegionId) + count, err := models.SharedNodeDAO.CountAllEnabledNodesMatch(req.NodeClusterId, configutils.ToBoolState(req.InstallState), configutils.ToBoolState(req.ActiveState), req.Keyword, req.GroupId, req.RegionId) if err != nil { return nil, err } @@ -158,7 +158,7 @@ func (this *NodeService) ListEnabledNodesMatch(ctx context.Context, req *pb.List return nil, err } - clusterDNS, err := models.SharedNodeClusterDAO.FindClusterDNSInfo(req.ClusterId) + clusterDNS, err := models.SharedNodeClusterDAO.FindClusterDNSInfo(req.NodeClusterId) if err != nil { return nil, err } @@ -171,7 +171,7 @@ func (this *NodeService) ListEnabledNodesMatch(ctx context.Context, req *pb.List } } - nodes, err := models.SharedNodeDAO.ListEnabledNodesMatch(req.Offset, req.Size, req.ClusterId, configutils.ToBoolState(req.InstallState), configutils.ToBoolState(req.ActiveState), req.Keyword, req.GroupId, req.RegionId) + nodes, err := models.SharedNodeDAO.ListEnabledNodesMatch(req.Offset, req.Size, req.NodeClusterId, configutils.ToBoolState(req.InstallState), configutils.ToBoolState(req.ActiveState), req.Keyword, req.GroupId, req.RegionId) if err != nil { return nil, err } @@ -281,7 +281,7 @@ func (this *NodeService) FindAllEnabledNodesWithClusterId(ctx context.Context, r return nil, err } - nodes, err := models.SharedNodeDAO.FindAllEnabledNodesWithClusterId(req.ClusterId) + nodes, err := models.SharedNodeDAO.FindAllEnabledNodesWithClusterId(req.NodeClusterId) if err != nil { return nil, err } @@ -338,7 +338,7 @@ func (this *NodeService) UpdateNode(ctx context.Context, req *pb.UpdateNodeReque return nil, err } - err = models.SharedNodeDAO.UpdateNode(req.NodeId, req.Name, req.ClusterId, req.GroupId, req.RegionId, req.MaxCPU, req.IsOn) + err = models.SharedNodeDAO.UpdateNode(req.NodeId, req.Name, req.NodeClusterId, req.GroupId, req.RegionId, req.MaxCPU, req.IsOn) if err != nil { return nil, err } @@ -553,7 +553,7 @@ func (this *NodeService) SyncNodesVersionWithCluster(ctx context.Context, req *p return nil, err } - err = models.SharedNodeDAO.SyncNodeVersionsWithCluster(req.ClusterId) + err = models.SharedNodeDAO.SyncNodeVersionsWithCluster(req.NodeClusterId) if err != nil { return nil, err } @@ -763,7 +763,7 @@ func (this *NodeService) FindAllNotInstalledNodesWithClusterId(ctx context.Conte return nil, err } - nodes, err := models.SharedNodeDAO.FindAllNotInstalledNodesWithClusterId(req.ClusterId) + nodes, err := models.SharedNodeDAO.FindAllNotInstalledNodesWithClusterId(req.NodeClusterId) if err != nil { return nil, err } @@ -847,7 +847,7 @@ func (this *NodeService) CountAllUpgradeNodesWithClusterId(ctx context.Context, deployFiles := installers.SharedDeployManager.LoadFiles() total := int64(0) for _, deployFile := range deployFiles { - count, err := models.SharedNodeDAO.CountAllLowerVersionNodesWithClusterId(req.ClusterId, deployFile.OS, deployFile.Arch, deployFile.Version) + count, err := models.SharedNodeDAO.CountAllLowerVersionNodesWithClusterId(req.NodeClusterId, deployFile.OS, deployFile.Arch, deployFile.Version) if err != nil { return nil, err } @@ -869,7 +869,7 @@ func (this *NodeService) FindAllUpgradeNodesWithClusterId(ctx context.Context, r deployFiles := installers.SharedDeployManager.LoadFiles() result := []*pb.FindAllUpgradeNodesWithClusterIdResponse_NodeUpgrade{} for _, deployFile := range deployFiles { - nodes, err := models.SharedNodeDAO.FindAllLowerVersionNodesWithClusterId(req.ClusterId, deployFile.OS, deployFile.Arch, deployFile.Version) + nodes, err := models.SharedNodeDAO.FindAllLowerVersionNodesWithClusterId(req.NodeClusterId, deployFile.OS, deployFile.Arch, deployFile.Version) if err != nil { return nil, err } @@ -1146,7 +1146,7 @@ func (this *NodeService) FindEnabledNodeDNS(ctx context.Context, req *pb.FindEna Name: node.Name, IpAddr: ipAddr, Routes: pbRoutes, - ClusterId: clusterId, + NodeClusterId: clusterId, DnsDomainId: dnsDomainId, DnsDomainName: dnsDomainName, }, diff --git a/internal/rpc/services/service_node_cluster.go b/internal/rpc/services/service_node_cluster.go index 146fb220..71bee7a1 100644 --- a/internal/rpc/services/service_node_cluster.go +++ b/internal/rpc/services/service_node_cluster.go @@ -24,12 +24,12 @@ func (this *NodeClusterService) CreateNodeCluster(ctx context.Context, req *pb.C return nil, err } - clusterId, err := models.SharedNodeClusterDAO.CreateCluster(adminId, req.Name, req.GrantId, req.InstallDir, req.DnsDomainId, req.DnsName) + clusterId, err := models.SharedNodeClusterDAO.CreateCluster(adminId, req.Name, req.GrantId, req.InstallDir, req.DnsDomainId, req.DnsName, req.HttpCachePolicyId, req.HttpFirewallPolicyId) if err != nil { return nil, err } - return &pb.CreateNodeClusterResponse{ClusterId: clusterId}, nil + return &pb.CreateNodeClusterResponse{NodeClusterId: clusterId}, nil } // 修改集群 @@ -39,7 +39,7 @@ func (this *NodeClusterService) UpdateNodeCluster(ctx context.Context, req *pb.U return nil, err } - err = models.SharedNodeClusterDAO.UpdateCluster(req.ClusterId, req.Name, req.GrantId, req.InstallDir) + err = models.SharedNodeClusterDAO.UpdateCluster(req.NodeClusterId, req.Name, req.GrantId, req.InstallDir) if err != nil { return nil, err } @@ -54,7 +54,7 @@ func (this *NodeClusterService) DeleteNodeCluster(ctx context.Context, req *pb.D return nil, err } - err = models.SharedNodeClusterDAO.DisableNodeCluster(req.ClusterId) + err = models.SharedNodeClusterDAO.DisableNodeCluster(req.NodeClusterId) if err != nil { return nil, err } @@ -69,7 +69,7 @@ func (this *NodeClusterService) FindEnabledNodeCluster(ctx context.Context, req return nil, err } - cluster, err := models.SharedNodeClusterDAO.FindEnabledNodeCluster(req.ClusterId) + cluster, err := models.SharedNodeClusterDAO.FindEnabledNodeCluster(req.NodeClusterId) if err != nil { return nil, err } @@ -79,13 +79,15 @@ func (this *NodeClusterService) FindEnabledNodeCluster(ctx context.Context, req } return &pb.FindEnabledNodeClusterResponse{Cluster: &pb.NodeCluster{ - Id: int64(cluster.Id), - Name: cluster.Name, - CreatedAt: int64(cluster.CreatedAt), - InstallDir: cluster.InstallDir, - GrantId: int64(cluster.GrantId), - UniqueId: cluster.UniqueId, - Secret: cluster.Secret, + Id: int64(cluster.Id), + Name: cluster.Name, + CreatedAt: int64(cluster.CreatedAt), + InstallDir: cluster.InstallDir, + GrantId: int64(cluster.GrantId), + UniqueId: cluster.UniqueId, + Secret: cluster.Secret, + HttpCachePolicyId: int64(cluster.CachePolicyId), + HttpFirewallPolicyId: int64(cluster.HttpFirewallPolicyId), }}, nil } @@ -97,12 +99,12 @@ func (this *NodeClusterService) FindAPINodesWithNodeCluster(ctx context.Context, return nil, err } - cluster, err := models.SharedNodeClusterDAO.FindEnabledNodeCluster(req.ClusterId) + cluster, err := models.SharedNodeClusterDAO.FindEnabledNodeCluster(req.NodeClusterId) if err != nil { return nil, err } if cluster == nil { - return nil, errors.New("can not find cluster with id '" + strconv.FormatInt(req.ClusterId, 10) + "'") + return nil, errors.New("can not find cluster with id '" + strconv.FormatInt(req.NodeClusterId, 10) + "'") } result := &pb.FindAPINodesWithNodeClusterResponse{} @@ -126,12 +128,12 @@ func (this *NodeClusterService) FindAPINodesWithNodeCluster(ctx context.Context, return nil, err } apiNodes = append(apiNodes, &pb.APINode{ - Id: int64(apiNode.Id), - IsOn: apiNode.IsOn == 1, - ClusterId: int64(apiNode.ClusterId), - Name: apiNode.Name, - Description: apiNode.Description, - AccessAddrs: apiNodeAddrs, + Id: int64(apiNode.Id), + IsOn: apiNode.IsOn == 1, + NodeClusterId: int64(apiNode.ClusterId), + Name: apiNode.Name, + Description: apiNode.Description, + AccessAddrs: apiNodeAddrs, }) } result.ApiNodes = apiNodes @@ -259,7 +261,7 @@ func (this *NodeClusterService) FindNodeClusterHealthCheckConfig(ctx context.Con return nil, err } - config, err := models.SharedNodeClusterDAO.FindClusterHealthCheckConfig(req.ClusterId) + config, err := models.SharedNodeClusterDAO.FindClusterHealthCheckConfig(req.NodeClusterId) if err != nil { return nil, err } @@ -278,7 +280,7 @@ func (this *NodeClusterService) UpdateNodeClusterHealthCheck(ctx context.Context return nil, err } - err = models.SharedNodeClusterDAO.UpdateClusterHealthCheck(req.ClusterId, req.HealthCheckJSON) + err = models.SharedNodeClusterDAO.UpdateClusterHealthCheck(req.NodeClusterId, req.HealthCheckJSON) if err != nil { return nil, err } @@ -293,7 +295,7 @@ func (this *NodeClusterService) ExecuteNodeClusterHealthCheck(ctx context.Contex return nil, err } - executor := tasks.NewHealthCheckExecutor(req.ClusterId) + executor := tasks.NewHealthCheckExecutor(req.NodeClusterId) results, err := executor.Run() if err != nil { return nil, err @@ -572,3 +574,99 @@ func (this *NodeClusterService) UpdateNodeClusterTOA(ctx context.Context, req *p return this.Success() } + +// 计算使用某个缓存策略的集群数量 +func (this *NodeClusterService) CountAllEnabledNodeClustersWithHTTPCachePolicyId(ctx context.Context, req *pb.CountAllEnabledNodeClustersWithHTTPCachePolicyIdRequest) (*pb.RPCCountResponse, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + count, err := models.SharedNodeClusterDAO.CountAllEnabledNodeClustersWithHTTPCachePolicyId(req.HttpCachePolicyId) + if err != nil { + return nil, err + } + return this.SuccessCount(count) +} + +// 查找使用缓存策略的所有集群 +func (this *NodeClusterService) FindAllEnabledNodeClustersWithHTTPCachePolicyId(ctx context.Context, req *pb.FindAllEnabledNodeClustersWithHTTPCachePolicyIdRequest) (*pb.FindAllEnabledNodeClustersWithHTTPCachePolicyIdResponse, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + result := []*pb.NodeCluster{} + clusters, err := models.SharedNodeClusterDAO.FindAllEnabledNodeClustersWithHTTPCachePolicyId(req.HttpCachePolicyId) + if err != nil { + return nil, err + } + for _, cluster := range clusters { + result = append(result, &pb.NodeCluster{ + Id: int64(cluster.Id), + Name: cluster.Name, + }) + } + return &pb.FindAllEnabledNodeClustersWithHTTPCachePolicyIdResponse{ + NodeClusters: result, + }, nil +} + +// 计算使用某个WAF策略的集群数量 +func (this *NodeClusterService) CountAllEnabledNodeClustersWithHTTPFirewallPolicyId(ctx context.Context, req *pb.CountAllEnabledNodeClustersWithHTTPFirewallPolicyIdRequest) (*pb.RPCCountResponse, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + count, err := models.SharedNodeClusterDAO.CountAllEnabledNodeClustersWithHTTPFirewallPolicyId(req.HttpFirewallPolicyId) + if err != nil { + return nil, err + } + return this.SuccessCount(count) +} + +// 查找使用WAF策略的所有集群 +func (this *NodeClusterService) FindAllEnabledNodeClustersWithHTTPFirewallPolicyId(ctx context.Context, req *pb.FindAllEnabledNodeClustersWithHTTPFirewallPolicyIdRequest) (*pb.FindAllEnabledNodeClustersWithHTTPFirewallPolicyIdResponse, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + result := []*pb.NodeCluster{} + clusters, err := models.SharedNodeClusterDAO.FindAllEnabledNodeClustersWithHTTPFirewallPolicyId(req.HttpFirewallPolicyId) + if err != nil { + return nil, err + } + for _, cluster := range clusters { + result = append(result, &pb.NodeCluster{ + Id: int64(cluster.Id), + Name: cluster.Name, + }) + } + return &pb.FindAllEnabledNodeClustersWithHTTPFirewallPolicyIdResponse{ + NodeClusters: result, + }, nil +} + +// 修改集群的缓存策略 +func (this *NodeClusterService) UpdateNodeClusterHTTPCachePolicyId(ctx context.Context, req *pb.UpdateNodeClusterHTTPCachePolicyIdRequest) (*pb.RPCSuccess, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + err = models.SharedNodeClusterDAO.UpdateNodeClusterHTTPCachePolicyId(req.NodeClusterId, req.HttpCachePolicyId) + if err != nil { + return nil, err + } + return this.Success() +} + +// 修改集群的WAF策略 +func (this *NodeClusterService) UpdateNodeClusterHTTPFirewallPolicyId(ctx context.Context, req *pb.UpdateNodeClusterHTTPFirewallPolicyIdRequest) (*pb.RPCSuccess, error) { + _, err := this.ValidateAdmin(ctx, 0) + if err != nil { + return nil, err + } + err = models.SharedNodeClusterDAO.UpdateNodeClusterHTTPFirewallPolicyId(req.NodeClusterId, req.HttpFirewallPolicyId) + if err != nil { + return nil, err + } + return this.Success() +} diff --git a/internal/rpc/services/service_node_group.go b/internal/rpc/services/service_node_group.go index 42077e67..a3c62ef7 100644 --- a/internal/rpc/services/service_node_group.go +++ b/internal/rpc/services/service_node_group.go @@ -20,7 +20,7 @@ func (this *NodeGroupService) CreateNodeGroup(ctx context.Context, req *pb.Creat return nil, err } - groupId, err := models.SharedNodeGroupDAO.CreateNodeGroup(req.ClusterId, req.Name) + groupId, err := models.SharedNodeGroupDAO.CreateNodeGroup(req.NodeClusterId, req.Name) if err != nil { return nil, err } @@ -67,7 +67,7 @@ func (this *NodeGroupService) FindAllEnabledNodeGroupsWithClusterId(ctx context. return nil, err } - groups, err := models.SharedNodeGroupDAO.FindAllEnabledGroupsWithClusterId(req.ClusterId) + groups, err := models.SharedNodeGroupDAO.FindAllEnabledGroupsWithClusterId(req.NodeClusterId) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_server.go b/internal/rpc/services/service_server.go index 02906fe4..afea245a 100644 --- a/internal/rpc/services/service_server.go +++ b/internal/rpc/services/service_server.go @@ -22,13 +22,13 @@ func (this *ServerService) CreateServer(ctx context.Context, req *pb.CreateServe if err != nil { return nil, err } - serverId, err := models.SharedServerDAO.CreateServer(req.AdminId, req.UserId, req.Type, req.Name, req.Description, string(req.ServerNamesJON), string(req.HttpJSON), string(req.HttpsJSON), string(req.TcpJSON), string(req.TlsJSON), string(req.UnixJSON), string(req.UdpJSON), req.WebId, req.ReverseProxyJSON, req.ClusterId, string(req.IncludeNodesJSON), string(req.ExcludeNodesJSON), req.GroupIds) + serverId, err := models.SharedServerDAO.CreateServer(req.AdminId, req.UserId, req.Type, req.Name, req.Description, string(req.ServerNamesJON), string(req.HttpJSON), string(req.HttpsJSON), string(req.TcpJSON), string(req.TlsJSON), string(req.UnixJSON), string(req.UdpJSON), req.WebId, req.ReverseProxyJSON, req.NodeClusterId, string(req.IncludeNodesJSON), string(req.ExcludeNodesJSON), req.GroupIds) if err != nil { return nil, err } // 更新节点版本 - err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.ClusterId) + err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId) if err != nil { return nil, err } @@ -57,7 +57,7 @@ func (this *ServerService) UpdateServerBasic(ctx context.Context, req *pb.Update return nil, errors.New("can not find server") } - err = models.SharedServerDAO.UpdateServerBasic(req.ServerId, req.Name, req.Description, req.ClusterId, req.IsOn, req.GroupIds) + err = models.SharedServerDAO.UpdateServerBasic(req.ServerId, req.Name, req.Description, req.NodeClusterId, req.IsOn, req.GroupIds) if err != nil { return nil, err } @@ -74,7 +74,7 @@ func (this *ServerService) UpdateServerBasic(ctx context.Context, req *pb.Update } // 更新老的节点版本 - if req.ClusterId != int64(server.ClusterId) { + if req.NodeClusterId != int64(server.ClusterId) { err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(int64(server.ClusterId)) if err != nil { return nil, err @@ -82,7 +82,7 @@ func (this *ServerService) UpdateServerBasic(ctx context.Context, req *pb.Update } // 更新新的节点版本 - err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.ClusterId) + err = models.SharedNodeDAO.UpdateAllNodesLatestVersionMatch(req.NodeClusterId) if err != nil { return nil, err } @@ -736,120 +736,6 @@ func (this *ServerService) FindAllEnabledServersWithSSLCertId(ctx context.Contex return &pb.FindAllEnabledServersWithSSLCertIdResponse{Servers: result}, nil } -// 计算使用某个缓存策略的服务数量 -func (this *ServerService) CountAllEnabledServersWithCachePolicyId(ctx context.Context, req *pb.CountAllEnabledServersWithCachePolicyIdRequest) (*pb.RPCCountResponse, error) { - // 校验请求 - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) - if err != nil { - return nil, err - } - - webIds, err := models.SharedHTTPWebDAO.FindAllWebIdsWithCachePolicyId(req.CachePolicyId) - if err != nil { - return nil, err - } - if len(webIds) == 0 { - return this.SuccessCount(0) - } - - countServers, err := models.SharedServerDAO.CountEnabledServersWithWebIds(webIds) - if err != nil { - return nil, err - } - return this.SuccessCount(countServers) -} - -// 查找使用某个缓存策略的所有服务 -func (this *ServerService) FindAllEnabledServersWithCachePolicyId(ctx context.Context, req *pb.FindAllEnabledServersWithCachePolicyIdRequest) (*pb.FindAllEnabledServersWithCachePolicyIdResponse, error) { - // 校验请求 - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) - if err != nil { - return nil, err - } - - webIds, err := models.SharedHTTPWebDAO.FindAllWebIdsWithCachePolicyId(req.CachePolicyId) - if err != nil { - return nil, err - } - - if len(webIds) == 0 { - return &pb.FindAllEnabledServersWithCachePolicyIdResponse{Servers: nil}, nil - } - - servers, err := models.SharedServerDAO.FindAllEnabledServersWithWebIds(webIds) - result := []*pb.Server{} - for _, server := range servers { - result = append(result, &pb.Server{ - Id: int64(server.Id), - Name: server.Name, - IsOn: server.IsOn == 1, - Type: server.Type, - Cluster: &pb.NodeCluster{ - Id: int64(server.ClusterId), - }, - }) - } - return &pb.FindAllEnabledServersWithCachePolicyIdResponse{Servers: result}, nil -} - -// 计算使用某个WAF策略的服务数量 -func (this *ServerService) CountAllEnabledServersWithHTTPFirewallPolicyId(ctx context.Context, req *pb.CountAllEnabledServersWithHTTPFirewallPolicyIdRequest) (*pb.RPCCountResponse, error) { - // 校验请求 - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) - if err != nil { - return nil, err - } - - webIds, err := models.SharedHTTPWebDAO.FindAllWebIdsWithHTTPFirewallPolicyId(req.FirewallPolicyId) - if err != nil { - return nil, err - } - - if len(webIds) == 0 { - return this.SuccessCount(0) - } - - countServers, err := models.SharedServerDAO.CountEnabledServersWithWebIds(webIds) - if err != nil { - return nil, err - } - return this.SuccessCount(countServers) -} - -// 查找使用某个WAF策略的所有服务 -func (this *ServerService) FindAllEnabledServersWithHTTPFirewallPolicyId(ctx context.Context, req *pb.FindAllEnabledServersWithHTTPFirewallPolicyIdRequest) (*pb.FindAllEnabledServersWithHTTPFirewallPolicyIdResponse, error) { - // 校验请求 - _, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin) - if err != nil { - return nil, err - } - - webIds, err := models.SharedHTTPWebDAO.FindAllWebIdsWithHTTPFirewallPolicyId(req.FirewallPolicyId) - if err != nil { - return nil, err - } - - if len(webIds) == 0 { - return &pb.FindAllEnabledServersWithHTTPFirewallPolicyIdResponse{Servers: nil}, nil - } - - servers, err := models.SharedServerDAO.FindAllEnabledServersWithWebIds(webIds) - result := []*pb.Server{} - for _, server := range servers { - result = append(result, &pb.Server{ - Id: int64(server.Id), - Name: server.Name, - IsOn: server.IsOn == 1, - Type: server.Type, - Cluster: &pb.NodeCluster{ - Id: int64(server.ClusterId), - }, - }) - } - - return &pb.FindAllEnabledServersWithHTTPFirewallPolicyIdResponse{Servers: result}, nil -} - // 计算运行在某个集群上的所有服务数量 func (this *ServerService) CountAllEnabledServersWithNodeClusterId(ctx context.Context, req *pb.CountAllEnabledServersWithNodeClusterIdRequest) (*pb.RPCCountResponse, error) { // 校验请求 @@ -904,7 +790,7 @@ func (this *ServerService) FindAllEnabledServersDNSWithClusterId(ctx context.Con return nil, err } - servers, err := models.SharedServerDAO.FindAllServersDNSWithClusterId(req.ClusterId) + servers, err := models.SharedServerDAO.FindAllServersDNSWithClusterId(req.NodeClusterId) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_user.go b/internal/rpc/services/service_user.go index 538dc55c..c6c8c228 100644 --- a/internal/rpc/services/service_user.go +++ b/internal/rpc/services/service_user.go @@ -22,7 +22,7 @@ func (this *UserService) CreateUser(ctx context.Context, req *pb.CreateUserReque return nil, err } - userId, err := models.SharedUserDAO.CreateUser(req.Username, req.Password, req.Fullname, req.Mobile, req.Tel, req.Email, req.Remark, req.Source) + userId, err := models.SharedUserDAO.CreateUser(req.Username, req.Password, req.Fullname, req.Mobile, req.Tel, req.Email, req.Remark, req.Source, req.NodeClusterId) if err != nil { return nil, err } @@ -36,7 +36,7 @@ func (this *UserService) UpdateUser(ctx context.Context, req *pb.UpdateUserReque return nil, err } - err = models.SharedUserDAO.UpdateUser(req.UserId, req.Username, req.Password, req.Fullname, req.Mobile, req.Tel, req.Email, req.Remark, req.IsOn) + err = models.SharedUserDAO.UpdateUser(req.UserId, req.Username, req.Password, req.Fullname, req.Mobile, req.Tel, req.Email, req.Remark, req.IsOn, req.NodeClusterId) if err != nil { return nil, err } @@ -85,6 +85,19 @@ func (this *UserService) ListEnabledUsers(ctx context.Context, req *pb.ListEnabl result := []*pb.User{} for _, user := range users { + // 集群信息 + var pbCluster *pb.NodeCluster = nil + if user.ClusterId > 0 { + clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(int64(user.ClusterId)) + if err != nil { + return nil, err + } + pbCluster = &pb.NodeCluster{ + Id: int64(user.ClusterId), + Name: clusterName, + } + } + result = append(result, &pb.User{ Id: int64(user.Id), Username: user.Username, @@ -95,6 +108,7 @@ func (this *UserService) ListEnabledUsers(ctx context.Context, req *pb.ListEnabl Remark: user.Remark, IsOn: user.IsOn == 1, CreatedAt: int64(user.CreatedAt), + Cluster: pbCluster, }) } @@ -115,6 +129,20 @@ func (this *UserService) FindEnabledUser(ctx context.Context, req *pb.FindEnable if user == nil { return &pb.FindEnabledUserResponse{User: nil}, nil } + + // 集群信息 + var pbCluster *pb.NodeCluster = nil + if user.ClusterId > 0 { + clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(int64(user.ClusterId)) + if err != nil { + return nil, err + } + pbCluster = &pb.NodeCluster{ + Id: int64(user.ClusterId), + Name: clusterName, + } + } + return &pb.FindEnabledUserResponse{User: &pb.User{ Id: int64(user.Id), Username: user.Username, @@ -125,6 +153,7 @@ func (this *UserService) FindEnabledUser(ctx context.Context, req *pb.FindEnable Remark: user.Remark, IsOn: user.IsOn == 1, CreatedAt: int64(user.CreatedAt), + Cluster: pbCluster, }}, nil }