mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-02 22:10:26 +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/events"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/rpc/services"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/setup"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/utils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
"github.com/go-yaml/yaml"
|
||||
"github.com/iwind/TeaGo/Tea"
|
||||
"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() + " ...")
|
||||
rpcServer = grpc.NewServer(grpc.Creds(credentials.NewTLS(tlsConfig)))
|
||||
}
|
||||
pb.RegisterAdminServiceServer(rpcServer, &services.AdminService{})
|
||||
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{})
|
||||
this.registerServices(rpcServer)
|
||||
err := rpcServer.Serve(listener)
|
||||
if err != nil {
|
||||
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