Skip to content

Commit ed12bec

Browse files
authored
feat: add DNS provider ClouDNS (#8207)
* feat: add DNS provider ClouDNS * feat: ClouDNS account parameter validation
1 parent 3c4a1ea commit ed12bec

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

backend/utils/ssl/client.go

+14
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
"github.com/go-acme/lego/v4/lego"
2020
"github.com/go-acme/lego/v4/providers/dns/alidns"
2121
"github.com/go-acme/lego/v4/providers/dns/clouddns"
22+
"github.com/go-acme/lego/v4/providers/dns/cloudns"
2223
"github.com/go-acme/lego/v4/providers/dns/cloudflare"
2324
"github.com/go-acme/lego/v4/providers/dns/dnspod"
2425
"github.com/go-acme/lego/v4/providers/dns/godaddy"
@@ -75,6 +76,7 @@ const (
7576
Volcengine DnsType = "Volcengine"
7677
CloudFlare DnsType = "CloudFlare"
7778
CloudDns DnsType = "CloudDns"
79+
ClouDNS DnsType = "ClouDNS"
7880
FreeMyIP DnsType = "FreeMyIP"
7981
NameSilo DnsType = "NameSilo"
8082
NameCheap DnsType = "NameCheap"
@@ -98,6 +100,9 @@ type DNSParam struct {
98100
Region string `json:"region"`
99101
ClientID string `json:"clientID"`
100102
Password string `json:"password"`
103+
AuthID string `json:"authID"`
104+
SubAuthID string `json:"subAuthID"`
105+
AuthPassword string `json:"authPassword"`
101106
}
102107

103108
var (
@@ -158,6 +163,15 @@ func (c *AcmeClient) UseDns(dnsType DnsType, params string, websiteSSL model.Web
158163
clouddnsConfig.PollingInterval = pollingInterval
159164
clouddnsConfig.TTL = ttl
160165
p, err = clouddns.NewDNSProviderConfig(clouddnsConfig)
166+
case ClouDNS:
167+
cloudnsConfig := cloudns.NewDefaultConfig()
168+
cloudnsConfig.AuthID = param.AuthID
169+
cloudnsConfig.SubAuthID = param.SubAuthID
170+
cloudnsConfig.AuthPassword = param.AuthPassword
171+
cloudnsConfig.PropagationTimeout = propagationTimeout
172+
cloudnsConfig.PollingInterval = pollingInterval
173+
cloudnsConfig.TTL = ttl
174+
p, err = clouddns.NewDNSProviderConfig(cloudnsConfig)
161175
case FreeMyIP:
162176
freeMyIpConfig := freemyip.NewDefaultConfig()
163177
freeMyIpConfig.Token = param.Token

frontend/src/global/mimetype.ts

+4
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,10 @@ export const DNSTypes = [
184184
label: 'CloudDNS',
185185
value: 'CloudDns',
186186
},
187+
{
188+
label: 'ClouDNS',
189+
value: 'ClouDNS',
190+
},
187191
{
188192
label: 'NameSilo',
189193
value: 'NameSilo',

frontend/src/views/website/ssl/dns-account/create/index.vue

+19-1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,17 @@
9797
<el-input v-model.trim="account.authorization['password']"></el-input>
9898
</el-form-item>
9999
</div>
100+
<div v-if="account.type === 'ClouDNS'">
101+
<el-form-item label="Auth ID" prop="authorization.authID">
102+
<el-input v-model.trim="account.authorization['authID']"></el-input>
103+
</el-form-item>
104+
<el-form-item label="Sub Auth ID" prop="authorization.subAuthID">
105+
<el-input v-model.trim="account.authorization['subAuthID']"></el-input>
106+
</el-form-item>
107+
<el-form-item label="Auth Password" prop="authorization.authPassword">
108+
<el-input v-model.trim="account.authorization['authPassword']"></el-input>
109+
</el-form-item>
110+
</div>
100111
<el-form-item
101112
label="API Key"
102113
prop="authorization.apiKey"
@@ -137,7 +148,7 @@
137148
import { CreateDnsAccount, UpdateDnsAccount } from '@/api/modules/website';
138149
import { Rules } from '@/global/form-rules';
139150
import i18n from '@/lang';
140-
import { MsgSuccess } from '@/utils/message';
151+
import { MsgSuccess, MsgError } from '@/utils/message';
141152
import { FormInstance } from 'element-plus';
142153
import { ref } from 'vue';
143154
import { DNSTypes } from '@/global/mimetype';
@@ -169,6 +180,7 @@ const rules = ref<any>({
169180
clientID: [Rules.requiredInput],
170181
email: [Rules.email],
171182
password: [Rules.requiredInput],
183+
authPassword: [Rules.requiredInput],
172184
},
173185
});
174186
const account = ref({
@@ -217,6 +229,12 @@ const submit = async (formEl: FormInstance | undefined) => {
217229
if (!valid) {
218230
return;
219231
}
232+
if (account.value.type === 'ClouDNS') {
233+
if (!account.value.authorization.authID && !account.value.authorization.subAuthID) {
234+
MsgError('Please input Auth ID or Sub Auth ID');
235+
return;
236+
}
237+
}
220238
loading.value = true;
221239
222240
if (accountData.value.mode === 'edit') {

0 commit comments

Comments
 (0)