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
43 changes: 43 additions & 0 deletions build/generate/featureMatrix.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package main
import (
"fmt"
"os"
"path/filepath"
"sort"
"strings"

Expand All @@ -13,6 +14,8 @@ import (
)

func generateFeatureMatrix() error {
updateProviderDocs()

var replacementContent strings.Builder
replacementContent.WriteString("Jump to a table:\n\n")
matrix := matrixData()
Expand Down Expand Up @@ -47,6 +50,40 @@ func generateFeatureMatrix() error {
return nil
}

func updateProviderDocs() {
matrix := matrixData()
docDir := "documentation/provider"
for _, providerName := range allProviderNames() {
docFile := filepath.Join(docDir, strings.ToLower(strings.ReplaceAll(providerName, "_", ""))+".md")
if _, err := os.Stat(docFile); os.IsNotExist(err) {
fmt.Printf("WARNING: Missing documentation page for provider %s: %s\n", providerName, docFile)
} else {
featureList := buildFeatureList(matrix, providerName)
replaceInlineContent(
docFile,
"<!-- provider-features-start -->",
"<!-- provider-features-end -->",
featureList,
)
}
}
}

func buildFeatureList(matrix *FeatureMatrix, providerName string) string {
var sb strings.Builder
featureMap := matrix.Providers[providerName]

for i, category := range matrix.FeatureTablesTitles {
sb.WriteString("- " + category + "\n")
for _, feature := range matrix.FeatureTables[i] {
emoji := featureEmoji(featureMap, feature)
sb.WriteString(" - " + feature + ": " + emoji + "\n")
}
}

return sb.String()
}

func markdownTable(matrix *FeatureMatrix, tableNumber int32) (string, error) {
var tableHeaders []string
tableHeaders = append(tableHeaders, "Provider name")
Expand Down Expand Up @@ -407,6 +444,12 @@ func replaceInlineContent(
start := strings.Index(content, startMarker)
end := strings.Index(content, endMarker)

if start == -1 || end == -1 {
fmt.Printf("WARNING: Missing delimiters in %s (start=%t, end=%t), skipping\n",
file, start != -1, end != -1)
return
}

newContentString := startMarker + "\n" + newContent + endMarker
newContentBytes := []byte(newContentString)
contentBytes = []byte(content)
Expand Down
35 changes: 35 additions & 0 deletions documentation/provider/adguardhome.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,38 @@ D("example.com", REG_NONE, DnsProvider(DSP_ADGUARDHOME),
);
```
{% endcode %}

## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: ❌
- DNS Provider: βœ…
- Registrar: ❌
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): ❔
- [dual host](../advanced-features/dual-host.md): ❔
- create-domains: ❌
- get-zones: ❌
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): βœ…
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): ❔
- [`LOC`](../language-reference/domain-modifiers/LOC.md): ❔
- [`PTR`](../language-reference/domain-modifiers/PTR.md): ❔
- [`SOA`](../language-reference/domain-modifiers/SOA.md): ❔
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): ❔
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): ❔
- [`SRV`](../language-reference/domain-modifiers/SRV.md): ❔
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): ❔
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): ❔
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): ❔
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): ❔
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): ❔
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): ❔
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): ❔
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): ❔
- [`DS`](../language-reference/domain-modifiers/DS.md): ❔
<!-- provider-features-end -->
35 changes: 34 additions & 1 deletion documentation/provider/akamaiedgedns.md
Original file line number Diff line number Diff line change
Expand Up @@ -356,4 +356,37 @@ Created zone: example_3.com
GroupId: NNNNN
```


## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: ❌
- DNS Provider: βœ…
- Registrar: ❌
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): ❔
- [dual host](../advanced-features/dual-host.md): βœ…
- create-domains: βœ…
- get-zones: βœ…
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): βœ…
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): ❔
- [`LOC`](../language-reference/domain-modifiers/LOC.md): βœ…
- [`PTR`](../language-reference/domain-modifiers/PTR.md): βœ…
- [`SOA`](../language-reference/domain-modifiers/SOA.md): ❌
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): ❔
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): βœ…
- [`SRV`](../language-reference/domain-modifiers/SRV.md): βœ…
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): ❔
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): βœ…
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): ❔
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): ❔
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): βœ…
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): βœ…
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): βœ…
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): ❔
- [`DS`](../language-reference/domain-modifiers/DS.md): ❌
<!-- provider-features-end -->
35 changes: 35 additions & 0 deletions documentation/provider/alidns.md
Original file line number Diff line number Diff line change
Expand Up @@ -124,3 +124,38 @@ DNSControl will audit and reject records that violate these constraints.
## New Domains

If a domain does not exist in your Alibaba Cloud account, you must create it manually through the Alibaba Cloud console. DNSControl does not automatically create new domains for this provider.

## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: ❌
- DNS Provider: βœ…
- Registrar: ❌
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): βœ…
- [dual host](../advanced-features/dual-host.md): βœ…
- create-domains: ❌
- get-zones: βœ…
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): ❌
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): ❔
- [`LOC`](../language-reference/domain-modifiers/LOC.md): ❔
- [`PTR`](../language-reference/domain-modifiers/PTR.md): ❌
- [`SOA`](../language-reference/domain-modifiers/SOA.md): ❔
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): ❔
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): ❌
- [`SRV`](../language-reference/domain-modifiers/SRV.md): βœ…
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): ❔
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): βœ…
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): ❔
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): ❔
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): ❌
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): ❌
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): ❌
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): ❔
- [`DS`](../language-reference/domain-modifiers/DS.md): ❔
<!-- provider-features-end -->
35 changes: 35 additions & 0 deletions documentation/provider/autodns.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,38 @@ D("example.com", REG_NONE, DnsProvider(DSP_AUTODNS),
);
```
{% endcode %}

## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: ❌
- DNS Provider: βœ…
- Registrar: βœ…
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): βœ…
- [dual host](../advanced-features/dual-host.md): ❌
- create-domains: ❌
- get-zones: βœ…
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): βœ…
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): ❔
- [`LOC`](../language-reference/domain-modifiers/LOC.md): ❔
- [`PTR`](../language-reference/domain-modifiers/PTR.md): βœ…
- [`SOA`](../language-reference/domain-modifiers/SOA.md): ❔
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): ❔
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): ❔
- [`SRV`](../language-reference/domain-modifiers/SRV.md): βœ…
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): ❔
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): βœ…
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): ❔
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): ❔
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): ❌
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): ❌
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): ❔
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): ❔
- [`DS`](../language-reference/domain-modifiers/DS.md): ❌
<!-- provider-features-end -->
35 changes: 35 additions & 0 deletions documentation/provider/axfrddns.md
Original file line number Diff line number Diff line change
Expand Up @@ -277,3 +277,38 @@ When AutoDNSSEC is not enabled or disabled, no checking is done.
## FYI: MD5 Support

By default the used DNS Go package by miekg has deprecated support for the (insecure) MD5 algorithm [https://github.com/miekg/dns/commit/93945c284489394b77653323d11d5de83a2a6fb5](https://github.com/miekg/dns/commit/93945c284489394b77653323d11d5de83a2a6fb5). Some providers like the Leibniz Supercomputing Centre (LRZ) located in Munich still use this algorithm to authenticate internal dynamic DNS updates. To compensate for the lack of MD5, a custom MD5 TSIG Provider was added into DNSControl.

## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: ❌
- DNS Provider: βœ…
- Registrar: ❌
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): βœ…
- [dual host](../advanced-features/dual-host.md): ❌
- create-domains: ❌
- get-zones: ❌
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): ❌
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): βœ…
- [`LOC`](../language-reference/domain-modifiers/LOC.md): βœ…
- [`PTR`](../language-reference/domain-modifiers/PTR.md): βœ…
- [`SOA`](../language-reference/domain-modifiers/SOA.md): ❌
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): βœ…
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): βœ…
- [`SRV`](../language-reference/domain-modifiers/SRV.md): βœ…
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): βœ…
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): βœ…
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): βœ…
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): βœ…
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): βœ…
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): βœ…
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): βœ…
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): ❌
- [`DS`](../language-reference/domain-modifiers/DS.md): βœ…
<!-- provider-features-end -->
35 changes: 35 additions & 0 deletions documentation/provider/azuredns.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,3 +161,38 @@ If a domain does not exist in your Azure account, DNSControl will *not* automati
## Caveats

The ResourceGroup is case sensitive.

## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: βœ…
- DNS Provider: βœ…
- Registrar: ❌
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): βœ…
- [dual host](../advanced-features/dual-host.md): βœ…
- create-domains: βœ…
- get-zones: βœ…
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): ❌
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): ❔
- [`LOC`](../language-reference/domain-modifiers/LOC.md): ❌
- [`PTR`](../language-reference/domain-modifiers/PTR.md): βœ…
- [`SOA`](../language-reference/domain-modifiers/SOA.md): ❔
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): ❔
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): ❌
- [`SRV`](../language-reference/domain-modifiers/SRV.md): βœ…
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): ❔
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): βœ…
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): ❔
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): ❔
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): ❌
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): ❌
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): ❔
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): ❔
- [`DS`](../language-reference/domain-modifiers/DS.md): ❔
<!-- provider-features-end -->
35 changes: 35 additions & 0 deletions documentation/provider/azureprivatedns.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,38 @@ If a domain does not exist in your Azure account, DNSControl will *not* automati
## Caveats

The ResourceGroup is case sensitive.

## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: βœ…
- DNS Provider: βœ…
- Registrar: ❌
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): ❔
- [dual host](../advanced-features/dual-host.md): βœ…
- create-domains: βœ…
- get-zones: βœ…
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): ❌
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): ❔
- [`LOC`](../language-reference/domain-modifiers/LOC.md): ❌
- [`PTR`](../language-reference/domain-modifiers/PTR.md): βœ…
- [`SOA`](../language-reference/domain-modifiers/SOA.md): ❔
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): ❔
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): ❌
- [`SRV`](../language-reference/domain-modifiers/SRV.md): βœ…
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): ❔
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): ❌
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): ❔
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): ❔
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): ❌
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): ❌
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): ❔
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): ❔
- [`DS`](../language-reference/domain-modifiers/DS.md): ❔
<!-- provider-features-end -->
35 changes: 35 additions & 0 deletions documentation/provider/bind.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,3 +158,38 @@ are zones by reversing the logic of the format string. It doesn't try very hard
to get this right, as getting it right in all situations is mathematically
impossible. Feel free to file an issue if find a situation where it doesn't
work. I love a challenge!

## Feature Flags

<!-- provider-features-start -->
- Provider Type
- Official Support: βœ…
- DNS Provider: βœ…
- Registrar: ❌
- Provider API
- [Concurrency Verified](../advanced-features/concurrency-verified.md): βœ…
- [dual host](../advanced-features/dual-host.md): βœ…
- create-domains: βœ…
- get-zones: βœ…
- DNS extensions
- [`ALIAS`](../language-reference/domain-modifiers/ALIAS.md): ❔
- [`DNAME`](../language-reference/domain-modifiers/DNAME.md): βœ…
- [`LOC`](../language-reference/domain-modifiers/LOC.md): βœ…
- [`PTR`](../language-reference/domain-modifiers/PTR.md): βœ…
- [`SOA`](../language-reference/domain-modifiers/SOA.md): βœ…
- Service discovery
- [`DHCID`](../language-reference/domain-modifiers/DHCID.md): βœ…
- [`NAPTR`](../language-reference/domain-modifiers/NAPTR.md): βœ…
- [`SRV`](../language-reference/domain-modifiers/SRV.md): βœ…
- [`SVCB`](../language-reference/domain-modifiers/SVCB.md): βœ…
- Security
- [`CAA`](../language-reference/domain-modifiers/CAA.md): βœ…
- [`HTTPS`](../language-reference/domain-modifiers/HTTPS.md): βœ…
- [`SMIMEA`](../language-reference/domain-modifiers/SMIMEA.md): βœ…
- [`SSHFP`](../language-reference/domain-modifiers/SSHFP.md): βœ…
- [`TLSA`](../language-reference/domain-modifiers/TLSA.md): βœ…
- DNSSEC
- [`AUTODNSSEC`](../language-reference/domain-modifiers/AUTODNSSEC_ON.md): βœ…
- [`DNSKEY`](../language-reference/domain-modifiers/DNSKEY.md): βœ…
- [`DS`](../language-reference/domain-modifiers/DS.md): βœ…
<!-- provider-features-end -->
Loading
Loading