diff --git a/internal/db/models/dns/dnsutils/dns_utils.go b/internal/db/models/dns/dnsutils/dns_utils.go index c320bad0..b2f54ee9 100644 --- a/internal/db/models/dns/dnsutils/dns_utils.go +++ b/internal/db/models/dns/dnsutils/dns_utils.go @@ -15,7 +15,7 @@ import ( // CheckClusterDNS 检查集群的DNS问题 // 藏这么深是避免package循环引用的问题 -func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster) (issues []*pb.DNSIssue, err error) { +func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster, checkNodeIssues bool) (issues []*pb.DNSIssue, err error) { var clusterId = int64(cluster.Id) var domainId = int64(cluster.DnsDomainId) @@ -104,47 +104,27 @@ func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster) (issues []*pb.DNSI // TODO 检查域名是否已解析 // 检查节点 - nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, clusterDNSConfig != nil && clusterDNSConfig.IncludingLnNodes) - if err != nil { - return nil, err - } - - // TODO 检查节点数量不能为0 - - for _, node := range nodes { - nodeId := int64(node.Id) - - routeCodes, err := node.DNSRouteCodesForDomainId(domainId) + if checkNodeIssues { + nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, clusterDNSConfig != nil && clusterDNSConfig.IncludingLnNodes) if err != nil { return nil, err } - if len(routeCodes) == 0 && !hasDefaultRoute { - issues = append(issues, &pb.DNSIssue{ - Target: node.Name, - TargetId: nodeId, - Type: "node", - Description: "没有选择节点所属线路", - Params: map[string]string{ - "clusterName": cluster.Name, - "clusterId": numberutils.FormatInt64(clusterId), - }, - MustFix: true, - }) - continue - } - // 检查线路是否在已有线路中 - for _, routeCode := range routeCodes { - routeOk, err := domain.ContainsRouteCode(routeCode) + // TODO 检查节点数量不能为0 + + for _, node := range nodes { + nodeId := int64(node.Id) + + routeCodes, err := node.DNSRouteCodesForDomainId(domainId) if err != nil { return nil, err } - if !routeOk { + if len(routeCodes) == 0 && !hasDefaultRoute { issues = append(issues, &pb.DNSIssue{ Target: node.Name, TargetId: nodeId, Type: "node", - Description: "线路已经失效,请重新选择", + Description: "没有选择节点所属线路", Params: map[string]string{ "clusterName": cluster.Name, "clusterId": numberutils.FormatInt64(clusterId), @@ -153,29 +133,51 @@ func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster) (issues []*pb.DNSI }) continue } - } - // 检查IP地址 - ipAddr, _, err := models.SharedNodeIPAddressDAO.FindFirstNodeAccessIPAddress(tx, nodeId, true, nodeconfigs.NodeRoleNode) - if err != nil { - return nil, err - } - if len(ipAddr) == 0 { - issues = append(issues, &pb.DNSIssue{ - Target: node.Name, - TargetId: nodeId, - Type: "node", - Description: "没有设置IP地址", - Params: map[string]string{ - "clusterName": cluster.Name, - "clusterId": numberutils.FormatInt64(clusterId), - }, - MustFix: true, - }) - continue - } + // 检查线路是否在已有线路中 + for _, routeCode := range routeCodes { + routeOk, err := domain.ContainsRouteCode(routeCode) + if err != nil { + return nil, err + } + if !routeOk { + issues = append(issues, &pb.DNSIssue{ + Target: node.Name, + TargetId: nodeId, + Type: "node", + Description: "线路已经失效,请重新选择", + Params: map[string]string{ + "clusterName": cluster.Name, + "clusterId": numberutils.FormatInt64(clusterId), + }, + MustFix: true, + }) + continue + } + } - // TODO 检查是否有解析记录 + // 检查IP地址 + ipAddr, _, err := models.SharedNodeIPAddressDAO.FindFirstNodeAccessIPAddress(tx, nodeId, true, nodeconfigs.NodeRoleNode) + if err != nil { + return nil, err + } + if len(ipAddr) == 0 { + issues = append(issues, &pb.DNSIssue{ + Target: node.Name, + TargetId: nodeId, + Type: "node", + Description: "没有设置IP地址", + Params: map[string]string{ + "clusterName": cluster.Name, + "clusterId": numberutils.FormatInt64(clusterId), + }, + MustFix: true, + }) + continue + } + + // TODO 检查是否有解析记录 + } } return diff --git a/internal/rpc/services/service_dns.go b/internal/rpc/services/service_dns.go index 57c88b02..478efae8 100644 --- a/internal/rpc/services/service_dns.go +++ b/internal/rpc/services/service_dns.go @@ -40,7 +40,7 @@ func (this *DNSService) FindAllDNSIssues(ctx context.Context, req *pb.FindAllDNS clusters = []*models.NodeCluster{cluster} } for _, cluster := range clusters { - issues, err := dnsutils.CheckClusterDNS(tx, cluster) + issues, err := dnsutils.CheckClusterDNS(tx, cluster, true) 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 80b7c1ce..a7241107 100644 --- a/internal/rpc/services/service_dns_domain.go +++ b/internal/rpc/services/service_dns_domain.go @@ -472,8 +472,8 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, return nil, nil, nil, 0, 0, false, false, err } countAllNodes = int64(len(nodes)) - nodeRecords := []*dnstypes.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复 - nodeRecordMapping := map[string]*dnstypes.Record{} // value_route => *Record + var nodeRecords = []*dnstypes.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复 + var nodeRecordMapping = map[string]*dnstypes.Record{} // value_route => *Record for _, record := range records { if (record.Type == dnstypes.RecordTypeA || record.Type == dnstypes.RecordTypeAAAA) && record.Name == clusterDnsName { nodeRecords = append(nodeRecords, record) @@ -482,7 +482,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, } // 新增的节点域名 - nodeKeys := []string{} + var nodeKeys = []string{} for _, node := range nodes { ipAddresses, err := models.SharedNodeIPAddressDAO.FindNodeAccessAndUpIPAddresses(tx, int64(node.Id), nodeconfigs.NodeRoleNode) if err != nil { @@ -557,8 +557,8 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, return nil, nil, nil, 0, 0, false, false, err } countAllServers = int64(len(servers)) - serverRecords := []*dnstypes.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复 - serverRecordsMap := map[string]*dnstypes.Record{} // dnsName => *Record + var serverRecords = []*dnstypes.Record{} // 之所以用数组再存一遍,是因为dnsName可能会重复 + var serverRecordsMap = map[string]*dnstypes.Record{} // dnsName => *Record for _, record := range records { if record.Type == dnstypes.RecordTypeCNAME && record.Value == clusterDomain+"." { serverRecords = append(serverRecords, record) @@ -567,7 +567,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, } // 新增的域名 - serverDNSNames := []string{} + var serverDNSNames = []string{} for _, server := range servers { dnsName := server.DnsName if len(dnsName) == 0 { @@ -635,7 +635,7 @@ func (this *DNSDomainService) syncClusterDNS(req *pb.SyncDNSDomainDataRequest) ( // 查询集群信息 var err error - clusters := []*models.NodeCluster{} + var clusters = []*models.NodeCluster{} if req.NodeClusterId > 0 { cluster, err := models.SharedNodeClusterDAO.FindEnabledNodeCluster(tx, req.NodeClusterId) if err != nil { @@ -671,8 +671,8 @@ func (this *DNSDomainService) syncClusterDNS(req *pb.SyncDNSDomainDataRequest) ( if domain == nil { return &pb.SyncDNSDomainDataResponse{IsOk: false, Error: "找不到要操作的域名"}, nil } - domainId := int64(domain.Id) - domainName := domain.Name + var domainId = int64(domain.Id) + var domainName = domain.Name // 服务商信息 provider, err := dns.SharedDNSProviderDAO.FindEnabledDNSProvider(tx, int64(domain.ProviderId)) @@ -691,7 +691,7 @@ func (this *DNSDomainService) syncClusterDNS(req *pb.SyncDNSDomainDataRequest) ( } // 开始同步 - manager := dnsclients.FindProvider(provider.Type) + var manager = dnsclients.FindProvider(provider.Type) if manager == nil { return &pb.SyncDNSDomainDataResponse{IsOk: false, Error: "目前不支持'" + provider.Type + "'"}, nil } @@ -716,7 +716,7 @@ func (this *DNSDomainService) syncClusterDNS(req *pb.SyncDNSDomainDataRequest) ( // 检查集群设置 for _, cluster := range clusters { - issues, err := dnsutils.CheckClusterDNS(tx, cluster) + issues, err := dnsutils.CheckClusterDNS(tx, cluster, req.CheckNodeIssues) if err != nil { return nil, err } @@ -740,7 +740,7 @@ func (this *DNSDomainService) syncClusterDNS(req *pb.SyncDNSDomainDataRequest) ( } // 对比变化 - allChanges := []maps.Map{} + var allChanges = []maps.Map{} for _, cluster := range clusters { changes, _, _, _, _, _, _, err := this.findClusterDNSChanges(cluster, records, domainName, manager.DefaultRoute()) if err != nil { @@ -768,8 +768,6 @@ func (this *DNSDomainService) syncClusterDNS(req *pb.SyncDNSDomainDataRequest) ( return &pb.SyncDNSDomainDataResponse{IsOk: false, Error: "删除域名记录失败:" + err.Error()}, nil } } - - //logs.Println(action, record.Name, record.Type, record.Value, record.Route) } // 重新更新记录