From c4b7dd70cb99f9b1bcde92546d294a960e21e6d6 Mon Sep 17 00:00:00 2001 From: zhengkunwang <31820853+zhengkunwang223@users.noreply.github.com> Date: Tue, 9 Jan 2024 15:55:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=A3=E5=86=B3=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=83=85=E5=86=B5=E4=B8=8B=E7=94=B3=E8=AF=B7=E8=AF=81=E4=B9=A6?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E7=9A=84=E9=97=AE=E9=A2=98=20(#3540)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs https://github.com/1Panel-dev/1Panel/issues/3431 --- backend/app/dto/request/website_ssl.go | 3 ++- backend/app/service/website_ssl.go | 2 +- backend/utils/ssl/client.go | 5 ++++- cmd/server/docs/docs.go | 7 +++++-- cmd/server/docs/swagger.json | 3 +++ cmd/server/docs/swagger.yaml | 2 ++ frontend/src/api/interface/website.ts | 2 ++ frontend/src/lang/modules/en.ts | 2 ++ frontend/src/lang/modules/tw.ts | 2 ++ frontend/src/lang/modules/zh.ts | 2 ++ .../src/views/website/ssl/apply/index.vue | 9 ++++++++- .../src/views/website/ssl/create/index.vue | 20 +++++++++++++++---- .../src/views/website/ssl/obtain/index.vue | 8 +++++++- 13 files changed, 56 insertions(+), 11 deletions(-) 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 @@ +