Releases: StackExchange/dnscontrol
v4.13.0
Hello DNS fans!
This release introduces one new provider and many small fixes and improvements.
- NEW PROVIDER: Sakura Cloud (SAKURACLOUD) (thanks to @ttkzw!)
- NEW FEATURE: The HASH() function can generate hash strings. (thanks to @fuero!)
- Improvements to providers: AUTODNS now supports PTR records, GANDI_V5 supports their new authentication system, HUAWEICLOUD has better DNSSEC support, NS1 documents that NS1_URLFWD is going away, ORACLE now abides by rate- limits automatically, PORKBUN now supports URL forwarding, and POWERDNS has added some reliability improvements.
Some big changes are coming:
- #3108 the "change count" is moving out of the individual provider code, into the main code. This will make the "# corrections" count more accurate.
- #3082 investigates making it easier to add new DNS types (A, MX, etc).
Learning Go? Interested in a starter project? Please email tlimoncelli at stackoverflow dot com.
- 23 providers still use
diff.NewCompat()
instead of the newdiff2.By*
functions. There's nothing wrong with that, but upgrade will make the code cleaner, more simple, and might make the "preview" output cleaner. - I have a few other refactoring ideas that will clean up the code. Interested? Let me know!
Thanks to everyone for their contributions! This is a community effort and it wouldn't be a success without all your help!
Changelog
Major features:
- 864d452: NEW PROVIDER: Sakura Cloud (SAKURACLOUD) (#3086) (@ttkzw)
- 94a0cfc: New Feature: HASH() adds hashing functions to dnsconfig.js language (#3085) (@fuero)
Provider-specific changes:
- f2be1a6: AUTODNS: Enable CanUsePTR (#3098) (@christianbur)
- 8899f45: CLOUDFLAREAPI: Upgrade to cloudflare-go v0.102.0 (#3081) (@tlimoncelli)
- 663be6e: GANDI: Adopt new Gandi v5 auth changes (#2726) (@llange)
- e8eca6a: HUAWEICLOUD: Document DNSSEC capability and improve docs, reliability (#3084) (@huihuimoe)
- 1a3d6a3: NS1: add warning for deprecated record (#3078) (@costasd)
- 1738c6e: NS1: update ns1-go to 2.12.0 (#3074) (@costasd)
- 0de789f: ORACLE: Abide by 429-style rate limits, fix Nameserver update bug (#3090) (@fabienmazieres)
- a3b194f: Oracle: Use SDK v65 and default retry policy (#3094) (@fabienmazieres)
- e86c666: PORKBUN: Remove unused function (#3072) (@tlimoncelli)
- 04f34cf: PORKBUN: support URL Forward (#3064) (@imlonghao)
- 8bb5df9: POWERDNS: Use canonical domain in calls to PowerDNS (#3080) (@kytta)
- 3b904d2: SAKURACLOUD: Add SAKURACLOUD to automated tests (#3095) (@ttkzw)
Documentation:
CI/CD:
- 411a1ed: Build(deps): Bump actions/upload-artifact from 4.3.4 to 4.3.5 (#3067) (@dependabot[bot])
- 5a20c66: Build(deps): Bump actions/upload-artifact from 4.3.5 to 4.3.6 (#3077) (@dependabot[bot])
- dedf398: Build(deps): Bump alpine from 3.20.1 to 3.20.2 (#3063) (@dependabot[bot])
- 24b5c4b: CICD: Removed CodeQL workflow (#3073) (@cafferata)
Dependencies:
- dd2030e: CHORE: update deps (#3097) (@tlimoncelli)
- 62112d1: update deps (#3068) (@tlimoncelli)
- 74826d3: update deps; go generate (#3106) (@tlimoncelli)
Other changes and improvements:
- 69533fc: BUNNY_DNS: run goimports on convert.go (#3071) (@tlimoncelli)
- 3102ec4: CHORE: gitignore should include *.ACTUAL (#3069) (@tlimoncelli)
- fe7370b: CHORE: go generate (#3079) (@tlimoncelli)
- e03c5cb: Gitter - Drop communication channel (#3066) (@cafferata)
- 2944ede: TESTING: Fix reversed got/want output in compareconfig_test.go (#3070) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.12.5
Hello DNSControl fans!
This is another bugfix release. Only CLOUDFLAREAPI
is affected, and only the CF_REDIRECT
/CF_TEMP_REDIRECT
/CF_SINGLE_REDIRECT
commands are affected.
Some non-functional improvements are included in this release too. @cafferata contributed code that automatically generates the OWNERS
file, @nikolamilekic and @svenluijten fixed documentation bugs.
Cloudflare-related improvements:
- Bug fixed:
CF_SINGLE_REDIRECT
rule name was not propagating to Cloudflare correctly. #3049 - Bug fixed:
CF_REDIRECT
/CF_TEMP_REDIRECT
rule name generated in conversion mode was long and ugly; now they are short and easier to identify. They are in the (1,302,when,then) format seen inpreview
output. - New feature: Log the
CF_SINGLE_REDIRECT
statements generated whenCF_REDIRECT
/CF_TEMP_REDIRECT
is in conversion mode.
Explanation of the new feature:
Suppose dnsconfig.js
includes a statement like:
D("example.com", ...
CF_TEMP_REDIR("https://example.com/*", "https://replacement.example.com/$1),
In the old days, CF_TEMP_REDIR
would generate a Cloudflare "page rule". However page rules are going away. Therefore, these will now be silently translated into CF_SINGLE_REDIRECT
statements when the manage_single_redirects
meta feature is set to true. A log of these translations can be generated by setting the transcode_log
variable:
var DSP_CLOUDFLARE = NewDnsProvider("cloudflare", {
"manage_single_redirects": true,
"transcode_log": "transcode.log",
});
Once set, any such translations will be appended to the filename transcode.log.
In this example, the log will look like this:
D("example.com", ...
CF_SINGLE_REDIRECT("1,302,https://example.com/*,https://replacement.example.com/$1",
302,
'http.host eq "example.com"',
'concat("https://replacement.example.com", http.request.uri.path)'
),
Replacing the old CF_TEMP_REDIR
statement with the above CF_SINGLE_REDIRECT
statement requires manual cutting and pasting.
While the CF_REDIRECT
/CF_TEMP_REDIRECT
statements are not going away, it is recommended that you convert to CF_SINGLE_REDIRECT
since they are more flexible and officially supported by Cloudflare.
This feature is documented in https://docs.dnscontrol.org/provider/cloudflareapi#old-style-vs-new-style-redirects
Changelog
Provider-specific changes:
- 0869052: CLOUDFLAREAPI: CF_SINGLE_REDIRECT improvements: fix bugs, log translated redirects (#3051) (@tlimoncelli)
Documentation:
- 1d348de: DOCS: Fix M365_BUILDER examples (#3009) (@nikolamilekic)
- cf49ec8: DOCS: Fix markdown links in Cloudflare provider docs (#3046) (@svenluijten)
CI/CD:
- 8fa1a8d: BUILD: Generate OWNERS files (#2997) (@cafferata)
Other changes and improvements:
- 95c7a70: REFACTOR: Pave args (not validate) (#3045) (@tlimoncelli)
- d160b82: fmt helpers.js (#3048) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.12.4
Hello DNSControl fans!
This is another bugfix release. More fixes for the CF_SINGLE_REDIRECT() feature (now it actually works!), plus removed an debug statement that should have been removed before release, and some docs and dependency upgrades.
"This time for sure!" --Bullwinkle
Changelog
Provider-specific changes:
- 571eaf0: CLOUDFLAREAPI: Bugfix: Fix misaligned CF_SINGLE_REDIRECT validation (#3042) (@tlimoncelli)
- f2a709f: CLOUDFLAREAPI: Bugfix: Fix misaligned CF_SINGLE_REDIRECT validation (#3044) (@tlimoncelli)
Documentation:
- 7b28609: DOCS: CLOUDFLAREAPI - CF_SINGLE_REDIRECT (#3038) (@cafferata)
CI/CD:
- ebf32bf: Build(deps): Bump actions/upload-artifact from 4.3.3 to 4.3.4 (#3037) (@dependabot[bot])
Other changes and improvements:
- cff63b5: BUGFIX: Remove debug statement left in by mistake (#3041) (@tlimoncelli)
- 0ed31ef: CHORE: go generate (#3043) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.12.3
Hi DNSControl fans!
This release makes exactly one change: Adds a CF_SINGLE_REDIRECT()
feature which controls Cloudflare "dynamic single redirects". If you don't use Cloudflare (or do use Cloudflare but don't use that feature) this revision is irrelevant to you. See https://docs.dnscontrol.org/language-reference/domain-modifiers/service-provider-specific/cloudflare-dns/cf_single_redirect and https://docs.dnscontrol.org/provider/cloudflareapi#old-style-vs-new-style-redirects for more info.
FYI: This change is a half-step towards the "make it easier to add new DNS record types" plan documented in #3036. Feedback appreciated!
Changelog
Provider-specific changes:
- 0883068: CLOUDFLAREAPI: Add CF_SINGLE_REDIRECT to manage "dynamic single" redirects (#3035) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.12.2
Hi DNSControl fans!
This point release fixes a minor bug with the CLOUDFLARE CF_REDIRECT conversion. No other changes.
Changelog
Provider-specific changes:
- a091da9: CLOUDFLARE: Bugfix for Redirect, correct typo in error message. (#3033) (@jzhang-sre)
- 937c0dc: CLOUDFLARE: Fix another redirect bug (#3034) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.12.1
Hello DNSControl fans!
Mostly a bug fix release:
- CLOUDFLARE improvements and fixes on the new "single redirect" feature (more to come!)
- PORKBUN handles errors better
- DESEC improved error handling and now runs concurrently
- DOCS improved the getting started summary
What's Changed
- PORKBUN: fix JSON unmarshal and add retry on rate limit by @imlonghao in #3019
- DESEC: Fix init by @JenswBE in #3017
- CLOUDFLARE: Fix bugs with the new "single redirect" feature by @tlimoncelli in #3031
- DOCS: Getting started installation options summary by @cafferata in #3023
- DOCS: MacPorts removed by @cafferata in #3022
- CHORE: Update deps by @tlimoncelli in #3026
- Build(deps): Bump github.com/softlayer/softlayer-go from 1.1.3 to 1.1.5 by @dependabot in #3029
- Build(deps): Bump alpine from 3.20.0 to 3.20.1 by @dependabot in #3028
- Build(deps): Bump github.com/huaweicloud/huaweicloud-sdk-go-v3 from 0.1.100 to 0.1.103 by @dependabot in #3030
New Contributors
Full Changelog: v4.12.0...v4.12.1
Changelog
Provider-specific changes:
- 5ef1e99: CLOUDFLARE: Fix bugs with the new "single redirect" feature (#3031) (@tlimoncelli)
- c22f20d: DESEC: Fix init (#3017) (@JenswBE)
- 2f155ce: PORKBUN: fix JSON unmarshal and add retry on rate limit (#3019) (@imlonghao)
Documentation:
- 01e0fbb: DOCS: Getting started installation options summary (#3023) (@cafferata)
- f83c816: DOCS: MacPorts removed (#3022) (@cafferata)
CI/CD:
- 277b0a0: Build(deps): Bump alpine from 3.20.0 to 3.20.1 (#3028) (@dependabot[bot])
- f3acdc4: Build(deps): Bump github.com/huaweicloud/huaweicloud-sdk-go-v3 from 0.1.100 to 0.1.103 (#3030) (@dependabot[bot])
- 53efc51: Build(deps): Bump github.com/softlayer/softlayer-go from 1.1.3 to 1.1.5 (#3029) (@dependabot[bot])
Dependencies:
- d1a8420: CHORE: Update deps (#3026) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.12.0
Hello DNSControl fans!
This release includes one new provider (HUAWEICLOUD
), HTTPS
/SVCB
records are now supported on CLOUDFLAREAPI
and GCORE
, and require()
now supports JSON5 files. There are also many bugfixes and documentation improvements.
Thanks to @huihuimoe for contributing the HUAWEICLOUD
provider!
The big news of this release is that CLOUDFLAREAPI
's CF_REDIRECT
/CF_TEMP_REDIRECT
commands can now generate redirects using "rules" instead of "page rules". Page rules are going away soon. See https://docs.dnscontrol.org/provider/cloudflareapi for more info. This feature is very new and needs more testing. Please test it carefully before putting it into production, and test the changes in production right away. We're releasing this early to get it out there for early testing before Page Rules go away. (On a personal note, I haven't tested it on all my domains so I can't even promise it works in all the intended cases.) Bug reports greatfully accepted.
Thanks to everyone for their contributions! This is a community effort and it wouldn't be a success without all your help!
Changelog
Major features:
- 1f4c4c6: FEATURE: Add TTL() support to CAA_BUILDER() (#2978) (@cafferata)
- 8eb3c65: FEATURE: Enable "require()" function to accept json5 files (#3003) (@tlimoncelli)
Provider-specific changes:
- ce07c76: HUAWEICLOUD: Add support for huaweicloud dns (#3010) (@huihuimoe)
- b3787ab: AXFRDDNS: Canonicalize key name as per RFC 2845 3.4.2 (#2966) (@nemunaire)
- 7fd6a74: CLOUDFLAREAPI: CF_REDIRECT/CF_TEMP_REDIRECT should dtrt using Single Redirects (#3002) (@tlimoncelli)
- 68b0b30: CLOUDFLAREAPI: Enable DNSKEY, HTTPS, SVCB record types (#3000) (@charliez0)
- 2ccef49: CLOUDFLAREAPI: disable DNSKEY until it is fixed (#3004) (@tlimoncelli)
- df1354b: DNSIMPLE: enable Null MX records (#2960) (@philpennock)
- d55474c: GCLOUD: Fix issue on creating/deleting/updating TXT records (#3011) (@ingwarsw)
- b786b0e: GCLOUD: Fix missing length in make() (#2982) (@tlimoncelli)
- b47ac0d: GCORE: add SVCB and HTTPS support (#2983) (@xddxdd)
- 107b585: HEXONET: Adopt version 4.0.0 of the rtldev-middleware-go-sdk (#2974) (@AsifNawaz-cnic)
- 2d15884: HUAWEICLOUD: add metadata to control Intelligent Resolution (#3013) (@huihuimoe)
- 174fd7b: PORKBUN: catch error on parsing api (#3012) (@imlonghao)
Documentation:
- 9dcd8c7: DOCS: AUTODNSSEC_* improvements (#2984) (@cafferata)
- 4083641: DOCS: Fixed 404 URL's on GitHub page (#2969) (@cafferata)
- 39c08bd: DOCS: Provide domain modifiers code examples with a Top Level Function D() (#2993) (@cafferata)
- 5e68998: DOCS: Removed the double Markdown header syntax. (#2968) (@cafferata)
- f0d1319: DOCS: Several improvements and cleanups (#2972) (@cafferata)
- 2b70f24: DOCS: [REVCOMPAT] Fixed broken URL's (#2970) (@cafferata)
- 91bf56c: DOCS: [get-zones] Removed old reference to
convertzone
(#2971) (@cafferata)
CI/CD:
- 94ce7e2: BUILD: GoReleaser v2.0.0 (#2996) (@cafferata)
- cffd0bb: Build(deps): Bump alpine from 3.19.1 to 3.20.0 (#2990) (@dependabot[bot])
- 2344257: Build(deps): Bump github.com/Azure/azure-sdk-for-go/sdk/azidentity from 1.5.2 to 1.6.0 (#3006) (@dependabot[bot])
Dependencies:
- f029c9b: CHORE: update deps (#2991) (@tlimoncelli)
- 3b0e124: CHORE: update deps (#3015) (@tlimoncelli)
Other changes and improvements:
- 0a784a3: CHORE: Clean up comments in models/domain.go (#2975) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Install with MacPorts
sudo port install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Install with MacPorts
sudo port upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.11.0
Hello DNSControl fans!
This is mostly a bug-fix and catch-up release. The most significant fix is that ppreview --expect-no-changes
now works, thus making ppreview/ppush
feature complete. Those commands will replace preview/push
in 1-2 releases, so please test them and give your feedback as soon as possible. For my configuration ppreview
reduces run-time from 4-5 minutes to 30 seconds.
- New record support: DESEC added SVCB/HTTPS; NS1 added SVCB, HTTPS, TLSA, DNAME, DHCID; BUNNY_DNS added ALIAS.
- Added support for concurrent operation (ppreview/ppush): NS1, TRANSIP
- "ppreview --expect-no-changes" now works!
- ZSH Autocomplete improved
- Welcome new maintainer for AKAMAIEDGEDNS, Ed Lynes!
Thanks to everyone for their contributions! This is a community effort and it wouldn't be a success without all your help!
Changelog
Provider-specific changes:
- 494a3f7: AKAMAIEDGEDNS: new maintainer: Ed Lynes (#2954) (@svernick)
- c679623: DESEC: Enable support for SVCB/HTTPS (#2942) (@Meroje)
- 7bd9316: NS1: Add SVCB, HTTPS, TLSA support (#2945) (@costasd)
- 4a36396: NS1: add support for DNAME and DHCID record types (#2951) (@costasd)
- 734a55c: NS1: enable concurrency (#2952) (@costasd)
- 612f16b: NS1: update ns1-go to 2.10.0 (#2941) (@costasd)
- c3152b4: TRANSIP: Completed/checked the missing capabilities (#2957) (@cafferata)
- 9815cbb: TRANSIP: Concurrency documented (#2948) (@cafferata)
Documentation:
- a679095: DOCS: Clarify RE doc (#2934) (@tlimoncelli)
- 1205ef6: DOCS: Code examples with
END
constant (#2950) (@cafferata) - e3e91cc: DOCS: [OVH] Several improvements (#2949) (@cafferata)
CI/CD:
- 39eb45b: CICD: De-conflate integration test for SVCB and HTTPS (#2938) (@tlimoncelli)
Dependencies:
- 6e4689d: CHORE: Update deps (#2953) (@tlimoncelli)
- e6885cf: CHORE: update deps (#2944) (@tlimoncelli)
Other changes and improvements:
- 6817e08: BUG: "ppreview --expect-no-changes" returns error for "informational" messages (#2936) (@tlimoncelli)
- ec241ee: BUG: ZSH Autocomplete does not work if installed as a file #2955 (#2956) (@Maetveis)
- a1fc1b1: BUNNY_DNS: Add support for
ALIAS
(#2946) (@DamianZaremba) - 1fa92de: CHORE: Linting and comment-fixing (#2937) (@tlimoncelli)
- c7975f9: CHORE: Upgrade AWS module (#2958) (@tlimoncelli)
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Install with MacPorts
sudo port install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Install with MacPorts
sudo port upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.10.0
This release includes 4 new DNS record types (HTTPS, SVCB, DNSKEY and DHCID), a big performance improvement for CLOUDFLAREAPI, plus many bug fixes and documentation improvements.
Highlights:
- New DNS record types SVCB and HTTPS. Supported on AXFRDDNS, BIND, GCLOUD, HEDNS, INWX, POWERDNS.
- New DNS record type DNSKEY. Supported on BIND and DESEC.
- New DNS record type DHCID. Supported on POWERDNS.
- CLOUDFLAREAPI's cache algorithm was broken, resulting in Zone Info being re-downloaded once for every domain.
ppreview
is now significantly faster as a result. - BIND: If you use BIND and the SOA() feature, your serial numbers never incremented. Fixed.
Do you maintain a provider? Please consider adding support for HTTPS, SVCB, DNSKEY, and DHCID.
Thanks to @christianbur for taking the lead on HTTPS/SVCB, to @xtexChooser for taking the lead on DNSKEY, and to @@fuero for taking the lead on DHCID! Thanks to @mraspor for reporting the BIND/SOA bug. Thanks to everyone for their contributions! This is a community effort and it wouldn't be a success without all your help!
Help wanted! We need maintainers for MSDNS, NAMEDOTCOM, and SOFTLAYER!
Changelog
Provider-specific changes:
- bb79c70: CLOUDFLAREAPI: Fix zone info cache bug (#2927) (@tlimoncelli)
- 3fd6806: BIND: BUGFIX: SOA serial number doesn't change if SOA() used (#2908) (@tlimoncelli)
- cf4cca0: INWX: Enable support for SVCB/HTTPS (#2930) (@christianbur)
- 1616348: NETLIFY: add support for listing all zones (#2933) (@SphericalKat)
- df0fa2d: POWERDNS: Change DHCID test value to valid base64 code (#2915) (@fuero)
- 0cd3c2f: POWERDNS: Enables DHCID (#2911) (@fuero)
- da6f621: POWERDNS: Value in test was too long (#2916) (@fuero)
- 3a9b413: NEW RECORD TYPE: HTTPS & SVCB (#2919) (@fritterhoff)
- 7741ef0: Enable support for SVCB/HTTPS in GCLOUD and HEDNS (#2926) (@tlimoncelli)
- 3f05482: NEW RECORD TYPE: DNSKEY (#2917) (@xtexChooser)
Documentation:
- 0b25fdb: DOCS: Add reminder to create github label after adding new provider (#2932) (@tlimoncelli)
- 6cbfb57: DOCS: Disabling colors via environment variable (#2907) (@allixsenos)
- c310647: DOCS: Documentation directory structure (#2905) (@cafferata)
- 4757a0f: DOCS: Remind devs to run go generate (#2929) (@tlimoncelli)
- 5078927: DOCS: Simplified the provider URLs (providers) (#2914) (@cafferata)
- 2f9d248: Fix typo: "cooordinate" (#2910) (@jauderho)
CI/CD:
- eae9686: Build(deps): Bump actions/upload-artifact from 4.3.1 to 4.3.3 (#2920) (@dependabot[bot])
Dependencies:
- bb79c70: CHORE: update deps (#2927) (@tlimoncelli)
Other changes and improvements:
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 in v5.0. This is a breaking change. Warnings are output if your configuration is affected. No date has been announced for v5.0. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- MSDNS maintainer needed! Without a new volunteer, this DNS provider will lose support after April 2025. See #2878
- NAMEDOTCOM and SOFTLAYER need maintainers! These providers have no maintainer. Maintainers respond to PRs and fix bugs in a timely manner, and try to stay on top of protocol changes.
- get-certs/ACME support is frozen and will be removed without notice between now and July 2025. It has been unsupported since December 2022. If you don't use this feature, do not start. If you do use this feature, migrate ASAP. See discussion in issues/1400
Install
macOS and Linux
Install with Homebrew (recommended)
brew install dnscontrol
Install with MacPorts
sudo port install dnscontrol
Using with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/stackexchange/dnscontrol preview
Anywhere else
Alternatively, you can install the latest binary (or the apt/rpm/deb/archlinux package) from this page.
Or, if you have Go installed, you can install the latest version of DNSControl with the following command:
go install github.com/StackExchange/dnscontrol/v4@main
Update
Update to the latest version depends on how you choose to install dnscontrol
on your machine.
Update with Homebrew
brew upgrade dnscontrol
Install with MacPorts
sudo port upgrade dnscontrol
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.9.0
Greetings DNS Fans!
Release v4.9.0 has many new features, a preview of a major performance improvement ('ppreview'/'ppush') and many bug fixes! Thanks to everyone for their contributions! This is a community effort and it wouldn't be a success without all your help!
Highlights:
ppreview
/ppush
are new subcommands that are a preview of significantly faster versions ofpreview
/push
. See below.- REV() now supports RFC4183!
- DNAME records are now supported.
get-zones --format-js
output follows recommended practices better.- @cafferata has continued to make big improvements in documentation consistency, accuracy, and completeness.
- @cafferata has further automated and enhanced the CICD process.
- Code cleanup: A lot of dead code and linting completed.
Preview performance experiment
Subcommands ppreview
/ppush
are experimental versions of preview
/push
that collect all data concurrently (i.e. in parallel). If this is a success, they will replace the existing preview
/push
subcommands. Some benchmarks show a 66% reduction in run-time! This rewrite is something we've wanted to do for 6+ years!
dnscontrol preview # The original command
dnscontrol ppreview # Run capable providers in parallel
dnscontrol ppreview --cmode=none # Run each provider one at a time
dnscontrol ppreview --cmode=all # Run all providers concurrently (unsafe!)
Here's some unscientific benchmarks based on the dnsconfig.js used at Stack Overflow:
- 3m21.549s (preview)
- 2m34.349s (ppreview --cmode=none)
- 1m5.368s (ppreview)
FYI: Add the --full
flag to see what it is doing.
The "Concurrency Verified" column on https://docs.dnscontrol.org/service-providers/providers indicates which providers will run concurrently. (As of this release: AZURE_DNS, CLOUDFLAREAPI, CSCGLOBAL, GCLOUD, ROUTE53). If any provider related to a DNS domain (registrar or DNS service provider(s)) are not on the list, the domain is processed one at a time.
Do you maintain a provider? Please check if your provider can run concurrently. See #2873 for instructions
Are you a golang performance guru? I need help! I thought the concurrent version would be much faster. Can you help me find the problem?
Changelog
Major features:
- 4765f40: FEATURE: New capability: Can provider run concurrently (#2876) (@tlimoncelli)
- 1d96981: NEW FEATURE: Add RFC4183 support to REV() (#2879) (@tlimoncelli)
- 68c5e87: NEW FEATURE: Gather data for providers concurrently (#2873) (@tlimoncelli)
- a9a4725: BUG: ALIAS target not properly canonicalized (#2899) (@tlimoncelli)
- 42125b5: NEW RECORD TYPE: DNAME (#2893) (@imlonghao)
- 544d731: get-zones now outputs
END);
notation and prettier whitespace (#2849) (@tlimoncelli)
Provider-specific changes:
- 32b8863: AXFRDDNS: Avoid appending dot if TSIG key ID already has a dot suffix (#2855) (@halochou)
- 73c303b: CLOUDFLAREAPI: Permit adding NS records to apex domain (#2864) (@xtexChooser)
- eb19b31: GCORE: Allow PTR records (#2890) (@xtexChooser)
- f9cff3d: GCORE: add DNSSEC support (#2904) (@xddxdd)
- 22d96f2: deSEC: API rejects empty updates caused by IGNORE() of all records (#2830) (@tlimoncelli)
Documentation:
- 293d5cb: DOCS: Add missing docs for fmt, global flags, preview-push (#2886) (@tlimoncelli)
- 998c32e: DOCS: Broken documentation URL's (#2839) (@cafferata)
- c112e91: DOCS: Commands preview/push (#2888) (@cafferata)
- 3918c75: DOCS: Document daily update limits (#2835) (@tlimoncelli)
- 11d8e08: DOCS: Trailing commas (#2851) (@cafferata)
- 4f23b2a: DOCS: Warn that get-certs will be removed without notice (#2902) (@tlimoncelli)
- e3ea652: Docs: Fixed step number in
writing-providers
(#2820) (@riku22) - 27feced: GitHub: Added contact links (#2852) (@cafferata)
- 1ae265e: Add documentation for preview/push (#2884) (@tlimoncelli)
CI/CD:
- 3920d19: Build(deps): Bump actions/cache from 4.0.0 to 4.0.1 (#2869) (@dependabot[bot])
- 17115b6: Build(deps): Bump actions/upload-artifact from 4.3.0 to 4.3.1 (#2836) (@dependabot[bot])
- 0f4ca76: Build(deps): Bump alpine from 3.19.0 to 3.19.1 (#2823) (@dependabot[bot])
- 3beb49f: Build(deps): Bump github.com/softlayer/softlayer-go from 1.1.2 to 1.1.3 (#2827) (@dependabot[bot])
- c9e9e21: CICD: Bugfix: Changes introduced while tagging new releases cause git problems (#2818) (@tlimoncelli)
- 2cb4dcf: CICD: Bumps actions/upload-artifact from 3.1.3 to 4.3.0 (#2831) (@cafferata)
- d1b599b: CICD: GitHub Action check git status (#2817) (@cafferata)
- f010c1b: CICD: GoReleaser JSON Schema (#2816) (@cafferata)
- 558d2e8: CICD: GoReleaser release footer (#2853) (@cafferata)
- dbbc9e5: CICD: Provide the correct GitHub action contexts (#2842) (@cafferata)
- fab3172: CHORE: Refactor integration tests to support multiple tests (@tlimoncelli)
- 060e50d: CHORE: Update dependencies (@tlimoncelli)
- 46ca50e: CHORE: Update dependencies (@tlimoncelli)
- 68a00bb: DEV: Fix broken DNAME test (#2903) (@tlimoncelli)
- f5bb6e6: Revert "CHORE: Refactor integration tests to support multiple tests" (@tlimoncelli)
- 68314ee: TESTING: Bug: integration tests ignore 'type' in ignoreTarget (#2867) (@tlimoncelli)
Dependencies:
- bb3d191: CHORE: Vendor go-powershell (#2837) (@tlimoncelli)
- 5e211fc: CHORE: Update deps (#2900) (@tlimoncelli)
- 3057a0b: CHORE: Update deps (@tlimoncelli)
- 17d644c: CHORE: update deps (#2906) (@tlimoncelli)
- 139cc28: CHORE: Upgrade deps (#2829) (@tlimoncelli)
- 408a70e: DEV: Adopt go 1.22.1 as minimum compiler version (#2885) (@tlimoncelli)
- 02b0bed: DEV: Upgrade to go 1.22.x (#2882) (@tlimoncelli)
- c35e062: Revert NS1 (@tlimoncelli)
- 2e5d01e: SECURITY: Fix protobuf security issue (#2875) (@tlimoncelli)
- 3a84f6c: upgrade deps (#2881) (@tlimoncelli)
Other changes and improvements:
- dfda97b: Remove dead code in WriteTypes (@tlimoncelli)
- e52ec54: Remove unused CantUseNOPURGE capability (#2877) (@tlimoncelli)
- 18f7208: Remove unused t parameter in setupTestShellCompletionCommand (@tlimoncelli)
- e6c03c0: cleanup: Remove dead code and unused params (@tlimoncelli)
- ea71a9c: deadcode: CaaTargetHasSemicolon (@tlimoncelli)
- 798c0d6: deadcode: Change/ChangeList.String (@tlimoncelli)
- 4f32ddf: deadcode: DebugUnmanagedConfig (@tlimoncelli)
- 0576cec: deadcode: Errorf (@tlimoncelli)
- 4d13c02: deadcode: NewUTF8, utf8.Execute, utf8.Exit (@tlimoncelli)
- a3dad4d: deadcode: RRstoRCs (moved) (@tlimoncelli)
- 951b47d: deadcode: SSH.StartProcess, SSH.createCmd, SSH.quote (@tlimoncelli)
- 28ca119: deadcode: WriteZoneFileRR (@tlimoncelli)
- 2ff585d: deadcode: dump Print (@tlimoncelli)
- 80ff814: deadcode: groupbyRSet (@tlimoncelli)
- 34d6e07: deadcode: groupbyRSet (@tlimoncelli)
- ed999b9: deadcode: justMsgString (move to test) (@tlimoncelli)
- c0d8ca7: deadcode: move createTestWorker (@tlimoncelli)
- ce12d89: deadcode: move sfplib.Lookups to parse_test.go (@tlimoncelli)
- 1b16cf4: deadcode: providers/doh/auditrecords.go (not a DSP) (@tlimoncelli)
- bdad44f: deadcode: providers/internetbs/auditrecords.go (not a DSP) (@tlimoncelli)
- 15f7737: deadcode: providers/opensrs/auditrecords.go (not a DSP) (@tlimoncelli)
- e4dc7aa: deadcode: quotedList() keysWithColons() (@tlimoncelli)
- b1477d3: fix unused params in: pkg/normalize (@tlimoncelli)
- 30942ac: fix unused params in: providers/akamaiedgedns (@tlimoncelli)
- b1c6ddc: fix unused params in: providers/azuredns (@tlimoncelli)
- e98187e: fix unused param...