mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 16:00:24 +08:00 
			
		
		
		
	实现域名服务器集群管理
This commit is contained in:
		
							
								
								
									
										114
									
								
								internal/db/models/nameservers/ns_cluster_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								internal/db/models/nameservers/ns_cluster_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,114 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/errors"
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						NSClusterStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						NSClusterStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSClusterDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSClusterDAO() *NSClusterDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&NSClusterDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeNSClusters",
 | 
				
			||||||
 | 
								Model:  new(NSCluster),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*NSClusterDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedNSClusterDAO *NSClusterDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedNSClusterDAO = NewNSClusterDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableNSCluster 启用条目
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) EnableNSCluster(tx *dbs.Tx, id int64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSClusterStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableNSCluster 禁用条目
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) DisableNSCluster(tx *dbs.Tx, id int64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSClusterStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledNSCluster 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) FindEnabledNSCluster(tx *dbs.Tx, id int64) (*NSCluster, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Attr("state", NSClusterStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*NSCluster), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CreateCluster 创建集群
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) CreateCluster(tx *dbs.Tx, name string) (int64, error) {
 | 
				
			||||||
 | 
						op := NewNSClusterOperator()
 | 
				
			||||||
 | 
						op.Name = name
 | 
				
			||||||
 | 
						op.IsOn = true
 | 
				
			||||||
 | 
						op.State = NSClusterStateEnabled
 | 
				
			||||||
 | 
						return this.SaveInt64(tx, op)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateCluster 修改集群
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) UpdateCluster(tx *dbs.Tx, clusterId int64, name string, isOn bool) error {
 | 
				
			||||||
 | 
						if clusterId <= 0 {
 | 
				
			||||||
 | 
							return errors.New("invalid clusterId")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						op := NewNSClusterOperator()
 | 
				
			||||||
 | 
						op.Id = clusterId
 | 
				
			||||||
 | 
						op.Name = name
 | 
				
			||||||
 | 
						op.IsOn = isOn
 | 
				
			||||||
 | 
						return this.Save(tx, op)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CountAllEnabledClusters 计算可用集群数量
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) CountAllEnabledClusters(tx *dbs.Tx) (int64, error) {
 | 
				
			||||||
 | 
						return this.Query(tx).
 | 
				
			||||||
 | 
							State(NSClusterStateEnabled).
 | 
				
			||||||
 | 
							Count()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ListEnabledNSClusters 列出单页集群
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) ListEnabledNSClusters(tx *dbs.Tx, offset int64, size int64) (result []*NSCluster, err error) {
 | 
				
			||||||
 | 
						_, err = this.Query(tx).
 | 
				
			||||||
 | 
							State(NSClusterStateEnabled).
 | 
				
			||||||
 | 
							Offset(offset).
 | 
				
			||||||
 | 
							Limit(size).
 | 
				
			||||||
 | 
							DescPk().
 | 
				
			||||||
 | 
							Slice(&result).
 | 
				
			||||||
 | 
							FindAll()
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindAllEnabledNSClusters 列出所有集群
 | 
				
			||||||
 | 
					func (this *NSClusterDAO) FindAllEnabledNSClusters(tx *dbs.Tx) (result []*NSCluster, err error) {
 | 
				
			||||||
 | 
						_, err = this.Query(tx).
 | 
				
			||||||
 | 
							State(NSClusterStateEnabled).
 | 
				
			||||||
 | 
							DescPk().
 | 
				
			||||||
 | 
							Slice(&result).
 | 
				
			||||||
 | 
							FindAll()
 | 
				
			||||||
 | 
						return
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/nameservers/ns_cluster_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/nameservers/ns_cluster_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										20
									
								
								internal/db/models/nameservers/ns_cluster_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								internal/db/models/nameservers/ns_cluster_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NSCluster 域名服务器集群
 | 
				
			||||||
 | 
					type NSCluster struct {
 | 
				
			||||||
 | 
						Id    uint32 `field:"id"`    // ID
 | 
				
			||||||
 | 
						IsOn  uint8  `field:"isOn"`  // 是否启用
 | 
				
			||||||
 | 
						Name  string `field:"name"`  // 集群名
 | 
				
			||||||
 | 
						State uint8  `field:"state"` // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSClusterOperator struct {
 | 
				
			||||||
 | 
						Id    interface{} // ID
 | 
				
			||||||
 | 
						IsOn  interface{} // 是否启用
 | 
				
			||||||
 | 
						Name  interface{} // 集群名
 | 
				
			||||||
 | 
						State interface{} // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSClusterOperator() *NSClusterOperator {
 | 
				
			||||||
 | 
						return &NSClusterOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/nameservers/ns_cluster_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/nameservers/ns_cluster_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
							
								
								
									
										71
									
								
								internal/db/models/nameservers/ns_domain_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								internal/db/models/nameservers/ns_domain_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						NSDomainStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						NSDomainStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSDomainDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSDomainDAO() *NSDomainDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&NSDomainDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeNSDomains",
 | 
				
			||||||
 | 
								Model:  new(NSDomain),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*NSDomainDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedNSDomainDAO *NSDomainDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedNSDomainDAO = NewNSDomainDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableNSDomain 启用条目
 | 
				
			||||||
 | 
					func (this *NSDomainDAO) EnableNSDomain(tx *dbs.Tx, id uint32) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSDomainStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableNSDomain 禁用条目
 | 
				
			||||||
 | 
					func (this *NSDomainDAO) DisableNSDomain(tx *dbs.Tx, id uint32) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSDomainStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledNSDomain 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *NSDomainDAO) FindEnabledNSDomain(tx *dbs.Tx, id uint32) (*NSDomain, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Attr("state", NSDomainStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*NSDomain), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindNSDomainName 根据主键查找名称
 | 
				
			||||||
 | 
					func (this *NSDomainDAO) FindNSDomainName(tx *dbs.Tx, id uint32) (string, error) {
 | 
				
			||||||
 | 
						return this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Result("name").
 | 
				
			||||||
 | 
							FindStringCol("")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/nameservers/ns_domain_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/nameservers/ns_domain_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										26
									
								
								internal/db/models/nameservers/ns_domain_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								internal/db/models/nameservers/ns_domain_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NSDomain DNS域名
 | 
				
			||||||
 | 
					type NSDomain struct {
 | 
				
			||||||
 | 
						Id        uint32 `field:"id"`        // ID
 | 
				
			||||||
 | 
						ClusterId uint32 `field:"clusterId"` // 集群ID
 | 
				
			||||||
 | 
						UserId    uint32 `field:"userId"`    // 用户ID
 | 
				
			||||||
 | 
						IsOn      uint8  `field:"isOn"`      // 是否启用
 | 
				
			||||||
 | 
						Name      string `field:"name"`      // 域名
 | 
				
			||||||
 | 
						CreatedAt uint64 `field:"createdAt"` // 创建时间
 | 
				
			||||||
 | 
						State     uint8  `field:"state"`     // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSDomainOperator struct {
 | 
				
			||||||
 | 
						Id        interface{} // ID
 | 
				
			||||||
 | 
						ClusterId interface{} // 集群ID
 | 
				
			||||||
 | 
						UserId    interface{} // 用户ID
 | 
				
			||||||
 | 
						IsOn      interface{} // 是否启用
 | 
				
			||||||
 | 
						Name      interface{} // 域名
 | 
				
			||||||
 | 
						CreatedAt interface{} // 创建时间
 | 
				
			||||||
 | 
						State     interface{} // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSDomainOperator() *NSDomainOperator {
 | 
				
			||||||
 | 
						return &NSDomainOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/nameservers/ns_domain_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/nameservers/ns_domain_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
							
								
								
									
										63
									
								
								internal/db/models/nameservers/ns_node_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								internal/db/models/nameservers/ns_node_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						NSNodeStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						NSNodeStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSNodeDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSNodeDAO() *NSNodeDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&NSNodeDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeNSNodes",
 | 
				
			||||||
 | 
								Model:  new(NSNode),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*NSNodeDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedNSNodeDAO *NSNodeDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedNSNodeDAO = NewNSNodeDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableNSNode 启用条目
 | 
				
			||||||
 | 
					func (this *NSNodeDAO) EnableNSNode(tx *dbs.Tx, id uint32) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSNodeStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableNSNode 禁用条目
 | 
				
			||||||
 | 
					func (this *NSNodeDAO) DisableNSNode(tx *dbs.Tx, id uint32) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSNodeStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledNSNode 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *NSNodeDAO) FindEnabledNSNode(tx *dbs.Tx, id uint32) (*NSNode, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Attr("state", NSNodeStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*NSNode), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/nameservers/ns_node_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/nameservers/ns_node_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										26
									
								
								internal/db/models/nameservers/ns_node_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								internal/db/models/nameservers/ns_node_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NSNode 域名服务器节点
 | 
				
			||||||
 | 
					type NSNode struct {
 | 
				
			||||||
 | 
						Id        uint32 `field:"id"`        // ID
 | 
				
			||||||
 | 
						ClusterId uint32 `field:"clusterId"` // 集群ID
 | 
				
			||||||
 | 
						IsOn      uint8  `field:"isOn"`      // 是否启用
 | 
				
			||||||
 | 
						Status    string `field:"status"`    // 运行状态
 | 
				
			||||||
 | 
						UniqueId  string `field:"uniqueId"`  // 节点ID
 | 
				
			||||||
 | 
						Secret    string `field:"secret"`    // 密钥
 | 
				
			||||||
 | 
						State     uint8  `field:"state"`     // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSNodeOperator struct {
 | 
				
			||||||
 | 
						Id        interface{} // ID
 | 
				
			||||||
 | 
						ClusterId interface{} // 集群ID
 | 
				
			||||||
 | 
						IsOn      interface{} // 是否启用
 | 
				
			||||||
 | 
						Status    interface{} // 运行状态
 | 
				
			||||||
 | 
						UniqueId  interface{} // 节点ID
 | 
				
			||||||
 | 
						Secret    interface{} // 密钥
 | 
				
			||||||
 | 
						State     interface{} // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSNodeOperator() *NSNodeOperator {
 | 
				
			||||||
 | 
						return &NSNodeOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/nameservers/ns_node_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/nameservers/ns_node_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
							
								
								
									
										71
									
								
								internal/db/models/nameservers/ns_record_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								internal/db/models/nameservers/ns_record_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						NSRecordStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						NSRecordStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSRecordDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSRecordDAO() *NSRecordDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&NSRecordDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeNSRecords",
 | 
				
			||||||
 | 
								Model:  new(NSRecord),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*NSRecordDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedNSRecordDAO *NSRecordDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedNSRecordDAO = NewNSRecordDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableNSRecord 启用条目
 | 
				
			||||||
 | 
					func (this *NSRecordDAO) EnableNSRecord(tx *dbs.Tx, id uint64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSRecordStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableNSRecord 禁用条目
 | 
				
			||||||
 | 
					func (this *NSRecordDAO) DisableNSRecord(tx *dbs.Tx, id uint64) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSRecordStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledNSRecord 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *NSRecordDAO) FindEnabledNSRecord(tx *dbs.Tx, id uint64) (*NSRecord, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Attr("state", NSRecordStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*NSRecord), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindNSRecordName 根据主键查找名称
 | 
				
			||||||
 | 
					func (this *NSRecordDAO) FindNSRecordName(tx *dbs.Tx, id uint64) (string, error) {
 | 
				
			||||||
 | 
						return this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Result("name").
 | 
				
			||||||
 | 
							FindStringCol("")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/nameservers/ns_record_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/nameservers/ns_record_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										34
									
								
								internal/db/models/nameservers/ns_record_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								internal/db/models/nameservers/ns_record_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NSRecord DNS记录
 | 
				
			||||||
 | 
					type NSRecord struct {
 | 
				
			||||||
 | 
						Id          uint64 `field:"id"`          // ID
 | 
				
			||||||
 | 
						DomainId    uint32 `field:"domainId"`    // 域名ID
 | 
				
			||||||
 | 
						Description string `field:"description"` // 备注
 | 
				
			||||||
 | 
						Name        string `field:"name"`        // 记录名
 | 
				
			||||||
 | 
						Type        string `field:"type"`        // 类型
 | 
				
			||||||
 | 
						Value       string `field:"value"`       // 值
 | 
				
			||||||
 | 
						Ttl         uint32 `field:"ttl"`         // TTL(秒)
 | 
				
			||||||
 | 
						Weight      uint32 `field:"weight"`      // 权重
 | 
				
			||||||
 | 
						Routes      string `field:"routes"`      // 线路
 | 
				
			||||||
 | 
						CreatedAt   uint64 `field:"createdAt"`   // 创建时间
 | 
				
			||||||
 | 
						State       uint8  `field:"state"`       // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSRecordOperator struct {
 | 
				
			||||||
 | 
						Id          interface{} // ID
 | 
				
			||||||
 | 
						DomainId    interface{} // 域名ID
 | 
				
			||||||
 | 
						Description interface{} // 备注
 | 
				
			||||||
 | 
						Name        interface{} // 记录名
 | 
				
			||||||
 | 
						Type        interface{} // 类型
 | 
				
			||||||
 | 
						Value       interface{} // 值
 | 
				
			||||||
 | 
						Ttl         interface{} // TTL(秒)
 | 
				
			||||||
 | 
						Weight      interface{} // 权重
 | 
				
			||||||
 | 
						Routes      interface{} // 线路
 | 
				
			||||||
 | 
						CreatedAt   interface{} // 创建时间
 | 
				
			||||||
 | 
						State       interface{} // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSRecordOperator() *NSRecordOperator {
 | 
				
			||||||
 | 
						return &NSRecordOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/nameservers/ns_record_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/nameservers/ns_record_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
							
								
								
									
										71
									
								
								internal/db/models/nameservers/ns_route_dao.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								internal/db/models/nameservers/ns_route_dao.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						NSRouteStateEnabled  = 1 // 已启用
 | 
				
			||||||
 | 
						NSRouteStateDisabled = 0 // 已禁用
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSRouteDAO dbs.DAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSRouteDAO() *NSRouteDAO {
 | 
				
			||||||
 | 
						return dbs.NewDAO(&NSRouteDAO{
 | 
				
			||||||
 | 
							DAOObject: dbs.DAOObject{
 | 
				
			||||||
 | 
								DB:     Tea.Env,
 | 
				
			||||||
 | 
								Table:  "edgeNSRoutes",
 | 
				
			||||||
 | 
								Model:  new(NSRoute),
 | 
				
			||||||
 | 
								PkName: "id",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}).(*NSRouteDAO)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var SharedNSRouteDAO *NSRouteDAO
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func init() {
 | 
				
			||||||
 | 
						dbs.OnReady(func() {
 | 
				
			||||||
 | 
							SharedNSRouteDAO = NewNSRouteDAO()
 | 
				
			||||||
 | 
						})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// EnableNSRoute 启用条目
 | 
				
			||||||
 | 
					func (this *NSRouteDAO) EnableNSRoute(tx *dbs.Tx, id uint32) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSRouteStateEnabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DisableNSRoute 禁用条目
 | 
				
			||||||
 | 
					func (this *NSRouteDAO) DisableNSRoute(tx *dbs.Tx, id uint32) error {
 | 
				
			||||||
 | 
						_, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Set("state", NSRouteStateDisabled).
 | 
				
			||||||
 | 
							Update()
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledNSRoute 查找启用中的条目
 | 
				
			||||||
 | 
					func (this *NSRouteDAO) FindEnabledNSRoute(tx *dbs.Tx, id uint32) (*NSRoute, error) {
 | 
				
			||||||
 | 
						result, err := this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Attr("state", NSRouteStateEnabled).
 | 
				
			||||||
 | 
							Find()
 | 
				
			||||||
 | 
						if result == nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return result.(*NSRoute), err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindNSRouteName 根据主键查找名称
 | 
				
			||||||
 | 
					func (this *NSRouteDAO) FindNSRouteName(tx *dbs.Tx, id uint32) (string, error) {
 | 
				
			||||||
 | 
						return this.Query(tx).
 | 
				
			||||||
 | 
							Pk(id).
 | 
				
			||||||
 | 
							Result("name").
 | 
				
			||||||
 | 
							FindStringCol("")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										6
									
								
								internal/db/models/nameservers/ns_route_dao_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								internal/db/models/nameservers/ns_route_dao_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						_ "github.com/go-sql-driver/mysql"
 | 
				
			||||||
 | 
						_ "github.com/iwind/TeaGo/bootstrap"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										26
									
								
								internal/db/models/nameservers/ns_route_model.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								internal/db/models/nameservers/ns_route_model.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NSRoute DNS线路
 | 
				
			||||||
 | 
					type NSRoute struct {
 | 
				
			||||||
 | 
						Id        uint32 `field:"id"`        // ID
 | 
				
			||||||
 | 
						ClusterId uint32 `field:"clusterId"` // 集群ID
 | 
				
			||||||
 | 
						UserId    uint32 `field:"userId"`    // 用户ID
 | 
				
			||||||
 | 
						Name      string `field:"name"`      // 名称
 | 
				
			||||||
 | 
						Conds     string `field:"conds"`     // 条件定义
 | 
				
			||||||
 | 
						IsOn      uint8  `field:"isOn"`      // 是否启用
 | 
				
			||||||
 | 
						State     uint8  `field:"state"`     // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type NSRouteOperator struct {
 | 
				
			||||||
 | 
						Id        interface{} // ID
 | 
				
			||||||
 | 
						ClusterId interface{} // 集群ID
 | 
				
			||||||
 | 
						UserId    interface{} // 用户ID
 | 
				
			||||||
 | 
						Name      interface{} // 名称
 | 
				
			||||||
 | 
						Conds     interface{} // 条件定义
 | 
				
			||||||
 | 
						IsOn      interface{} // 是否启用
 | 
				
			||||||
 | 
						State     interface{} // 状态
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func NewNSRouteOperator() *NSRouteOperator {
 | 
				
			||||||
 | 
						return &NSRouteOperator{}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1
									
								
								internal/db/models/nameservers/ns_route_model_ext.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								internal/db/models/nameservers/ns_route_model_ext.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package nameservers
 | 
				
			||||||
@@ -9,10 +9,8 @@ import (
 | 
				
			|||||||
	"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/events"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/events"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/rpc/services"
 | 
					 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/setup"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/setup"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/utils"
 | 
				
			||||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
					 | 
				
			||||||
	"github.com/go-yaml/yaml"
 | 
						"github.com/go-yaml/yaml"
 | 
				
			||||||
	"github.com/iwind/TeaGo/Tea"
 | 
						"github.com/iwind/TeaGo/Tea"
 | 
				
			||||||
	"github.com/iwind/TeaGo/dbs"
 | 
						"github.com/iwind/TeaGo/dbs"
 | 
				
			||||||
@@ -188,85 +186,7 @@ func (this *APINode) listenRPC(listener net.Listener, tlsConfig *tls.Config) err
 | 
				
			|||||||
		logs.Println("[API_NODE]listening GRPC https://" + listener.Addr().String() + " ...")
 | 
							logs.Println("[API_NODE]listening GRPC https://" + listener.Addr().String() + " ...")
 | 
				
			||||||
		rpcServer = grpc.NewServer(grpc.Creds(credentials.NewTLS(tlsConfig)))
 | 
							rpcServer = grpc.NewServer(grpc.Creds(credentials.NewTLS(tlsConfig)))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	pb.RegisterAdminServiceServer(rpcServer, &services.AdminService{})
 | 
						this.registerServices(rpcServer)
 | 
				
			||||||
	pb.RegisterNodeGrantServiceServer(rpcServer, &services.NodeGrantService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerServiceServer(rpcServer, &services.ServerService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeServiceServer(rpcServer, &services.NodeService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeClusterServiceServer(rpcServer, &services.NodeClusterService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeIPAddressServiceServer(rpcServer, &services.NodeIPAddressService{})
 | 
					 | 
				
			||||||
	pb.RegisterAPINodeServiceServer(rpcServer, &services.APINodeService{})
 | 
					 | 
				
			||||||
	pb.RegisterOriginServiceServer(rpcServer, &services.OriginService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPWebServiceServer(rpcServer, &services.HTTPWebService{})
 | 
					 | 
				
			||||||
	pb.RegisterReverseProxyServiceServer(rpcServer, &services.ReverseProxyService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPGzipServiceServer(rpcServer, &services.HTTPGzipService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPHeaderPolicyServiceServer(rpcServer, &services.HTTPHeaderPolicyService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPHeaderServiceServer(rpcServer, &services.HTTPHeaderService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPPageServiceServer(rpcServer, &services.HTTPPageService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPAccessLogPolicyServiceServer(rpcServer, &services.HTTPAccessLogPolicyService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPCachePolicyServiceServer(rpcServer, &services.HTTPCachePolicyService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPFirewallPolicyServiceServer(rpcServer, &services.HTTPFirewallPolicyService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPLocationServiceServer(rpcServer, &services.HTTPLocationService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPWebsocketServiceServer(rpcServer, &services.HTTPWebsocketService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPRewriteRuleServiceServer(rpcServer, &services.HTTPRewriteRuleService{})
 | 
					 | 
				
			||||||
	pb.RegisterSSLCertServiceServer(rpcServer, &services.SSLCertService{})
 | 
					 | 
				
			||||||
	pb.RegisterSSLPolicyServiceServer(rpcServer, &services.SSLPolicyService{})
 | 
					 | 
				
			||||||
	pb.RegisterSysSettingServiceServer(rpcServer, &services.SysSettingService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPFirewallRuleGroupServiceServer(rpcServer, &services.HTTPFirewallRuleGroupService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPFirewallRuleSetServiceServer(rpcServer, &services.HTTPFirewallRuleSetService{})
 | 
					 | 
				
			||||||
	pb.RegisterDBNodeServiceServer(rpcServer, &services.DBNodeService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeLogServiceServer(rpcServer, &services.NodeLogService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPAccessLogServiceServer(rpcServer, &services.HTTPAccessLogService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageServiceServer(rpcServer, &services.MessageService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageRecipientServiceServer(rpcServer, &services.MessageRecipientService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageReceiverServiceServer(rpcServer, &services.MessageReceiverService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageMediaServiceServer(rpcServer, &services.MessageMediaService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageRecipientGroupServiceServer(rpcServer, &services.MessageRecipientGroupService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageMediaInstanceServiceServer(rpcServer, &services.MessageMediaInstanceService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageTaskServiceServer(rpcServer, &services.MessageTaskService{})
 | 
					 | 
				
			||||||
	pb.RegisterMessageTaskLogServiceServer(rpcServer, &services.MessageTaskLogService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeGroupServiceServer(rpcServer, &services.NodeGroupService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeRegionServiceServer(rpcServer, &services.NodeRegionService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodePriceItemServiceServer(rpcServer, &services.NodePriceItemService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerGroupServiceServer(rpcServer, &services.ServerGroupService{})
 | 
					 | 
				
			||||||
	pb.RegisterIPLibraryServiceServer(rpcServer, &services.IPLibraryService{})
 | 
					 | 
				
			||||||
	pb.RegisterFileChunkServiceServer(rpcServer, &services.FileChunkService{})
 | 
					 | 
				
			||||||
	pb.RegisterFileServiceServer(rpcServer, &services.FileService{})
 | 
					 | 
				
			||||||
	pb.RegisterRegionCountryServiceServer(rpcServer, &services.RegionCountryService{})
 | 
					 | 
				
			||||||
	pb.RegisterRegionProvinceServiceServer(rpcServer, &services.RegionProvinceService{})
 | 
					 | 
				
			||||||
	pb.RegisterIPListServiceServer(rpcServer, &services.IPListService{})
 | 
					 | 
				
			||||||
	pb.RegisterIPItemServiceServer(rpcServer, &services.IPItemService{})
 | 
					 | 
				
			||||||
	pb.RegisterLogServiceServer(rpcServer, &services.LogService{})
 | 
					 | 
				
			||||||
	pb.RegisterDNSProviderServiceServer(rpcServer, &services.DNSProviderService{})
 | 
					 | 
				
			||||||
	pb.RegisterDNSDomainServiceServer(rpcServer, &services.DNSDomainService{})
 | 
					 | 
				
			||||||
	pb.RegisterDNSServiceServer(rpcServer, &services.DNSService{})
 | 
					 | 
				
			||||||
	pb.RegisterACMEUserServiceServer(rpcServer, &services.ACMEUserService{})
 | 
					 | 
				
			||||||
	pb.RegisterACMETaskServiceServer(rpcServer, &services.ACMETaskService{})
 | 
					 | 
				
			||||||
	pb.RegisterACMEAuthenticationServiceServer(rpcServer, &services.ACMEAuthenticationService{})
 | 
					 | 
				
			||||||
	pb.RegisterUserServiceServer(rpcServer, &services.UserService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerDailyStatServiceServer(rpcServer, &services.ServerDailyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterUserBillServiceServer(rpcServer, &services.UserBillService{})
 | 
					 | 
				
			||||||
	pb.RegisterUserNodeServiceServer(rpcServer, &services.UserNodeService{})
 | 
					 | 
				
			||||||
	pb.RegisterLoginServiceServer(rpcServer, &services.LoginService{})
 | 
					 | 
				
			||||||
	pb.RegisterUserAccessKeyServiceServer(rpcServer, &services.UserAccessKeyService{})
 | 
					 | 
				
			||||||
	pb.RegisterSysLockerServiceServer(rpcServer, &services.SysLockerService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeTaskServiceServer(rpcServer, &services.NodeTaskService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeValueServiceServer(rpcServer, &services.NodeValueService{})
 | 
					 | 
				
			||||||
	pb.RegisterDBServiceServer(rpcServer, &services.DBService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerRegionCityMonthlyStatServiceServer(rpcServer, &services.ServerRegionCityMonthlyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerRegionCountryMonthlyStatServiceServer(rpcServer, &services.ServerRegionCountryMonthlyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerRegionProvinceMonthlyStatServiceServer(rpcServer, &services.ServerRegionProvinceMonthlyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerRegionProviderMonthlyStatServiceServer(rpcServer, &services.ServerRegionProviderMonthlyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerClientSystemMonthlyStatServiceServer(rpcServer, &services.ServerClientSystemMonthlyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerClientBrowserMonthlyStatServiceServer(rpcServer, &services.ServerClientBrowserMonthlyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterServerHTTPFirewallDailyStatServiceServer(rpcServer, &services.ServerHTTPFirewallDailyStatService{})
 | 
					 | 
				
			||||||
	pb.RegisterDNSTaskServiceServer(rpcServer, &services.DNSTaskService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeClusterFirewallActionServiceServer(rpcServer, &services.NodeClusterFirewallActionService{})
 | 
					 | 
				
			||||||
	pb.RegisterMonitorNodeServiceServer(rpcServer, &services.MonitorNodeService{})
 | 
					 | 
				
			||||||
	pb.RegisterAuthorityKeyServiceServer(rpcServer, &services.AuthorityKeyService{})
 | 
					 | 
				
			||||||
	pb.RegisterAuthorityNodeServiceServer(rpcServer, &services.AuthorityNodeService{})
 | 
					 | 
				
			||||||
	pb.RegisterLatestItemServiceServer(rpcServer, &services.LatestItemService{})
 | 
					 | 
				
			||||||
	pb.RegisterNodeThresholdServiceServer(rpcServer, &services.NodeThresholdService{})
 | 
					 | 
				
			||||||
	pb.RegisterHTTPFastcgiServiceServer(rpcServer, &services.HTTPFastcgiService{})
 | 
					 | 
				
			||||||
	err := rpcServer.Serve(listener)
 | 
						err := rpcServer.Serve(listener)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return errors.New("[API_NODE]start rpc failed: " + err.Error())
 | 
							return errors.New("[API_NODE]start rpc failed: " + err.Error())
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										93
									
								
								internal/nodes/api_node_services.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								internal/nodes/api_node_services.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
				
			|||||||
 | 
					// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/rpc/services"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
				
			||||||
 | 
						"google.golang.org/grpc"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// 注册服务
 | 
				
			||||||
 | 
					func (this *APINode) registerServices(server *grpc.Server) {
 | 
				
			||||||
 | 
						pb.RegisterAdminServiceServer(server, &services.AdminService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeGrantServiceServer(server, &services.NodeGrantService{})
 | 
				
			||||||
 | 
						pb.RegisterServerServiceServer(server, &services.ServerService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeServiceServer(server, &services.NodeService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeClusterServiceServer(server, &services.NodeClusterService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeIPAddressServiceServer(server, &services.NodeIPAddressService{})
 | 
				
			||||||
 | 
						pb.RegisterAPINodeServiceServer(server, &services.APINodeService{})
 | 
				
			||||||
 | 
						pb.RegisterOriginServiceServer(server, &services.OriginService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPWebServiceServer(server, &services.HTTPWebService{})
 | 
				
			||||||
 | 
						pb.RegisterReverseProxyServiceServer(server, &services.ReverseProxyService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPGzipServiceServer(server, &services.HTTPGzipService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPHeaderPolicyServiceServer(server, &services.HTTPHeaderPolicyService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPHeaderServiceServer(server, &services.HTTPHeaderService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPPageServiceServer(server, &services.HTTPPageService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPAccessLogPolicyServiceServer(server, &services.HTTPAccessLogPolicyService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPCachePolicyServiceServer(server, &services.HTTPCachePolicyService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPFirewallPolicyServiceServer(server, &services.HTTPFirewallPolicyService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPLocationServiceServer(server, &services.HTTPLocationService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPWebsocketServiceServer(server, &services.HTTPWebsocketService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPRewriteRuleServiceServer(server, &services.HTTPRewriteRuleService{})
 | 
				
			||||||
 | 
						pb.RegisterSSLCertServiceServer(server, &services.SSLCertService{})
 | 
				
			||||||
 | 
						pb.RegisterSSLPolicyServiceServer(server, &services.SSLPolicyService{})
 | 
				
			||||||
 | 
						pb.RegisterSysSettingServiceServer(server, &services.SysSettingService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPFirewallRuleGroupServiceServer(server, &services.HTTPFirewallRuleGroupService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPFirewallRuleSetServiceServer(server, &services.HTTPFirewallRuleSetService{})
 | 
				
			||||||
 | 
						pb.RegisterDBNodeServiceServer(server, &services.DBNodeService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeLogServiceServer(server, &services.NodeLogService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPAccessLogServiceServer(server, &services.HTTPAccessLogService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageServiceServer(server, &services.MessageService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageRecipientServiceServer(server, &services.MessageRecipientService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageReceiverServiceServer(server, &services.MessageReceiverService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageMediaServiceServer(server, &services.MessageMediaService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageRecipientGroupServiceServer(server, &services.MessageRecipientGroupService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageMediaInstanceServiceServer(server, &services.MessageMediaInstanceService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageTaskServiceServer(server, &services.MessageTaskService{})
 | 
				
			||||||
 | 
						pb.RegisterMessageTaskLogServiceServer(server, &services.MessageTaskLogService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeGroupServiceServer(server, &services.NodeGroupService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeRegionServiceServer(server, &services.NodeRegionService{})
 | 
				
			||||||
 | 
						pb.RegisterNodePriceItemServiceServer(server, &services.NodePriceItemService{})
 | 
				
			||||||
 | 
						pb.RegisterServerGroupServiceServer(server, &services.ServerGroupService{})
 | 
				
			||||||
 | 
						pb.RegisterIPLibraryServiceServer(server, &services.IPLibraryService{})
 | 
				
			||||||
 | 
						pb.RegisterFileChunkServiceServer(server, &services.FileChunkService{})
 | 
				
			||||||
 | 
						pb.RegisterFileServiceServer(server, &services.FileService{})
 | 
				
			||||||
 | 
						pb.RegisterRegionCountryServiceServer(server, &services.RegionCountryService{})
 | 
				
			||||||
 | 
						pb.RegisterRegionProvinceServiceServer(server, &services.RegionProvinceService{})
 | 
				
			||||||
 | 
						pb.RegisterIPListServiceServer(server, &services.IPListService{})
 | 
				
			||||||
 | 
						pb.RegisterIPItemServiceServer(server, &services.IPItemService{})
 | 
				
			||||||
 | 
						pb.RegisterLogServiceServer(server, &services.LogService{})
 | 
				
			||||||
 | 
						pb.RegisterDNSProviderServiceServer(server, &services.DNSProviderService{})
 | 
				
			||||||
 | 
						pb.RegisterDNSDomainServiceServer(server, &services.DNSDomainService{})
 | 
				
			||||||
 | 
						pb.RegisterDNSServiceServer(server, &services.DNSService{})
 | 
				
			||||||
 | 
						pb.RegisterACMEUserServiceServer(server, &services.ACMEUserService{})
 | 
				
			||||||
 | 
						pb.RegisterACMETaskServiceServer(server, &services.ACMETaskService{})
 | 
				
			||||||
 | 
						pb.RegisterACMEAuthenticationServiceServer(server, &services.ACMEAuthenticationService{})
 | 
				
			||||||
 | 
						pb.RegisterUserServiceServer(server, &services.UserService{})
 | 
				
			||||||
 | 
						pb.RegisterServerDailyStatServiceServer(server, &services.ServerDailyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterUserBillServiceServer(server, &services.UserBillService{})
 | 
				
			||||||
 | 
						pb.RegisterUserNodeServiceServer(server, &services.UserNodeService{})
 | 
				
			||||||
 | 
						pb.RegisterLoginServiceServer(server, &services.LoginService{})
 | 
				
			||||||
 | 
						pb.RegisterUserAccessKeyServiceServer(server, &services.UserAccessKeyService{})
 | 
				
			||||||
 | 
						pb.RegisterSysLockerServiceServer(server, &services.SysLockerService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeTaskServiceServer(server, &services.NodeTaskService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeValueServiceServer(server, &services.NodeValueService{})
 | 
				
			||||||
 | 
						pb.RegisterDBServiceServer(server, &services.DBService{})
 | 
				
			||||||
 | 
						pb.RegisterServerRegionCityMonthlyStatServiceServer(server, &services.ServerRegionCityMonthlyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterServerRegionCountryMonthlyStatServiceServer(server, &services.ServerRegionCountryMonthlyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterServerRegionProvinceMonthlyStatServiceServer(server, &services.ServerRegionProvinceMonthlyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterServerRegionProviderMonthlyStatServiceServer(server, &services.ServerRegionProviderMonthlyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterServerClientSystemMonthlyStatServiceServer(server, &services.ServerClientSystemMonthlyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterServerClientBrowserMonthlyStatServiceServer(server, &services.ServerClientBrowserMonthlyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterServerHTTPFirewallDailyStatServiceServer(server, &services.ServerHTTPFirewallDailyStatService{})
 | 
				
			||||||
 | 
						pb.RegisterDNSTaskServiceServer(server, &services.DNSTaskService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeClusterFirewallActionServiceServer(server, &services.NodeClusterFirewallActionService{})
 | 
				
			||||||
 | 
						pb.RegisterMonitorNodeServiceServer(server, &services.MonitorNodeService{})
 | 
				
			||||||
 | 
						pb.RegisterAuthorityKeyServiceServer(server, &services.AuthorityKeyService{})
 | 
				
			||||||
 | 
						pb.RegisterAuthorityNodeServiceServer(server, &services.AuthorityNodeService{})
 | 
				
			||||||
 | 
						pb.RegisterLatestItemServiceServer(server, &services.LatestItemService{})
 | 
				
			||||||
 | 
						pb.RegisterNodeThresholdServiceServer(server, &services.NodeThresholdService{})
 | 
				
			||||||
 | 
						pb.RegisterHTTPFastcgiServiceServer(server, &services.HTTPFastcgiService{})
 | 
				
			||||||
 | 
						pb.RegisterNSClusterServiceServer(server, &services.NSClusterService{})
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										135
									
								
								internal/rpc/services/service_ns_cluster.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										135
									
								
								internal/rpc/services/service_ns_cluster.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,135 @@
 | 
				
			|||||||
 | 
					// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package services
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"context"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeAPI/internal/db/models/nameservers"
 | 
				
			||||||
 | 
						"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// NSClusterService 域名服务集群相关服务
 | 
				
			||||||
 | 
					type NSClusterService struct {
 | 
				
			||||||
 | 
						BaseService
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CreateNSCluster 创建集群
 | 
				
			||||||
 | 
					func (this *NSClusterService) CreateNSCluster(ctx context.Context, req *pb.CreateNSClusterRequest) (*pb.CreateNSClusterResponse, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						clusterId, err := nameservers.SharedNSClusterDAO.CreateCluster(tx, req.Name)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &pb.CreateNSClusterResponse{NsClusterId: clusterId}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UpdateNSCluster 修改集群
 | 
				
			||||||
 | 
					func (this *NSClusterService) UpdateNSCluster(ctx context.Context, req *pb.UpdateNSClusterRequest) (*pb.RPCSuccess, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						err = nameservers.SharedNSClusterDAO.UpdateCluster(tx, req.NsClusterId, req.Name, req.IsOn)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return this.Success()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DeleteNSCluster 删除集群
 | 
				
			||||||
 | 
					func (this *NSClusterService) DeleteNSCluster(ctx context.Context, req *pb.DeleteNSCluster) (*pb.RPCSuccess, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						err = nameservers.SharedNSClusterDAO.DisableNSCluster(tx, req.NsClusterId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return this.Success()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindEnabledNSCluster 查找单个可用集群信息
 | 
				
			||||||
 | 
					func (this *NSClusterService) FindEnabledNSCluster(ctx context.Context, req *pb.FindEnabledNSClusterRequest) (*pb.FindEnabledNSClusterResponse, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						cluster, err := nameservers.SharedNSClusterDAO.FindEnabledNSCluster(tx, req.NsClusterId)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if cluster == nil {
 | 
				
			||||||
 | 
							return &pb.FindEnabledNSClusterResponse{NsCluster: nil}, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &pb.FindEnabledNSClusterResponse{NsCluster: &pb.NSCluster{
 | 
				
			||||||
 | 
							Id:   int64(cluster.Id),
 | 
				
			||||||
 | 
							IsOn: cluster.IsOn == 1,
 | 
				
			||||||
 | 
							Name: cluster.Name,
 | 
				
			||||||
 | 
						}}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// CountAllEnabledNSClusters 计算所有可用集群的数量
 | 
				
			||||||
 | 
					func (this *NSClusterService) CountAllEnabledNSClusters(ctx context.Context, req *pb.CountAllEnabledNSClustersRequest) (*pb.RPCCountResponse, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						count, err := nameservers.SharedNSClusterDAO.CountAllEnabledClusters(tx)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return this.SuccessCount(count)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ListEnabledNSClusters 列出单页可用集群
 | 
				
			||||||
 | 
					func (this *NSClusterService) ListEnabledNSClusters(ctx context.Context, req *pb.ListEnabledNSClustersRequest) (*pb.ListEnabledNSClustersResponse, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						clusters, err := nameservers.SharedNSClusterDAO.ListEnabledNSClusters(tx, req.Offset, req.Size)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var pbClusters = []*pb.NSCluster{}
 | 
				
			||||||
 | 
						for _, cluster := range clusters {
 | 
				
			||||||
 | 
							pbClusters = append(pbClusters, &pb.NSCluster{
 | 
				
			||||||
 | 
								Id:   int64(cluster.Id),
 | 
				
			||||||
 | 
								IsOn: cluster.IsOn == 1,
 | 
				
			||||||
 | 
								Name: cluster.Name,
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &pb.ListEnabledNSClustersResponse{NsClusters: pbClusters}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// FindAllEnabledNSClusters 查找所有可用集群
 | 
				
			||||||
 | 
					func (this *NSClusterService) FindAllEnabledNSClusters(ctx context.Context, req *pb.FindAllEnabledNSClustersRequest) (*pb.FindAllEnabledNSClustersResponse, error) {
 | 
				
			||||||
 | 
						_, err := this.ValidateAdmin(ctx, 0)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var tx = this.NullTx()
 | 
				
			||||||
 | 
						clusters, err := nameservers.SharedNSClusterDAO.FindAllEnabledNSClusters(tx)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var pbClusters = []*pb.NSCluster{}
 | 
				
			||||||
 | 
						for _, cluster := range clusters {
 | 
				
			||||||
 | 
							pbClusters = append(pbClusters, &pb.NSCluster{
 | 
				
			||||||
 | 
								Id:   int64(cluster.Id),
 | 
				
			||||||
 | 
								IsOn: cluster.IsOn == 1,
 | 
				
			||||||
 | 
								Name: cluster.Name,
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return &pb.FindAllEnabledNSClustersResponse{NsClusters: pbClusters}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user