From 5b8fae10df9a97407e4a8d9236171b6338f166ff Mon Sep 17 00:00:00 2001 From: 0xJacky Date: Wed, 12 Apr 2023 21:28:42 +0800 Subject: [PATCH] wip: added DNS challenge provider --- app.example.ini | 7 + frontend/src/api/auto_cert.ts | 13 + frontend/src/views/domain/cert/Cert.vue | 1 + frontend/src/views/domain/cert/IssueCert.vue | 241 +---- .../cert/components/AutoCertStepOne.vue | 68 ++ .../domain/cert/components/DNSChallenge.vue | 70 ++ .../domain/cert/components/ObtainCert.vue | 246 ++++++ .../ngx_conf/directive/DirectiveEditor.vue | 1 - .../src/views/preference/BasicSettings.vue | 50 ++ frontend/src/views/preference/GitSettings.vue | 24 + .../src/views/preference/NginxLogSettings.vue | 24 + .../src/views/preference/OpenAISettings.vue | 41 + frontend/src/views/preference/Preference.vue | 111 +-- frontend/src/views/preference/typedef.ts | 28 + go.mod | 101 ++- go.sum | 829 +++++++++++++++++- lego-config.sh | 43 + .../nginx/sites-available/homework.jackyu.cn | 14 +- .../nginx/sites-available/qi.jackyu.cn | 8 +- .../nginx/ssl/qi.jackyu.cn/fullchain.cer | 147 ++-- .../nginx/ssl/qi.jackyu.cn/private.key | 50 +- .../fullchain.cer | 44 +- .../private.key | 50 +- server/api/cert.go | 540 ++++++------ server/api/settings.go | 63 +- server/pkg/cert/auto_cert.go | 168 ++-- server/pkg/cert/cert.go | 65 +- server/pkg/cert/config/acmedns.toml | 20 + server/pkg/cert/config/alidns.toml | 33 + server/pkg/cert/config/allinkl.toml | 24 + server/pkg/cert/config/arvancloud.toml | 22 + server/pkg/cert/config/auroradns.toml | 25 + server/pkg/cert/config/autodns.toml | 26 + server/pkg/cert/config/azure.toml | 28 + server/pkg/cert/config/bindman.toml | 22 + server/pkg/cert/config/bluecat.toml | 31 + server/pkg/cert/config/bunny.toml | 22 + server/pkg/cert/config/checkdomain.toml | 25 + server/pkg/cert/config/civo.toml | 21 + server/pkg/cert/config/clouddns.toml | 28 + server/pkg/cert/config/cloudflare.toml | 78 ++ server/pkg/cert/config/cloudns.toml | 25 + server/pkg/cert/config/cloudxns.toml | 24 + server/pkg/cert/config/config.go | 6 + server/pkg/cert/config/conoha.toml | 27 + server/pkg/cert/config/constellix.toml | 24 + server/pkg/cert/config/desec.toml | 22 + server/pkg/cert/config/designate.toml | 68 ++ server/pkg/cert/config/digitalocean.toml | 23 + server/pkg/cert/config/dnshomede.toml | 22 + server/pkg/cert/config/dnsimple.toml | 41 + server/pkg/cert/config/dnsmadeeasy.toml | 25 + server/pkg/cert/config/dnspod.toml | 25 + server/pkg/cert/config/dode.toml | 23 + server/pkg/cert/config/domeneshop.toml | 31 + server/pkg/cert/config/dreamhost.toml | 22 + server/pkg/cert/config/duckdns.toml | 23 + server/pkg/cert/config/dyn.toml | 26 + server/pkg/cert/config/dynu.toml | 22 + server/pkg/cert/config/easydns.toml | 30 + server/pkg/cert/config/edgedns.toml | 63 ++ server/pkg/cert/config/epik.toml | 22 + server/pkg/cert/config/exec.toml | 112 +++ server/pkg/cert/config/exoscale.toml | 27 + server/pkg/cert/config/freemyip.toml | 23 + server/pkg/cert/config/gandi.toml | 22 + server/pkg/cert/config/gandiv5.toml | 22 + server/pkg/cert/config/gcloud.toml | 30 + server/pkg/cert/config/gcore.toml | 22 + server/pkg/cert/config/glesys.toml | 24 + server/pkg/cert/config/godaddy.toml | 24 + server/pkg/cert/config/googledomains.toml | 22 + server/pkg/cert/config/hetzner.toml | 22 + server/pkg/cert/config/hostingde.toml | 25 + server/pkg/cert/config/hosttech.toml | 23 + server/pkg/cert/config/httpreq.toml | 61 ++ server/pkg/cert/config/hurricane.toml | 48 + server/pkg/cert/config/hyperone.toml | 49 ++ server/pkg/cert/config/ibmcloud.toml | 25 + server/pkg/cert/config/iij.toml | 26 + server/pkg/cert/config/iijdpf.toml | 25 + server/pkg/cert/config/infoblox.toml | 36 + server/pkg/cert/config/infomaniak.toml | 30 + server/pkg/cert/config/internetbs.toml | 24 + server/pkg/cert/config/inwx.toml | 32 + server/pkg/cert/config/ionos.toml | 22 + server/pkg/cert/config/iwantmyname.toml | 24 + server/pkg/cert/config/joker.toml | 59 ++ server/pkg/cert/config/liara.toml | 22 + server/pkg/cert/config/lightsail.toml | 59 ++ server/pkg/cert/config/linode.toml | 23 + server/pkg/cert/config/liquidweb.toml | 28 + server/pkg/cert/config/loopia.toml | 38 + server/pkg/cert/config/luadns.toml | 24 + server/pkg/cert/config/mydnsjp.toml | 24 + server/pkg/cert/config/mythicbeasts.toml | 33 + server/pkg/cert/config/namecheap.toml | 32 + server/pkg/cert/config/namedotcom.toml | 26 + server/pkg/cert/config/namesilo.toml | 22 + server/pkg/cert/config/nearlyfreespeech.toml | 25 + server/pkg/cert/config/netcup.toml | 26 + server/pkg/cert/config/netlify.toml | 22 + server/pkg/cert/config/nicmanager.toml | 52 ++ server/pkg/cert/config/nifcloud.toml | 24 + server/pkg/cert/config/njalla.toml | 22 + server/pkg/cert/config/nodion.toml | 22 + server/pkg/cert/config/ns1.toml | 23 + server/pkg/cert/config/oraclecloud.toml | 35 + server/pkg/cert/config/otc.toml | 24 + server/pkg/cert/config/ovh.toml | 52 ++ server/pkg/cert/config/pdns.toml | 35 + server/pkg/cert/config/plesk.toml | 26 + server/pkg/cert/config/porkbun.toml | 24 + server/pkg/cert/config/rackspace.toml | 24 + server/pkg/cert/config/regru.toml | 24 + server/pkg/cert/config/rfc2136.toml | 39 + server/pkg/cert/config/rimuhosting.toml | 22 + server/pkg/cert/config/route53.toml | 142 +++ server/pkg/cert/config/safedns.toml | 22 + server/pkg/cert/config/sakuracloud.toml | 25 + server/pkg/cert/config/scaleway.toml | 22 + server/pkg/cert/config/selectel.toml | 23 + server/pkg/cert/config/servercow.toml | 24 + server/pkg/cert/config/simply.toml | 24 + server/pkg/cert/config/sonic.toml | 45 + server/pkg/cert/config/stackpath.toml | 25 + server/pkg/cert/config/tencentcloud.toml | 27 + server/pkg/cert/config/transip.toml | 25 + server/pkg/cert/config/ultradns.toml | 25 + server/pkg/cert/config/variomedia.toml | 24 + server/pkg/cert/config/vegadns.toml | 22 + server/pkg/cert/config/vercel.toml | 23 + server/pkg/cert/config/versio.toml | 30 + server/pkg/cert/config/vinyldns.toml | 31 + server/pkg/cert/config/vkcloud.toml | 41 + server/pkg/cert/config/vscale.toml | 23 + server/pkg/cert/config/vultr.toml | 23 + server/pkg/cert/config/websupport.toml | 25 + server/pkg/cert/config/wedos.toml | 24 + server/pkg/cert/config/yandex.toml | 23 + server/pkg/cert/config/yandexcloud.toml | 48 + server/pkg/cert/config/zoneee.toml | 25 + server/pkg/cert/config/zonomi.toml | 22 + server/pkg/cert/dns/config_env.go | 103 +++ server/pkg/cert/dns/config_env_test.go | 43 + server/pkg/cert/dns/tencent_cloud_dns_test.go | 121 +++ server/router/routers.go | 4 +- server/service/template.go | 300 ++++--- server/settings/settings.go | 11 + 149 files changed, 6164 insertions(+), 988 deletions(-) create mode 100644 frontend/src/api/auto_cert.ts create mode 100644 frontend/src/views/domain/cert/components/AutoCertStepOne.vue create mode 100644 frontend/src/views/domain/cert/components/DNSChallenge.vue create mode 100644 frontend/src/views/domain/cert/components/ObtainCert.vue create mode 100644 frontend/src/views/preference/BasicSettings.vue create mode 100644 frontend/src/views/preference/GitSettings.vue create mode 100644 frontend/src/views/preference/NginxLogSettings.vue create mode 100644 frontend/src/views/preference/OpenAISettings.vue create mode 100644 frontend/src/views/preference/typedef.ts create mode 100644 lego-config.sh create mode 100644 server/pkg/cert/config/acmedns.toml create mode 100644 server/pkg/cert/config/alidns.toml create mode 100644 server/pkg/cert/config/allinkl.toml create mode 100644 server/pkg/cert/config/arvancloud.toml create mode 100644 server/pkg/cert/config/auroradns.toml create mode 100644 server/pkg/cert/config/autodns.toml create mode 100644 server/pkg/cert/config/azure.toml create mode 100644 server/pkg/cert/config/bindman.toml create mode 100644 server/pkg/cert/config/bluecat.toml create mode 100644 server/pkg/cert/config/bunny.toml create mode 100644 server/pkg/cert/config/checkdomain.toml create mode 100644 server/pkg/cert/config/civo.toml create mode 100644 server/pkg/cert/config/clouddns.toml create mode 100644 server/pkg/cert/config/cloudflare.toml create mode 100644 server/pkg/cert/config/cloudns.toml create mode 100644 server/pkg/cert/config/cloudxns.toml create mode 100644 server/pkg/cert/config/config.go create mode 100644 server/pkg/cert/config/conoha.toml create mode 100644 server/pkg/cert/config/constellix.toml create mode 100644 server/pkg/cert/config/desec.toml create mode 100644 server/pkg/cert/config/designate.toml create mode 100644 server/pkg/cert/config/digitalocean.toml create mode 100644 server/pkg/cert/config/dnshomede.toml create mode 100644 server/pkg/cert/config/dnsimple.toml create mode 100644 server/pkg/cert/config/dnsmadeeasy.toml create mode 100644 server/pkg/cert/config/dnspod.toml create mode 100644 server/pkg/cert/config/dode.toml create mode 100644 server/pkg/cert/config/domeneshop.toml create mode 100644 server/pkg/cert/config/dreamhost.toml create mode 100644 server/pkg/cert/config/duckdns.toml create mode 100644 server/pkg/cert/config/dyn.toml create mode 100644 server/pkg/cert/config/dynu.toml create mode 100644 server/pkg/cert/config/easydns.toml create mode 100644 server/pkg/cert/config/edgedns.toml create mode 100644 server/pkg/cert/config/epik.toml create mode 100644 server/pkg/cert/config/exec.toml create mode 100644 server/pkg/cert/config/exoscale.toml create mode 100644 server/pkg/cert/config/freemyip.toml create mode 100644 server/pkg/cert/config/gandi.toml create mode 100644 server/pkg/cert/config/gandiv5.toml create mode 100644 server/pkg/cert/config/gcloud.toml create mode 100644 server/pkg/cert/config/gcore.toml create mode 100644 server/pkg/cert/config/glesys.toml create mode 100644 server/pkg/cert/config/godaddy.toml create mode 100644 server/pkg/cert/config/googledomains.toml create mode 100644 server/pkg/cert/config/hetzner.toml create mode 100644 server/pkg/cert/config/hostingde.toml create mode 100644 server/pkg/cert/config/hosttech.toml create mode 100644 server/pkg/cert/config/httpreq.toml create mode 100644 server/pkg/cert/config/hurricane.toml create mode 100644 server/pkg/cert/config/hyperone.toml create mode 100644 server/pkg/cert/config/ibmcloud.toml create mode 100644 server/pkg/cert/config/iij.toml create mode 100644 server/pkg/cert/config/iijdpf.toml create mode 100644 server/pkg/cert/config/infoblox.toml create mode 100644 server/pkg/cert/config/infomaniak.toml create mode 100644 server/pkg/cert/config/internetbs.toml create mode 100644 server/pkg/cert/config/inwx.toml create mode 100644 server/pkg/cert/config/ionos.toml create mode 100644 server/pkg/cert/config/iwantmyname.toml create mode 100644 server/pkg/cert/config/joker.toml create mode 100644 server/pkg/cert/config/liara.toml create mode 100644 server/pkg/cert/config/lightsail.toml create mode 100644 server/pkg/cert/config/linode.toml create mode 100644 server/pkg/cert/config/liquidweb.toml create mode 100644 server/pkg/cert/config/loopia.toml create mode 100644 server/pkg/cert/config/luadns.toml create mode 100644 server/pkg/cert/config/mydnsjp.toml create mode 100644 server/pkg/cert/config/mythicbeasts.toml create mode 100644 server/pkg/cert/config/namecheap.toml create mode 100644 server/pkg/cert/config/namedotcom.toml create mode 100644 server/pkg/cert/config/namesilo.toml create mode 100644 server/pkg/cert/config/nearlyfreespeech.toml create mode 100644 server/pkg/cert/config/netcup.toml create mode 100644 server/pkg/cert/config/netlify.toml create mode 100644 server/pkg/cert/config/nicmanager.toml create mode 100644 server/pkg/cert/config/nifcloud.toml create mode 100644 server/pkg/cert/config/njalla.toml create mode 100644 server/pkg/cert/config/nodion.toml create mode 100644 server/pkg/cert/config/ns1.toml create mode 100644 server/pkg/cert/config/oraclecloud.toml create mode 100644 server/pkg/cert/config/otc.toml create mode 100644 server/pkg/cert/config/ovh.toml create mode 100644 server/pkg/cert/config/pdns.toml create mode 100644 server/pkg/cert/config/plesk.toml create mode 100644 server/pkg/cert/config/porkbun.toml create mode 100644 server/pkg/cert/config/rackspace.toml create mode 100644 server/pkg/cert/config/regru.toml create mode 100644 server/pkg/cert/config/rfc2136.toml create mode 100644 server/pkg/cert/config/rimuhosting.toml create mode 100644 server/pkg/cert/config/route53.toml create mode 100644 server/pkg/cert/config/safedns.toml create mode 100644 server/pkg/cert/config/sakuracloud.toml create mode 100644 server/pkg/cert/config/scaleway.toml create mode 100644 server/pkg/cert/config/selectel.toml create mode 100644 server/pkg/cert/config/servercow.toml create mode 100644 server/pkg/cert/config/simply.toml create mode 100644 server/pkg/cert/config/sonic.toml create mode 100644 server/pkg/cert/config/stackpath.toml create mode 100644 server/pkg/cert/config/tencentcloud.toml create mode 100644 server/pkg/cert/config/transip.toml create mode 100644 server/pkg/cert/config/ultradns.toml create mode 100644 server/pkg/cert/config/variomedia.toml create mode 100644 server/pkg/cert/config/vegadns.toml create mode 100644 server/pkg/cert/config/vercel.toml create mode 100644 server/pkg/cert/config/versio.toml create mode 100644 server/pkg/cert/config/vinyldns.toml create mode 100644 server/pkg/cert/config/vkcloud.toml create mode 100644 server/pkg/cert/config/vscale.toml create mode 100644 server/pkg/cert/config/vultr.toml create mode 100644 server/pkg/cert/config/websupport.toml create mode 100644 server/pkg/cert/config/wedos.toml create mode 100644 server/pkg/cert/config/yandex.toml create mode 100644 server/pkg/cert/config/yandexcloud.toml create mode 100644 server/pkg/cert/config/zoneee.toml create mode 100644 server/pkg/cert/config/zonomi.toml create mode 100644 server/pkg/cert/dns/config_env.go create mode 100644 server/pkg/cert/dns/config_env_test.go create mode 100644 server/pkg/cert/dns/tencent_cloud_dns_test.go diff --git a/app.example.ini b/app.example.ini index f78f3399..c3030de3 100644 --- a/app.example.ini +++ b/app.example.ini @@ -20,3 +20,10 @@ Model = BaseUrl = Proxy = Token = + +[git] +Url = +AuthMethod = +Username = +Password = +PrivateKeyFile = diff --git a/frontend/src/api/auto_cert.ts b/frontend/src/api/auto_cert.ts new file mode 100644 index 00000000..46c6910f --- /dev/null +++ b/frontend/src/api/auto_cert.ts @@ -0,0 +1,13 @@ +import http from '@/lib/http' + +const auto_cert = { + get_dns_providers() { + return http.get('/auto_cert/dns/providers') + }, + + get_dns_provider(code: string) { + return http.get('/auto_cert/dns/provider/' + code) + } +} + +export default auto_cert diff --git a/frontend/src/views/domain/cert/Cert.vue b/frontend/src/views/domain/cert/Cert.vue index 0c62b2a9..e4b52698 100644 --- a/frontend/src/views/domain/cert/Cert.vue +++ b/frontend/src/views/domain/cert/Cert.vue @@ -4,6 +4,7 @@ import IssueCert from '@/views/domain/cert/IssueCert.vue' import {computed, ref} from 'vue' import {useGettext} from 'vue3-gettext' import ChangeCert from '@/views/domain/cert/ChangeCert.vue' +import DNSChallenge from '@/views/domain/cert/components/DNSChallenge.vue' const {$gettext} = useGettext() diff --git a/frontend/src/views/domain/cert/IssueCert.vue b/frontend/src/views/domain/cert/IssueCert.vue index 25524c61..796e1945 100644 --- a/frontend/src/views/domain/cert/IssueCert.vue +++ b/frontend/src/views/domain/cert/IssueCert.vue @@ -1,23 +1,19 @@ diff --git a/frontend/src/views/domain/cert/components/AutoCertStepOne.vue b/frontend/src/views/domain/cert/components/AutoCertStepOne.vue new file mode 100644 index 00000000..28122742 --- /dev/null +++ b/frontend/src/views/domain/cert/components/AutoCertStepOne.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/frontend/src/views/domain/cert/components/DNSChallenge.vue b/frontend/src/views/domain/cert/components/DNSChallenge.vue new file mode 100644 index 00000000..77932f72 --- /dev/null +++ b/frontend/src/views/domain/cert/components/DNSChallenge.vue @@ -0,0 +1,70 @@ + + + + + diff --git a/frontend/src/views/domain/cert/components/ObtainCert.vue b/frontend/src/views/domain/cert/components/ObtainCert.vue new file mode 100644 index 00000000..1e82506d --- /dev/null +++ b/frontend/src/views/domain/cert/components/ObtainCert.vue @@ -0,0 +1,246 @@ + + + + + diff --git a/frontend/src/views/domain/ngx_conf/directive/DirectiveEditor.vue b/frontend/src/views/domain/ngx_conf/directive/DirectiveEditor.vue index a6309418..5c901dd2 100644 --- a/frontend/src/views/domain/ngx_conf/directive/DirectiveEditor.vue +++ b/frontend/src/views/domain/ngx_conf/directive/DirectiveEditor.vue @@ -31,7 +31,6 @@ function onSave(idx: number) { class="list-group" ghost-class="ghost" handle=".anticon-holder" - v-auto-animate >