diff --git a/agent/utils/ssl/dns_provider.go b/agent/utils/ssl/dns_provider.go index 11fd5909bd6e..08b9d253dc75 100644 --- a/agent/utils/ssl/dns_provider.go +++ b/agent/utils/ssl/dns_provider.go @@ -20,6 +20,8 @@ import ( "github.com/go-acme/lego/v5/providers/dns/freemyip" "github.com/go-acme/lego/v5/providers/dns/godaddy" "github.com/go-acme/lego/v5/providers/dns/huaweicloud" + "github.com/go-acme/lego/v5/providers/dns/ionos" + "github.com/go-acme/lego/v5/providers/dns/ionoscloud" "github.com/go-acme/lego/v5/providers/dns/namecheap" "github.com/go-acme/lego/v5/providers/dns/namedotcom" "github.com/go-acme/lego/v5/providers/dns/namesilo" @@ -37,34 +39,35 @@ import ( ) type DnsType string - const ( + AcmeDNS DnsType = "AcmeDNS" AliYun DnsType = "AliYun" AliESA DnsType = "AliESA" - AWSRoute53 DnsType = "AWSRoute53" - CloudFlare DnsType = "CloudFlare" + BaiduCloud DnsType = "BaiduCloud" CloudDns DnsType = "CloudDns" - NameSilo DnsType = "NameSilo" - NameCheap DnsType = "NameCheap" - NameCom DnsType = "NameCom" - Godaddy DnsType = "Godaddy" - TencentCloud DnsType = "TencentCloud" - RainYun DnsType = "RainYun" - Volcengine DnsType = "Volcengine" - HuaweiCloud DnsType = "HuaweiCloud" - FreeMyIP DnsType = "FreeMyIP" - Vercel DnsType = "Vercel" - Spaceship DnsType = "Spaceship" - WestCN DnsType = "WestCN" + CloudFlare DnsType = "CloudFlare" ClouDNS DnsType = "ClouDNS" - RegRu DnsType = "RegRu" - Dynu DnsType = "Dynu" Dynadot DnsType = "Dynadot" - BaiduCloud DnsType = "BaiduCloud" + Dynu DnsType = "Dynu" + FreeMyIP DnsType = "FreeMyIP" + Godaddy DnsType = "Godaddy" + HuaweiCloud DnsType = "HuaweiCloud" + Ionos DnsType = "Ionos" + IonosCloud DnsType = "IonosCloud" + NameCheap DnsType = "NameCheap" + NameCom DnsType = "NameCom" + NameSilo DnsType = "NameSilo" Ovh DnsType = "Ovh" - AcmeDNS DnsType = "AcmeDNS" PorkBun DnsType = "PorkBun" + RainYun DnsType = "RainYun" + RegRu DnsType = "RegRu" + AWSRoute53 DnsType = "AWSRoute53" + Spaceship DnsType = "Spaceship" Technitium DnsType = "Technitium" + TencentCloud DnsType = "TencentCloud" + Vercel DnsType = "Vercel" + Volcengine DnsType = "Volcengine" + WestCN DnsType = "WestCN" ) type DNSParam struct { @@ -76,6 +79,7 @@ type DNSParam struct { APIkey string `json:"apiKey"` APIUser string `json:"apiUser"` APISecret string `json:"apiSecret"` + APIPrefix string `json:"apiPrefix"` SecretID string `json:"secretID"` ClientID string `json:"clientID"` Password string `json:"password"` @@ -219,6 +223,20 @@ func getDNSProviderConfig(dnsType DnsType, params string, httpClient *http.Clien config.PollingInterval = pollingInterval config.TTL = int32(ttl) p, err = huaweicloud.NewDNSProviderConfig(config) + case Ionos: + config := newDNSProviderConfig(ionos.NewDefaultConfig(), httpClient) + config.APIKey = param.APIPrefix + "." + param.APISecret + config.PropagationTimeout = propagationTimeout + config.PollingInterval = pollingInterval + config.TTL = ttl + p, err = ionos.NewDNSProviderConfig(config) + case IonosCloud: + config := newDNSProviderConfig(ionoscloud.NewDefaultConfig(), httpClient) + config.APIToken = param.Token + config.PropagationTimeout = propagationTimeout + config.PollingInterval = pollingInterval + config.TTL = ttl + p, err = ionoscloud.NewDNSProviderConfig(config) case FreeMyIP: config := newDNSProviderConfig(freemyip.NewDefaultConfig(), httpClient) config.Token = param.Token diff --git a/frontend/src/global/mimetype.ts b/frontend/src/global/mimetype.ts index 32cb89e07c22..2e0612264c4b 100644 --- a/frontend/src/global/mimetype.ts +++ b/frontend/src/global/mimetype.ts @@ -285,6 +285,14 @@ export const DNSTypes = [ label: 'Technitium', value: 'Technitium', }, + { + label: 'Ionos', + value: 'Ionos', + }, + { + label: 'Ionos Cloud', + value: 'IonosCloud', + }, ]; export const Fields = [ 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 707dfe0c4eb4..bcd180aaa106 100644 --- a/frontend/src/views/website/ssl/dns-account/create/index.vue +++ b/frontend/src/views/website/ssl/dns-account/create/index.vue @@ -110,11 +110,19 @@ -
+
+
+ + + + + + +
@@ -232,6 +240,7 @@ const rules = ref({ apiUser: [Rules.requiredInput], secretID: [Rules.requiredInput], apiSecret: [Rules.requiredInput], + apiPrefix: [Rules.requiredInput], username: [Rules.requiredInput], password: [Rules.requiredInput], },