feat: add acme-dns provider for ssl dns (#10464)

Refs https://github.com/1Panel-dev/1Panel/issues/10048
This commit is contained in:
CityFun
2025-09-24 17:34:07 +08:00
committed by GitHub
parent 61ddf89fdd
commit a38d1c96d8
5 changed files with 23 additions and 0 deletions

View File

@@ -177,6 +177,7 @@ require (
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/nrdcg/dnspod-go v0.4.0 // indirect
github.com/nrdcg/freemyip v0.3.0 // indirect
github.com/nrdcg/goacmedns v0.2.0 // indirect
github.com/nrdcg/mailinabox v0.2.0 // indirect
github.com/nrdcg/namesilo v0.2.1 // indirect
github.com/nwaples/rardecode/v2 v2.0.0-beta.2 // indirect

View File

@@ -714,6 +714,8 @@ github.com/nrdcg/dnspod-go v0.4.0 h1:c/jn1mLZNKF3/osJ6mz3QPxTudvPArXTjpkmYj0uK6U
github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ=
github.com/nrdcg/freemyip v0.3.0 h1:0D2rXgvLwe2RRaVIjyUcQ4S26+cIS2iFwnhzDsEuuwc=
github.com/nrdcg/freemyip v0.3.0/go.mod h1:c1PscDvA0ukBF0dwelU/IwOakNKnVxetpAQ863RMJoM=
github.com/nrdcg/goacmedns v0.2.0 h1:ADMbThobzEMnr6kg2ohs4KGa3LFqmgiBA22/6jUWJR0=
github.com/nrdcg/goacmedns v0.2.0/go.mod h1:T5o6+xvSLrQpugmwHvrSNkzWht0UGAwj2ACBMhh73Cg=
github.com/nrdcg/mailinabox v0.2.0 h1:IKq8mfKiVwNW2hQii/ng1dJ4yYMMv3HAP3fMFIq2CFk=
github.com/nrdcg/mailinabox v0.2.0/go.mod h1:0yxqeYOiGyxAu7Sb94eMxHPIOsPYXAjTeA9ZhePhGnc=
github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg=

View File

@@ -3,6 +3,7 @@ package ssl
import (
"encoding/json"
"github.com/go-acme/lego/v4/challenge"
"github.com/go-acme/lego/v4/providers/dns/acmedns"
"github.com/go-acme/lego/v4/providers/dns/alidns"
"github.com/go-acme/lego/v4/providers/dns/baiducloud"
"github.com/go-acme/lego/v4/providers/dns/clouddns"
@@ -51,6 +52,7 @@ const (
Dynu DnsType = "Dynu"
BaiduCloud DnsType = "BaiduCloud"
Ovh DnsType = "Ovh"
AcmeDNS DnsType = "AcmeDNS"
)
type DNSParam struct {
@@ -72,6 +74,7 @@ type DNSParam struct {
AuthPassword string `json:"authPassword"`
Endpoint string `json:"endpoint"`
AccessToken string `json:"accessToken"`
BaseURL string `json:"baseURL"`
}
var (
@@ -258,6 +261,11 @@ func getDNSProviderConfig(dnsType DnsType, params string) (challenge.Provider, e
config.PollingInterval = pollingInterval
config.TTL = ttl
p, err = ovh.NewDNSProviderConfig(config)
case AcmeDNS:
config := acmedns.NewDefaultConfig()
config.APIBase = param.Endpoint
config.StorageBaseURL = param.BaseURL
p, err = acmedns.NewDNSProviderConfig(config)
}
if err != nil {

View File

@@ -248,6 +248,10 @@ export const DNSTypes = [
label: 'OVH',
value: 'Ovh',
},
{
label: 'Acme DNS',
value: 'AcmeDNS',
},
{
label: i18n.global.t('website.volcengine'),
value: 'Volcengine',

View File

@@ -148,6 +148,14 @@
<el-input v-model.trim="account.authorization['accessToken']"></el-input>
</el-form-item>
</div>
<div v-if="account.type === 'AcmeDNS'">
<el-form-item label="API BASE" prop="authorization.endpoint" :rules="[Rules.requiredInput]">
<el-input v-model.trim="account.authorization['endpoint']"></el-input>
</el-form-item>
<el-form-item label="BASE URL" prop="authorization.baseURL" :rules="[Rules.requiredInput]">
<el-input v-model.trim="account.authorization['baseURL']"></el-input>
</el-form-item>
</div>
</el-form>
</el-col>
</el-row>