Hello DNSControl fans!
Tons of great contributions this time!
Global features:
- The most visible change is that
preview
will create missing zones at a provider. Disable this with--populate-on-preview=false
. - PTR fans will appreciate that magic PTRs now support RFC4183-style names.
- Plus many documentation improvements, code fixes, and smaller bugs fixed.
Provider improvements:
- CLOUDFLARE: TTL=300 hasn't been special for a long time. Now our code reflects that.
- CNR adds ALIAS support, better error checking, and is significantly faster in general.
- GCLOUD is now more resilient as it will attempt a one retry on 502 errors.
- HEXONET: Add error handling for MX and SRV record priority
- INWX now supports SRV "." targets
- POWERDNS fixes preview/push of non-existent zones.
- ROUTE53 now supports HTTPS, SSHFP, SVCB, and TLSA record types.
- TRANSIP is a lot faster and supports rate-limiting.
On the code side: Many warnings from golangci-lint have been fixed; a ZoneCache primitive has been added which will make it easier for providers to safely cache the list of zones at a provider (currently in use by CLOUDFLAREAPI and HETZNER; we'll convert other providers in the future).
This is a community project and we couldn't do it without all our contributors! This release has PRs from 10 people. Thanks! We couldn't do it without you!
Tom
REMINDER: "ppreview" and "ppush" are going away in Release v4.16 (the next release!). See #3142
Changelog
Major features:
- ab00797: FEATURE: Extend PTR magic handling to support RFC4183 names (#3364) (@tomhughes)
Provider-specific changes:
- 0d5b3c2: CLOUDFLARE: adopt ZoneCache (#3373) (@das7pad)
- 3556439: CLOUDFLAREAPI: No longer treat TTL=300 as special (#3368) (@tlimoncelli)
- a3d6c51: CNR: Add support for ALIAS record type (#3360) (@AsifNawaz-cnic)
- a631c5b: CNR: Initial Performance improvement; golint review (#3391) (@KaiSchwarz-cnic)
- c348e35: GCLOUD: CICD: Skip the pager1201 integration test (#3383) (@tlimoncelli)
- f666af8: GCLOUD: Re-try on 502 errors (#3376) (@tlimoncelli)
- 67db0e2: GCLOUD: remove (irrelevant) slow test (#3384) (@tlimoncelli)
- 2ef2362: HETZNER: adopt ZoneCache (#3372) (@das7pad)
- b5b2873: HEXONET: Add error handling for MX and SRV record priority parsing (#3355) (@AsifNawaz-cnic)
- 4956d3d: HEXONET: Skip unneeded test to speed up CICD (#3348) (@tlimoncelli)
- 1a1a4bf: INWX: Enable SRV to have "." target (#3380) (@tlimoncelli)
- 89c65b6: INWX: Permit "." target for SRV records (#3377) (@tlimoncelli)
- d13cf0f: POWERDNS: fix preview/push of a non-existent zone (#3338) (@Veratil)
- cc366d4: ROUTE53: Add HTTPS, SSHFP, SVCB, and TLSA record types (#3316) (@bdd)
- 8a2cf1f: TRANSIP: Change to zone-based updates to dramatically improve speed of updates (#3362) (@blackshadev)
- 5cfb907: TRANSIP: Pause when rate-limited (#3378) (@tlimoncelli)
Documentation:
- 519e4f8: DOCS: Provider URI redirect (#3307) (@cafferata)
- f971885: DOCS: Rackspace Cloud DNS provider request (#3322) (@cafferata)
CI/CD:
- 16159f3: Build(deps): Bump actions/upload-artifact from 4.5.0 to 4.6.0 (#3356) (@dependabot[bot])
- 9e88b6a: CICD: Make pager tests more visible (#3387) (@tlimoncelli)
- fc2c506: CICD: Warn user if -provider does not match profiles.json:TYPE (#3375) (@tlimoncelli)
Other changes and improvements:
- 556926a: BUG: Create zones ahead of gathering data (#3337) (@das7pad)
- 5dbe5e8: CHORE: Fix lint warnings from golangci-lint (#3311) (@tlimoncelli)
- 1742e65: CHORE: Rename
-provider
to-profile
within the GitHub integration tests. (@cafferata) - 533c7e0: CHORE: Rename
-provider
to-profile
within the documentation. (@cafferata) - e8bf7c7: CHORE: Rename
-provider
to-profile
within the integration tests. (@cafferata) - b87fb50: CHORE: Rename
providers.json
toprofiles.json
within the documentation. (@cafferata) - 59afd10: CHORE: Rename
providers.json
toprofiles.json
within the integration tests. (@cafferata) - e1c9785: CHORE: Update dependencies (#3385) (@tlimoncelli)
- 5c9b170: FEAT: Add ZoneCache primitive (#3365) (@das7pad)
- 2461f3d: REFACTOR: prettysort should unify FQDN to "@" earlier (#3323) (@tlimoncelli)
- 6926338: TESTING: Improve AXFRDDNS integration tests (#3317) (@hnrgrgr)
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.