mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
Merge branch 'master' into tlim_corrector
This commit is contained in:
19
README.md
19
README.md
@ -18,19 +18,18 @@ Windows). The provider model is extensible, so more providers can be added.
|
|||||||
|
|
||||||
Currently supported DNS providers:
|
Currently supported DNS providers:
|
||||||
|
|
||||||
- AWS Route 53
|
|
||||||
- AXFR+DDNS
|
|
||||||
- Active Directory (Deprecated, see Microsoft DNS)
|
|
||||||
- Akamai Edge DNS
|
- Akamai Edge DNS
|
||||||
- AutoDNS
|
- AutoDNS
|
||||||
|
- AWS Route 53
|
||||||
|
- AXFR+DDNS
|
||||||
- Azure DNS
|
- Azure DNS
|
||||||
- BIND
|
- BIND
|
||||||
- ClouDNS
|
|
||||||
- Cloudflare
|
- Cloudflare
|
||||||
|
- ClouDNS
|
||||||
- deSEC
|
- deSEC
|
||||||
|
- DigitalOcean
|
||||||
- DNS Made Easy
|
- DNS Made Easy
|
||||||
- DNSimple
|
- DNSimple
|
||||||
- DigitalOcean
|
|
||||||
- Domainnameshop (Domeneshop)
|
- Domainnameshop (Domeneshop)
|
||||||
- Exoscale
|
- Exoscale
|
||||||
- Gandi
|
- Gandi
|
||||||
@ -45,13 +44,13 @@ Currently supported DNS providers:
|
|||||||
- Loopia
|
- Loopia
|
||||||
- LuaDNS
|
- LuaDNS
|
||||||
- Microsoft Windows Server DNS Server
|
- Microsoft Windows Server DNS Server
|
||||||
- NS1
|
|
||||||
- Name.com
|
|
||||||
- Namecheap
|
- Namecheap
|
||||||
|
- Name.com
|
||||||
- Netcup
|
- Netcup
|
||||||
- Netlify
|
- Netlify
|
||||||
- OVH
|
- NS1
|
||||||
- Oracle Cloud
|
- Oracle Cloud
|
||||||
|
- OVH
|
||||||
- Packetframe
|
- Packetframe
|
||||||
- Porkbun
|
- Porkbun
|
||||||
- PowerDNS
|
- PowerDNS
|
||||||
@ -71,10 +70,10 @@ Currently supported Domain Registrars:
|
|||||||
- hosting.de
|
- hosting.de
|
||||||
- Internet.bs
|
- Internet.bs
|
||||||
- INWX
|
- INWX
|
||||||
- Name.com
|
|
||||||
- Namecheap
|
- Namecheap
|
||||||
- OVH
|
- Name.com
|
||||||
- OpenSRS
|
- OpenSRS
|
||||||
|
- OVH
|
||||||
|
|
||||||
At Stack Overflow, we use this system to manage hundreds of domains
|
At Stack Overflow, we use this system to manage hundreds of domains
|
||||||
and subdomains across multiple registrars and DNS providers.
|
and subdomains across multiple registrars and DNS providers.
|
||||||
|
@ -1,12 +1,13 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/StackExchange/dnscontrol/v3/providers"
|
|
||||||
_ "github.com/StackExchange/dnscontrol/v3/providers/_all"
|
|
||||||
"github.com/fbiville/markdown-table-formatter/pkg/markdown"
|
|
||||||
"os"
|
"os"
|
||||||
"sort"
|
"sort"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/StackExchange/dnscontrol/v3/providers"
|
||||||
|
_ "github.com/StackExchange/dnscontrol/v3/providers/_all"
|
||||||
|
"github.com/fbiville/markdown-table-formatter/pkg/markdown"
|
||||||
)
|
)
|
||||||
|
|
||||||
func generateFeatureMatrix() error {
|
func generateFeatureMatrix() error {
|
||||||
@ -72,7 +73,7 @@ func featureEmoji(
|
|||||||
|
|
||||||
func matrixData() *FeatureMatrix {
|
func matrixData() *FeatureMatrix {
|
||||||
const (
|
const (
|
||||||
OfficialSupport = "Official Support"
|
OfficialSupport = "Official Support" // vs. community supported
|
||||||
ProviderDNSProvider = "DNS Provider"
|
ProviderDNSProvider = "DNS Provider"
|
||||||
ProviderRegistrar = "Registrar"
|
ProviderRegistrar = "Registrar"
|
||||||
DomainModifierAlias = "ALIAS"
|
DomainModifierAlias = "ALIAS"
|
||||||
|
@ -34,15 +34,19 @@ var delimiterRegex = regexp.MustCompile(`(?m)^---\n`)
|
|||||||
|
|
||||||
func parseFrontMatter(content string) (map[string]interface{}, string, error) {
|
func parseFrontMatter(content string) (map[string]interface{}, string, error) {
|
||||||
delimiterIndices := delimiterRegex.FindAllStringIndex(content, 2)
|
delimiterIndices := delimiterRegex.FindAllStringIndex(content, 2)
|
||||||
startIndex := delimiterIndices[0][0]
|
if len(delimiterIndices) > 0 {
|
||||||
endIndex := delimiterIndices[1][0]
|
startIndex := delimiterIndices[0][0]
|
||||||
yamlString := content[startIndex+4 : endIndex]
|
endIndex := delimiterIndices[1][0]
|
||||||
var frontMatter map[string]interface{}
|
yamlString := content[startIndex+4 : endIndex]
|
||||||
err := yaml.Unmarshal([]byte(yamlString), &frontMatter)
|
var frontMatter map[string]interface{}
|
||||||
if err != nil {
|
err := yaml.Unmarshal([]byte(yamlString), &frontMatter)
|
||||||
return nil, "", err
|
if err != nil {
|
||||||
|
return nil, "", err
|
||||||
|
}
|
||||||
|
return frontMatter, content[endIndex+4:], nil
|
||||||
|
} else {
|
||||||
|
return nil, "", fmt.Errorf("Failed to parse file. Remove it and try again.")
|
||||||
}
|
}
|
||||||
return frontMatter, content[endIndex+4:], nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var returnTypes = map[string]string{
|
var returnTypes = map[string]string{
|
||||||
@ -81,8 +85,8 @@ func generateFunctionTypes() (string, error) {
|
|||||||
}
|
}
|
||||||
frontMatter, body, err := parseFrontMatter(string(content))
|
frontMatter, body, err := parseFrontMatter(string(content))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
println("Error parsing front matter in", fPath)
|
println("Error parsing front matter in", fPath, "error: ", err.Error())
|
||||||
return "", err
|
continue
|
||||||
}
|
}
|
||||||
if frontMatter["ts_ignore"] == true {
|
if frontMatter["ts_ignore"] == true {
|
||||||
continue
|
continue
|
||||||
|
2
commands/types/dnscontrol.d.ts
vendored
2
commands/types/dnscontrol.d.ts
vendored
@ -2240,7 +2240,7 @@ declare function R53_ZONE(zone_id: string): DomainModifier & RecordModifier;
|
|||||||
* [multi-string]: https://tools.ietf.org/html/rfc4408#section-3.1.3
|
* [multi-string]: https://tools.ietf.org/html/rfc4408#section-3.1.3
|
||||||
* [record-size]: https://tools.ietf.org/html/rfc4408#section-3.1.4
|
* [record-size]: https://tools.ietf.org/html/rfc4408#section-3.1.4
|
||||||
*
|
*
|
||||||
* `SPR_BUILDER()` returns multiple `TXT()` records:
|
* `SPF_BUILDER()` returns multiple `TXT()` records:
|
||||||
*
|
*
|
||||||
* * `TXT("@", "v=spf1 .... ~all")`
|
* * `TXT("@", "v=spf1 .... ~all")`
|
||||||
* * This is the optimized configuration.
|
* * This is the optimized configuration.
|
||||||
|
@ -88,6 +88,7 @@
|
|||||||
|
|
||||||
* [Providers](providers.md)
|
* [Providers](providers.md)
|
||||||
* [Akamai Edge DNS](providers/akamaiedgedns.md)
|
* [Akamai Edge DNS](providers/akamaiedgedns.md)
|
||||||
|
* [Amazon Route 53](providers/route53.md)
|
||||||
* [AutoDNS](providers/autodns.md)
|
* [AutoDNS](providers/autodns.md)
|
||||||
* [AXFR+DDNS](providers/axfrddns.md)
|
* [AXFR+DDNS](providers/axfrddns.md)
|
||||||
* [Azure DNS](providers/azure_dns.md)
|
* [Azure DNS](providers/azure_dns.md)
|
||||||
@ -97,18 +98,18 @@
|
|||||||
* [CSC Global](providers/cscglobal.md)
|
* [CSC Global](providers/cscglobal.md)
|
||||||
* [deSEC](providers/desec.md)
|
* [deSEC](providers/desec.md)
|
||||||
* [DigitalOcean](providers/digitalocean.md)
|
* [DigitalOcean](providers/digitalocean.md)
|
||||||
* [DNSimple](providers/dnsimple.md)
|
|
||||||
* [DNS Made Simple](providers/dnsmadeeasy.md)
|
* [DNS Made Simple](providers/dnsmadeeasy.md)
|
||||||
|
* [DNSimple](providers/dnsimple.md)
|
||||||
* [DNS-over-HTTPS](providers/dnsoverhttps.md)
|
* [DNS-over-HTTPS](providers/dnsoverhttps.md)
|
||||||
* [DOMAINNAMESHOP](providers/domainnameshop.md)
|
* [DOMAINNAMESHOP](providers/domainnameshop.md)
|
||||||
* [easyname](providers/easyname.md)
|
* [easyname](providers/easyname.md)
|
||||||
* [Gandi_v5](providers/gandi_v5.md)
|
* [Gandi_v5](providers/gandi_v5.md)
|
||||||
* [Google Cloud DNS](providers/gcloud.md)
|
|
||||||
* [Gcore](providers/gcore.md)
|
* [Gcore](providers/gcore.md)
|
||||||
* [Hurricane Electric DNS](providers/hedns.md)
|
* [Google Cloud DNS](providers/gcloud.md)
|
||||||
* [Hetzner DNS Console](providers/hetzner.md)
|
* [Hetzner DNS Console](providers/hetzner.md)
|
||||||
* [HEXONET](providers/hexonet.md)
|
* [HEXONET](providers/hexonet.md)
|
||||||
* [hosting.de](providers/hostingde.md)
|
* [hosting.de](providers/hostingde.md)
|
||||||
|
* [Hurricane Electric DNS](providers/hedns.md)
|
||||||
* [Internet.bs](providers/internetbs.md)
|
* [Internet.bs](providers/internetbs.md)
|
||||||
* [INWX](providers/inwx.md)
|
* [INWX](providers/inwx.md)
|
||||||
* [Linode](providers/linode.md)
|
* [Linode](providers/linode.md)
|
||||||
@ -125,7 +126,6 @@
|
|||||||
* [Packetframe](providers/packetframe.md)
|
* [Packetframe](providers/packetframe.md)
|
||||||
* [Porkbun](providers/porkbun.md)
|
* [Porkbun](providers/porkbun.md)
|
||||||
* [PowerDNS](providers/powerdns.md)
|
* [PowerDNS](providers/powerdns.md)
|
||||||
* [Amazon Route 53](providers/route53.md)
|
|
||||||
* [RWTH DNS-Admin](providers/rwth.md)
|
* [RWTH DNS-Admin](providers/rwth.md)
|
||||||
* [SoftLayer DNS](providers/softlayer.md)
|
* [SoftLayer DNS](providers/softlayer.md)
|
||||||
* [TransIP](providers/transip.md)
|
* [TransIP](providers/transip.md)
|
||||||
|
@ -136,7 +136,7 @@ The parameters are:
|
|||||||
[multi-string]: https://tools.ietf.org/html/rfc4408#section-3.1.3
|
[multi-string]: https://tools.ietf.org/html/rfc4408#section-3.1.3
|
||||||
[record-size]: https://tools.ietf.org/html/rfc4408#section-3.1.4
|
[record-size]: https://tools.ietf.org/html/rfc4408#section-3.1.4
|
||||||
|
|
||||||
`SPR_BUILDER()` returns multiple `TXT()` records:
|
`SPF_BUILDER()` returns multiple `TXT()` records:
|
||||||
|
|
||||||
* `TXT("@", "v=spf1 .... ~all")`
|
* `TXT("@", "v=spf1 .... ~all")`
|
||||||
* This is the optimized configuration.
|
* This is the optimized configuration.
|
||||||
|
@ -76,8 +76,11 @@ Providers in this category and their maintainers are:
|
|||||||
|---|---|
|
|---|---|
|
||||||
|`AZURE_DNS`|@vatsalyagoel|
|
|`AZURE_DNS`|@vatsalyagoel|
|
||||||
|`BIND`|@tlimoncelli|
|
|`BIND`|@tlimoncelli|
|
||||||
|
|`CLOUDFLAREAPI`|@tresni|
|
||||||
|
|`CSCGLOBAL`|@mikenz|
|
||||||
|`GCLOUD`|@riyadhalnur|
|
|`GCLOUD`|@riyadhalnur|
|
||||||
|`NAMEDOTCOM`|@tlimoncelli|
|
|`MSDNS`|@tlimoncelli|
|
||||||
|
|`ROUTE53`|@tresni|
|
||||||
|
|
||||||
### Providers with "contributor support"
|
### Providers with "contributor support"
|
||||||
|
|
||||||
@ -100,16 +103,16 @@ Providers in this category and their maintainers are:
|
|||||||
|
|
||||||
|Name|Maintainer|
|
|Name|Maintainer|
|
||||||
|---|---|
|
|---|---|
|
||||||
|`AXFRDDNS`|@hnrgrgr|
|
|
||||||
|`AKAMAIEDGEDNS`|@svernick|
|
|`AKAMAIEDGEDNS`|@svernick|
|
||||||
|`CLOUDNS`|@pragmaton|
|
|`AXFRDDNS`|@hnrgrgr|
|
||||||
|`CLOUDFLAREAPI`|@tresni|
|
|`CLOUDFLAREAPI`|@tresni|
|
||||||
|
|`CLOUDNS`|@pragmaton|
|
||||||
|`CSCGLOBAL`|@Air-New-Zealand|
|
|`CSCGLOBAL`|@Air-New-Zealand|
|
||||||
|`DESEC`|@D3luxee|
|
|`DESEC`|@D3luxee|
|
||||||
|`DIGITALOCEAN`|@Deraen|
|
|`DIGITALOCEAN`|@Deraen|
|
||||||
|`DNSOVERHTTPS`|@mikenz|
|
|
||||||
|`DNSIMPLE`|@onlyhavecans|
|
|`DNSIMPLE`|@onlyhavecans|
|
||||||
|`DNSMADEEASY`|@vojtad|
|
|`DNSMADEEASY`|@vojtad|
|
||||||
|
|`DNSOVERHTTPS`|@mikenz|
|
||||||
|`DOMAINNAMESHOP`|@SimenBai|
|
|`DOMAINNAMESHOP`|@SimenBai|
|
||||||
|`EASYNAME`|@tresni|
|
|`EASYNAME`|@tresni|
|
||||||
|`EXOSCALE`|@pierre-emmanuelJ|
|
|`EXOSCALE`|@pierre-emmanuelJ|
|
||||||
@ -132,8 +135,8 @@ Providers in this category and their maintainers are:
|
|||||||
|`OVH`|@masterzen|
|
|`OVH`|@masterzen|
|
||||||
|`PACKETFRAME`|@hamptonmoore|
|
|`PACKETFRAME`|@hamptonmoore|
|
||||||
|`POWERDNS`|@jpbede|
|
|`POWERDNS`|@jpbede|
|
||||||
|`RWTH`|@MisterErwin|
|
|
||||||
|`ROUTE53`|@tresni|
|
|`ROUTE53`|@tresni|
|
||||||
|
|`RWTH`|@MisterErwin|
|
||||||
|`SOFTLAYER`|@jamielennox|
|
|`SOFTLAYER`|@jamielennox|
|
||||||
|`TRANSIP`|@blackshadev|
|
|`TRANSIP`|@blackshadev|
|
||||||
|`VULTR`|@pgaskin|
|
|`VULTR`|@pgaskin|
|
||||||
|
@ -310,6 +310,7 @@ Here are some last-minute things to check before you submit your PR.
|
|||||||
2. Make sure all appropriate documentation is current. (See [Step 8](#step-8-manual-tests))
|
2. Make sure all appropriate documentation is current. (See [Step 8](#step-8-manual-tests))
|
||||||
3. Check that dependencies are current (See [Step 13](#step-13-dependencies))
|
3. Check that dependencies are current (See [Step 13](#step-13-dependencies))
|
||||||
4. Re-run the integration test one last time (See [Step 7](#step-7-integration-test))
|
4. Re-run the integration test one last time (See [Step 7](#step-7-integration-test))
|
||||||
|
5. Re-read the [maintainer's responsibilities](providers.md) bullet list. By submitting a provider you agree to maintain it, respond to bugs, perioidically re-run the integration test to verify nothing has broken, and if we don't hear from you for 2 months we may disable the provider.
|
||||||
|
|
||||||
## Step 15: After the PR is merged
|
## Step 15: After the PR is merged
|
||||||
|
|
||||||
|
@ -1,9 +1,18 @@
|
|||||||
{
|
{
|
||||||
|
"AKAMAIEDGEDNS": {
|
||||||
|
"access_token": "$AED_ACCESS_TOKEN",
|
||||||
|
"client_secret": "$AED_CLIENT_SECRET",
|
||||||
|
"client_token": "$AED_CLIENT_TOKEN",
|
||||||
|
"contract_id": "$AED_CONTRACT_ID",
|
||||||
|
"domain": "$AED_DOMAIN",
|
||||||
|
"group_id": "$AED_GROUP_ID",
|
||||||
|
"host": "$AED_HOST"
|
||||||
|
},
|
||||||
"AUTODNS": {
|
"AUTODNS": {
|
||||||
"username": "$AUTODNS_USERNAME",
|
|
||||||
"password": "$AUTODNS_PASSWORD",
|
|
||||||
"context": "$AUTODNS_CONTEXT",
|
"context": "$AUTODNS_CONTEXT",
|
||||||
"domain": "$AUTODNS_DOMAIN"
|
"domain": "$AUTODNS_DOMAIN",
|
||||||
|
"password": "$AUTODNS_PASSWORD",
|
||||||
|
"username": "$AUTODNS_USERNAME"
|
||||||
},
|
},
|
||||||
"AXFRDDNS": {
|
"AXFRDDNS": {
|
||||||
"domain": "$AXFRDDNS_DOMAIN",
|
"domain": "$AXFRDDNS_DOMAIN",
|
||||||
@ -13,29 +22,23 @@
|
|||||||
"update-key": "$AXFRDDNS_UPDATE_KEY"
|
"update-key": "$AXFRDDNS_UPDATE_KEY"
|
||||||
},
|
},
|
||||||
"AZURE_DNS": {
|
"AZURE_DNS": {
|
||||||
"TYPE": "AZURE_DNS",
|
|
||||||
"ClientID": "$AZURE_DNS_CLIENT_ID",
|
"ClientID": "$AZURE_DNS_CLIENT_ID",
|
||||||
"ClientSecret": "$AZURE_DNS_CLIENT_SECRET",
|
"ClientSecret": "$AZURE_DNS_CLIENT_SECRET",
|
||||||
"ResourceGroup": "$AZURE_DNS_RESOURCE_GROUP",
|
"ResourceGroup": "$AZURE_DNS_RESOURCE_GROUP",
|
||||||
"SubscriptionID": "$AZURE_DNS_SUBSCRIPTION_ID",
|
"SubscriptionID": "$AZURE_DNS_SUBSCRIPTION_ID",
|
||||||
|
"TYPE": "AZURE_DNS",
|
||||||
"TenantID": "$AZURE_DNS_TENANT_ID",
|
"TenantID": "$AZURE_DNS_TENANT_ID",
|
||||||
"domain": "$AZURE_DNS_DOMAIN"
|
"domain": "$AZURE_DNS_DOMAIN"
|
||||||
},
|
},
|
||||||
"BIND": {
|
"BIND": {
|
||||||
"domain": "$BIND_DOMAIN"
|
"domain": "$BIND_DOMAIN"
|
||||||
},
|
},
|
||||||
"CSCGLOBAL": {
|
|
||||||
"api-key": "$CSCGLOBAL_APIKEY",
|
|
||||||
"user-token": "$CSCGLOBAL_USERTOKEN",
|
|
||||||
"notification_emails": "$CSCGLOBAL_NOTIFICATION",
|
|
||||||
"domain": "$CSCGLOBAL_DOMAIN"
|
|
||||||
},
|
|
||||||
"CLOUDFLAREAPI": {
|
"CLOUDFLAREAPI": {
|
||||||
|
"accountid": "$CLOUDFLAREAPI_ACCOUNTID",
|
||||||
"apikey": "$CLOUDFLAREAPI_KEY",
|
"apikey": "$CLOUDFLAREAPI_KEY",
|
||||||
"apitoken": "$CLOUDFLAREAPI_TOKEN",
|
"apitoken": "$CLOUDFLAREAPI_TOKEN",
|
||||||
"apiuser": "$CLOUDFLAREAPI_USER",
|
"apiuser": "$CLOUDFLAREAPI_USER",
|
||||||
"domain": "$CLOUDFLAREAPI_DOMAIN",
|
"domain": "$CLOUDFLAREAPI_DOMAIN"
|
||||||
"accountid": "$CLOUDFLAREAPI_ACCOUNTID"
|
|
||||||
},
|
},
|
||||||
"CLOUDFLAREAPI_OLD": {
|
"CLOUDFLAREAPI_OLD": {
|
||||||
"apikey": "$CF_KEY",
|
"apikey": "$CF_KEY",
|
||||||
@ -45,9 +48,15 @@
|
|||||||
},
|
},
|
||||||
"CLOUDNS": {
|
"CLOUDNS": {
|
||||||
"auth-id": "$CLOUDNS_AUTH_ID",
|
"auth-id": "$CLOUDNS_AUTH_ID",
|
||||||
"sub-auth-id": "$CLOUDNS_SUB_AUTH_ID",
|
|
||||||
"auth-password": "$CLOUDNS_AUTH_PASSWORD",
|
"auth-password": "$CLOUDNS_AUTH_PASSWORD",
|
||||||
"domain": "$CLOUDNS_DOMAIN"
|
"domain": "$CLOUDNS_DOMAIN",
|
||||||
|
"sub-auth-id": "$CLOUDNS_SUB_AUTH_ID"
|
||||||
|
},
|
||||||
|
"CSCGLOBAL": {
|
||||||
|
"api-key": "$CSCGLOBAL_APIKEY",
|
||||||
|
"domain": "$CSCGLOBAL_DOMAIN",
|
||||||
|
"notification_emails": "$CSCGLOBAL_NOTIFICATION",
|
||||||
|
"user-token": "$CSCGLOBAL_USERTOKEN"
|
||||||
},
|
},
|
||||||
"DESEC": {
|
"DESEC": {
|
||||||
"auth-token": "$DESEC_TOKEN",
|
"auth-token": "$DESEC_TOKEN",
|
||||||
@ -63,26 +72,22 @@
|
|||||||
"token": "$DNSIMPLE_TOKEN"
|
"token": "$DNSIMPLE_TOKEN"
|
||||||
},
|
},
|
||||||
"DNSMADEEASY": {
|
"DNSMADEEASY": {
|
||||||
|
"api_key": "$DNSMADEEASY_API_KEY",
|
||||||
"domain": "$DNSMADEEASY_DOMAIN",
|
"domain": "$DNSMADEEASY_DOMAIN",
|
||||||
"sandbox": "true",
|
"sandbox": "true",
|
||||||
"api_key": "$DNSMADEEASY_API_KEY",
|
|
||||||
"secret_key": "$DNSMADEEASY_SECRET_KEY"
|
"secret_key": "$DNSMADEEASY_SECRET_KEY"
|
||||||
},
|
},
|
||||||
"AKAMAIEDGEDNS": {
|
"DOMAINNAMESHOP": {
|
||||||
"client_secret": "$AED_CLIENT_SECRET",
|
"domain": "$DOMAINNAMESHOP_DOMAIN",
|
||||||
"host": "$AED_HOST",
|
"secret": "$DOMAINNAMESHOP_SECRET",
|
||||||
"access_token": "$AED_ACCESS_TOKEN",
|
"token": "$DOMAINNAMESHOP_TOKEN"
|
||||||
"client_token": "$AED_CLIENT_TOKEN",
|
|
||||||
"contract_id": "$AED_CONTRACT_ID",
|
|
||||||
"group_id": "$AED_GROUP_ID",
|
|
||||||
"domain": "$AED_DOMAIN"
|
|
||||||
},
|
},
|
||||||
"EXOSCALE": {
|
"EXOSCALE": {
|
||||||
"apikey": "$EXOSCALE_API_KEY",
|
"apikey": "$EXOSCALE_API_KEY",
|
||||||
|
"apizone": "ch-gva-2",
|
||||||
"dns-endpoint": "https://api.exoscale.com/v2",
|
"dns-endpoint": "https://api.exoscale.com/v2",
|
||||||
"domain": "$EXOSCALE_DOMAIN",
|
"domain": "$EXOSCALE_DOMAIN",
|
||||||
"secretkey": "$EXOSCALE_SECRET_KEY",
|
"secretkey": "$EXOSCALE_SECRET_KEY"
|
||||||
"apizone": "ch-gva-2"
|
|
||||||
},
|
},
|
||||||
"GANDI_V5": {
|
"GANDI_V5": {
|
||||||
"apikey": "$GANDI_V5_APIKEY",
|
"apikey": "$GANDI_V5_APIKEY",
|
||||||
@ -135,25 +140,25 @@
|
|||||||
"token": "$LINODE_TOKEN"
|
"token": "$LINODE_TOKEN"
|
||||||
},
|
},
|
||||||
"LOOPIA": {
|
"LOOPIA": {
|
||||||
"username": "$LOOPIA_USERNAME",
|
"domain": "$LOOPIA_DOMAIN",
|
||||||
"password": "$LOOPIA_PASSWORD",
|
"password": "$LOOPIA_PASSWORD",
|
||||||
"domain": "$LOOPIA_DOMAIN"
|
"username": "$LOOPIA_USERNAME"
|
||||||
},
|
},
|
||||||
"LUADNS": {
|
"LUADNS": {
|
||||||
|
"apikey": "$LUADNS_APIKEY",
|
||||||
"domain": "$LUADNS_DOMAIN",
|
"domain": "$LUADNS_DOMAIN",
|
||||||
"email": "$LUADNS_EMAIL",
|
"email": "$LUADNS_EMAIL"
|
||||||
"apikey": "$LUADNS_APIKEY"
|
|
||||||
},
|
},
|
||||||
"MSDNS": {
|
"MSDNS": {
|
||||||
"domain": "$MSDNS_DOMAIN",
|
|
||||||
"dnsserver": "$MSDNS_DNSSERVER",
|
"dnsserver": "$MSDNS_DNSSERVER",
|
||||||
|
"domain": "$MSDNS_DOMAIN",
|
||||||
"pssession": "$MSDNS_PSSESSION"
|
"pssession": "$MSDNS_PSSESSION"
|
||||||
},
|
},
|
||||||
"NAMECHEAP": {
|
"NAMECHEAP": {
|
||||||
|
"BaseURL": "$NAMECHEAP_BASEURL",
|
||||||
"apikey": "$NAMECHEAP_KEY",
|
"apikey": "$NAMECHEAP_KEY",
|
||||||
"apiuser": "$NAMECHEAP_USER",
|
"apiuser": "$NAMECHEAP_USER",
|
||||||
"domain": "$NAMECHEAP_DOMAIN",
|
"domain": "$NAMECHEAP_DOMAIN"
|
||||||
"BaseURL": "$NAMECHEAP_BASEURL"
|
|
||||||
},
|
},
|
||||||
"NAMEDOTCOM": {
|
"NAMEDOTCOM": {
|
||||||
"apikey": "$NAMEDOTCOM_KEY",
|
"apikey": "$NAMEDOTCOM_KEY",
|
||||||
@ -167,18 +172,23 @@
|
|||||||
"customer-number": "$NETCUP_CUSTOMER_NUMBER",
|
"customer-number": "$NETCUP_CUSTOMER_NUMBER",
|
||||||
"domain": "$NETCUP_DOMAIN"
|
"domain": "$NETCUP_DOMAIN"
|
||||||
},
|
},
|
||||||
|
"NETLIFY": {
|
||||||
|
"domain": "$NETLIFY_DOMAIN",
|
||||||
|
"slug": "$NETLIFY_ACCOUNT_SLUG",
|
||||||
|
"token": "$NETLIFY_TOKEN"
|
||||||
|
},
|
||||||
"NS1": {
|
"NS1": {
|
||||||
"api_token": "$NS1_TOKEN",
|
"api_token": "$NS1_TOKEN",
|
||||||
"domain": "$NS1_DOMAIN"
|
"domain": "$NS1_DOMAIN"
|
||||||
},
|
},
|
||||||
"ORACLE": {
|
"ORACLE": {
|
||||||
"user_ocid": "$ORACLE_USER_OCID",
|
|
||||||
"tenancy_ocid": "$ORACLE_TENANCY_OCID",
|
|
||||||
"fingerprint": "$ORACLE_FINGERPRINT",
|
|
||||||
"region": "$ORACLE_REGION",
|
|
||||||
"private_key": "$ORACLE_PRIVATE_KEY",
|
|
||||||
"compartment": "$ORACLE_COMPARTMENT",
|
"compartment": "$ORACLE_COMPARTMENT",
|
||||||
"domain": "$ORACLE_DOMAIN"
|
"domain": "$ORACLE_DOMAIN",
|
||||||
|
"fingerprint": "$ORACLE_FINGERPRINT",
|
||||||
|
"private_key": "$ORACLE_PRIVATE_KEY",
|
||||||
|
"region": "$ORACLE_REGION",
|
||||||
|
"tenancy_ocid": "$ORACLE_TENANCY_OCID",
|
||||||
|
"user_ocid": "$ORACLE_USER_OCID"
|
||||||
},
|
},
|
||||||
"OVH": {
|
"OVH": {
|
||||||
"app-key": "$OVH_APP_KEY",
|
"app-key": "$OVH_APP_KEY",
|
||||||
@ -186,20 +196,20 @@
|
|||||||
"consumer-key": "$OVH_CONSUMER_KEY",
|
"consumer-key": "$OVH_CONSUMER_KEY",
|
||||||
"domain": "$OVH_DOMAIN"
|
"domain": "$OVH_DOMAIN"
|
||||||
},
|
},
|
||||||
"POWERDNS": {
|
|
||||||
"apiKey": "$POWERDNS_APIKEY",
|
|
||||||
"apiUrl": "$POWERDNS_APIURL",
|
|
||||||
"serverName": "$POWERDNS_SERVERNAME",
|
|
||||||
"domain": "$POWERDNS_DOMAIN"
|
|
||||||
},
|
|
||||||
"PACKETFRAME": {
|
"PACKETFRAME": {
|
||||||
"token": "$PACKETFRAME_TOKEN",
|
"domain": "$PACKETFRAME_DOMAIN",
|
||||||
"domain": "$PACKETFRAME_DOMAIN"
|
"token": "$PACKETFRAME_TOKEN"
|
||||||
},
|
},
|
||||||
"PORKBUN": {
|
"PORKBUN": {
|
||||||
"api_key": "$PORKBUN_API_KEY",
|
"api_key": "$PORKBUN_API_KEY",
|
||||||
"secret_key": "$PORKBUN_SECRET_KEY",
|
"domain": "$PORKBUN_DOMAIN",
|
||||||
"domain": "$PORKBUN_DOMAIN"
|
"secret_key": "$PORKBUN_SECRET_KEY"
|
||||||
|
},
|
||||||
|
"POWERDNS": {
|
||||||
|
"apiKey": "$POWERDNS_APIKEY",
|
||||||
|
"apiUrl": "$POWERDNS_APIURL",
|
||||||
|
"domain": "$POWERDNS_DOMAIN",
|
||||||
|
"serverName": "$POWERDNS_SERVERNAME"
|
||||||
},
|
},
|
||||||
"ROUTE53": {
|
"ROUTE53": {
|
||||||
"KeyId": "$ROUTE53_KEY_ID",
|
"KeyId": "$ROUTE53_KEY_ID",
|
||||||
@ -211,24 +221,14 @@
|
|||||||
"domain": "$SL_DOMAIN",
|
"domain": "$SL_DOMAIN",
|
||||||
"username": "$SL_USERNAME"
|
"username": "$SL_USERNAME"
|
||||||
},
|
},
|
||||||
|
"TRANSIP": {
|
||||||
|
"AccessToken": "$TRANSIP_ACCESS_TOKEN",
|
||||||
|
"AccountName": "$TRANSIP_ACCOUNT_NAME",
|
||||||
|
"PrivateKey": "$TRANSIP_PRIVATE_KEY",
|
||||||
|
"domain": "$TRANSIP_DOMAIN"
|
||||||
|
},
|
||||||
"VULTR": {
|
"VULTR": {
|
||||||
"domain": "$VULTR_DOMAIN",
|
"domain": "$VULTR_DOMAIN",
|
||||||
"token": "$VULTR_TOKEN"
|
"token": "$VULTR_TOKEN"
|
||||||
},
|
|
||||||
"TRANSIP": {
|
|
||||||
"AccountName": "$TRANSIP_ACCOUNT_NAME",
|
|
||||||
"PrivateKey": "$TRANSIP_PRIVATE_KEY",
|
|
||||||
"AccessToken": "$TRANSIP_ACCESS_TOKEN",
|
|
||||||
"domain": "$TRANSIP_DOMAIN"
|
|
||||||
},
|
|
||||||
"DOMAINNAMESHOP": {
|
|
||||||
"token": "$DOMAINNAMESHOP_TOKEN",
|
|
||||||
"secret": "$DOMAINNAMESHOP_SECRET",
|
|
||||||
"domain": "$DOMAINNAMESHOP_DOMAIN"
|
|
||||||
},
|
|
||||||
"NETLIFY": {
|
|
||||||
"token": "$NETLIFY_TOKEN",
|
|
||||||
"slug": "$NETLIFY_ACCOUNT_SLUG",
|
|
||||||
"domain": "$NETLIFY_DOMAIN"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ var features = providers.DocumentationNotes{
|
|||||||
providers.CanUseTLSA: providers.Can(),
|
providers.CanUseTLSA: providers.Can(),
|
||||||
providers.DocCreateDomains: providers.Can(),
|
providers.DocCreateDomains: providers.Can(),
|
||||||
providers.DocDualHost: providers.Can(),
|
providers.DocDualHost: providers.Can(),
|
||||||
providers.DocOfficiallySupported: providers.Can(),
|
providers.DocOfficiallySupported: providers.Cannot(),
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -27,7 +27,7 @@ var features = providers.DocumentationNotes{
|
|||||||
providers.CanUseSRV: providers.Can("SRV records with empty targets are not supported"),
|
providers.CanUseSRV: providers.Can("SRV records with empty targets are not supported"),
|
||||||
providers.DocCreateDomains: providers.Cannot("New domains require registration"),
|
providers.DocCreateDomains: providers.Cannot("New domains require registration"),
|
||||||
providers.DocDualHost: providers.Can(),
|
providers.DocDualHost: providers.Can(),
|
||||||
providers.DocOfficiallySupported: providers.Can(),
|
providers.DocOfficiallySupported: providers.Cannot(),
|
||||||
}
|
}
|
||||||
|
|
||||||
func newReg(conf map[string]string) (providers.Registrar, error) {
|
func newReg(conf map[string]string) (providers.Registrar, error) {
|
||||||
|
Reference in New Issue
Block a user