mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-06 14:50:25 +08:00
可以修改服务的DNS设置
This commit is contained in:
@@ -77,9 +77,20 @@ func (this *ClusterAction) RunGet(params struct {
|
|||||||
this.Data["nodes"] = nodeMaps
|
this.Data["nodes"] = nodeMaps
|
||||||
|
|
||||||
// 代理服务解析记录
|
// 代理服务解析记录
|
||||||
// TODO
|
serversResp, err := this.RPC().ServerRPC().FindAllEnabledServersDNSWithClusterId(this.AdminContext(), &pb.FindAllEnabledServersDNSWithClusterIdRequest{ClusterId: params.ClusterId})
|
||||||
|
if err != nil {
|
||||||
this.Data["servers"] = []interface{}{}
|
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()
|
this.Show()
|
||||||
}
|
}
|
||||||
|
|||||||
46
web/public/js/components/common/links.js
Normal file
46
web/public/js/components/common/links.js
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
// 使用Icon的链接方式
|
||||||
|
Vue.component("link-icon", {
|
||||||
|
props: ["href"],
|
||||||
|
template: `<span><slot></slot> <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)
|
||||||
|
}
|
||||||
@@ -12,4 +12,10 @@
|
|||||||
form .fields {
|
form .fields {
|
||||||
margin-bottom: 0 !important;
|
margin-bottom: 0 !important;
|
||||||
}
|
}
|
||||||
|
.link.grey {
|
||||||
|
color: grey !important;
|
||||||
|
}
|
||||||
|
.link.grey:hover {
|
||||||
|
color: #4183c4 !important;
|
||||||
|
}
|
||||||
/*# sourceMappingURL=@layout_override.css.map */
|
/*# sourceMappingURL=@layout_override.css.map */
|
||||||
@@ -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"}
|
||||||
@@ -17,3 +17,12 @@ form {
|
|||||||
margin-bottom: 0 !important;
|
margin-bottom: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// links
|
||||||
|
.link.grey {
|
||||||
|
color: grey !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.link.grey:hover {
|
||||||
|
color: #4183c4 !important;
|
||||||
|
}
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<td>DNS服务商</td>
|
<td>DNS服务商</td>
|
||||||
<td>
|
<td>
|
||||||
<div v-if="dnsInfo.providerName.length > 0">
|
<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>
|
</div>
|
||||||
<span v-else-if="dnsInfo.domainName.length == 0" class="disabled">请先设置域名</span>
|
<span v-else-if="dnsInfo.domainName.length == 0" class="disabled">请先设置域名</span>
|
||||||
<span v-else class="disabled">没有设置</span>
|
<span v-else class="disabled">没有设置</span>
|
||||||
@@ -32,14 +32,15 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p class="comment">下面的DNS解析记录可以手工在DNS服务商提供的管理平台添加。</p>
|
<p class="comment">下面的DNS解析记录也可以手工在DNS服务商提供的管理平台添加。</p>
|
||||||
|
|
||||||
<h3>节点DNS解析记录</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" v-if="nodes.length > 0">
|
<table class="ui table selectable" v-if="nodes.length > 0">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>节点</th>
|
<th>节点</th>
|
||||||
|
<th>子域名</th>
|
||||||
<th>记录类型</th>
|
<th>记录类型</th>
|
||||||
<th>记录值</th>
|
<th>记录值</th>
|
||||||
<th>线路</th>
|
<th>线路</th>
|
||||||
@@ -47,24 +48,44 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tr v-for="node in nodes">
|
<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>A</td>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="node.ipAddr.length > 0">{{node.ipAddr}}</span>
|
<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>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="node.route.length > 0">{{node.route}}</span>
|
<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>
|
||||||
<td>
|
<td>
|
||||||
<a href="" @click.prevent="updateNode(node.id)">修改</a>
|
<link-popup @click.prevent="updateNode(node.id)">修改</link-popup>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<h3>代理服务解析记录</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" v-if="servers.length > 0">
|
<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>
|
</table>
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
</thead>
|
</thead>
|
||||||
<tr v-for="cluster in clusters">
|
<tr v-for="cluster in clusters">
|
||||||
<td>
|
<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>
|
||||||
<td>
|
<td>
|
||||||
<span v-if="cluster.dnsName.length > 0 && cluster.domainName.length > 0"><em class="italic">{{cluster.dnsName}}</em>.{{cluster.domainName}}</span>
|
<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>
|
<span v-else class="disabled">-</span>
|
||||||
</td>
|
</td>
|
||||||
<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>
|
<span v-else="" class="disabled">-</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|||||||
Reference in New Issue
Block a user