mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	[域名解析]优化解析状态显示
This commit is contained in:
		@@ -39,6 +39,7 @@ func (this *ClusterAction) RunGet(params struct {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	domainName := ""
 | 
			
		||||
	dnsMap := maps.Map{
 | 
			
		||||
		"dnsName":          dnsResp.Name,
 | 
			
		||||
		"domainId":         0,
 | 
			
		||||
@@ -48,6 +49,7 @@ func (this *ClusterAction) RunGet(params struct {
 | 
			
		||||
		"providerTypeName": "",
 | 
			
		||||
	}
 | 
			
		||||
	if dnsResp.Domain != nil {
 | 
			
		||||
		domainName = dnsResp.Domain.Name
 | 
			
		||||
		dnsMap["domainId"] = dnsResp.Domain.Id
 | 
			
		||||
		dnsMap["domainName"] = dnsResp.Domain.Name
 | 
			
		||||
	}
 | 
			
		||||
@@ -69,6 +71,23 @@ func (this *ClusterAction) RunGet(params struct {
 | 
			
		||||
	for _, node := range nodesResp.Nodes {
 | 
			
		||||
		if len(node.Routes) > 0 {
 | 
			
		||||
			for _, route := range node.Routes {
 | 
			
		||||
				// 检查是否已解析
 | 
			
		||||
				isResolved := false
 | 
			
		||||
				if cluster.DnsDomainId > 0 && len(cluster.DnsName) > 0 && len(node.IpAddr) > 0 {
 | 
			
		||||
					checkResp, err := this.RPC().DNSDomainRPC().ExistDNSDomainRecord(this.AdminContext(), &pb.ExistDNSDomainRecordRequest{
 | 
			
		||||
						DnsDomainId: cluster.DnsDomainId,
 | 
			
		||||
						Name:        cluster.DnsName,
 | 
			
		||||
						Type:        "A",
 | 
			
		||||
						Route:       route.Code,
 | 
			
		||||
						Value:       node.IpAddr,
 | 
			
		||||
					})
 | 
			
		||||
					if err != nil {
 | 
			
		||||
						this.ErrorPage(err)
 | 
			
		||||
						return
 | 
			
		||||
					}
 | 
			
		||||
					isResolved = checkResp.IsOk
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				nodeMaps = append(nodeMaps, maps.Map{
 | 
			
		||||
					"id":     node.Id,
 | 
			
		||||
					"name":   node.Name,
 | 
			
		||||
@@ -77,7 +96,8 @@ func (this *ClusterAction) RunGet(params struct {
 | 
			
		||||
						"name": route.Name,
 | 
			
		||||
						"code": route.Code,
 | 
			
		||||
					},
 | 
			
		||||
					"clusterId": node.NodeClusterId,
 | 
			
		||||
					"clusterId":  node.NodeClusterId,
 | 
			
		||||
					"isResolved": isResolved,
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
@@ -89,7 +109,8 @@ func (this *ClusterAction) RunGet(params struct {
 | 
			
		||||
					"name": "",
 | 
			
		||||
					"code": "",
 | 
			
		||||
				},
 | 
			
		||||
				"clusterId": node.NodeClusterId,
 | 
			
		||||
				"clusterId":  node.NodeClusterId,
 | 
			
		||||
				"isResolved": false,
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -103,10 +124,27 @@ func (this *ClusterAction) RunGet(params struct {
 | 
			
		||||
	}
 | 
			
		||||
	serverMaps := []maps.Map{}
 | 
			
		||||
	for _, server := range serversResp.Servers {
 | 
			
		||||
		// 检查是否已解析
 | 
			
		||||
		isResolved := false
 | 
			
		||||
		if cluster.DnsDomainId > 0 && len(cluster.DnsName) > 0 && len(server.DnsName) > 0 && len(domainName) > 0 {
 | 
			
		||||
			checkResp, err := this.RPC().DNSDomainRPC().ExistDNSDomainRecord(this.AdminContext(), &pb.ExistDNSDomainRecordRequest{
 | 
			
		||||
				DnsDomainId: cluster.DnsDomainId,
 | 
			
		||||
				Name:        server.DnsName,
 | 
			
		||||
				Type:        "CNAME",
 | 
			
		||||
				Value:       cluster.DnsName + "." + domainName,
 | 
			
		||||
			})
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				this.ErrorPage(err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			isResolved = checkResp.IsOk
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		serverMaps = append(serverMaps, maps.Map{
 | 
			
		||||
			"id":      server.Id,
 | 
			
		||||
			"name":    server.Name,
 | 
			
		||||
			"dnsName": server.DnsName,
 | 
			
		||||
			"id":         server.Id,
 | 
			
		||||
			"name":       server.Name,
 | 
			
		||||
			"dnsName":    server.DnsName,
 | 
			
		||||
			"isResolved": isResolved,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["servers"] = serverMaps
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										68
									
								
								internal/web/actions/default/dns/domains/clustersPopup.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								internal/web/actions/default/dns/domains/clustersPopup.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
package domains
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/maps"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ClustersPopupAction struct {
 | 
			
		||||
	actionutils.ParentAction
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *ClustersPopupAction) Init() {
 | 
			
		||||
	this.Nav("", "", "")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *ClustersPopupAction) RunGet(params struct {
 | 
			
		||||
	DomainId int64
 | 
			
		||||
}) {
 | 
			
		||||
	// 域名信息
 | 
			
		||||
	domainResp, err := this.RPC().DNSDomainRPC().FindEnabledBasicDNSDomain(this.AdminContext(), &pb.FindEnabledBasicDNSDomainRequest{
 | 
			
		||||
		DnsDomainId: params.DomainId,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	domain := domainResp.DnsDomain
 | 
			
		||||
	if domain == nil {
 | 
			
		||||
		this.NotFound("dnsDomain", params.DomainId)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Data["domain"] = domain.Name
 | 
			
		||||
 | 
			
		||||
	// 集群
 | 
			
		||||
	clustersResp, err := this.RPC().NodeClusterRPC().FindAllEnabledNodeClustersWithDNSDomainId(this.AdminContext(), &pb.FindAllEnabledNodeClustersWithDNSDomainIdRequest{DnsDomainId: params.DomainId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	clusterMaps := []maps.Map{}
 | 
			
		||||
	for _, cluster := range clustersResp.NodeClusters {
 | 
			
		||||
		isOk := false
 | 
			
		||||
		if len(cluster.Name) > 0 {
 | 
			
		||||
			checkResp, err := this.RPC().DNSDomainRPC().ExistDNSDomainRecord(this.AdminContext(), &pb.ExistDNSDomainRecordRequest{
 | 
			
		||||
				DnsDomainId: params.DomainId,
 | 
			
		||||
				Name:        cluster.DnsName,
 | 
			
		||||
				Type:        "A",
 | 
			
		||||
			})
 | 
			
		||||
			if err != nil {
 | 
			
		||||
				this.ErrorPage(err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			isOk = checkResp.IsOk
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		clusterMaps = append(clusterMaps, maps.Map{
 | 
			
		||||
			"id":      cluster.Id,
 | 
			
		||||
			"name":    cluster.Name,
 | 
			
		||||
			"dnsName": cluster.DnsName,
 | 
			
		||||
			"isOk":    isOk,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["clusters"] = clusterMaps
 | 
			
		||||
 | 
			
		||||
	this.Show()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										113
									
								
								internal/web/actions/default/dns/domains/nodesPopup.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								internal/web/actions/default/dns/domains/nodesPopup.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
package domains
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/maps"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type NodesPopupAction struct {
 | 
			
		||||
	actionutils.ParentAction
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *NodesPopupAction) Init() {
 | 
			
		||||
	this.Nav("", "", "")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *NodesPopupAction) RunGet(params struct {
 | 
			
		||||
	DomainId int64
 | 
			
		||||
}) {
 | 
			
		||||
	// 域名信息
 | 
			
		||||
	domainResp, err := this.RPC().DNSDomainRPC().FindEnabledBasicDNSDomain(this.AdminContext(), &pb.FindEnabledBasicDNSDomainRequest{
 | 
			
		||||
		DnsDomainId: params.DomainId,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	domain := domainResp.DnsDomain
 | 
			
		||||
	if domain == nil {
 | 
			
		||||
		this.NotFound("dnsDomain", params.DomainId)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Data["domain"] = domain.Name
 | 
			
		||||
 | 
			
		||||
	// 集群
 | 
			
		||||
	clusterMaps := []maps.Map{}
 | 
			
		||||
	clustersResp, err := this.RPC().NodeClusterRPC().FindAllEnabledNodeClustersWithDNSDomainId(this.AdminContext(), &pb.FindAllEnabledNodeClustersWithDNSDomainIdRequest{DnsDomainId: params.DomainId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, cluster := range clustersResp.NodeClusters {
 | 
			
		||||
		// 节点DNS解析记录
 | 
			
		||||
		nodesResp, err := this.RPC().NodeRPC().FindAllEnabledNodesDNSWithClusterId(this.AdminContext(), &pb.FindAllEnabledNodesDNSWithClusterIdRequest{NodeClusterId: cluster.Id})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			this.ErrorPage(err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		nodeMaps := []maps.Map{}
 | 
			
		||||
		for _, node := range nodesResp.Nodes {
 | 
			
		||||
			if len(node.Routes) > 0 {
 | 
			
		||||
				for _, route := range node.Routes {
 | 
			
		||||
					// 检查是否有域名解析记录
 | 
			
		||||
					isOk := false
 | 
			
		||||
					if len(route.Name) > 0 && len(node.IpAddr) > 0 && len(cluster.DnsName) > 0 {
 | 
			
		||||
						checkResp, err := this.RPC().DNSDomainRPC().ExistDNSDomainRecord(this.AdminContext(), &pb.ExistDNSDomainRecordRequest{
 | 
			
		||||
							DnsDomainId: params.DomainId,
 | 
			
		||||
							Name:        cluster.DnsName,
 | 
			
		||||
							Type:        "A",
 | 
			
		||||
							Route:       route.Code,
 | 
			
		||||
							Value:       node.IpAddr,
 | 
			
		||||
						})
 | 
			
		||||
						if err != nil {
 | 
			
		||||
							this.ErrorPage(err)
 | 
			
		||||
							return
 | 
			
		||||
						}
 | 
			
		||||
						isOk = checkResp.IsOk
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					nodeMaps = append(nodeMaps, maps.Map{
 | 
			
		||||
						"id":     node.Id,
 | 
			
		||||
						"name":   node.Name,
 | 
			
		||||
						"ipAddr": node.IpAddr,
 | 
			
		||||
						"route": maps.Map{
 | 
			
		||||
							"name": route.Name,
 | 
			
		||||
							"code": route.Code,
 | 
			
		||||
						},
 | 
			
		||||
						"clusterId": node.NodeClusterId,
 | 
			
		||||
						"isOk":      isOk,
 | 
			
		||||
					})
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				nodeMaps = append(nodeMaps, maps.Map{
 | 
			
		||||
					"id":     node.Id,
 | 
			
		||||
					"name":   node.Name,
 | 
			
		||||
					"ipAddr": node.IpAddr,
 | 
			
		||||
					"route": maps.Map{
 | 
			
		||||
						"name": "",
 | 
			
		||||
						"code": "",
 | 
			
		||||
					},
 | 
			
		||||
					"clusterId": node.NodeClusterId,
 | 
			
		||||
					"isOk":      false,
 | 
			
		||||
				})
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if len(nodeMaps) == 0 {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		clusterMaps = append(clusterMaps, maps.Map{
 | 
			
		||||
			"id":      cluster.Id,
 | 
			
		||||
			"name":    cluster.Name,
 | 
			
		||||
			"dnsName": cluster.DnsName,
 | 
			
		||||
			"nodes":   nodeMaps,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["clusters"] = clusterMaps
 | 
			
		||||
 | 
			
		||||
	this.Show()
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										83
									
								
								internal/web/actions/default/dns/domains/serversPopup.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								internal/web/actions/default/dns/domains/serversPopup.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
package domains
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
			
		||||
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
			
		||||
	"github.com/iwind/TeaGo/maps"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type ServersPopupAction struct {
 | 
			
		||||
	actionutils.ParentAction
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *ServersPopupAction) Init() {
 | 
			
		||||
	this.Nav("", "", "")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (this *ServersPopupAction) RunGet(params struct {
 | 
			
		||||
	DomainId int64
 | 
			
		||||
}) {
 | 
			
		||||
	// 域名信息
 | 
			
		||||
	domainResp, err := this.RPC().DNSDomainRPC().FindEnabledBasicDNSDomain(this.AdminContext(), &pb.FindEnabledBasicDNSDomainRequest{
 | 
			
		||||
		DnsDomainId: params.DomainId,
 | 
			
		||||
	})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	domain := domainResp.DnsDomain
 | 
			
		||||
	if domain == nil {
 | 
			
		||||
		this.NotFound("dnsDomain", params.DomainId)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	this.Data["domain"] = domain.Name
 | 
			
		||||
 | 
			
		||||
	// 服务信息
 | 
			
		||||
	clusterMaps := []maps.Map{}
 | 
			
		||||
	clustersResp, err := this.RPC().NodeClusterRPC().FindAllEnabledNodeClustersWithDNSDomainId(this.AdminContext(), &pb.FindAllEnabledNodeClustersWithDNSDomainIdRequest{DnsDomainId: params.DomainId})
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		this.ErrorPage(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	for _, cluster := range clustersResp.NodeClusters {
 | 
			
		||||
		serversResp, err := this.RPC().ServerRPC().FindAllEnabledServersDNSWithClusterId(this.AdminContext(), &pb.FindAllEnabledServersDNSWithClusterIdRequest{NodeClusterId: cluster.Id})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			this.ErrorPage(err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		serverMaps := []maps.Map{}
 | 
			
		||||
		for _, server := range serversResp.Servers {
 | 
			
		||||
			isOk := false
 | 
			
		||||
			if len(cluster.DnsName) > 0 && len(server.DnsName) > 0 {
 | 
			
		||||
				checkResp, err := this.RPC().DNSDomainRPC().ExistDNSDomainRecord(this.AdminContext(), &pb.ExistDNSDomainRecordRequest{
 | 
			
		||||
					DnsDomainId: params.DomainId,
 | 
			
		||||
					Name:        server.DnsName,
 | 
			
		||||
					Type:        "CNAME",
 | 
			
		||||
					Value:       cluster.DnsName + "." + domain.Name,
 | 
			
		||||
				})
 | 
			
		||||
				if err != nil {
 | 
			
		||||
					this.ErrorPage(err)
 | 
			
		||||
					return
 | 
			
		||||
				}
 | 
			
		||||
				isOk = checkResp.IsOk
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			serverMaps = append(serverMaps, maps.Map{
 | 
			
		||||
				"id":      server.Id,
 | 
			
		||||
				"name":    server.Name,
 | 
			
		||||
				"dnsName": server.DnsName,
 | 
			
		||||
				"isOk":    isOk,
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
		clusterMaps = append(clusterMaps, maps.Map{
 | 
			
		||||
			"id":      cluster.Id,
 | 
			
		||||
			"name":    cluster.Name,
 | 
			
		||||
			"dnsName": cluster.DnsName,
 | 
			
		||||
			"servers": serverMaps,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["clusters"] = clusterMaps
 | 
			
		||||
 | 
			
		||||
	this.Show()
 | 
			
		||||
}
 | 
			
		||||
@@ -45,6 +45,9 @@ func init() {
 | 
			
		||||
			Post("/sync", new(domains.SyncAction)).
 | 
			
		||||
			Get("/routesPopup", new(domains.RoutesPopupAction)).
 | 
			
		||||
			GetPost("/selectPopup", new(domains.SelectPopupAction)).
 | 
			
		||||
			Get("/clustersPopup", new(domains.ClustersPopupAction)).
 | 
			
		||||
			Get("/nodesPopup", new(domains.NodesPopupAction)).
 | 
			
		||||
			Get("/serversPopup", new(domains.ServersPopupAction)).
 | 
			
		||||
			EndData().
 | 
			
		||||
 | 
			
		||||
			// 问题修复
 | 
			
		||||
 
 | 
			
		||||
@@ -69,6 +69,9 @@ func (this *ProviderAction) RunGet(params struct {
 | 
			
		||||
			"serversChanged":     domain.ServersChanged,
 | 
			
		||||
			"countNodeRecords":   domain.CountNodeRecords,
 | 
			
		||||
			"nodesChanged":       domain.NodesChanged,
 | 
			
		||||
			"countClusters":      domain.CountNodeClusters,
 | 
			
		||||
			"countAllNodes":      domain.CountAllNodes,
 | 
			
		||||
			"countAllServers":    domain.CountAllServers,
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
	this.Data["domains"] = domainMaps
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user