Skip to content

Releases: StackExchange/dnscontrol

v4.12.5

18 Jul 19:13
0869052
Compare
Choose a tag to compare

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 in preview output.
  • New feature: Log the CF_SINGLE_REDIRECT statements generated when CF_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:

Documentation:

CI/CD:

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
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

09 Jul 19:47
0ed31ef
Compare
Choose a tag to compare

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:

Documentation:

CI/CD:

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
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

08 Jul 17:53
0883068
Compare
Choose a tag to compare

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:

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

02 Jul 21:08
937c0dc
Compare
Choose a tag to compare

Hi DNSControl fans!

This point release fixes a minor bug with the CLOUDFLARE CF_REDIRECT conversion. No other changes.

Changelog

Provider-specific changes:

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

02 Jul 00:43
5ef1e99
Compare
Choose a tag to compare

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

New Contributors

Full Changelog: v4.12.0...v4.12.1

Changelog

Provider-specific changes:

Documentation:

CI/CD:

Dependencies:

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

18 Jun 23:06
3b0e124
Compare
Choose a tag to compare

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:

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.11.0

16 May 13:43
c7975f9
Compare
Choose a tag to compare

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:

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.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: