From 996f18797bf4542aa3dd4ff3f30a05aec02c230e Mon Sep 17 00:00:00 2001 From: Paul Dee Date: Fri, 17 Mar 2023 04:15:39 +0100 Subject: [PATCH] Format provider name as a link also to its corresponding markdown file (#2182) Co-authored-by: Tom Limoncelli --- build/generate/featureMatrix.go | 30 ++--- documentation/adding-new-rtypes.md | 51 +++++++- documentation/providers.md | 183 +++++++++++++++-------------- 3 files changed, 156 insertions(+), 108 deletions(-) diff --git a/build/generate/featureMatrix.go b/build/generate/featureMatrix.go index 8d1361818..35a74adaf 100644 --- a/build/generate/featureMatrix.go +++ b/build/generate/featureMatrix.go @@ -38,7 +38,7 @@ func markdownTable(matrix *FeatureMatrix) (string, error) { featureMap := matrix.Providers[providerName] var tableDataRow []string - tableDataRow = append(tableDataRow, "`"+providerName+"`") + tableDataRow = append(tableDataRow, "[`"+providerName+"`](providers/"+strings.ToLower(providerName)+".md)") for _, featureName := range matrix.Features { tableDataRow = append(tableDataRow, featureEmoji(featureMap, featureName)) } @@ -76,20 +76,20 @@ func matrixData() *FeatureMatrix { OfficialSupport = "Official Support" // vs. community supported ProviderDNSProvider = "DNS Provider" ProviderRegistrar = "Registrar" - DomainModifierAlias = "ALIAS" - DomainModifierDnssec = "AUTODNSSEC" - DomainModifierCaa = "CAA" - DomainModifierLoc = "LOC" - DomainModifierPtr = "PTR" - DomainModifierNaptr = "NAPTR" - DomainModifierSoa = "SOA" - DomainModifierSrv = "SRV" - DomainModifierSshfp = "SSHFP" - DomainModifierTlsa = "TLSA" - DomainModifierDs = "DS" + DomainModifierAlias = "[`ALIAS`](functions/domain/ALIAS.md)" + DomainModifierCaa = "[`CAA`](functions/domain/CAA.md)" + DomainModifierDnssec = "[`AUTODNSSEC`](functions/domain/AUTODNSSEC_ON.md)" + DomainModifierLoc = "[`LOC`](functions/domain/LOC.md)" + DomainModifierNaptr = "[`NAPTR`](functions/domain/NAPTR.md)" + DomainModifierPtr = "[`PTR`](functions/domain/PTR.md)" + DomainModifierSoa = "[`SOA`](functions/domain/SOA.md)" + DomainModifierSrv = "[`SRV`](functions/domain/SRV.md)" + DomainModifierSshfp = "[`SSHFP`](functions/domain/SSHFP.md)" + DomainModifierTlsa = "[`TLSA`](functions/domain/TLSA.md)" + DomainModifierDs = "[`DS`](functions/domain/DS.md)" DualHost = "dual host" CreateDomains = "create-domains" - NoPurge = "NO_PURGE" + NoPurge = "[`NO_PURGE`](functions/domain/NO_PURGE.md)" GetZones = "get-zones" ) @@ -100,11 +100,11 @@ func matrixData() *FeatureMatrix { ProviderDNSProvider, ProviderRegistrar, DomainModifierAlias, - DomainModifierDnssec, DomainModifierCaa, + DomainModifierDnssec, DomainModifierLoc, - DomainModifierPtr, DomainModifierNaptr, + DomainModifierPtr, DomainModifierSoa, DomainModifierSrv, DomainModifierSshfp, diff --git a/documentation/adding-new-rtypes.md b/documentation/adding-new-rtypes.md index 1889035a8..4f68e9452 100644 --- a/documentation/adding-new-rtypes.md +++ b/documentation/adding-new-rtypes.md @@ -72,12 +72,59 @@ go generate popd ``` -- Add this feature to the feature matrix in `dnscontrol/build/generate/featureMatrix.go` (Add it to the variable `matrix` then add it later in the file with a `setCapability()` statement. +- Add this feature to the feature matrix in `dnscontrol/build/generate/featureMatrix.go`. Add it to the variable `matrix` maintaining alphabetical ordering, which should look like this: + + {% code title="dnscontrol/build/generate/featureMatrix.go" %} + ```diff + func matrixData() *FeatureMatrix { + const ( + ... + DomainModifierCaa = "[`CAA`](functions/domain/CAA.md)" + + DomainModifierFoo = "[`FOO`](functions/domain/FOO.md)" + DomainModifierLoc = "[`LOC`](functions/domain/LOC.md)" + ... + ) + matrix := &FeatureMatrix{ + Providers: map[string]FeatureMap{}, + Features: []string{ + ... + DomainModifierCaa, + + DomainModifierFoo, + DomainModifierLoc, + ... + }, + } + ``` + {% endcode %} + + then add it later in the file with a `setCapability()` statement, which should look like this: + + {% code title="dnscontrol/build/generate/featureMatrix.go" %} + ```diff + ... + + setCapability( + + DomainModifierFoo, + + providers.CanUseFOO, + + ) + ... + ``` + {% endcode %} + - Add the capability to the list of features that zones are validated against (i.e. if you want DNSControl to report an error if this feature is used with a DNS provider that doesn't support it). That's in the `checkProviderCapabilities` function in - `pkg/normalize/validate.go`. + `pkg/normalize/validate.go`. It should look like this: + + {% code title="pkg/normalize/validate.go" %} + ```diff + var providerCapabilityChecks = []pairTypeCapability{ + ... + + capabilityCheck("FOO", providers.CanUseFOO), + ... + ``` + {% endcode %} + - Mark the `bind` provider as supporting this record type by updating `dnscontrol/providers/bind/bindProvider.go` (look for `providers.CanUse` and you'll see what to do). DNSControl will warn/error if this new record is used with a diff --git a/documentation/providers.md b/documentation/providers.md index 541d146f6..b8ab7f70c 100644 --- a/documentation/providers.md +++ b/documentation/providers.md @@ -12,53 +12,53 @@ a provider that supports it, we'd love your contribution to ensure it works corr If a feature is definitively not supported for whatever reason, we would also like a PR to clarify why it is not supported, and fill in this entire matrix. -| Provider name | Official Support | DNS Provider | Registrar | ALIAS | AUTODNSSEC | CAA | LOC | PTR | NAPTR | SOA | SRV | SSHFP | TLSA | DS | dual host | create-domains | NO_PURGE | get-zones | -| ------------- | ---------------- | ------------ | --------- | ----- | ---------- | --- | --- | --- | ----- | --- | --- | ----- | ---- | -- | --------- | -------------- | -------- | --------- | -| `AKAMAIEDGEDNS` | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | -| `AUTODNS` | ❌ | ✅ | ❌ | ✅ | ❔ | ❌ | ❔ | ❌ | ❔ | ❔ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | -| `AXFRDDNS` | ❌ | ✅ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❌ | ❌ | ❌ | ❌ | -| `AZURE_DNS` | ✅ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ✅ | ❌ | ❔ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ✅ | ✅ | -| `BIND` | ✅ | ✅ | ❌ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | -| `CLOUDFLAREAPI` | ✅ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❔ | ❌ | ✅ | ✅ | ✅ | -| `CLOUDNS` | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | -| `CSCGLOBAL` | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ✅ | -| `DESEC` | ❌ | ✅ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | -| `DIGITALOCEAN` | ❌ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ | -| `DNSIMPLE` | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | -| `DNSMADEEASY` | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | -| `DNSOVERHTTPS` | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | -| `DOMAINNAMESHOP` | ❌ | ✅ | ❌ | ❔ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | -| `EASYNAME` | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | -| `EXOSCALE` | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ❔ | ❌ | ❔ | ❌ | ❌ | ✅ | ❔ | -| `GANDI_V5` | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❌ | ❌ | ✅ | -| `GCLOUD` | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | -| `GCORE` | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | -| `HEDNS` | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | -| `HETZNER` | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | -| `HEXONET` | ❌ | ✅ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ✅ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | -| `HOSTINGDE` | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `INTERNETBS` | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | -| `INWX` | ❌ | ✅ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | -| `LINODE` | ❌ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ✅ | -| `LOOPIA` | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | -| `LUADNS` | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | -| `MSDNS` | ✅ | ✅ | ❌ | ❌ | ❔ | ❌ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ✅ | -| `NAMECHEAP` | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ❌ | ❔ | ❌ | ❔ | ❌ | ❌ | ❌ | ✅ | -| `NAMEDOTCOM` | ❌ | ✅ | ✅ | ✅ | ❔ | ❔ | ❌ | ❌ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ | ✅ | -| `NETCUP` | ❌ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ❌ | -| `NETLIFY` | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | -| `NS1` | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `OPENSRS` | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | -| `ORACLE` | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | -| `OVH` | ❌ | ✅ | ✅ | ❌ | ❔ | ✅ | ❔ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ❌ | ✅ | ✅ | -| `PACKETFRAME` | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ❔ | -| `PORKBUN` | ❌ | ✅ | ❌ | ✅ | ❌ | ❔ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | -| `POWERDNS` | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| `ROUTE53` | ✅ | ✅ | ✅ | ❌ | ❔ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ | ✅ | -| `RWTH` | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ✅ | ❌ | ❔ | ✅ | ✅ | ❌ | ❔ | ❌ | ❌ | ✅ | ✅ | -| `SOFTLAYER` | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | -| `TRANSIP` | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❌ | ✅ | ✅ | -| `VULTR` | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❔ | ❔ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ | +| Provider name | Official Support | DNS Provider | Registrar | [`ALIAS`](functions/domain/ALIAS.md) | [`AUTODNSSEC`](functions/domain/AUTODNSSEC_ON.md) | [`CAA`](functions/domain/CAA.md) | [`LOC`](functions/domain/LOC.md) | [`NAPTR`](functions/domain/NAPTR.md) | [`PTR`](functions/domain/PTR.md) | [`SOA`](functions/domain/SOA.md) | [`SRV`](functions/domain/SRV.md) | [`SSHFP`](functions/domain/SSHFP.md) | [`TLSA`](functions/domain/TLSA.md) | [`DS`](functions/domain/DS.md) | dual host | create-domains | [`NO_PURGE`](functions/domain/NO_PURGE.md) | get-zones | +| ------------- | ---------------- | ------------ | --------- | ------------------------------------ | ------------------------------------------------- | -------------------------------- | -------------------------------- | ------------------------------------ | -------------------------------- | -------------------------------- | -------------------------------- | ------------------------------------ | ---------------------------------- | ------------------------------ | --------- | -------------- | ------------------------------------------ | --------- | +| [`AKAMAIEDGEDNS`](providers/akamaiedgedns.md) | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | +| [`AUTODNS`](providers/autodns.md) | ❌ | ✅ | ❌ | ✅ | ❔ | ❌ | ❔ | ❔ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | +| [`AXFRDDNS`](providers/axfrddns.md) | ❌ | ✅ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❌ | ❌ | ❌ | ❌ | +| [`AZURE_DNS`](providers/azure_dns.md) | ✅ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ✅ | ❔ | ✅ | ❌ | ❌ | ❔ | ✅ | ✅ | ✅ | ✅ | +| [`BIND`](providers/bind.md) | ✅ | ✅ | ❌ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | +| [`CLOUDFLAREAPI`](providers/cloudflareapi.md) | ✅ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❌ | ✅ | ✅ | ✅ | +| [`CLOUDNS`](providers/cloudns.md) | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | +| [`CSCGLOBAL`](providers/cscglobal.md) | ✅ | ✅ | ✅ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ✅ | +| [`DESEC`](providers/desec.md) | ❌ | ✅ | ❌ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | +| [`DIGITALOCEAN`](providers/digitalocean.md) | ❌ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ | +| [`DNSIMPLE`](providers/dnsimple.md) | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | +| [`DNSMADEEASY`](providers/dnsmadeeasy.md) | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | +| [`DNSOVERHTTPS`](providers/dnsoverhttps.md) | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | +| [`DOMAINNAMESHOP`](providers/domainnameshop.md) | ❌ | ✅ | ❌ | ❔ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | +| [`EASYNAME`](providers/easyname.md) | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | +| [`EXOSCALE`](providers/exoscale.md) | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ❔ | ❌ | ❔ | ❌ | ❌ | ✅ | ❔ | +| [`GANDI_V5`](providers/gandi_v5.md) | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❌ | ❌ | ✅ | +| [`GCLOUD`](providers/gcloud.md) | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | +| [`GCORE`](providers/gcore.md) | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | +| [`HEDNS`](providers/hedns.md) | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | +| [`HETZNER`](providers/hetzner.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❔ | ❌ | ❔ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | +| [`HEXONET`](providers/hexonet.md) | ❌ | ✅ | ✅ | ❌ | ❔ | ✅ | ❔ | ❔ | ✅ | ❔ | ✅ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | +| [`HOSTINGDE`](providers/hostingde.md) | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [`INTERNETBS`](providers/internetbs.md) | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | +| [`INWX`](providers/inwx.md) | ❌ | ✅ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | +| [`LINODE`](providers/linode.md) | ❌ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ✅ | +| [`LOOPIA`](providers/loopia.md) | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ | ✅ | +| [`LUADNS`](providers/luadns.md) | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | +| [`MSDNS`](providers/msdns.md) | ✅ | ✅ | ❌ | ❌ | ❔ | ❌ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ✅ | +| [`NAMECHEAP`](providers/namecheap.md) | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ❌ | ❔ | ❌ | ❔ | ❌ | ❔ | ❌ | ❔ | ❌ | ❌ | ❌ | ✅ | +| [`NAMEDOTCOM`](providers/namedotcom.md) | ❌ | ✅ | ✅ | ✅ | ❔ | ❔ | ❌ | ❔ | ❌ | ❔ | ✅ | ❔ | ❔ | ❔ | ✅ | ❌ | ✅ | ✅ | +| [`NETCUP`](providers/netcup.md) | ❌ | ✅ | ❌ | ❔ | ❔ | ✅ | ❌ | ❔ | ❌ | ❔ | ✅ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ❌ | +| [`NETLIFY`](providers/netlify.md) | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | +| [`NS1`](providers/ns1.md) | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❔ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [`OPENSRS`](providers/opensrs.md) | ❌ | ❌ | ✅ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | +| [`ORACLE`](providers/oracle.md) | ❌ | ✅ | ❌ | ✅ | ❔ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | +| [`OVH`](providers/ovh.md) | ❌ | ✅ | ✅ | ❌ | ❔ | ✅ | ❔ | ❔ | ❌ | ❔ | ✅ | ✅ | ✅ | ❔ | ✅ | ❌ | ✅ | ✅ | +| [`PACKETFRAME`](providers/packetframe.md) | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❔ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ❌ | ❌ | ✅ | ❔ | +| [`PORKBUN`](providers/porkbun.md) | ❌ | ✅ | ❌ | ✅ | ❌ | ❔ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | +| [`POWERDNS`](providers/powerdns.md) | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ❔ | ✅ | ✅ | ❔ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| [`ROUTE53`](providers/route53.md) | ✅ | ✅ | ✅ | ❌ | ❔ | ✅ | ❌ | ❔ | ✅ | ❔ | ✅ | ❔ | ❔ | ❔ | ✅ | ✅ | ✅ | ✅ | +| [`RWTH`](providers/rwth.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❌ | ✅ | ❔ | ✅ | ✅ | ❌ | ❔ | ❌ | ❌ | ✅ | ✅ | +| [`SOFTLAYER`](providers/softlayer.md) | ❌ | ✅ | ❌ | ❔ | ❔ | ❔ | ❌ | ❔ | ❔ | ❔ | ✅ | ❔ | ❔ | ❔ | ❔ | ❌ | ✅ | ❔ | +| [`TRANSIP`](providers/transip.md) | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ✅ | ❔ | ❔ | ✅ | ✅ | ✅ | ❌ | ❔ | ❌ | ✅ | ✅ | +| [`VULTR`](providers/vultr.md) | ❌ | ✅ | ❌ | ❌ | ❔ | ✅ | ❌ | ❔ | ❌ | ❔ | ✅ | ✅ | ❌ | ❔ | ❔ | ✅ | ✅ | ✅ | ### Providers with "official support" @@ -74,13 +74,13 @@ Providers in this category and their maintainers are: |Name|Maintainer| |---|---| -|`AZURE_DNS`|@vatsalyagoel| -|`BIND`|@tlimoncelli| -|`CLOUDFLAREAPI`|@tresni| -|`CSCGLOBAL`|@mikenz| -|`GCLOUD`|@riyadhalnur| -|`MSDNS`|@tlimoncelli| -|`ROUTE53`|@tresni| +|[`AZURE_DNS`](providers/azure_dns.md)|@vatsalyagoel| +|[`BIND`](providers/bind.md)|@tlimoncelli| +|[`CLOUDFLAREAPI`](providers/cloudflareapi.md)|@tresni| +|[`CSCGLOBAL`](providers/cscglobal.md)|@mikenz| +|[`GCLOUD`](providers/gcloud.md)|@riyadhalnur| +|[`MSDNS`](providers/msdns.md)|@tlimoncelli| +|[`ROUTE53`](providers/route53.md)|@tresni| ### Providers with "contributor support" @@ -103,43 +103,44 @@ Providers in this category and their maintainers are: |Name|Maintainer| |---|---| -|`AKAMAIEDGEDNS`|@svernick| -|`AXFRDDNS`|@hnrgrgr| -|`CLOUDFLAREAPI`|@tresni| -|`CLOUDNS`|@pragmaton| -|`CSCGLOBAL`|@Air-New-Zealand| -|`DESEC`|@D3luxee| -|`DIGITALOCEAN`|@Deraen| -|`DNSIMPLE`|@onlyhavecans| -|`DNSMADEEASY`|@vojtad| -|`DNSOVERHTTPS`|@mikenz| -|`DOMAINNAMESHOP`|@SimenBai| -|`EASYNAME`|@tresni| -|`EXOSCALE`|@pierre-emmanuelJ| -|`GANDI_V5`|@TomOnTime| -|`GCORE`|@xddxdd| -|`HEDNS`|@rblenkinsopp| -|`HETZNER`|@das7pad| -|`HEXONET`|@KaiSchwarz-cnic| -|`HOSTINGDE`|@membero| -|`INTERNETBS`|@pragmaton| -|`INWX`|@svenpeter42| -|`LINODE`|@koesie10| -|`LUADNS`|@riku22| -|`NAMECHEAP`|@willpower232| -|`NETCUP`|@kordianbruck| -|`NETLIFY`|@SphericalKat| -|`NS1`|@costasd| -|`OPENSRS`|@pierre-emmanuelJ| -|`ORACLE`|@kallsyms| -|`OVH`|@masterzen| -|`PACKETFRAME`|@hamptonmoore| -|`POWERDNS`|@jpbede| -|`ROUTE53`|@tresni| -|`RWTH`|@MisterErwin| -|`SOFTLAYER`|@jamielennox| -|`TRANSIP`|@blackshadev| -|`VULTR`|@pgaskin| +|[`AKAMAIEDGEDNS`](providers/akamaiedgedns.md)|@svernick| +|[`AXFRDDNS`](providers/axfrddns.md)|@hnrgrgr| +|[`CLOUDFLAREAPI`](providers/cloudflareapi.md)|@tresni| +|[`CLOUDNS`](providers/CLOUDNS.md)|@pragmaton| +|[`CSCGLOBAL`](providers/cscglobal.md)|@Air-New-Zealand| +|[`DESEC`](providers/desec.md)|@D3luxee| +|[`DIGITALOCEAN`](providers/digitalocean.md)|@Deraen| +|[`DNSIMPLE`](providers/dnsimple.md)|@onlyhavecans| +|[`DNSMADEEASY`](providers/dnsmadeeasy.md)|@vojtad| +|[`DNSOVERHTTPS`](providers/dnsoverhttps.md)|@mikenz| +|[`DOMAINNAMESHOP`](providers/domainnameshop.md)|@SimenBai| +|[`EASYNAME`](providers/easyname.md)|@tresni| +|[`EXOSCALE`](providers/exoscale.md)|@pierre-emmanuelJ| +|[`GANDI_V5`](providers/gandi_v5.md)|@TomOnTime| +|[`GCORE`](providers/gcore.md)|@xddxdd| +|[`HEDNS`](providers/hedns.md)|@rblenkinsopp| +|[`HETZNER`](providers/hetzner.md)|@das7pad| +|[`HEXONET`](providers/hexonet.md)|@KaiSchwarz-cnic| +|[`HOSTINGDE`](providers/hostingde.md)|@membero| +|[`INTERNETBS`](providers/internetbs.md)|@pragmaton| +|[`INWX`](providers/inwx.md)|@svenpeter42| +|[`LINODE`](providers/linode.md)|@koesie10| +|[`LOOPIA`](providers/loopia.md)|@systemcrash| +|[`LUADNS`](providers/luadns.md)|@riku22| +|[`NAMECHEAP`](providers/namecheap.md)|@willpower232| +|[`NETCUP`](providers/netcup.md)|@kordianbruck| +|[`NETLIFY`](providers/netlify.md)|@SphericalKat| +|[`NS1`](providers/ns1.md)|@costasd| +|[`OPENSRS`](providers/opensrs.md)|@pierre-emmanuelJ| +|[`ORACLE`](providers/oracle.md)|@kallsyms| +|[`OVH`](providers/ovh.md)|@masterzen| +|[`PACKETFRAME`](providers/packetframe.md)|@hamptonmoore| +|[`POWERDNS`](providers/powerdns.md)|@jpbede| +|[`ROUTE53`](providers/route53.md)|@tresni| +|[`RWTH`](providers/rwth.md)|@MisterErwin| +|[`SOFTLAYER`](providers/softlayer.md)|@jamielennox| +|[`TRANSIP`](providers/transip.md)|@blackshadev| +|[`VULTR`](providers/vultr.md)|@pgaskin| ### Requested providers