mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	集群可以设置默认的WAF策略、缓存策略
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
		},
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user