Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 37 additions & 19 deletions agent/utils/ssl/dns_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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 {
Expand All @@ -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"`
Expand Down Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions frontend/src/global/mimetype.ts
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,14 @@ export const DNSTypes = [
label: 'Technitium',
value: 'Technitium',
},
{
label: 'Ionos',
value: 'Ionos',
},
{
label: 'Ionos Cloud',
value: 'IonosCloud',
},
];

export const Fields = [
Expand Down
11 changes: 10 additions & 1 deletion frontend/src/views/website/ssl/dns-account/create/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -110,11 +110,19 @@
<el-input v-model.trim="account.authorization['token']"></el-input>
</el-form-item>
</div>
<div v-if="account.type === 'FreeMyIP' || account.type === 'Vercel'">
<div v-if="account.type === 'FreeMyIP' || account.type === 'Vercel' || account.type === 'IonosCloud'">
<el-form-item label="Token" prop="authorization.token">
<el-input v-model.trim="account.authorization['token']"></el-input>
</el-form-item>
</div>
<div v-if="account.type === 'Ionos'">
<el-form-item label="API Prefix" prop="authorization.apiPrefix">
<el-input v-model.trim="account.authorization['apiPrefix']"></el-input>
</el-form-item>
<el-form-item label="API Secret" prop="authorization.apiSecret">
<el-input v-model.trim="account.authorization['apiSecret']"></el-input>
</el-form-item>
</div>
<div v-if="account.type === 'ClouDNS'">
<el-form-item label="Auth ID" prop="authorization.authID">
<el-input v-model.trim="account.authorization['authID']"></el-input>
Expand Down Expand Up @@ -232,6 +240,7 @@ const rules = ref<any>({
apiUser: [Rules.requiredInput],
secretID: [Rules.requiredInput],
apiSecret: [Rules.requiredInput],
apiPrefix: [Rules.requiredInput],
username: [Rules.requiredInput],
password: [Rules.requiredInput],
},
Expand Down