mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-08 16:00:26 +08:00
边缘节点IP支持IPV6
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
package clusters
|
package clusters
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"github.com/TeaOSLab/EdgeAdmin/internal/utils"
|
||||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||||
"github.com/iwind/TeaGo/maps"
|
"github.com/iwind/TeaGo/maps"
|
||||||
@@ -74,10 +75,14 @@ func (this *ClusterAction) RunGet(params struct {
|
|||||||
// 检查是否已解析
|
// 检查是否已解析
|
||||||
isResolved := false
|
isResolved := false
|
||||||
if cluster.DnsDomainId > 0 && len(cluster.DnsName) > 0 && len(node.IpAddr) > 0 {
|
if cluster.DnsDomainId > 0 && len(cluster.DnsName) > 0 && len(node.IpAddr) > 0 {
|
||||||
|
recordType := "A"
|
||||||
|
if utils.IsIPv6(node.IpAddr) {
|
||||||
|
recordType = "AAAA"
|
||||||
|
}
|
||||||
checkResp, err := this.RPC().DNSDomainRPC().ExistDNSDomainRecord(this.AdminContext(), &pb.ExistDNSDomainRecordRequest{
|
checkResp, err := this.RPC().DNSDomainRPC().ExistDNSDomainRecord(this.AdminContext(), &pb.ExistDNSDomainRecordRequest{
|
||||||
DnsDomainId: cluster.DnsDomainId,
|
DnsDomainId: cluster.DnsDomainId,
|
||||||
Name: cluster.DnsName,
|
Name: cluster.DnsName,
|
||||||
Type: "A",
|
Type: recordType,
|
||||||
Route: route.Code,
|
Route: route.Code,
|
||||||
Value: node.IpAddr,
|
Value: node.IpAddr,
|
||||||
})
|
})
|
||||||
@@ -157,5 +162,25 @@ func (this *ClusterAction) RunGet(params struct {
|
|||||||
}
|
}
|
||||||
this.Data["dnsHasChanges"] = checkChangesResp.IsChanged
|
this.Data["dnsHasChanges"] = checkChangesResp.IsChanged
|
||||||
|
|
||||||
|
// 需要解决的问题
|
||||||
|
issuesResp, err := this.RPC().DNSRPC().FindAllDNSIssues(this.AdminContext(), &pb.FindAllDNSIssuesRequest{
|
||||||
|
NodeClusterId: params.ClusterId,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
this.ErrorPage(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
issueMaps := []maps.Map{}
|
||||||
|
for _, issue := range issuesResp.Issues {
|
||||||
|
issueMaps = append(issueMaps, maps.Map{
|
||||||
|
"target": issue.Target,
|
||||||
|
"targetId": issue.TargetId,
|
||||||
|
"type": issue.Type,
|
||||||
|
"description": issue.Description,
|
||||||
|
"params": issue.Params,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.Data["issues"] = issueMaps
|
||||||
|
|
||||||
this.Show()
|
this.Show()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,11 @@ Vue.component("node-ip-addresses-box", {
|
|||||||
// 删除IP地址
|
// 删除IP地址
|
||||||
removeIPAddress: function (index) {
|
removeIPAddress: function (index) {
|
||||||
this.ipAddresses.$remove(index);
|
this.ipAddresses.$remove(index);
|
||||||
|
},
|
||||||
|
|
||||||
|
// 判断是否为IPv6
|
||||||
|
isIPv6: function (ip) {
|
||||||
|
return ip.indexOf(":") > -1
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
template: `<div>
|
template: `<div>
|
||||||
@@ -40,9 +45,9 @@ Vue.component("node-ip-addresses-box", {
|
|||||||
<div v-if="ipAddresses.length > 0">
|
<div v-if="ipAddresses.length > 0">
|
||||||
<div>
|
<div>
|
||||||
<div v-for="(address, index) in ipAddresses" class="ui label tiny basic">
|
<div v-for="(address, index) in ipAddresses" class="ui label tiny basic">
|
||||||
{{address.ip}}
|
<span v-if="isIPv6(address.ip)" class="grey">[IPv6]</span> {{address.ip}}
|
||||||
<span class="small" v-if="address.name.length > 0">({{address.name}}<span v-if="!address.canAccess">,不可访问</span>)</span>
|
<span class="small grey" v-if="address.name.length > 0">({{address.name}}<span v-if="!address.canAccess">,不可访问</span>)</span>
|
||||||
<span class="small" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span>
|
<span class="small grey" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span>
|
||||||
<a href="" title="修改" @click.prevent="updateIPAddress(index, address)"><i class="icon pencil small"></i></a>
|
<a href="" title="修改" @click.prevent="updateIPAddress(index, address)"><i class="icon pencil small"></i></a>
|
||||||
<a href="" title="删除" @click.prevent="removeIPAddress(index)"><i class="icon remove"></i></a>
|
<a href="" title="删除" @click.prevent="removeIPAddress(index)"><i class="icon remove"></i></a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -18,9 +18,9 @@
|
|||||||
<div v-if="node.ipAddresses.length > 0">
|
<div v-if="node.ipAddresses.length > 0">
|
||||||
<div>
|
<div>
|
||||||
<div v-for="(address, index) in node.ipAddresses" class="ui label tiny basic">
|
<div v-for="(address, index) in node.ipAddresses" class="ui label tiny basic">
|
||||||
{{address.ip}}
|
<span v-if="address.ip.indexOf(':') > -1" class="grey">[IPv6]</span> {{address.ip}}
|
||||||
<span class="small" v-if="address.name.length > 0">({{address.name}}<span v-if="!address.canAccess">,不可访问</span>)</span>
|
<span class="small grey" v-if="address.name.length > 0">({{address.name}}<span v-if="!address.canAccess">,不可访问</span>)</span>
|
||||||
<span class="small" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span>
|
<span class="small grey" v-if="address.name.length == 0 && !address.canAccess">(不可访问)</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -50,7 +50,10 @@
|
|||||||
<tbody v-for="address in node.ipAddresses" v-if="address.canAccess">
|
<tbody v-for="address in node.ipAddresses" v-if="address.canAccess">
|
||||||
<tr v-for="route in dnsRoutes">
|
<tr v-for="route in dnsRoutes">
|
||||||
<td>{{dnsRecordName}}</td>
|
<td>{{dnsRecordName}}</td>
|
||||||
<td>A</td>
|
<td>
|
||||||
|
<span v-if="address.ip.indexOf(':') > -1">AAAA</span>
|
||||||
|
<span v-else>A</span>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="route.name.length > 0">{{route.name}}</span>
|
<span v-if="route.name.length > 0">{{route.name}}</span>
|
||||||
<span v-else class="disabled">默认</span>
|
<span v-else class="disabled">默认</span>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
<menu-item :href="'/dns/clusters/cluster?clusterId=' + cluster.id" active="true">{{cluster.name}}</menu-item>
|
<menu-item :href="'/dns/clusters/cluster?clusterId=' + cluster.id" active="true">{{cluster.name}}</menu-item>
|
||||||
</first-menu>
|
</first-menu>
|
||||||
|
|
||||||
|
<!-- 基本信息 -->
|
||||||
<table class="ui table definition selectable">
|
<table class="ui table definition selectable">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="title">集群</td>
|
<td class="title">集群</td>
|
||||||
@@ -42,8 +43,45 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
<!-- 问题合集 -->
|
||||||
|
<div v-if="issues.length > 0">
|
||||||
|
<h3>需要修复的问题</h3>
|
||||||
|
<table class="ui table selectable celled" v-if="issues.length > 0">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th style="width: 50%">问题对象</th>
|
||||||
|
<th>问题描述</th>
|
||||||
|
<th class="two op">操作</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tr v-for="issue in issues">
|
||||||
|
<td>
|
||||||
|
<div v-if="issue.type == 'cluster'">
|
||||||
|
集群 "{{issue.target}}" <link-icon :href="'/clusters/cluster?clusterId=' + issue.targetId"></link-icon>
|
||||||
|
</div>
|
||||||
|
<div v-if="issue.type == 'node'">
|
||||||
|
集群 "{{issue.params.clusterName}}" 节点 "{{issue.target}}" <link-icon :href="'/clusters/cluster/node?clusterId=' + issue.params.clusterId + '&nodeId=' + issue.targetId"></link-icon>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<span>{{issue.description}}</span>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div v-if="issue.type == 'cluster'">
|
||||||
|
<link-red @click.prevent="updateCluster(issue.targetId)">修复</link-red>
|
||||||
|
</div>
|
||||||
|
<div v-if="issue.type == 'node'">
|
||||||
|
<link-red @click.prevent="updateNode(issue.targetId)">修复</link-red>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<div class="margin"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p class="comment">下面的DNS解析记录也可以手工在DNS服务商提供的管理平台添加。</p>
|
<p class="comment">下面的DNS解析记录也可以手工在DNS服务商提供的管理平台添加。</p>
|
||||||
|
|
||||||
|
<!-- 节点DNS解析记录 -->
|
||||||
<h3>节点DNS解析记录 <span> ({{nodes.length}}个)</span></h3>
|
<h3>节点DNS解析记录 <span> ({{nodes.length}}个)</span></h3>
|
||||||
<p class="comment" v-if="nodes.length == 0">暂时没有需要设置的DNS记录。</p>
|
<p class="comment" v-if="nodes.length == 0">暂时没有需要设置的DNS记录。</p>
|
||||||
<table class="ui table selectable celled" v-if="nodes.length > 0">
|
<table class="ui table selectable celled" v-if="nodes.length > 0">
|
||||||
@@ -64,7 +102,10 @@
|
|||||||
<span v-if="dnsInfo.dnsName.length > 0">{{dnsInfo.dnsName}}</span>
|
<span v-if="dnsInfo.dnsName.length > 0">{{dnsInfo.dnsName}}</span>
|
||||||
<link-red v-else @click.prevent="updateCluster(cluster.id)">没有设置</link-red>
|
<link-red v-else @click.prevent="updateCluster(cluster.id)">没有设置</link-red>
|
||||||
</td>
|
</td>
|
||||||
<td>A</td>
|
<td>
|
||||||
|
<span v-if="node.ipAddr.indexOf(':') > -1">AAAA</span>
|
||||||
|
<span v-else>A</span>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="node.ipAddr.length > 0">{{node.ipAddr}}</span>
|
<span v-if="node.ipAddr.length > 0">{{node.ipAddr}}</span>
|
||||||
<link-red title="点击设置" v-else @click.prevent="updateNode(node.id)">没有设置</link-red>
|
<link-red title="点击设置" v-else @click.prevent="updateNode(node.id)">没有设置</link-red>
|
||||||
@@ -83,7 +124,8 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<h3>代理服务解析记录 <span> ({{servers.length}}个)</span></h3>
|
<!-- 网站服务解析记录 -->
|
||||||
|
<h3>网站服务解析记录 <span> ({{servers.length}}个)</span></h3>
|
||||||
<p class="comment" v-if="servers.length == 0">暂时没有需要设置的DNS记录。</p>
|
<p class="comment" v-if="servers.length == 0">暂时没有需要设置的DNS记录。</p>
|
||||||
<table class="ui table selectable celled" v-if="servers.length > 0">
|
<table class="ui table selectable celled" v-if="servers.length > 0">
|
||||||
<thead>
|
<thead>
|
||||||
|
|||||||
Reference in New Issue
Block a user