Greetings DNS fans!
Release Highlight!
The big change in this release is all the documentation and examples have been changed to use the new REGISTRAR() and SERVICE() functions. These replace NewDnsProvider(), DnsProvider(), and NewRegistrar() (which still work). The conversion guide is here: https://docs.dnscontrol.org/getting-started/converting-dnsconfig.
Way back when we had the first Monthly DNSControl Community Video Conference Call, my first question was "what's the most confusing part of DNSControl?" Multiple people pointed out that having to define every provider twice (once as a registrar, once as a DNS Service provider) confused them when they first got started. Thus began a long journey of finding a better, more simple, syntax.
This release concludes that story. Now there's no need to define variables for providers. Just specify SERVICE("foo") where "foo" is the name of an entry in creds.json. Likewise registrars are configured with REGISTRAR("foo"). No temporary variables. Just say what you want and point DNSControl at the creds.json entry directly.
Give it a try and please file bugs if you have questions or suggestions.
And, yes, the old syntax still works and will be supported as long as possible.
Gratitude
Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!
Sincerely,
--Tom Limoncelli
Monthly video call!
Everyone is invited to the Monthly DNSControl Community Video Conference Call on the 2nd Tuesday of each month. Join whether you are a new user with questions or an experienced developer that wants to discuss DNSControl internals... or anything in between! Meeting details on
GitHub Discussions.
Changelog
Provider-specific changes:
Documentation:
- 0af8f52: docs: roll out registrar and service syntax (#4982) (@TomOnTime)
CI/CD:
- 2aae113: build(deps): bump alpine from 3.24.2 to 3.24.3 (#5058) (@dependabot[bot])
- 1cea823: build(deps): bump joi from 18.2.9 to 18.3.1 (#5062) (@dependabot[bot])
- 1a192aa: build(deps): bump step-security/harden-runner from 2.22.2 to 2.22.3 (#5065) (@dependabot[bot])
- 4d82d23: build(deps-dev): bump @commitlint/cli from 21.2.3 to 21.2.4 (#5059) (@dependabot[bot])
- d16c3c0: build(deps-dev): bump prettier from 3.9.9 to 3.9.10 (#5061) (@dependabot[bot])
Deprecation warnings
Warning
- REV() will switch from RFC2317 to RFC4183 sometime after v5.0 is released. This is a breaking change. Warnings are output if your configuration is affected. See https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- NAMEDOTCOM, OPENSRS 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.
Install
macOS and Linux
Install with Homebrew (recommended)
brew trust --formula dnscontrol/tap/dnscontrol
brew install DNSControl/tap/dnscontrolUsing with Docker
You can use the Docker image from Docker hub or GitHub Container Registry.
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol previewAnywhere 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/DNSControl/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade DNSControl/tap/dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.