Skip to content

Releases: StackExchange/dnscontrol

v4.10.0

06 May 21:09
0b25fdb
Compare
Choose a tag to compare

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:

Documentation:

CI/CD:

Dependencies:

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

09 Apr 15:55
17d644c
Compare
Choose a tag to compare

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 of preview/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:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

Read more

v4.8.2

24 Jan 17:59
Compare
Choose a tag to compare

Hello DNSControl fans!

This release is mostly bug and doc fixes. The only new feature is that GCORE now supports ALIAS records, which it always supported, but now DNSControl knows that too.

Enjoy!

Changelog

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

v4.8.1

10 Jan 19:59
858c902
Compare
Choose a tag to compare

The first release of 2024 is packed with features! 3 new and 1 rewritten providers (!!!), improved support for unrecognized DNS records, better TXT handling and a TON of bug fixes and documentation updates.

  • Three New Providers! Dynadot (thanks, @e-im!), Realtime Register (thanks, @PJEilers!), and Bunny DNS (thanks, @ppmathis!)
  • GCLOUD rewrite: rewritten using diff2.ByRecordSet. It's about 60 lines shorter and 600% more readable (@tlimoncelli)
  • Unrecognized DNS record types are less likely to crash DNSControl: Anyone migrating a DNS domain will be happy to know that unknown DNS record types no longer crash get-zones. Providers that use PopulateFromString() are less likely to crash too (@tlimoncelli)
  • The CAA_BUILDER helper now supports issue_critical and issuewild_critical (@llange)
  • TXT records are handled more accurately in GCORE, DNSIMPLE, and TRANSIP (@xddxdd, @@weppos, @cafferata)
  • AXFRDDNS can now have different servers for AXFR and DDNS (@midnightveil)

Meta issues:

  • dnscontrol version now output is simplified, enabling repeatable builds (@cafferata)
  • The integration tests now clear the DNZ zone before each group of tests instead of after. This leaves the records of the last test in place (@tlimoncelli)
  • Many improvements to how we use GoReleaser (@cafferata)
  • Tons of Doc fixes! (@cafferata, @llange and @case)

NOTE: v4.8.0 was skipped because that version was used to test a CI/CD change.

Thanks to everyone for contributing! This is a community-driven project. We couldn't do it without your support!

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Other changes and improvements:

v4.7.4

04 Jan 20:36
9873f9f
Compare
Choose a tag to compare
v4.7.4 Pre-release
Pre-release

This is a test. We want to verify that the "dnscontrol version" command still has reasonable output.

This release and tag may disappear.

Tom

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Other changes and improvements:

v4.7.3

13 Dec 19:46
0da3f75
Compare
Choose a tag to compare

Welcome to release v4.7.3! This is a bug-fix release.

BUGS fixed:

  • TRANSIP added quotes TXT records needlessly. Thanks @blackshadev!
  • AZURE_PRIVATE_DNS was disabled by default
  • CLOUDFLARE didn't populate a zone if it was just created. Thanks @jpbede!
  • CSCGLOBAL was noisy about minor ratelimit delays
  • INWX supports Null MX but the provider didn't. Thanks @gvangool!
  • DOCS had many issues fixed including many broken links and missing docs. Thanks to @cafferata for auditing the docs for errors to fix!
  • CICD: unused legacy files were removed and "go generate" is now run in the pipeline. Thanks @cafferata!
  • Cleanups: golint and staticcheck now run clean! A lot of dead code was removed and TXT record auditing is now clearer.

Thanks to everyone for their PRs, feedback, and testing! This is a community effort and it wouldn't be possible without all of you!

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

v4.6.2

30 Nov 20:11
Compare
Choose a tag to compare

Greetings!

This release has 1 new provider (Azure Private DNS) plus a lot of bugfixes and updates.

Thanks to @matthewmgamble for contributing AZURE_PRIVATE_DNS as the newest provider. Azure Private DNS is a different protocol than Azure DNS. Thanks, Microsoft!

  • NEW PROVIDER: AZURE_PRIVATE_DNS
  • OVH now supports configurable API endpoints, useful for non-EU users
  • ROUTE53 now has the ability to enable target health evaluation with its R53_ALIAS records.
  • The shell-completion subcommand is no longer hidden.
  • Missing docs for CLOUDNS and OPENSRS now have placeholders.
  • In CI/CD news, running multiple workflows at the same time no longer clobbers each other.

NOTE: The 4.6.1 release notes wrongly stated that the DNSIMPLE provider was renamed DNSMADEEASY. That's not true. I misunderstood the description of a PR. The change simply corrected a typo in documentation. My apologies for any confusion!

Thanks to everyone for contributing! This is a community-driven project. We couldn't do it without your support!

Tom

Changelog

Major features:

Provider-specific changes:

Other changes and improvements:

v4.7.2

05 Dec 13:45
cbccbbe
Compare
Choose a tag to compare

Welcome to v4.7.2!

This is the first production-ready release in the v4.7.x series (v4.7.0 and v4.7.1-beta should not be used in production; sorry about any confusion that may have caused... this was the first time doing a release that way).

This release implements a single change: How TXT records are stored internally. There should be no user-visible changes.

  • TXT-handling code is now simplified with fewer edge-cases
  • A new opinion is added ("Opinion # 8 TXT Records are one long string")
  • The get-zone subcommand now generates TAB-separated files that are more correct for TXT records (the quotes were a bug).

TXT record handling was complex because we abstracted them at the wrong layer. Code that works with TXT records is now more simple, easier to modify, and a lot of minor bugs have been squashed. For example, diff'ing old and new TXT records is consistent across all providers.

Thanks to everyone for help testing this release!

Changelog

Other changes and improvements:

v4.6.3

04 Dec 19:33
88d26c3
Compare
Choose a tag to compare

Welcome to release v4.6.3!

Due to Git weirdness (probably my fault), the ChangeLog below include everything from both v4.6.2 and v4.6.3. Since v4.6.2's tag had a problem (See #2674) people may choose to ignore v4.6.2.

What's new in v4.6.3 (that wasn't already announced in v4.6.2):

  • CICD: GoReleaser now generates a ChangeLog with more specific headings (#2661) (@cafferata)
  • TRANSIP: Fixed integration tests: Edge cases and TXT records fixed (#2673) (@blackshadev)

Thanks for all the contributions!

Tom

Changelog

Major features:

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

Other changes and improvements:

v4.7.1-beta

30 Nov 19:58
Compare
Choose a tag to compare
v4.7.1-beta Pre-release
Pre-release

THIS IS A PRE-RELEASE. DO NOT USE IN PRODUCTION. PLEASE DO TEST AND GIVE FEEDBACK ON PR #2631

The only change in this release is that TXT records are stored a new way. Instead of storing the individual segments, they are stored as one big string. The providers are now responsible for any joining, splitting, escaping, or quoting. There should be no user-visible effects.

NOTE TO MAINTAINERS OF PROVIDERS: Please test your provider. A lot changed in how TXT records are handled. Please re-run the integration tests like:

export PROVIDER_FOO=foo    # Set your ENV variables.  See providers.json for the list.
cd integrationTest/
go test -v -verbose -provider NAME_OF_PROVIDER
# This next line just runs the TXT tests.
go test -v -verbose -provider NAME_OF_PROVIDER -start 16 -end 17

Fix any broken tests. Post a comment if you need help or to let me know the test results.

The branch is tlim_newtxt_minimal.

PR is #2631