可以修改服务的DNS设置

This commit is contained in:
GoEdgeLab
2020-11-14 11:05:33 +08:00
parent 15907371cd
commit 28325f45a9
7 changed files with 108 additions and 15 deletions

View File

@@ -77,9 +77,20 @@ func (this *ClusterAction) RunGet(params struct {
this.Data["nodes"] = nodeMaps
// 代理服务解析记录
// TODO
this.Data["servers"] = []interface{}{}
serversResp, err := this.RPC().ServerRPC().FindAllEnabledServersDNSWithClusterId(this.AdminContext(), &pb.FindAllEnabledServersDNSWithClusterIdRequest{ClusterId: params.ClusterId})
if err != nil {
this.ErrorPage(err)
return
}
serverMaps := []maps.Map{}
for _, server := range serversResp.Servers {
serverMaps = append(serverMaps, maps.Map{
"id": server.Id,
"name": server.Name,
"dnsName": server.DnsName,
})
}
this.Data["servers"] = serverMaps
this.Show()
}

View File

@@ -0,0 +1,46 @@
// 使用Icon的链接方式
Vue.component("link-icon", {
props: ["href"],
template: `<span><slot></slot>&nbsp;<a :href="href" title="打开链接" class="link grey"><i class="icon linkify small"></i></a></span>`
})
// 带有下划虚线的连接
Vue.component("link-red", {
props: ["href", "title"],
data: function () {
let href = this.href
if (href == null) {
href = ""
}
return {
vHref: href
}
},
methods: {
clickPrevent: function () {
emitClick(this, arguments)
}
},
template: `<a :href="vHref" :title="title" style="border-bottom: 1px #db2828 dashed" @click.prevent="clickPrevent"><span class="red"><slot></slot></span></a>`
})
// 会弹出窗口的链接
Vue.component("link-popup", {
props: ["title"],
methods: {
clickPrevent: function () {
emitClick(this, arguments)
}
},
template: `<a href="" :title="title" @click.prevent="clickPrevent"><slot></slot></a>`
})
// 提交点击事件
function emitClick(obj, arguments) {
let event = "click"
let newArgs = [event]
for (let i = 0; i < arguments.length; i++) {
newArgs.push(arguments[i])
}
obj.$emit.apply(obj, newArgs)
}

View File

@@ -12,4 +12,10 @@
form .fields {
margin-bottom: 0 !important;
}
.link.grey {
color: grey !important;
}
.link.grey:hover {
color: #4183c4 !important;
}
/*# sourceMappingURL=@layout_override.css.map */

View File

@@ -1 +1 @@
{"version":3,"sources":["@layout_override.less"],"names":[],"mappings":"AACA,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,QAAO;EACrG,oCAAA;;AAGD,GAAG,OAAO,SAAU,MAAK,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,QAAS,QAAO;EACzF,oCAAA;;AAGD,GAAG,MAAM;EACR,kCAAA;;AAID,IACC;EACC,2BAAA","file":"@layout_override.css"}
{"version":3,"sources":["@layout_override.less"],"names":[],"mappings":"AACA,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,MAAM,QAAS,QAAO;EACrG,oCAAA;;AAGD,GAAG,OAAO,SAAU,MAAK,QAAS,OAAM;AAAS,GAAG,OAAO,SAAU,MAAK,QAAS,QAAO;EACzF,oCAAA;;AAGD,GAAG,MAAM;EACR,kCAAA;;AAID,IACC;EACC,2BAAA;;AAKF,KAAK;EACJ,sBAAA;;AAGD,KAAK,KAAK;EACT,yBAAA","file":"@layout_override.css"}

View File

@@ -17,3 +17,12 @@ form {
margin-bottom: 0 !important;
}
}
// links
.link.grey {
color: grey !important;
}
.link.grey:hover {
color: #4183c4 !important;
}

View File

@@ -24,7 +24,7 @@
<td>DNS服务商</td>
<td>
<div v-if="dnsInfo.providerName.length > 0">
<a :href="'/dns/providers/provider?providerId=' + dnsInfo.providerId">{{dnsInfo.providerTypeName}} - {{dnsInfo.providerName}}</a>
<link-icon :href="'/dns/providers/provider?providerId=' + dnsInfo.providerId">{{dnsInfo.providerTypeName}} - {{dnsInfo.providerName}}</link-icon>
</div>
<span v-else-if="dnsInfo.domainName.length == 0" class="disabled">请先设置域名</span>
<span v-else class="disabled">没有设置</span>
@@ -32,14 +32,15 @@
</tr>
</table>
<p class="comment">下面的DNS解析记录可以手工在DNS服务商提供的管理平台添加。</p>
<p class="comment">下面的DNS解析记录可以手工在DNS服务商提供的管理平台添加。</p>
<h3>节点DNS解析记录</h3>
<h3>节点DNS解析记录 <span>&nbsp; ({{nodes.length}}个)</span></h3>
<p class="comment" v-if="nodes.length == 0">暂时没有需要设置的DNS记录。</p>
<table class="ui table selectable" v-if="nodes.length > 0">
<thead>
<tr>
<th>节点</th>
<th>子域名</th>
<th>记录类型</th>
<th>记录值</th>
<th>线路</th>
@@ -47,24 +48,44 @@
</tr>
</thead>
<tr v-for="node in nodes">
<td><a :href="'/clusters/cluster/node?nodeId=' + node.id">{{node.name}}</a></td>
<td><link-icon :href="'/clusters/cluster/node?nodeId=' + node.id">{{node.name}}</link-icon></td>
<td>
<span v-if="dnsInfo.dnsName.length > 0">{{dnsInfo.dnsName}}</span>
<link-red v-else @click.prevent="updateClusterDNS(cluster.id)">没有设置</link-red>
</td>
<td>A</td>
<td>
<span v-if="node.ipAddr.length > 0">{{node.ipAddr}}</span>
<a href="" v-else style="border-bottom: 1px #db2828 dashed" @click.prevent="updateNode(node.id)"><span class="red">没有设置</span></a>
<link-red title="点击设置" v-else @click.prevent="updateNode(node.id)">没有设置</link-red>
</td>
<td>
<span v-if="node.route.length > 0">{{node.route}}</span>
<a href="" v-else style="border-bottom: 1px #db2828 dashed" @click.prevent="updateNode(node.id)"><span class="red">没有设置</span></a>
<link-red v-else title="点击设置" @click.prevent="updateNode(node.id)">没有设置</link-red>
</td>
<td>
<a href="" @click.prevent="updateNode(node.id)">修改</a>
<link-popup @click.prevent="updateNode(node.id)">修改</link-popup>
</td>
</tr>
</table>
<h3>代理服务解析记录</h3>
<h3>代理服务解析记录 <span>&nbsp; ({{servers.length}}个)</span></h3>
<p class="comment" v-if="servers.length == 0">暂时没有需要设置的DNS记录。</p>
<table class="ui table selectable" v-if="servers.length > 0">
<thead>
<tr>
<th>服务</th>
<th>子域名</th>
<th>记录类型</th>
<th>记录值</th>
</tr>
</thead>
<tr v-for="server in servers">
<td><link-icon :href="'/servers/server?serverId=' + server.id">{{server.name}}</link-icon> </td>
<td>{{server.dnsName}}</td>
<td>CNAME</td>
<td>
<span v-if="dnsInfo.domainName.length > 0"><var>{{dnsInfo.dnsName}}</var>.{{dnsInfo.domainName}}.</span>
<link-red title="点击设置" v-else @click.prevent="updateClusterDNS(cluster.id)">没有设置</link-red>
</td>
</tr>
</table>

View File

@@ -15,7 +15,7 @@
</thead>
<tr v-for="cluster in clusters">
<td>
<a :href="'/clusters/cluster?clusterId=' + cluster.id">{{cluster.name}}</a>
{{cluster.name}}<link-icon :href="'/clusters/cluster?clusterId=' + cluster.id"></link-icon>
</td>
<td>
<span v-if="cluster.dnsName.length > 0 && cluster.domainName.length > 0"><em class="italic">{{cluster.dnsName}}</em>.{{cluster.domainName}}</span>
@@ -26,7 +26,7 @@
<span v-else class="disabled">-</span>
</td>
<td>
<a v-if="cluster.providerName.length > 0" :href="'/dns/providers/provider?providerId=' + cluster.providerId">{{cluster.providerName}}</a>
<span v-if="cluster.providerName.length > 0">{{cluster.providerName}}<link-icon :href="'/dns/providers/provider?providerId=' + cluster.providerId"></link-icon></span>
<span v-else="" class="disabled">-</span>
</td>
<td>