Releases: StackExchange/dnscontrol
v4.36.1
Greetings DNS fans!
This is a bugfix release:
- macOS binaries are now properly signed! No more Gatekeeper warnings! Thanks @cafferata!
- CLOUDFLAREAPI now runs 25% faster if you use pagerules and workers.
- Binaries are now built using the most recent stable Go compiler (previously we were locked into Go 1.25)
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:
- dac7be8: CLOUDFLAREAPI: Performance improvements for "preview" when workers/redirects are managed (#4134) (@tlimoncelli)
CI/CD:
- ea6694d: BUILD: Fix bug preventing macOS binaries from being signed and notarized with an Apple Developer ID (#4135) (@cafferata)
- 97b7b43: CICD: Use latest stable golang (#4137) (@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
- 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 install StackExchange/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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade StackExchange/tap/dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.36.0
Greetings DNS fans!
Release Highlights:
- Big update for DNSIMPLE! Added support for SVCB, HTTPS, TLSA, NullMX. Now uses diff2, thus making IGNORE() more reliable plus other features. Thanks, @onlyhavecans!
- AXFRDDNS now supports OPENPGPKEY and SMIMEA records. Thanks @gucci-on-fleek!
- GCLOUD now supports AutoDNSSEC. Thanks @miono!
- The
--cmaxflag (preview/push) now defaults to 100. The old default (999) was just too large for some systems.
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:
- a016a25: AXFRDDNS: Add support for OPENPGPKEY and SMIMEA records (#4107) (@gucci-on-fleek)
- babd1cd: DNSIMPLE: Update dnsimple-go, implement SVCB, HTTPS, TLSA, Fix NullMX, Update provider to diff2 (#4106) (@onlyhavecans)
- faa7e4f: GCLOUD: Bugfix: Incomplete regular expression for hostnames (#4111) (@tlimoncelli)
- 591a7b2: GCLOUD: Enable support for AutoDNSSEC (#4118) (@miono)
Documentation:
- 14bab6f: DOCS: TypeScript recommendation and require workaround (#4127) (@cafferata)
CI/CD:
- d10a5d7: Build(deps): Bump actions/upload-artifact from 6.0.0 to 7.0.0 (#4125) (@dependabot[bot])
- aa79910: Build(deps): Bump basic-ftp from 5.0.5 to 5.2.0 (#4108) (@dependabot[bot])
- 9d893dc: Build(deps): Bump github.com/urfave/cli/v3 from 3.6.2 to 3.7.0 (#4112) (@dependabot[bot])
- 3801ccc: Build(deps): Bump minimatch from 10.2.2 to 10.2.4 (#4109) (@dependabot[bot])
- 63ba7d9: CICD: Restrict permissions in .github/workflows/pr_build.yml (#4121) (@tlimoncelli)
- a6c82d7: CICD: Restrict permissions in .github/workflows/pr_integration_tests.yml (#4123) (@tlimoncelli)
- 781e3e0: CICD: Restrict permissions in .github/workflows/pr_integration_tests.yml (#4124) (@tlimoncelli)
- 4119ef6: CICD: Restrict permissions in .github/workflows/pr_lint.yml (#4122) (@tlimoncelli)
- de381f3: CICD: Workflow does not contain permissions (#4120) (@tlimoncelli)
Dependencies:
- 95519f6: CHORE: Update dependencies (#4119) (@tlimoncelli)
- b19b360: CHORE: Update dependencies (#4128) (@tlimoncelli)
- 28ccc07: CHORE: Update dependencies (#4130) (@tlimoncelli)
Other changes and improvements:
- 3571d40: Change --cmax default to 100. Infinity is just too large (#4126) (@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
- 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 install StackExchange/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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade StackExchange/tap/dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.35.0
Greetings DNS fans!
Summary:
- Two new providers, both for network hardware! Users of Ubiquiti mesh hardware or the Mikrotik RouterOS will be happy to know the enw UNFI and MIKROTIK providers have arrived! Thanks to @zupolgec and @hedger!
- There's now an MCP Server for the DNSControl documentation. https://docs.dnscontrol.org/developer-info/mcp-server Thanks @cafferata!
- @cafferata completed many CI/CD pipeline improvements, too many to list them all. Installing DNSControl from brew on macOS systems should be significantly smoother starting with this release!
- We bid farewell to the HEXONET provider. It is replaced by the CNR provider. Always glad to see vendors maintaining their own provider code. It's much appreciated!
- Many (many!) small fixes and feature improvements. See below for details.
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
Major features:
- ec957c7: NEW PROVIDER: UniFi Network DNS provider (#4013) (@zupolgec)
- 2738bff: DOCS: Add Documentation MCP Server page (#4094) (@cafferata)
- d681623: MIKROTIK: new provider for Mikrotik RouterOS' DNS server (#4083) (@hedger)
- 045e9dc: HEXONET: Deprecated Hexonet provider implementation and documentation (#4086) (@AsifNawaz-cnic)
Provider-specific changes:
- 760d436: AKAMAIEDGEDNS: Akamai Openedgegrid golang v12.3.0 update(#4067), AKAMAICDN and CNAME on the same hostname(#2959), Support wrapped errors(#3314) (#4070) (@edglynes)
- 878229a: AUTODNS: Bugfix: More than 100 zones results in failure (#4075) (@arnoschoon)
- 4ea0ad4: CNR: add support for DNAME, DHCID, and SVCB record types (#4077) (@AsifNawaz-cnic)
- 853c20d: DESEC: Add support for OPENPGPKEY (#4099) (@wanderer)
- af1a5e9: GIDINET: Enable SRV record support (#4074) (@zupolgec)
- 3c18268: HEDNS: Preserve Dynamic DNS state & add DDNS key management (#4087) (@hedger)
Documentation:
- d2456e6: DOCS: Fixed broken providers filenames (#4082) (@cafferata)
- 859538b: DOCS: Improvements (#4081) (@cafferata)
- 5597e1b: DOCS: Remove golint, add golangci-lint (#4066) (@tlimoncelli)
CI/CD:
- 36d4d98: BUILD: GoReleaser add Docker Buildx setup to release workflow (#4103) (@cafferata)
- d70cbe8: BUILD: GoReleaser add macOS code signing and notarization (#4073) (@cafferata)
- 00673f5: BUILD: Migrate GoReleaser Docker config to dockers_v2 (#4095) (@cafferata)
- 0678c3d: Build(deps): Bump CatChen/check-git-status-action from 1 to 2 (#4098) (@dependabot[bot])
- 78a1b02: Build(deps): Bump actions/setup-node from 4 to 6 (#4084) (@dependabot[bot])
- cc3998b: Build(deps): Bump goreleaser/goreleaser-action from 6 to 7 (#4097) (@dependabot[bot])
- 01d7795: Build(deps): Bump minimatch from 10.1.1 to 10.2.2 (#4091) (@dependabot[bot])
- 86e9d52: CICD: Split pr_check_git_status into separate jobs for better PR feedback (#4079) (@cafferata)
Dependencies:
- 126cfc3: CHORE: Update dependencies (#4076) (@tlimoncelli)
- 03cb287: CHORE: Update dependencies (#4092) (@tlimoncelli)
- 6d78ec3: CHORE: Update dependencies (#4101) (@tlimoncelli)
- fe4f24c: CHORE: Update dependencies (#4104) (@tlimoncelli)
- 04d97e5: CHORE: Update dependencies / update bin/generate-all.sh (#4078) (@tlimoncelli)
Other changes and improvements:
- 693a7b7: CHORE: Fix String Builder lint issues (#4090) (@tlimoncelli)
- ab4b454: CHORE: Fix linting issues (#4100) (@tlimoncelli)
- db92276: CHORE: GoReleaser align changelog regex with actual provider constants (#4072) (@cafferata)
- 793886d: CHORE: fixed parser test data for the MIKROTIK provider (#4093) (@hedger)
- 1522712: CHORE: remove dead code: HintRecordSetLen1 (#4096) (@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
- 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 install StackExchange/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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade StackExchange/tap/dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.34.0
Greetings DNS fans!
POSSIBLE BREAKING CHANGE!
- INWX USERS! If you use the NAMESERVER() operator, behavior has changed to be like all other providers. In the past you were unable to delete entries, only add to them. Now NAMESERVER() (if it exists in your D() statement) replaces the delegations at the registrar. Please test your configuration before putting this release into production. You may need to add NAMESERVER() statements.
Highlights:
- d77c263: Fix SPF optimizer bug related to +mx and related (#4062) (@cafferata)
- 47866f9: BUNNY_DNS now supports PullZone records (#4053) (@matteocontrini)
- 6f30347: Homebrew releases now use modern methods (#3734) (@cafferata)
- 6d2074b: INWX handles NAMESERVER() statements correctly, replacing (not adding to) the registrar list POSSIBLE BREAKING CHANGE (#4052) (@axeldunkel)
- b8d1d55: LINODE accepts
CAArecords with non-zero flags (#4049) (@grahammiln)
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:
- 6d2074b: INWX: Bugfix: NAMESERVER() should replace registrar list, not merge into it (#4052) (@axeldunkel)
- b8d1d55: LINODE: Accept
CAArecords with non-zero flags (#4049) (@grahammiln)
Documentation:
- 5fc0efe: DOCS: Fix numbering on writing-providers.md (#4064) (@tlimoncelli)
CI/CD:
- 6f30347: BUILD: GoReleaser integration for Homebrew Cask (#3734) (@cafferata)
- 24d3680: Build(deps): Bump @isaacs/brace-expansion from 5.0.0 to 5.0.1 (#4056) (@dependabot[bot])
- 7adecc6: CICD: Add golangci-lint-action to PR pipeline (#4058) (@cafferata)
Dependencies:
- 8fa88fb: CHORE: Update dependencies (#4065) (@tlimoncelli)
Other changes and improvements:
- d77c263: BUGFIX: Fix SPF parsing of qualified mechanisms like +mx (#4062) (@cafferata)
- 47866f9: BUNNY_DNS: Add support for PullZone (PZ) record type (#4053) (@matteocontrini)
- afd69e9: CHORE: Add missing providers to GoReleaser release notes regex (#4063) (@cafferata)
- 7b6b8ee: REFACTOR: Fix golint warnings (#4060) (@tlimoncelli)
- 851e9eb: REFACTOR: Modernize code (#4054) (@tlimoncelli)
- f38e12c: REFACTOR: Remove dead code, fix comments (#4057) (@tlimoncelli)
- e37a839: bump actions/cache from 5.0.2 to 5.0.3 (#4061) (@dependabot[bot])
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
- 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 install StackExchange/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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade StackExchange/tap/dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.33.1
Greetings DNS fans!
Summary: This is a bugfix release (and 2 small additions came along for the ride). If you use the new Cloudflare comments and tags feature, you can now remove those comments and tags too!
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:
- ec5e9b7: CLOUDFLAREAPI: Fix comment and tag removal not taking effect (#4045) (@allixsenos)
- dfb1ed5: LINODE: Enable Service (SRV) record support (#4048) (@grahammiln)
Dependencies:
- fe8fcf4: CHORE: Update deps (#4047) (@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
- 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 install 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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.33.0
Greetings DNS fans!
WARNING: This release overhauled two internal systems. There should be no user-visible affects. However... please test carefully before putting it into production. What changed? (1) how DS records are managed (this doesn't affect many users), and (2) how IP addresses are managed (this affects everyone).
Highlights:
- 2 new providers! GIDINET and INFOMANIAK! Grazie to @zupolgec for contributing Gidinet (both DNS provider and registrar) (#4004), and thanks to @jbelien for adding INFOMANIAK (also both DNS provider and registrar) (#3574)
- 2 big refactoring projects: DS was rewritten to use the more modern RecordConfigV2 (#3996) and we converted net.IP to the more modern netip.Addr (#4012)
- Cloudflare gained support for record comments, tags, and CNAME flattening thanks to @allixsenos
- DESEC gained support for LOC record (#4011) thanks to @androw
- DIGITALOCEAN doccs have been updated (#4029) thanks to @chicks-net (he also contributed #4041 which fixed many broken links)
- JOKER now correctly updates TTLs on CAA and other records #4019 thanks to @grahammiln
- And many other improvements!
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
Major features:
- fa57bf0: NEW PROVIDER: Gidinet DNS provider and registrar (#4004) (@zupolgec)
- 776b666: NEW PROVIDER: INFOMANIAK (#3574) (@jbelien)
- 906495a: REFACTOR: Rewrite DS to use RecordConfigV2 (#3996) (@tlimoncelli)
- e999c7f: REFACTOR: Convert net.IP to netip.Addr (#4012) (@tlimoncelli)
Provider-specific changes:
- d0a0a02: CLOUDFLAREAPI: Add per-record CNAME flattening support (#4020) (@allixsenos)
- 5ae29a6: CLOUDFLAREAPI: Add support for record comments and tags (#4025) (@allixsenos)
- 5400286: CLOUDFLAREAPI: Reduce confusion by making CF_CNAME_FLATTEN_ON and CF_PROXY_ON mutually exclusive (#4026) (@allixsenos)
- 39be60d: DESEC: add support for LOC record (#4011) (@androw)
- 5021e61: DIGITALOCEAN: self-documenting Cannot()s for unsupported features (#4029) (@chicks-net)
- 2bb352f: JOKER: TTLs may not always be set for CAA and other records (#4019) (@grahammiln)
Documentation:
- f792c87: DOCS: Fix DKIM_BUILDER instruction typo ("note" not "notes") (#4027) (@flindeberg)
- e5e7934: DOCS: debug provider links that had underscores before 3909 (#4041) (@chicks-net)
CI/CD:
- cef3402: Build(deps): Bump alpine from 3.23.2 to 3.23.3 (#4032) (@dependabot[bot])
- 0d0ee28: CICD: Enable testing of cloudflare redirects (#4022) (@tlimoncelli)
Dependencies:
- 26cb204: CHORE: Upgrade dependencies (#4037) (@tlimoncelli)
Other changes and improvements:
- e01b174: FEATURE: Output memory statistics (--full) (#4031) (@tlimoncelli)
- b346a4c: BUGFIX: avoid collisions in context with custom type (staticcheck/SA1029) (#4014) (@grahammiln)
- 59f4da4: BUGFIX: avoid impossible comparison (staticcheck/SA4003) (#4015) (@grahammiln)
- 0e5fbef: BUGFIX: error contains advice for presentation (staticcheck/ST1005) (#4016) (@grahammiln)
- 375b150: CHORE: generate-all.sh (#4043) (@tlimoncelli)
- 566df5e: REFACTOR: Label legacy miekg/dns package as dnsv1 (#4024) (@tlimoncelli)
- a91c54b: REFACTOR: use idiomatic Go (staticcheck/S1002+S1009) (#4017) (@grahammiln)
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
- 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 install 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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.33.0-beta1 (Please test if you use DS records!)
Greetings DNS fans!
This is a pre-release. If you use DS records, please test this extensively.
The DS record type has been rewritten to use the new RecordConfigv2 struct. It should be entirely backwards compatible with older providers. However, to be extra cautious, I'm releasing this as a pre-release.
It currently passes all integration tests on the platforms I have access to.
- Test with providers not listed here: https://github.com/StackExchange/dnscontrol/actions/runs/21334415887
- Please test in your environment (with caution!). Please use
previewfirst. Try deleting, creating, and modifying DS records.
This is on a tight schedule. If I don't hear of any show-stopper bugs, it will be merged on Monday, Feb 2, 2026.
Thanks!
--Tom Limoncelli
Changelog
Other changes and improvements:
- 906495a: REFACTOR: Rewrite DS to use RecordConfigV2 (#3996) (@tlimoncelli)
Install
macOS and Linux
Install with Homebrew (recommended)
brew install 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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.32.0
Greetings DNS fans!
Highlights:
- 9e73e73: BunnyDNS users will be happy to learn that DNSControl has been updated to allow SRV "." targets, which BunnyDNS only recently started supporting (#4003)
- ae9759d: Cloudflare users will be happy to know that the warnings the CF Dashboard displays about TXT records are a thing of the past... at least for TXT records created and or updated starting with this version (#3834) (@tlimoncelli)
- Many documentation improvements, including links to RFCs (#3970 thanks to @grahammiln!) and info on how to use VSCode and the Go Debugger (#3998)
- Internal improvements continue on the RecordConfigv2 project. Legacy providers (which is all of them, currently) are better supported.
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:
- 8a8d289: BIND: Future-proof BIND so it works work RecordConfigv2 better (#4002) (@tlimoncelli)
- 9e73e73: BUNNYDNS: Permit SRV "." targets (#4003) (@tlimoncelli)
- ae9759d: CLOUDFLAREAPI: Prevent web UI from displaying warnings about TXT records (#3834) (@tlimoncelli)
Documentation:
- fd75c58: DOCS: Expanded acronyms and added RFC links. (#3970) (@grahammiln)
- 081fb72: DOCS: Release process needs tip on how to find latest version (#4007) (@tlimoncelli)
- 29d8f36: DOCS: Update VSCode debugging instructions for itests and cmd (#3998) (@tlimoncelli)
Dependencies:
- c8c7cd5: CHORE: Update dependencies (#4006) (@tlimoncelli)
Other changes and improvements:
- c529d9d: BUGFIX: RecordConfigv2 should fix records from legacy providers (#4001) (@tlimoncelli)
- 5be6467: CHORE: Use
modernize -fixto update code (#4005) (@tlimoncelli) - 16ee9d1: CHORE: generate-all.sh (#4008) (@tlimoncelli)
- 79d42a6: REFACTOR: Move model.RRtoRC* to its own package dnsrr (#3999) (@tlimoncelli)
- dee2b04: REFACTOR: PaveArgs flags should be b/w/s for 8, 16, string (#4000) (@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
- 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 install 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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.31.1
Greetings DNS fans!
If you use the SPF optimizer, do NOT use v4.31.0. This release fixes the regression.
Version 4.31.0 introduced a bug in the SPF optimizer. Eagle-eyed @sourgrasses found and fixed the problem! Thanks!
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
Bug fixes:
- 8470260: BUGFIX: fix regression on a mechanism parts (#3994) (@sourgrasses)
CI/CD:
- c421cdc: Build(deps): Bump actions/cache from 5.0.1 to 5.0.2 (#3989) (@dependabot[bot])
- 32f3d3e: CHORE: Update Monthly video meeting info (#3993) (@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
- 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 install 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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
v4.31.0
Greetings DNS fans!
Thanks to all contributors involved in this release! This is a community project and we couldn't do it without all of your contributions!
Highlights:
- NEW PROVIDER! Welcome "DNSCALE" (https://www.dnscale.eu/) to the DNSControl family!
- BUNNYDNS now supports SVCB and HTTPS
- CLOUDNS has many bugfixes and improvements, and "create-zones" now works!
- ...and much, much, more!
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:
- 23a4b31: BIND: add missing implementation for ZoneCreator (#3980) (@fritterhoff)
- bd40291: BUNNYDNS: Add SVCB and HTTPS support (#3937) (@jeda)
- 8661346: CLOUDNS: fix format string for nameserver diff (#3975) (@RobinDaugherty)
- a5aee59: CLOUDNS: fix zone auto-creation (#3976) (@RobinDaugherty)
- 2b7fa28: CNR: prevent duplicate nameservers in registrar corrections to fix #3985 (#3987) (@AsifNawaz-cnic)
- fc8a508: DIGITALOCEAN: Disable SOA support (#3979) (@chicks-net)
Documentation:
- 251f2af: DOCS: Fix incorrect hetzner links (#3988) (@willpower232)
- eba26fd: DOCS: add DNScale (#3984) (@dnscale-ops)
Dependencies:
- 37e7c1f: CHORE: Update deps and re-run generate.sh (#3990) (@tlimoncelli)
Other changes and improvements:
- 72cbf39: DNSCALE: Add DNScale DNS provider (#3973) (@dnscale-ops)
- 819253a: fix(spf): Be case-insensitive when parsing SPF records (#3982) (@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
- 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 install 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/stackexchange/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/StackExchange/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.