From d46420797c55546868e999f30625c9400feca6e8 Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Fri, 28 Oct 2022 15:27:52 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9B=86=E7=BE=A4=E4=B8=AD=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=AE=BE=E7=BD=AECNAME=E8=AE=B0=E5=BD=95=E5=A6=82=E6=9E=9C?= =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E5=AD=98=E5=9C=A8=EF=BC=8C=E5=88=99=E8=B7=B3?= =?UTF-8?q?=E8=BF=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/models/node_cluster_model_ext.go | 12 ++------- internal/rpc/services/service_dns_domain.go | 28 ++++++++++++-------- internal/tasks/dns_task_executor.go | 9 +++++-- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/internal/db/models/node_cluster_model_ext.go b/internal/db/models/node_cluster_model_ext.go index 3d02f048..25b7ad58 100644 --- a/internal/db/models/node_cluster_model_ext.go +++ b/internal/db/models/node_cluster_model_ext.go @@ -13,17 +13,9 @@ import ( func (this *NodeCluster) DecodeDNSConfig() (*dnsconfigs.ClusterDNSConfig, error) { if len(this.Dns) == 0 { // 一定要返回一个默认的值,防止产生nil - return &dnsconfigs.ClusterDNSConfig{ - NodesAutoSync: false, - ServersAutoSync: false, - CNAMEAsDomain: true, - IncludingLnNodes: true, - }, nil - } - var dnsConfig = &dnsconfigs.ClusterDNSConfig{ - CNAMEAsDomain: true, - IncludingLnNodes: true, + return dnsconfigs.DefaultClusterDNSConfig(), nil } + var dnsConfig = dnsconfigs.DefaultClusterDNSConfig() err := json.Unmarshal(this.Dns, &dnsConfig) if err != nil { return nil, err diff --git a/internal/rpc/services/service_dns_domain.go b/internal/rpc/services/service_dns_domain.go index 6c7d9b9c..dba4370c 100644 --- a/internal/rpc/services/service_dns_domain.go +++ b/internal/rpc/services/service_dns_domain.go @@ -12,6 +12,7 @@ import ( "github.com/TeaOSLab/EdgeAPI/internal/goman" "github.com/TeaOSLab/EdgeAPI/internal/utils" "github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils" + "github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs" "github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb" "github.com/iwind/TeaGo/dbs" @@ -436,21 +437,21 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, var clusterId = int64(cluster.Id) var clusterDnsName = cluster.DnsName var clusterDomain = clusterDnsName + "." + domainName - var dnsConfig, _ = cluster.DecodeDNSConfig() + dnsConfig, err := cluster.DecodeDNSConfig() + if err != nil { + return nil, nil, nil, 0, 0, false, false, err + } + if dnsConfig == nil { + dnsConfig = dnsconfigs.DefaultClusterDNSConfig() + } var tx = this.NullTx() // 自动设置的cname记录 - var cnameRecords = []string{} var ttl int32 - if len(cluster.Dns) > 0 { - dnsConfig, _ := cluster.DecodeDNSConfig() - if dnsConfig != nil { - cnameRecords = dnsConfig.CNAMERecords - if dnsConfig.TTL > 0 { - ttl = dnsConfig.TTL - } - } + var cnameRecords = dnsConfig.CNAMERecords + if dnsConfig.TTL > 0 { + ttl = dnsConfig.TTL } // 节点域名 @@ -556,7 +557,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, // 新增的域名 var serverDNSNames = []string{} for _, server := range servers { - dnsName := server.DnsName + var dnsName = server.DnsName if len(dnsName) == 0 { return nil, nil, nil, 0, 0, false, false, errors.New("server '" + numberutils.FormatInt64(int64(server.Id)) + "' 'dnsName' should not empty") } @@ -582,6 +583,11 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, // 自动设置的CNAME for _, cnameRecord := range cnameRecords { + // 如果记录已存在,则跳过 + if lists.ContainsString(serverDNSNames, cnameRecord) { + continue + } + serverDNSNames = append(serverDNSNames, cnameRecord) record, ok := serverRecordsMap[cnameRecord] if !ok { diff --git a/internal/tasks/dns_task_executor.go b/internal/tasks/dns_task_executor.go index 6eb24626..36f6c255 100644 --- a/internal/tasks/dns_task_executor.go +++ b/internal/tasks/dns_task_executor.go @@ -441,9 +441,9 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error { } // 新增的域名 - serverDNSNames := []string{} + var serverDNSNames = []string{} for _, server := range servers { - dnsName := server.DnsName + var dnsName = server.DnsName if len(dnsName) == 0 { continue } @@ -471,6 +471,11 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error { cnameRecords = dnsConfig.CNAMERecords } for _, cnameRecord := range cnameRecords { + // 如果记录已存在,则跳过 + if lists.ContainsString(serverDNSNames, cnameRecord) { + continue + } + serverDNSNames = append(serverDNSNames, cnameRecord) _, ok := serverRecordsMap[cnameRecord] if !ok {