1
0
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:
Tom Limoncelli
2023-03-15 17:36:37 -04:00
committed by GitHub
11 changed files with 109 additions and 101 deletions

View File

@ -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.

View File

@ -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"

View File

@ -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

View File

@ -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.

View File

@ -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)

View File

@ -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.

View File

@ -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|

View File

@ -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

View File

@ -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"
} }
} }

View File

@ -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() {

View File

@ -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) {