mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-12-29 01:06:36 +08:00
实现在域名解析中使用EdgeDNS
This commit is contained in:
@@ -84,7 +84,7 @@ func (this *NSRecordService) ListEnabledNSRecords(ctx context.Context, req *pb.L
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
records, err := nameservers.SharedNSRecordDAO.ListAllEnabledRecords(tx, req.NsDomainId, req.Type, req.Keyword, req.NsRouteId, req.Offset, req.Size)
|
||||
records, err := nameservers.SharedNSRecordDAO.ListEnabledRecords(tx, req.NsDomainId, req.Type, req.Keyword, req.NsRouteId, req.Offset, req.Size)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models/dns"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/dnsclients"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/errors"
|
||||
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
|
||||
@@ -302,7 +303,7 @@ func (this *DNSDomainService) ExistAvailableDomains(ctx context.Context, req *pb
|
||||
func (this *DNSDomainService) convertDomainToPB(domain *dns.DNSDomain) (*pb.DNSDomain, error) {
|
||||
domainId := int64(domain.Id)
|
||||
|
||||
records := []*dnsclients.Record{}
|
||||
records := []*dnstypes.Record{}
|
||||
if len(domain.Records) > 0 && domain.Records != "null" {
|
||||
err := json.Unmarshal([]byte(domain.Records), &records)
|
||||
if err != nil {
|
||||
@@ -376,7 +377,7 @@ func (this *DNSDomainService) convertDomainToPB(domain *dns.DNSDomain) (*pb.DNSD
|
||||
}
|
||||
|
||||
// 转换域名记录信息
|
||||
func (this *DNSDomainService) convertRecordToPB(record *dnsclients.Record) *pb.DNSRecord {
|
||||
func (this *DNSDomainService) convertRecordToPB(record *dnstypes.Record) *pb.DNSRecord {
|
||||
return &pb.DNSRecord{
|
||||
Id: record.Id,
|
||||
Name: record.Name,
|
||||
@@ -387,7 +388,7 @@ func (this *DNSDomainService) convertRecordToPB(record *dnsclients.Record) *pb.D
|
||||
}
|
||||
|
||||
// 检查集群节点变化
|
||||
func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, records []*dnsclients.Record, domainName string) (result []maps.Map, doneNodeRecords []*dnsclients.Record, doneServerRecords []*dnsclients.Record, countAllNodes int64, countAllServers int64, nodesChanged bool, serversChanged bool, err error) {
|
||||
func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, records []*dnstypes.Record, domainName string) (result []maps.Map, doneNodeRecords []*dnstypes.Record, doneServerRecords []*dnstypes.Record, countAllNodes int64, countAllServers int64, nodesChanged bool, serversChanged bool, err error) {
|
||||
clusterId := int64(cluster.Id)
|
||||
clusterDnsName := cluster.DnsName
|
||||
clusterDomain := clusterDnsName + "." + domainName
|
||||
@@ -400,10 +401,10 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
|
||||
return nil, nil, nil, 0, 0, false, false, err
|
||||
}
|
||||
countAllNodes = int64(len(nodes))
|
||||
nodeRecords := []*dnsclients.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复
|
||||
nodeRecordMapping := map[string]*dnsclients.Record{} // value_route => *Record
|
||||
nodeRecords := []*dnstypes.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复
|
||||
nodeRecordMapping := map[string]*dnstypes.Record{} // value_route => *Record
|
||||
for _, record := range records {
|
||||
if record.Type == dnsclients.RecordTypeA && record.Name == clusterDnsName {
|
||||
if record.Type == dnstypes.RecordTypeA && record.Name == clusterDnsName {
|
||||
nodeRecords = append(nodeRecords, record)
|
||||
nodeRecordMapping[record.Value+"_"+record.Route] = record
|
||||
}
|
||||
@@ -441,10 +442,10 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
|
||||
if !ok {
|
||||
result = append(result, maps.Map{
|
||||
"action": "create",
|
||||
"record": &dnsclients.Record{
|
||||
"record": &dnstypes.Record{
|
||||
Id: "",
|
||||
Name: clusterDnsName,
|
||||
Type: dnsclients.RecordTypeA,
|
||||
Type: dnstypes.RecordTypeA,
|
||||
Value: ip,
|
||||
Route: route,
|
||||
},
|
||||
@@ -475,10 +476,10 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
|
||||
return nil, nil, nil, 0, 0, false, false, err
|
||||
}
|
||||
countAllServers = int64(len(servers))
|
||||
serverRecords := []*dnsclients.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复
|
||||
serverRecordsMap := map[string]*dnsclients.Record{} // dnsName => *Record
|
||||
serverRecords := []*dnstypes.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复
|
||||
serverRecordsMap := map[string]*dnstypes.Record{} // dnsName => *Record
|
||||
for _, record := range records {
|
||||
if record.Type == dnsclients.RecordTypeCName && record.Value == clusterDomain+"." {
|
||||
if record.Type == dnstypes.RecordTypeCNAME && record.Value == clusterDomain+"." {
|
||||
serverRecords = append(serverRecords, record)
|
||||
serverRecordsMap[record.Name] = record
|
||||
}
|
||||
@@ -497,10 +498,10 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
|
||||
serversChanged = true
|
||||
result = append(result, maps.Map{
|
||||
"action": "create",
|
||||
"record": &dnsclients.Record{
|
||||
"record": &dnstypes.Record{
|
||||
Id: "",
|
||||
Name: dnsName,
|
||||
Type: dnsclients.RecordTypeCName,
|
||||
Type: dnstypes.RecordTypeCNAME,
|
||||
Value: clusterDomain + ".",
|
||||
Route: "", // 注意这里为空,需要在执行过程中获取默认值
|
||||
},
|
||||
@@ -645,7 +646,7 @@ func (this *DNSDomainService) syncClusterDNS(req *pb.SyncDNSDomainDataRequest) (
|
||||
}
|
||||
for _, change := range allChanges {
|
||||
action := change.GetString("action")
|
||||
record := change.Get("record").(*dnsclients.Record)
|
||||
record := change.Get("record").(*dnstypes.Record)
|
||||
|
||||
if len(record.Route) == 0 {
|
||||
record.Route = manager.DefaultRoute()
|
||||
|
||||
@@ -8,12 +8,12 @@ import (
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
)
|
||||
|
||||
// DNS服务商相关服务
|
||||
// DNSProviderService DNS服务商相关服务
|
||||
type DNSProviderService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
// 创建服务商
|
||||
// CreateDNSProvider 创建服务商
|
||||
func (this *DNSProviderService) CreateDNSProvider(ctx context.Context, req *pb.CreateDNSProviderRequest) (*pb.CreateDNSProviderResponse, error) {
|
||||
// 校验请求
|
||||
adminId, userId, err := this.ValidateAdminAndUser(ctx, 0, 0)
|
||||
@@ -31,7 +31,7 @@ func (this *DNSProviderService) CreateDNSProvider(ctx context.Context, req *pb.C
|
||||
return &pb.CreateDNSProviderResponse{DnsProviderId: providerId}, nil
|
||||
}
|
||||
|
||||
// 修改服务商
|
||||
// UpdateDNSProvider 修改服务商
|
||||
func (this *DNSProviderService) UpdateDNSProvider(ctx context.Context, req *pb.UpdateDNSProviderRequest) (*pb.RPCSuccess, error) {
|
||||
// 校验请求
|
||||
_, _, err := this.ValidateAdminAndUser(ctx, 0, 0)
|
||||
@@ -50,7 +50,7 @@ func (this *DNSProviderService) UpdateDNSProvider(ctx context.Context, req *pb.U
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// 计算服务商数量
|
||||
// CountAllEnabledDNSProviders 计算服务商数量
|
||||
func (this *DNSProviderService) CountAllEnabledDNSProviders(ctx context.Context, req *pb.CountAllEnabledDNSProvidersRequest) (*pb.RPCCountResponse, error) {
|
||||
// 校验请求
|
||||
_, _, err := this.ValidateAdminAndUser(ctx, 0, req.UserId)
|
||||
@@ -67,7 +67,7 @@ func (this *DNSProviderService) CountAllEnabledDNSProviders(ctx context.Context,
|
||||
return this.SuccessCount(count)
|
||||
}
|
||||
|
||||
// 列出单页服务商信息
|
||||
// ListEnabledDNSProviders 列出单页服务商信息
|
||||
func (this *DNSProviderService) ListEnabledDNSProviders(ctx context.Context, req *pb.ListEnabledDNSProvidersRequest) (*pb.ListEnabledDNSProvidersResponse, error) {
|
||||
// 校验请求
|
||||
_, _, err := this.ValidateAdminAndUser(ctx, 0, req.UserId)
|
||||
@@ -97,7 +97,7 @@ func (this *DNSProviderService) ListEnabledDNSProviders(ctx context.Context, req
|
||||
return &pb.ListEnabledDNSProvidersResponse{DnsProviders: result}, nil
|
||||
}
|
||||
|
||||
// 查找所有的DNS服务商
|
||||
// FindAllEnabledDNSProviders 查找所有的DNS服务商
|
||||
func (this *DNSProviderService) FindAllEnabledDNSProviders(ctx context.Context, req *pb.FindAllEnabledDNSProvidersRequest) (*pb.FindAllEnabledDNSProvidersResponse, error) {
|
||||
// 校验请求
|
||||
_, _, err := this.ValidateAdminAndUser(ctx, 0, req.UserId)
|
||||
@@ -127,7 +127,7 @@ func (this *DNSProviderService) FindAllEnabledDNSProviders(ctx context.Context,
|
||||
return &pb.FindAllEnabledDNSProvidersResponse{DnsProviders: result}, nil
|
||||
}
|
||||
|
||||
// 删除服务商
|
||||
// DeleteDNSProvider 删除服务商
|
||||
func (this *DNSProviderService) DeleteDNSProvider(ctx context.Context, req *pb.DeleteDNSProviderRequest) (*pb.RPCSuccess, error) {
|
||||
// 校验请求
|
||||
_, _, err := this.ValidateAdminAndUser(ctx, 0, 0)
|
||||
@@ -146,7 +146,7 @@ func (this *DNSProviderService) DeleteDNSProvider(ctx context.Context, req *pb.D
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// 查找单个服务商
|
||||
// FindEnabledDNSProvider 查找单个服务商
|
||||
func (this *DNSProviderService) FindEnabledDNSProvider(ctx context.Context, req *pb.FindEnabledDNSProviderRequest) (*pb.FindEnabledDNSProviderResponse, error) {
|
||||
// 校验请求
|
||||
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
|
||||
@@ -174,7 +174,7 @@ func (this *DNSProviderService) FindEnabledDNSProvider(ctx context.Context, req
|
||||
}}, nil
|
||||
}
|
||||
|
||||
// 取得所有服务商类型
|
||||
// FindAllDNSProviderTypes 取得所有服务商类型
|
||||
func (this *DNSProviderService) FindAllDNSProviderTypes(ctx context.Context, req *pb.FindAllDNSProviderTypesRequest) (*pb.FindAllDNSProviderTypesResponse, error) {
|
||||
// 校验请求
|
||||
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
|
||||
@@ -183,16 +183,17 @@ func (this *DNSProviderService) FindAllDNSProviderTypes(ctx context.Context, req
|
||||
}
|
||||
|
||||
result := []*pb.DNSProviderType{}
|
||||
for _, t := range dnsclients.AllProviderTypes {
|
||||
for _, t := range dnsclients.FindAllProviderTypes() {
|
||||
result = append(result, &pb.DNSProviderType{
|
||||
Name: t.GetString("name"),
|
||||
Code: t.GetString("code"),
|
||||
Name: t.GetString("name"),
|
||||
Code: t.GetString("code"),
|
||||
Description: t.GetString("description"),
|
||||
})
|
||||
}
|
||||
return &pb.FindAllDNSProviderTypesResponse{ProviderTypes: result}, nil
|
||||
}
|
||||
|
||||
// 取得某个类型的所有服务商
|
||||
// FindAllEnabledDNSProvidersWithType 取得某个类型的所有服务商
|
||||
func (this *DNSProviderService) FindAllEnabledDNSProvidersWithType(ctx context.Context, req *pb.FindAllEnabledDNSProvidersWithTypeRequest) (*pb.FindAllEnabledDNSProvidersWithTypeResponse, error) {
|
||||
// 校验请求
|
||||
_, _, err := rpcutils.ValidateRequest(ctx, rpcutils.UserTypeAdmin)
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models/dns"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/dnsclients"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/errors"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/installers"
|
||||
rpcutils "github.com/TeaOSLab/EdgeAPI/internal/rpc/utils"
|
||||
@@ -156,7 +156,7 @@ func (this *NodeService) ListEnabledNodesMatch(ctx context.Context, req *pb.List
|
||||
}
|
||||
|
||||
dnsDomainId := int64(0)
|
||||
domainRoutes := []*dnsclients.Route{}
|
||||
domainRoutes := []*dnstypes.Route{}
|
||||
if clusterDNS != nil {
|
||||
dnsDomainId = int64(clusterDNS.DnsDomainId)
|
||||
if clusterDNS.DnsDomainId > 0 {
|
||||
|
||||
Reference in New Issue
Block a user