实现在域名解析中使用EdgeDNS

This commit is contained in:
GoEdgeLab
2021-06-02 18:14:00 +08:00
parent 949a20f684
commit 21d2e7e924
8 changed files with 144 additions and 17 deletions

View File

@@ -29,6 +29,7 @@ func (this *CreatePopupAction) RunGet(params struct{}) {
typeMaps = append(typeMaps, maps.Map{ typeMaps = append(typeMaps, maps.Map{
"name": t.Name, "name": t.Name,
"code": t.Code, "code": t.Code,
"description": t.Description,
}) })
} }
this.Data["types"] = typeMaps this.Data["types"] = typeMaps
@@ -36,6 +37,21 @@ func (this *CreatePopupAction) RunGet(params struct{}) {
// 自动生成CustomHTTP私钥 // 自动生成CustomHTTP私钥
this.Data["paramCustomHTTPSecret"] = rands.HexString(32) this.Data["paramCustomHTTPSecret"] = rands.HexString(32)
// EdgeDNS集群列表
nsClustersResp, err := this.RPC().NSClusterRPC().FindAllEnabledNSClusters(this.AdminContext(), &pb.FindAllEnabledNSClustersRequest{})
if err != nil {
this.ErrorPage(err)
return
}
nsClusterMaps := []maps.Map{}
for _, nsCluster := range nsClustersResp.NsClusters {
nsClusterMaps = append(nsClusterMaps, maps.Map{
"id": nsCluster.Id,
"name": nsCluster.Name,
})
}
this.Data["nsClusters"] = nsClusterMaps
this.Show() this.Show()
} }
@@ -59,6 +75,9 @@ func (this *CreatePopupAction) RunPost(params struct {
CloudFlareAPIKey string CloudFlareAPIKey string
CloudFlareEmail string CloudFlareEmail string
// Local EdgeDNS
ParamLocalEdgeDNSClusterId int64
// CustomHTTP // CustomHTTP
ParamCustomHTTPURL string ParamCustomHTTPURL string
ParamCustomHTTPSecret string ParamCustomHTTPSecret string
@@ -109,6 +128,11 @@ func (this *CreatePopupAction) RunPost(params struct {
Email("请输入正确格式的邮箱地址") Email("请输入正确格式的邮箱地址")
apiParams["apiKey"] = params.CloudFlareAPIKey apiParams["apiKey"] = params.CloudFlareAPIKey
apiParams["email"] = params.CloudFlareEmail apiParams["email"] = params.CloudFlareEmail
case "localEdgeDNS":
params.Must.
Field("ParamLocalEdgeDNSClusterId", params.ParamLocalEdgeDNSClusterId).
Gt(0, "请选择域名服务集群")
apiParams["clusterId"] = params.ParamLocalEdgeDNSClusterId
case "customHTTP": case "customHTTP":
params.Must. params.Must.
Field("paramCustomHTTPURL", params.ParamCustomHTTPURL). Field("paramCustomHTTPURL", params.ParamCustomHTTPURL).

View File

@@ -39,12 +39,31 @@ func (this *ProviderAction) RunGet(params struct {
} }
} }
// 本地EdgeDNS相关
var localEdgeDNSMap = maps.Map{}
if provider.Type == "localEdgeDNS" {
nsClusterId := apiParams.GetInt64("clusterId")
nsClusterResp, err := this.RPC().NSClusterRPC().FindEnabledNSCluster(this.AdminContext(), &pb.FindEnabledNSClusterRequest{NsClusterId: nsClusterId})
if err != nil {
this.ErrorPage(err)
return
}
nsCluster := nsClusterResp.NsCluster
if nsCluster != nil {
localEdgeDNSMap = maps.Map{
"id": nsCluster.Id,
"name": nsCluster.Name,
}
}
}
this.Data["provider"] = maps.Map{ this.Data["provider"] = maps.Map{
"id": provider.Id, "id": provider.Id,
"name": provider.Name, "name": provider.Name,
"type": provider.Type, "type": provider.Type,
"typeName": provider.TypeName, "typeName": provider.TypeName,
"apiParams": apiParams, "apiParams": apiParams,
"localEdgeDNS": localEdgeDNSMap,
} }
// 域名 // 域名

View File

@@ -59,10 +59,26 @@ func (this *UpdatePopupAction) RunGet(params struct {
typeMaps = append(typeMaps, maps.Map{ typeMaps = append(typeMaps, maps.Map{
"name": t.Name, "name": t.Name,
"code": t.Code, "code": t.Code,
"description": t.Description,
}) })
} }
this.Data["types"] = typeMaps this.Data["types"] = typeMaps
// EdgeDNS集群列表
nsClustersResp, err := this.RPC().NSClusterRPC().FindAllEnabledNSClusters(this.AdminContext(), &pb.FindAllEnabledNSClustersRequest{})
if err != nil {
this.ErrorPage(err)
return
}
nsClusterMaps := []maps.Map{}
for _, nsCluster := range nsClustersResp.NsClusters {
nsClusterMaps = append(nsClusterMaps, maps.Map{
"id": nsCluster.Id,
"name": nsCluster.Name,
})
}
this.Data["nsClusters"] = nsClusterMaps
this.Show() this.Show()
} }
@@ -88,6 +104,9 @@ func (this *UpdatePopupAction) RunPost(params struct {
CloudFlareAPIKey string CloudFlareAPIKey string
CloudFlareEmail string CloudFlareEmail string
// Local EdgeDNS
ParamLocalEdgeDNSClusterId int64
// CustomHTTP // CustomHTTP
ParamCustomHTTPURL string ParamCustomHTTPURL string
ParamCustomHTTPSecret string ParamCustomHTTPSecret string
@@ -140,6 +159,11 @@ func (this *UpdatePopupAction) RunPost(params struct {
Email("请输入正确格式的邮箱地址") Email("请输入正确格式的邮箱地址")
apiParams["apiKey"] = params.CloudFlareAPIKey apiParams["apiKey"] = params.CloudFlareAPIKey
apiParams["email"] = params.CloudFlareEmail apiParams["email"] = params.CloudFlareEmail
case "localEdgeDNS":
params.Must.
Field("ParamLocalEdgeDNSClusterId", params.ParamLocalEdgeDNSClusterId).
Gt(0, "请选择域名服务集群")
apiParams["clusterId"] = params.ParamLocalEdgeDNSClusterId
case "customHTTP": case "customHTTP":
params.Must. params.Must.
Field("paramCustomHTTPURL", params.ParamCustomHTTPURL). Field("paramCustomHTTPURL", params.ParamCustomHTTPURL).

View File

@@ -14,10 +14,11 @@
<tr> <tr>
<td>服务商厂家 *</td> <td>服务商厂家 *</td>
<td> <td>
<select class="ui dropdown auto-width" name="type" v-model="type"> <select class="ui dropdown auto-width" name="type" v-model="type" @change="changeType">
<option value="">[请选择]</option> <option value="">[请选择]</option>
<option v-for="type in types" :value="type.code">{{type.name}}</option> <option v-for="type in types" :value="type.code">{{type.name}}</option>
</select> </select>
<p class="comment">{{typeDescription}}</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -96,6 +97,19 @@
</tr> </tr>
</tbody> </tbody>
<!-- Edge DNS -->
<tbody v-if="type == 'localEdgeDNS'">
<tr>
<td>选择域名服务集群 *</td>
<td>
<select class="ui dropdown auto-width" name="paramLocalEdgeDNSClusterId">
<option value="0">[选择域名服务集群]</option>
<option v-for="cluster in nsClusters" :value="cluster.id">{{cluster.name}}</option>
</select>
</td>
</tr>
</tbody>
<!-- 自定义HTTP--> <!-- 自定义HTTP-->
<tbody v-if="type == 'customHTTP'"> <tbody v-if="type == 'customHTTP'">
<tr> <tr>

View File

@@ -1,4 +1,17 @@
Tea.context(function () { Tea.context(function () {
this.success = NotifyPopup this.success = NotifyPopup
this.type = "" this.type = ""
this.typeDescription = ""
this.changeType = function () {
let that = this
let t = this.types.$find(function (k, v) {
return v.code == that.type
})
if (t != null) {
this.typeDescription = t.description
} else {
this.typeDescription = ""
}
}
}) })

View File

@@ -22,11 +22,11 @@
<!-- DNSPod --> <!-- DNSPod -->
<tbody v-if="provider.type == 'dnspod'"> <tbody v-if="provider.type == 'dnspod'">
<tr> <tr>
<td>密钥ID</td> <td class="color-border">密钥ID</td>
<td>{{provider.apiParams.id}}</td> <td>{{provider.apiParams.id}}</td>
</tr> </tr>
<tr> <tr>
<td>密钥Token</td> <td class="color-border">密钥Token</td>
<td>{{provider.apiParams.token}}</td> <td>{{provider.apiParams.token}}</td>
</tr> </tr>
</tbody> </tbody>
@@ -46,25 +46,35 @@
<!-- CloudFlare --> <!-- CloudFlare -->
<tbody v-if="provider.type == 'cloudFlare'"> <tbody v-if="provider.type == 'cloudFlare'">
<tr> <tr>
<td>API密钥</td> <td class="color-border">API密钥</td>
<td> <td>
{{provider.apiParams.apiKey}} {{provider.apiParams.apiKey}}
</td> </td>
</tr> </tr>
<tr> <tr>
<td>账号邮箱</td> <td class="color-border">账号邮箱</td>
<td>{{provider.apiParams.email}}</td> <td>{{provider.apiParams.email}}</td>
</tr> </tr>
</tbody> </tbody>
<!-- Local EdgeDNS -->
<tbody v-if="provider.type == 'localEdgeDNS'">
<tr>
<td class="color-border">域名服务集群</td>
<td>
{{provider.localEdgeDNS.name}}
</td>
</tr>
</tbody>
<!-- CustomHTTP --> <!-- CustomHTTP -->
<tbody v-if="provider.type == 'customHTTP'"> <tbody v-if="provider.type == 'customHTTP'">
<tr> <tr>
<td>HTTP URL</td> <td class="color-border">HTTP URL</td>
<td>{{provider.apiParams.url}}</td> <td>{{provider.apiParams.url}}</td>
</tr> </tr>
<tr> <tr>
<td>私钥</td> <td class="color-border">私钥</td>
<td>{{provider.apiParams.secret}}</td> <td>{{provider.apiParams.secret}}</td>
</tr> </tr>
</tbody> </tbody>

View File

@@ -17,7 +17,7 @@
<td>服务商厂家 *</td> <td>服务商厂家 *</td>
<td> <td>
{{provider.typeName}} {{provider.typeName}}
<p class="comment">创建后无法修改此选项。</p> <p class="comment">{{typeDescription}}创建后无法修改此选项。</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -79,6 +79,19 @@
</tr> </tr>
</tbody> </tbody>
<!-- Edge DNS -->
<tbody v-if="provider.type == 'localEdgeDNS'">
<tr>
<td>选择域名服务集群 *</td>
<td>
<select class="ui dropdown auto-width" name="paramLocalEdgeDNSClusterId" v-model="provider.params.clusterId">
<option value="0">[选择域名服务集群]</option>
<option v-for="cluster in nsClusters" :value="cluster.id">{{cluster.name}}</option>
</select>
</td>
</tr>
</tbody>
<!-- 自定义HTTP--> <!-- 自定义HTTP-->
<tbody v-if="provider.type == 'customHTTP'"> <tbody v-if="provider.type == 'customHTTP'">
<tr> <tr>

View File

@@ -0,0 +1,10 @@
Tea.context(function () {
this.typeDescription = ""
let that = this
this.types.forEach(function (v) {
if (v.code == that.provider.type) {
that.typeDescription = v.description
}
})
})