diff --git a/backend/app/dto/request/website_ssl.go b/backend/app/dto/request/website_ssl.go index bde9da7b5..1bb9ef682 100644 --- a/backend/app/dto/request/website_ssl.go +++ b/backend/app/dto/request/website_ssl.go @@ -32,7 +32,8 @@ type WebsiteSSLRenew struct { } type WebsiteSSLApply struct { - ID uint `json:"ID" validate:"required"` + ID uint `json:"ID" validate:"required"` + SkipDNSCheck bool `json:"SkipDNSCheck"` } type WebsiteAcmeAccountCreate struct { diff --git a/backend/app/service/website_ssl.go b/backend/app/service/website_ssl.go index 321537f40..596b802ed 100644 --- a/backend/app/service/website_ssl.go +++ b/backend/app/service/website_ssl.go @@ -191,7 +191,7 @@ func (w WebsiteSSLService) ObtainSSL(apply request.WebsiteSSLApply) error { if err != nil { return err } - if err = client.UseDns(ssl.DnsType(dnsAccount.Type), dnsAccount.Authorization); err != nil { + if err = client.UseDns(ssl.DnsType(dnsAccount.Type), dnsAccount.Authorization, apply.SkipDNSCheck); err != nil { return err } case constant.Http: diff --git a/backend/utils/ssl/client.go b/backend/utils/ssl/client.go index cfc57dd08..03d9e2559 100644 --- a/backend/utils/ssl/client.go +++ b/backend/utils/ssl/client.go @@ -80,7 +80,7 @@ type DNSParam struct { APISecret string `json:"apiSecret"` } -func (c *AcmeClient) UseDns(dnsType DnsType, params string) error { +func (c *AcmeClient) UseDns(dnsType DnsType, params string, skipDNSCheck bool) error { var ( param DNSParam p challenge.Provider @@ -150,6 +150,9 @@ func (c *AcmeClient) UseDns(dnsType DnsType, params string) error { if err != nil { return err } + if skipDNSCheck { + return c.Client.Challenge.SetDNS01Provider(p, dns01.AddDNSTimeout(10*time.Minute), dns01.DisableCompletePropagationRequirement()) + } return c.Client.Challenge.SetDNS01Provider(p, dns01.AddDNSTimeout(10*time.Minute)) } diff --git a/cmd/server/docs/docs.go b/cmd/server/docs/docs.go index f91397b51..18cb76519 100644 --- a/cmd/server/docs/docs.go +++ b/cmd/server/docs/docs.go @@ -1,5 +1,5 @@ -// Code generated by swaggo/swag. DO NOT EDIT. - +// Package docs GENERATED BY SWAG; DO NOT EDIT +// This file was generated by swaggo/swag package docs import "github.com/swaggo/swag" @@ -20489,6 +20489,9 @@ const docTemplate = `{ "properties": { "ID": { "type": "integer" + }, + "SkipDNSCheck": { + "type": "boolean" } } }, diff --git a/cmd/server/docs/swagger.json b/cmd/server/docs/swagger.json index 8a81a0314..5c99a96a4 100644 --- a/cmd/server/docs/swagger.json +++ b/cmd/server/docs/swagger.json @@ -20482,6 +20482,9 @@ "properties": { "ID": { "type": "integer" + }, + "SkipDNSCheck": { + "type": "boolean" } } }, diff --git a/cmd/server/docs/swagger.yaml b/cmd/server/docs/swagger.yaml index 0b27afab9..f92d7d041 100644 --- a/cmd/server/docs/swagger.yaml +++ b/cmd/server/docs/swagger.yaml @@ -4358,6 +4358,8 @@ definitions: properties: ID: type: integer + SkipDNSCheck: + type: boolean required: - ID type: object diff --git a/frontend/src/api/interface/website.ts b/frontend/src/api/interface/website.ts index 48f344f5b..904a5e6d5 100644 --- a/frontend/src/api/interface/website.ts +++ b/frontend/src/api/interface/website.ts @@ -203,6 +203,7 @@ export namespace Website { export interface AcmeAccount extends CommonModel { email: string; url: string; + type: string; } export interface AcmeAccountCreate { @@ -462,6 +463,7 @@ export namespace Website { export interface SSLObtain { ID: number; + skipDNSCheck: boolean; } export interface CA extends CommonModel { diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index e9e1081ae..ed5df8752 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -1926,6 +1926,8 @@ const message = { "如何取得EAB HmacKey 和EAB kid ", googleCloudHelper: 'Google Cloud API is not accessible in most parts of mainland China', httpHelper2: 'Unable to apply for a generic domain name certificate in HTTP mode', + skipDNSCheck: 'Skip DNS check', + skipDNSCheckHelper: 'If there is an application timeout problem, please check here, otherwise do not check it', }, firewall: { create: 'Create rule', diff --git a/frontend/src/lang/modules/tw.ts b/frontend/src/lang/modules/tw.ts index 997482e66..30ddd5742 100644 --- a/frontend/src/lang/modules/tw.ts +++ b/frontend/src/lang/modules/tw.ts @@ -1808,6 +1808,8 @@ const message = { "如何取得EAB HmacKey 和EAB kid ", googleCloudHelper: 'Google Cloud API 大陸大部分地區無法存取', httpHelper2: 'HTTP 模式無法申請泛網域憑證', + skipDNSCheck: '跳過 DNS 校驗', + skipDNSCheckHelper: '如果出現申請超時問題,請勾選此處,其他情況請勿勾選', }, firewall: { create: '創建規則', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index 5c86c5e8a..5d942a3dd 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -1808,6 +1808,8 @@ const message = { "如何获取 EAB HmacKey 和 EAB kid ", googleCloudHelper: 'Google Cloud API 大陆大部分地区无法访问', httpHelper2: 'HTTP 模式无法申请泛域名证书', + skipDNSCheck: '跳过 DNS 校验', + skipDNSCheckHelper: '如果出现申请超时问题,请勾选此处,其他情况请勿勾选', }, firewall: { create: '创建规则', diff --git a/frontend/src/views/website/ssl/apply/index.vue b/frontend/src/views/website/ssl/apply/index.vue index 9ef492c37..941fcfebd 100644 --- a/frontend/src/views/website/ssl/apply/index.vue +++ b/frontend/src/views/website/ssl/apply/index.vue @@ -31,6 +31,11 @@ +