2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 13:47:15 +08:00

feat: 新增一批dns提供商

This commit is contained in:
2025-03-30 01:48:07 +08:00
parent ecc44b2e92
commit cc15852944
10 changed files with 315 additions and 70 deletions

View File

@@ -119,6 +119,78 @@ const handleCreateDNS = async () => {
placeholder="输入 Cloudflare API Key"
/>
</n-form-item>
<n-form-item v-if="model.type == 'godaddy'" path="ak" label="Token">
<n-input
v-model:value="model.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 GoDaddy Token"
/>
</n-form-item>
<n-form-item v-if="model.type == 'gcore'" path="ak" label="API Key">
<n-input
v-model:value="model.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 G-Core API Key"
/>
</n-form-item>
<n-form-item v-if="model.type == 'porkbun'" path="ak" label="API Key">
<n-input
v-model:value="model.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 Porkbun API Key"
/>
</n-form-item>
<n-form-item v-if="model.type == 'porkbun'" path="sk" label="Secret Key">
<n-input
v-model:value="model.data.sk"
type="text"
@keydown.enter.prevent
placeholder="输入 Porkbun Secret Key"
/>
</n-form-item>
<n-form-item v-if="model.type == 'namecheap'" path="sk" label="API Username">
<n-input
v-model:value="model.data.sk"
type="text"
@keydown.enter.prevent
placeholder="输入 Namecheap API Username"
/>
</n-form-item>
<n-form-item v-if="model.type == 'namecheap'" path="ak" label="API Key">
<n-input
v-model:value="model.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 Namecheap API Key"
/>
</n-form-item>
<n-form-item v-if="model.type == 'namesilo'" path="ak" label="API Token">
<n-input
v-model:value="model.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 NameSilo API Token"
/>
</n-form-item>
<n-form-item v-if="model.type == 'namecom'" path="sk" label="Username">
<n-input
v-model:value="model.data.sk"
type="text"
@keydown.enter.prevent
placeholder="输入 Name.com Username"
/>
</n-form-item>
<n-form-item v-if="model.type == 'namecom'" path="ak" label="Token">
<n-input
v-model:value="model.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 Name.com Token"
/>
</n-form-item>
</n-form>
<n-button type="info" block @click="handleCreateDNS">提交</n-button>
</n-space>

View File

@@ -46,17 +46,11 @@ const columns: any = [
},
{
default: () => {
switch (row.type) {
case 'aliyun':
return '阿里云'
case 'tencent':
return '腾讯云'
case 'huawei':
return '华为云'
case 'cloudflare':
return 'Cloudflare'
default:
return '未知'
const provider = dnsProviders.value.find((provider: any) => provider.value === row.type)
if (provider) {
return provider.label
} else {
return '未知'
}
}
}
@@ -206,7 +200,6 @@ onUnmounted(() => {
:options="dnsProviders"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'aliyun'" path="ak" label="Access Key">
<n-input
v-model:value="updateDNSModel.data.ak"
@@ -239,7 +232,6 @@ onUnmounted(() => {
placeholder="输入腾讯云 SecretKey"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'huawei'" path="ak" label="AccessKeyId">
<n-input
v-model:value="updateDNSModel.data.ak"
@@ -264,6 +256,78 @@ onUnmounted(() => {
placeholder="输入 Cloudflare API Key"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'godaddy'" path="ak" label="Token">
<n-input
v-model:value="updateDNSModel.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 GoDaddy Token"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'gcore'" path="ak" label="API Key">
<n-input
v-model:value="updateDNSModel.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 G-Core API Key"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'porkbun'" path="ak" label="API Key">
<n-input
v-model:value="updateDNSModel.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 Porkbun API Key"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'porkbun'" path="sk" label="Secret Key">
<n-input
v-model:value="updateDNSModel.data.sk"
type="text"
@keydown.enter.prevent
placeholder="输入 Porkbun Secret Key"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'namecheap'" path="sk" label="API Username">
<n-input
v-model:value="updateDNSModel.data.sk"
type="text"
@keydown.enter.prevent
placeholder="输入 Namecheap API Username"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'namecheap'" path="ak" label="API Key">
<n-input
v-model:value="updateDNSModel.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 Namecheap API Key"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'namesilo'" path="ak" label="API Token">
<n-input
v-model:value="updateDNSModel.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 NameSilo API Token"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'namecom'" path="sk" label="Username">
<n-input
v-model:value="updateDNSModel.data.sk"
type="text"
@keydown.enter.prevent
placeholder="输入 Name.com Username"
/>
</n-form-item>
<n-form-item v-if="updateDNSModel.type == 'namecom'" path="ak" label="Token">
<n-input
v-model:value="updateDNSModel.data.ak"
type="text"
@keydown.enter.prevent
placeholder="输入 Name.com Token"
/>
</n-form-item>
</n-form>
<n-button type="info" block @click="handleUpdateDNS">提交</n-button>
</n-space>

View File

@@ -34,49 +34,64 @@ const handleSubmit = () => {
messageReactive?.destroy()
})
} else if (model.value.type == 'manual') {
const { data } = useRequest(cert.manualDNS(id.value))
messageReactive.destroy()
window.$message.info('请先前往域名处设置 DNS 解析,再继续签发')
const d = window.$dialog.info({
style: 'width: 60vw',
title: '待设置DNS 记录列表',
content: () => {
return h(NTable, [
h('thead', [
h('tr', [h('th', '域名'), h('th', '类型'), h('th', '主机记录'), h('th', '记录值')])
]),
h(
'tbody',
data.map((item: any) =>
h('tr', [
h('td', item?.domain),
h('td', 'TXT'),
h('td', item?.name),
h('td', item?.value)
])
useRequest(cert.manualDNS(id.value))
.onSuccess(({ data }: { data: any }) => {
window.$message.info('请先前往域名处设置 DNS 解析,再继续签发')
const d = window.$dialog.info({
style: 'width: 60vw',
title: '待设置DNS 记录列表',
content: () => {
return h(
NTable,
{},
{
default: () => [
h('thead', [
h('tr', [
h('th', '域名'),
h('th', '类型'),
h('th', '主机记录'),
h('th', '记录值')
])
]),
h(
'tbody',
data.map((item) =>
h('tr', [
h('td', item?.domain),
h('td', 'TXT'),
h('td', item?.name),
h('td', item?.value)
])
)
)
]
}
)
)
])
},
positiveText: '签发',
onPositiveClick: async () => {
d.loading = true
messageReactive = window.$message.loading('请稍后...', {
duration: 0
},
positiveText: '签发',
onPositiveClick: async () => {
d.loading = true
messageReactive = window.$message.loading('请稍后...', {
duration: 0
})
useRequest(cert.obtainManual(id.value))
.onSuccess(() => {
window.$bus.emit('cert:refresh-cert')
window.$bus.emit('cert:refresh-async')
show.value = false
window.$message.success('签发成功')
})
.onComplete(() => {
d.loading = false
messageReactive?.destroy()
})
}
})
useRequest(cert.obtainManual(id.value))
.onSuccess(() => {
window.$bus.emit('cert:refresh-cert')
window.$bus.emit('cert:refresh-async')
show.value = false
window.$message.success('签发成功')
})
.onComplete(() => {
d.loading = false
messageReactive?.destroy()
})
}
})
})
.onComplete(() => {
messageReactive?.destroy()
})
} else {
useRequest(cert.obtainSelfSigned(id.value))
.onSuccess(() => {