diff --git a/agent/go.mod b/agent/go.mod
index b79cac82a35a..785795341a87 100644
--- a/agent/go.mod
+++ b/agent/go.mod
@@ -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
diff --git a/agent/go.sum b/agent/go.sum
index f5995e01da64..493464ccd561 100644
--- a/agent/go.sum
+++ b/agent/go.sum
@@ -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=
diff --git a/agent/utils/ssl/dns_provider.go b/agent/utils/ssl/dns_provider.go
index b1d03bcc7a53..3fd092cdb676 100644
--- a/agent/utils/ssl/dns_provider.go
+++ b/agent/utils/ssl/dns_provider.go
@@ -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 {
diff --git a/frontend/src/global/mimetype.ts b/frontend/src/global/mimetype.ts
index 5d557702af07..7d5ff9f648f5 100644
--- a/frontend/src/global/mimetype.ts
+++ b/frontend/src/global/mimetype.ts
@@ -248,6 +248,10 @@ export const DNSTypes = [
label: 'OVH',
value: 'Ovh',
},
+ {
+ label: 'Acme DNS',
+ value: 'AcmeDNS',
+ },
{
label: i18n.global.t('website.volcengine'),
value: 'Volcengine',
diff --git a/frontend/src/views/website/ssl/dns-account/create/index.vue b/frontend/src/views/website/ssl/dns-account/create/index.vue
index 459f40111f32..447f8560fe52 100644
--- a/frontend/src/views/website/ssl/dns-account/create/index.vue
+++ b/frontend/src/views/website/ssl/dns-account/create/index.vue
@@ -148,6 +148,14 @@