diff --git a/backend/internal/dnsproviders/common.go b/backend/internal/dnsproviders/common.go index d1fa7f3c..a740c99f 100644 --- a/backend/internal/dnsproviders/common.go +++ b/backend/internal/dnsproviders/common.go @@ -44,16 +44,19 @@ func List() []Provider { getDNSAzure(), getDNSCf(), getDNSCloudns(), + getDNSConoha(), getDNSCx(), getDNSCyon(), getDNSDgon(), getDNSDNSimple(), getDNSDa(), getDNSDp(), + getDNSDpi(), getDNSDreamhost(), getDNSDuckDNS(), getDNSDyn(), getDNSDynu(), + getDNSEuserv(), getDNSFreeDNS(), getDNSGandiLiveDNS(), getDNSGd(), @@ -70,6 +73,7 @@ func List() []Provider { getDNSNamesilo(), getDNSSelectel(), getDNSServercow(), + getDNSTele3(), getDNSOne(), getDNSPDNS(), getDNSUnoeuro(), diff --git a/backend/internal/dnsproviders/dns_conoha.go b/backend/internal/dnsproviders/dns_conoha.go new file mode 100644 index 00000000..d2e1b362 --- /dev/null +++ b/backend/internal/dnsproviders/dns_conoha.go @@ -0,0 +1,70 @@ +package dnsproviders + +const conohaSchema = ` +{ + "type": "object", + "required": [ + "subscription_id", + "tenant_id", + "app_id", + "client_secret" + ], + "additionalProperties": false, + "properties": { + "api_url": { + "type": "string", + "minLength": 4 + }, + "user": { + "type": "string", + "minLength": 1 + }, + "pass": { + "type": "string", + "minLength": 1 + }, + "tenant_id": { + "type": "string", + "minLength": 1 + } + } +} +` + +func getDNSConoha() Provider { + return Provider{ + AcmeshName: "dns_conoha", + Schema: conohaSchema, + Fields: []providerField{ + { + Name: "API URL", + Type: "text", + MetaKey: "api_url", + EnvKey: "CONOHA_IdentityServiceApi", + IsRequired: true, + }, + { + Name: "Username", + Type: "text", + MetaKey: "user", + EnvKey: "CONOHA_Username", + IsRequired: true, + }, + { + Name: "Password", + Type: "password", + MetaKey: "password", + EnvKey: "CONOHA_Password", + IsRequired: true, + IsSecret: true, + }, + { + Name: "Tenant ID", + Type: "text", + MetaKey: "tenant_id", + EnvKey: "CONOHA_TenantId", + IsRequired: true, + }, + }, + } +} diff --git a/backend/internal/dnsproviders/dns_dpi.go b/backend/internal/dnsproviders/dns_dpi.go new file mode 100644 index 00000000..5dce7dc5 --- /dev/null +++ b/backend/internal/dnsproviders/dns_dpi.go @@ -0,0 +1,46 @@ +package dnsproviders + +const dnsPodComSchema = ` +{ + "type": "object", + "required": [ + "id", + "api_key" + ], + "additionalProperties": false, + "properties": { + "id": { + "type": "string", + "minLength": 1 + }, + "api_key": { + "type": "string", + "minLength": 1 + } + } +} +` + +func getDNSDpi() Provider { + return Provider{ + AcmeshName: "dns_dpi", + Schema: dnsPodComSchema, + Fields: []providerField{ + { + Name: "ID", + Type: "text", + MetaKey: "id", + EnvKey: "DPI_Id", + IsRequired: true, + }, + { + Name: "Key", + Type: "password", + MetaKey: "api_key", + EnvKey: "DPI_Key", + IsRequired: true, + IsSecret: true, + }, + }, + } +} diff --git a/backend/internal/dnsproviders/dns_euserv.go b/backend/internal/dnsproviders/dns_euserv.go new file mode 100644 index 00000000..adf496fa --- /dev/null +++ b/backend/internal/dnsproviders/dns_euserv.go @@ -0,0 +1,50 @@ +package dnsproviders + +const euservSchema = ` +{ + "type": "object", + "required": [ + "user", + "password" + ], + "additionalProperties": false, + "properties": { + "user": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "otp_secret": { + "type": "string", + "minLength": 1 + } + } +} +` + +func getDNSEuserv() Provider { + return Provider{ + AcmeshName: "dns_euserv", + Schema: euservSchema, + Fields: []providerField{ + { + Name: "User", + Type: "text", + MetaKey: "user", + EnvKey: "EUSERV_Username", + IsRequired: true, + }, + { + Name: "Password", + Type: "password", + MetaKey: "password", + EnvKey: "EUSERV_Password", + IsRequired: true, + IsSecret: true, + }, + }, + } +} diff --git a/backend/internal/dnsproviders/dns_tele3.go b/backend/internal/dnsproviders/dns_tele3.go new file mode 100644 index 00000000..68896a91 --- /dev/null +++ b/backend/internal/dnsproviders/dns_tele3.go @@ -0,0 +1,25 @@ +package dnsproviders + +func getDNSTele3() Provider { + return Provider{ + AcmeshName: "dns_tele3", + Schema: commonKeySecretSchema, + Fields: []providerField{ + { + Name: "Key", + Type: "text", + MetaKey: "api_key", + EnvKey: "TELE3_Key", + IsRequired: true, + }, + { + Name: "Secret", + Type: "password", + MetaKey: "secret", + EnvKey: "TELE3_Secret", + IsRequired: true, + IsSecret: true, + }, + }, + } +} diff --git a/frontend/src/locale/src/en.json b/frontend/src/locale/src/en.json index b8b8e44c..507ff6c8 100644 --- a/frontend/src/locale/src/en.json +++ b/frontend/src/locale/src/en.json @@ -26,6 +26,9 @@ "acmesh.dns_cloudns": { "defaultMessage": "ClouDNS.net" }, + "acmesh.dns_conoha": { + "defaultMessage": "Conoha" + }, "acmesh.dns_cx": { "defaultMessage": "CloudXNS" }, @@ -44,6 +47,9 @@ "acmesh.dns_dp": { "defaultMessage": "DNSPod.cn" }, + "acmesh.dns_dpi": { + "defaultMessage": "DNSPod.com" + }, "acmesh.dns_dreamhost": { "defaultMessage": "DreamHost" }, @@ -56,6 +62,9 @@ "acmesh.dns_dynu": { "defaultMessage": "Dynu" }, + "acmesh.dns_euserv": { + "defaultMessage": "Euserv" + }, "acmesh.dns_freedns": { "defaultMessage": "FreeDNS" }, @@ -110,6 +119,9 @@ "acmesh.dns_servercow": { "defaultMessage": "Servercow" }, + "acmesh.dns_tele3": { + "defaultMessage": "TELE3" + }, "acmesh.dns_unoeuro": { "defaultMessage": "UnoEuro" },