增加支持服务CNAME选项/提供重新生成服务CNAME API

This commit is contained in:
刘祥超
2021-10-16 12:02:42 +08:00
parent d30b10baee
commit 9b9c6471f7
4 changed files with 76 additions and 3 deletions

View File

@@ -721,6 +721,10 @@ func (this *NodeDAO) ComposeNodeConfig(tx *dbs.Tx, nodeId int64, cacheMap maps.M
continue
}
config.Servers = append(config.Servers, serverConfig)
if server.IsOn == 1 && server.SupportCNAME == 1 {
config.SupportCNAME = true
}
}
// 全局设置

View File

@@ -472,10 +472,26 @@ func (this *ServerDAO) UpdateServerWeb(tx *dbs.Tx, serverId int64, webId int64)
return this.NotifyUpdate(tx, serverId)
}
// UpdateServerDNS 修改DNS设置
func (this *ServerDAO) UpdateServerDNS(tx *dbs.Tx, serverId int64, supportCNAME bool) error {
if serverId <= 0 {
return errors.New("invalid serverId")
}
var op = NewServerOperator()
op.Id = serverId
op.SupportCNAME = supportCNAME
err := this.Save(tx, op)
if err != nil {
return err
}
return this.NotifyUpdate(tx, serverId)
}
// InitServerWeb 初始化Web配置
func (this *ServerDAO) InitServerWeb(tx *dbs.Tx, serverId int64) (int64, error) {
if serverId <= 0 {
return 0, errors.New("serverId should not be smaller than 0")
return 0, errors.New("invalid serverId")
}
adminId, userId, err := this.FindServerAdminIdAndUserId(tx, serverId)
@@ -859,6 +875,7 @@ func (this *ServerDAO) ComposeServerConfig(tx *dbs.Tx, server *Server, cacheMap
}
// CNAME
config.SupportCNAME = server.SupportCNAME == 1
if server.ClusterId > 0 && len(server.DnsName) > 0 {
clusterDNS, err := SharedNodeClusterDAO.FindClusterDNSInfo(tx, int64(server.ClusterId), cacheMap)
if err != nil {
@@ -1236,6 +1253,18 @@ func (this *ServerDAO) FindServerDNSName(tx *dbs.Tx, serverId int64) (string, er
FindStringCol("")
}
// FindServerSupportCNAME 查询服务是否支持CNAME
func (this *ServerDAO) FindServerSupportCNAME(tx *dbs.Tx, serverId int64) (bool, error) {
supportCNAME, err := this.Query(tx).
Pk(serverId).
Result("supportCNAME").
FindIntCol(0)
if err != nil {
return false, err
}
return supportCNAME == 1, nil
}
// FindStatelessServerDNS 查询服务的DNS相关信息并且不关注状态
func (this *ServerDAO) FindStatelessServerDNS(tx *dbs.Tx, serverId int64) (*Server, error) {
one, err := this.Query(tx).

View File

@@ -33,6 +33,7 @@ type Server struct {
DnsName string `field:"dnsName"` // DNS名称
TcpPorts string `field:"tcpPorts"` // 所包含TCP端口
UdpPorts string `field:"udpPorts"` // 所包含UDP端口
SupportCNAME uint8 `field:"supportCNAME"` // 允许CNAME不在域名名单
}
type ServerOperator struct {
@@ -67,6 +68,7 @@ type ServerOperator struct {
DnsName interface{} // DNS名称
TcpPorts interface{} // 所包含TCP端口
UdpPorts interface{} // 所包含UDP端口
SupportCNAME interface{} // 允许CNAME不在域名名单
}
func NewServerOperator() *ServerOperator {

View File

@@ -468,6 +468,37 @@ func (this *ServerService) UpdateServerNamesAuditing(ctx context.Context, req *p
return this.Success()
}
// UpdateServerDNS 修改服务的DNS相关设置
func (this *ServerService) UpdateServerDNS(ctx context.Context, req *pb.UpdateServerDNSRequest) (*pb.RPCSuccess, error) {
_, err := this.ValidateAdmin(ctx, 0)
if err != nil {
return nil, err
}
var tx = this.NullTx()
err = models.SharedServerDAO.UpdateServerDNS(tx, req.ServerId, req.SupportCNAME)
if err != nil {
return nil, err
}
return this.Success()
}
// RegenerateServerCNAME 重新生成CNAME
func (this *ServerService) RegenerateServerCNAME(ctx context.Context, req *pb.RegenerateServerCNAMERequest) (*pb.RPCSuccess, error) {
_, err := this.ValidateAdmin(ctx, 0)
if err != nil {
return nil, err
}
var tx = this.NullTx()
_, err = models.SharedServerDAO.GenerateServerDNSName(tx, req.ServerId)
if err != nil {
return nil, err
}
return this.Success()
}
// CountAllEnabledServersMatch 计算服务数量
func (this *ServerService) CountAllEnabledServersMatch(ctx context.Context, req *pb.CountAllEnabledServersMatchRequest) (*pb.RPCCountResponse, error) {
// 校验请求
@@ -712,6 +743,7 @@ func (this *ServerService) FindEnabledServer(ctx context.Context, req *pb.FindEn
Name: server.Name,
Description: server.Description,
DnsName: server.DnsName,
SupportCNAME: server.SupportCNAME == 1,
Config: configJSON,
ServerNamesJSON: []byte(server.ServerNames),
HttpJSON: []byte(server.Http),
@@ -1065,6 +1097,11 @@ func (this *ServerService) FindEnabledServerDNS(ctx context.Context, req *pb.Fin
return nil, err
}
supportCNAME, err := models.SharedServerDAO.FindServerSupportCNAME(tx, req.ServerId)
if err != nil {
return nil, err
}
clusterId, err := models.SharedServerDAO.FindServerClusterId(tx, req.ServerId)
if err != nil {
return nil, err
@@ -1095,6 +1132,7 @@ func (this *ServerService) FindEnabledServerDNS(ctx context.Context, req *pb.Fin
return &pb.FindEnabledServerDNSResponse{
DnsName: dnsName,
Domain: pbDomain,
SupportCNAME: supportCNAME,
}, nil
}