mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-03 20:40:26 +08:00
域名解析中可以删除和恢复某个域名
This commit is contained in:
@@ -6,7 +6,7 @@ import (
|
||||
"github.com/iwind/TeaGo/maps"
|
||||
)
|
||||
|
||||
// 域名列表选项
|
||||
// DomainOptionsAction 域名列表选项
|
||||
type DomainOptionsAction struct {
|
||||
actionutils.ParentAction
|
||||
}
|
||||
@@ -23,8 +23,8 @@ func (this *DomainOptionsAction) RunPost(params struct {
|
||||
}
|
||||
domainMaps := []maps.Map{}
|
||||
for _, domain := range domainsResp.DnsDomains {
|
||||
// 未开启的先跳过
|
||||
if !domain.IsOn {
|
||||
// 未开启或者已删除的先跳过
|
||||
if !domain.IsOn || domain.IsDeleted {
|
||||
continue
|
||||
}
|
||||
|
||||
|
||||
27
internal/web/actions/default/dns/domains/recover.go
Normal file
27
internal/web/actions/default/dns/domains/recover.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package domains
|
||||
|
||||
import (
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/oplogs"
|
||||
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
)
|
||||
|
||||
type RecoverAction struct {
|
||||
actionutils.ParentAction
|
||||
}
|
||||
|
||||
func (this *RecoverAction) RunPost(params struct {
|
||||
DomainId int64
|
||||
}) {
|
||||
// 记录日志
|
||||
defer this.CreateLog(oplogs.LevelInfo, "从DNS服务商中恢复域名 %d", params.DomainId)
|
||||
|
||||
// 执行恢复
|
||||
_, err := this.RPC().DNSDomainRPC().RecoverDNSDomain(this.AdminContext(), &pb.RecoverDNSDomainRequest{DnsDomainId: params.DomainId})
|
||||
if err != nil {
|
||||
this.ErrorPage(err)
|
||||
return
|
||||
}
|
||||
|
||||
this.Success()
|
||||
}
|
||||
@@ -52,7 +52,7 @@ func (this *UpdatePopupAction) RunPost(params struct {
|
||||
// TODO 检查DomainId
|
||||
|
||||
// 记录日志
|
||||
defer this.CreateLog(oplogs.LevelInfo, "修改管理域名到DNS服务商 %d", params.DomainId)
|
||||
defer this.CreateLog(oplogs.LevelInfo, "修改DNS服务商域名 %d", params.DomainId)
|
||||
|
||||
params.Must.
|
||||
Field("name", params.Name).
|
||||
|
||||
@@ -43,6 +43,7 @@ func init() {
|
||||
GetPost("/createPopup", new(domains.CreatePopupAction)).
|
||||
GetPost("/updatePopup", new(domains.UpdatePopupAction)).
|
||||
Post("/delete", new(domains.DeleteAction)).
|
||||
Post("/recover", new(domains.RecoverAction)).
|
||||
Post("/sync", new(domains.SyncAction)).
|
||||
Get("/routesPopup", new(domains.RoutesPopupAction)).
|
||||
GetPost("/selectPopup", new(domains.SelectPopupAction)).
|
||||
|
||||
@@ -83,6 +83,7 @@ func (this *ProviderAction) RunGet(params struct {
|
||||
"name": domain.Name,
|
||||
"isOn": domain.IsOn,
|
||||
"isUp": domain.IsUp,
|
||||
"isDeleted": domain.IsDeleted,
|
||||
"dataUpdatedTime": dataUpdatedTime,
|
||||
"countRoutes": len(domain.Routes),
|
||||
"countServerRecords": domain.CountServerRecords,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{$layout "layout_popup"}
|
||||
|
||||
<h3>添加管理域名</h3>
|
||||
<h3>修改管理域名</h3>
|
||||
|
||||
<form method="post" class="ui form" data-tea-action="$" data-tea-success="success">
|
||||
<input type="hidden" name="domainId" :value="domain.id"/>
|
||||
|
||||
@@ -99,58 +99,62 @@
|
||||
|
||||
<p class="comment" v-if="domains.length == 0">暂时还没有可以管理的域名。</p>
|
||||
|
||||
<table class="ui table selectable celled" v-if="domains.length > 0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>域名</th>
|
||||
<th class="center" style="width: 7em">线路</th>
|
||||
<th class="center" style="width: 6em">集群</th>
|
||||
<th class="center" style="width: 7em">节点域名</th>
|
||||
<th class="center" style="width: 7em">服务域名</th>
|
||||
<th>数据更新时间</th>
|
||||
<th class="center width10">状态</th>
|
||||
<th class="three op">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr v-for="(domain, index) in domains">
|
||||
<td>{{domain.name}}</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countRoutes > 0" @click.prevent="showRoutes(domain.id)">{{domain.countRoutes}}个<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countClusters > 0" @click.prevent="viewClusters(domain.id)">{{domain.countClusters}}<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countAllNodes > 0" @click.prevent="viewNodes(domain.id)">{{domain.countNodeRecords}}/{{domain.countAllNodes}}个<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countAllServers > 0" @click.prevent="viewServers(domain.id)">{{domain.countServerRecords}}/{{domain.countAllServers}}个<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="domain.dataUpdatedTime.length > 0">{{domain.dataUpdatedTime}}</span>
|
||||
<span v-else class="disabled">尚未更新</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<div v-if="domain.countRoutes == 0 || domain.nodesChanged || domain.serversChanged">
|
||||
<a href="" style="border-bottom: 1px #db2828 dashed" title="点击和DNS服务商系统同步" @click.prevent="syncDomain(index,domain)" v-if="!domain.isSyncing"><span class="red">需要同步</span></a>
|
||||
<span v-else>正在同步...</span>
|
||||
</div>
|
||||
<div v-else-if="!domain.isUp">
|
||||
<a href="" style="border-bottom: 1px #db2828 dashed" @click.prevent="alertDown"><span class="red">已下线</span></a>
|
||||
</div>
|
||||
<div v-else>
|
||||
<label-on :v-is-on="domain.isOn"></label-on>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="" @click.prevent="syncDomain(index, domain)" v-if="!domain.isSyncing">同步</a>
|
||||
<span v-else>正在同步...</span>
|
||||
<a href="" @click.prevent="updateDomain(domain.id)" v-if="!domain.isSyncing">修改</a>
|
||||
<a href="" @click.prevent="deleteDomain(domain)" v-if="!domain.isSyncing">删除</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div v-for="state in [1, 0]">
|
||||
<div v-if="state == 0 && hasDeletedDomains">
|
||||
<h4 style="margin-top: 2em">已删除的域名</h4>
|
||||
</div>
|
||||
<table class="ui table selectable celled" v-if="domains.length > 0 && (state == 1 || hasDeletedDomains)">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>域名</th>
|
||||
<th class="center" style="width: 7em">线路</th>
|
||||
<th class="center" style="width: 6em">集群</th>
|
||||
<th class="center" style="width: 7em">节点域名</th>
|
||||
<th class="center" style="width: 7em">服务域名</th>
|
||||
<th>数据更新时间</th>
|
||||
<th class="center width10">状态</th>
|
||||
<th class="three op">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tr v-for="(domain, index) in domains" v-if="(state == 1 && !domain.isDeleted) || (state == 0 && domain.isDeleted)">
|
||||
<td>{{domain.name}}</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countRoutes > 0" @click.prevent="showRoutes(domain.id)">{{domain.countRoutes}}个<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countClusters > 0" @click.prevent="viewClusters(domain.id)">{{domain.countClusters}}<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countAllNodes > 0" @click.prevent="viewNodes(domain.id)">{{domain.countNodeRecords}}/{{domain.countAllNodes}}个<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<a href="" v-if="domain.countAllServers > 0" @click.prevent="viewServers(domain.id)">{{domain.countServerRecords}}/{{domain.countAllServers}}个<popup-icon></popup-icon></a>
|
||||
<span v-else class="disabled">0个</span>
|
||||
</td>
|
||||
<td>
|
||||
<span v-if="domain.dataUpdatedTime.length > 0">{{domain.dataUpdatedTime}}</span>
|
||||
<span v-else class="disabled">尚未更新</span>
|
||||
</td>
|
||||
<td class="center">
|
||||
<span v-if="!domain.isOn"><label-on :v-is-on="domain.isOn"></label-on></span>
|
||||
<div v-else-if="domain.countRoutes == 0 || domain.nodesChanged || domain.serversChanged">
|
||||
<a href="" style="border-bottom: 1px #db2828 dashed" title="点击和DNS服务商系统同步" @click.prevent="syncDomain(index,domain)" v-if="!domain.isSyncing"><span class="red">需要同步</span></a>
|
||||
<span v-else>正在同步...</span>
|
||||
</div>
|
||||
<div v-else-if="!domain.isUp">
|
||||
<a href="" style="border-bottom: 1px #db2828 dashed" @click.prevent="alertDown"><span class="red">已下线</span></a>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<a href="" @click.prevent="syncDomain(index, domain)" v-if="!domain.isSyncing">同步</a>
|
||||
<span v-else>正在同步...</span>
|
||||
<a href="" @click.prevent="updateDomain(domain.id)" v-if="!domain.isSyncing">修改</a>
|
||||
<a href="" @click.prevent="deleteDomain(domain)" v-if="!domain.isSyncing && !domain.isDeleted">删除</a>
|
||||
<a href="" @click.prevent="recoverDomain(domain)" v-if="!domain.isSyncing && domain.isDeleted">恢复</a>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
@@ -1,5 +1,6 @@
|
||||
Tea.context(function () {
|
||||
this.isUpdatingDomains = false
|
||||
this.hasDeletedDomains = this.domains.$find(function (k, v) {return v.isDeleted}) != null
|
||||
|
||||
this.$delay(function () {
|
||||
this.syncDomains()
|
||||
@@ -66,6 +67,18 @@ Tea.context(function () {
|
||||
})
|
||||
}
|
||||
|
||||
this.recoverDomain = function (domain) {
|
||||
let that = this
|
||||
teaweb.confirm("确定要恢复域名\"" + domain.name + "\"吗?", function () {
|
||||
that.$post("/dns/domains/recover")
|
||||
.params({
|
||||
domainId: domain.id
|
||||
})
|
||||
.post()
|
||||
.refresh()
|
||||
})
|
||||
}
|
||||
|
||||
this.syncDomain = function (index, domain) {
|
||||
let that = this
|
||||
teaweb.confirm("确定要同步此域名下的所有解析记录吗?", function () {
|
||||
|
||||
Reference in New Issue
Block a user