Releases: StackExchange/dnscontrol
v4.6.1
Welcome to release v4.6.1! This is mostly a release is a clean-up release with 1 big new feature!
The big news is that DNSControl now generates command-line completion! Thanks to @whi-tw for implementing this! The command is currently in beta, and is hidden in the -h
listing until the next release. Read more about it here: https://docs.dnscontrol.org/getting-started/getting-started#1.1.-shell-completion and give feedback.
The DNSIMPLE provider was renamed DNSMADEEASY to match their company name. Please update your dnsconfig.js files.
Some changes of note:
- DNSIMPLE provider was renamed DNSMADEEASY
- PORKBUN now supports "list-zone".
- PORKBUN bug related to non
.de
domains (or.de
domains) - Large INWX sites will appreciate improvements to nameserver handling
- GCLOUD output is more compact. No more extra newlines.
- The "are you sure?" prompt of
push -i
hadY/n
wrong. It is nowy/N
. How did we not notice that in all these years? - Preparation for the internal change to TXT record handling. You'll notice that all providers now refer use accessors instead of accessing .TxtStrings directly. This will make future refactor easier.
Changelog
Provider-specific changes:
- cb9491d: DNSMADEEASY: DOCS: Fix provider name from DNS Made Simple to DNS Made Easy (#2607) (@riku22)
- 65c47cb: GCLOUD: Remove extra newline (#2611) (@tlimoncelli)
- bf4118a: INWX: Paginate through Nameserver Records (#2609) (@schwarmco)
- 32fe275: PORKBUN: Improve non .DE domain delegation processing (remove the trailing dot in NS) (#2624) (@imlonghao)
- b8096b7: PORKBUN: implement ListZones() (#2622) (@stefanwascoding)
-
- f2420e5: [DNSimple] Update DNSimple's Default name servers (#2618) (@onlyhavecans)
Other changes and improvements:
- b91bcf3: Add Shell Completion script generation (@whi-tw)
- bfa9da9: CHORE update deps (#2633) (@tlimoncelli)
- 3dab594: CHORE: More cleanups (#2632) (@tlimoncelli)
- a864d0d: CHORE: Update dependencies (#2617) (@tlimoncelli)
- 60dfbad: CHORE: Verify CI/CD process (#2608) (@tlimoncelli)
- 7a1effb: CHORE: lint (#2619) (@tlimoncelli)
- b5ce165: CHORE: update deps (#2620) (@tlimoncelli)
- b1b41c5: Change "push -i" prompt text from "Y/n" to "y/N" to match reality (#2605) (@tomfitzhenry)
- 8040e7b: REFACTOR: Add Joined and Segmented accessors to TXT, and other cleanups (#2628) (@tlimoncelli)
- 159fdf0: REFACTOR: providers should not directly access .TxtStrings (#2629) (@tlimoncelli)
- 793c3b1: dnscontrol.d.ts: fix DOMAIN_ELSEWHERE_AUTO signature (#2606) (@FiloSottile)
- 486f461: update go.mod (@tlimoncelli)
- b147fbf: wip: complete subcommands after bare flags (@whi-tw)
v4.6.0
As announced on #2262 this is the release that removes all the diff1 code. All providers now either use the diff2 algorithm or the diff1-compatibility mode. There have also been improvements to the CICD pipeline, AZURE_DNS now abides by rate limits, GCORE now handles TXT records better, INWX fixes a bug that confused zones with registered domains, and many doc updates from @cafferata.
This is the first release that is smaller than the previous release... if you believe in KLOCs:
$ git co last_commit_before_diff1_removed
HEAD is now at d3b35847 CICD Enable ad-hoc runs (#2600)
$ find * -name \*.go -print0 | xargs -0 cat | wc -l
48588
$ git co v4.6.0
$ find * -name \*.go -print0 | xargs -0 cat | wc -l
46174
That's 2414 fewer lines or about 5% of the code base.
Thanks to all the contributors! We couldn't do it without you!
Tom
Changelog
- c91fe6c: CHORE: Remove diff1 from codebase (#2575) (@tlimoncelli)
Provider-specific changes:
- 7117455: GCORE: fix TXT record double quoting (#2592) (@xddxdd)
- 397c2dc: INWX: Pull list of zones from zones, not registrar (#2577) (@costasd)
- d6d9944: AZURE_DNS should abide by 429 (Rate limit) from Azure (#2602) (@tlimoncelli)
Other changes and improvements:
- 94f6a99: DOCS: Deprecated get-certs command (#2595) (@cafferata)
- 2be618a: CHORE: Update dependencies (#2603) (@tlimoncelli)
- c41a975: CHORE: Update deps (#2594) (@tlimoncelli)
- d3b3584: CICD Enable ad-hoc runs (#2600) (@tlimoncelli)
- 431d9cf: CICD: Rename build filenames and names (dnscontrol) (#2593) (@tlimoncelli)
- 071fd2b: DOCS: Updated *_BUILDER (#2585) (@cafferata)
- e859f53: Update generated files for v4.6.0 (@tlimoncelli)
Deprecation warnings (updated 2023-02-18)
- Call for new volunteer maintainers for NAMEDOTCOM and SOFTLAYER. 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.
- ACME/Let's Encrypt support is frozen and will be removed eventually. The
get-certs
command (renews certs via Let's Encrypt) has no maintainer. There are other projects that do a better job. If you don't use this feature, please do not start. If you do use this feature, please plan on migrating to something else. See discussion in issues/1400
v4.5.0
This is mostly a "cleanup release" with a lot of bugfixes and documentation improvements.
Some notable changes:
Thanks to the many contributors to this release! This is a community effort!
HELP WANTED! The next release will remove support for the old "diff1" algorithm. Please test your configuration. Visit #2575 for details. Your feedback is needed and appreciated!
Tom
Changelog
Provider-specific changes:
- e7f1872: CSCGLOBAL: Be silent about backoffs less than 10s (#2588) (@tlimoncelli)
- 4e3f5f3: INWX: Support up to 2,147,483,647 domains (old limit was 20) (#2566) (@patschi)
- a87cf17: INWX: Updated docs for limit up to 2,147,483,647 domains (#2579) (@patschi)
Other changes and improvements:
- 60949c3: Build(deps): Bump alpine from 3.18.3 to 3.18.4 (#2574) (@dependabot[bot])
- 08338b3: Build(deps): Bump docker/login-action from 2 to 3 (#2563) (@dependabot[bot])
- 39445b1: Build(deps): Bump docker/setup-qemu-action from 2 to 3 (#2561) (@dependabot[bot])
- bf94f19: Build(deps): Bump goreleaser/goreleaser-action from 4 to 5 (#2562) (@dependabot[bot])
- 08afef7: CHORE: Clean up checkRecordSetHasMultipleTTLs (#2565) (@tlimoncelli)
- 7bf5fc6: CHORE: Increase minimum Go version to 1.21 (#2590) (@tlimoncelli)
- 2d6d536: CHORE: Update deps (#2569) (@tlimoncelli)
- cb3c020: CHORE: Update deps (#2589) (@tlimoncelli)
- dd23e88: DOCS: Align Docker command (#2571) (@cafferata)
- 9abbf44: DOCS: INWX provider improvements (#2580) (@cafferata)
- f661cd4: DOCS: TypeScript improvements (#2586) (@cafferata)
- e29642f: DOCS: Typo GitHub (#2570) (@cafferata)
- 7e79713: Fix the return types of
*_BUILDER
functions (#2583) (@Purrrpley) - 46f1511: IMPORT_TRANSFORM: Be more forgiving about non-standard rtypes (#2587) (@tlimoncelli)
- 69bf714: TESTING: handoff() tests should disable NO_PURGE (#2568) (@tlimoncelli)
- 60f9e4f: TESTING: un-skip TestDualProviders (#2576) (@das7pad)
v4.4.1
This point release fixes a bug with the new --report
flag.
Changelog
Other changes and improvements:
- fa89006: BUG: Ensure report location is not empty (#2560) (@imlonghao)
v4.4.0
Tons of new features in this release!
- New flag
--report
: Outputs a JSON-formatted report of how many changes happened on each domain. - New DNS Record Type: DHCID
- CLOUDFLAREAPI now supports NAPTR
- NETLIFY: Fix SRV priority bug
- PORKBUN can now be a registrar
Changelog
Major features:
- 1d825be: NEW FEATURE: Added "push --report" flag which generates JSON report of changes made (#2543) (@fritterhoff)
Provider-specific changes:
- af91e37: CLOUDFLAREAPI: Add NAPTR record support (#2548) (@asn-iac)
- a1c7a26: MSDNS: Improve PowerShell reliability (#2551) (@tlimoncelli)
- c9ce326: MYTHICBEASTS: Add SSHFP record support (#2545) (@tomfitzhenry)
- c4d5d9b: NETLIFY: fix SRV priority and allow apex NS records (#2549) (@imlonghao)
- 255e08c: PORKBUN: Add registrar support (#2542) (@str4d)
Other changes and improvements:
- f1fd723: Build(deps): Bump actions/cache from 3.3.1 to 3.3.2 (#2554) (@dependabot[bot])
- 0b5de1a: Build(deps): Bump actions/checkout from 3 to 4 (#2544) (@dependabot[bot])
- d75b72f: Build(deps): Bump actions/upload-artifact from 3.1.2 to 3.1.3 (#2555) (@dependabot[bot])
- 56acf4a: CHORE: Update dependencies (#2552) (@tlimoncelli)
- 5b95f29: Improve require() docs (#2553) (@tlimoncelli)
- 6ad7f34: NEW RECORD TYPE: DHCID (#2557) (@tlimoncelli)
- c01fb2d: Update Deps, fix staticcheck and golint warnings (#2558) (@tlimoncelli)
- 1c5e038: add dhcid type (@fritterhoff)
- b6e183d: add missing handling of dhcid (@fritterhoff)
- 84f0bc1: docs: Fix small route53 typo (#2546) (@major)
- 3e1e7ae: fix: correct order for dhcid (@fritterhoff)
v4.3.0
This release introduces a new provider (Mythic Beasts), a new notification target (Telegram), and brings the most computer-science-y feature we've ever added: Ordered updates.
Order updates means that changes will be ordered with respect to dependencies. For example when creating an A record and a CNAME that points to that A record, DNSControl will always try to create the A record first, so that when the CNAME is created it is pointing to a target that already exists. When removing records, the targets must be removed before their dependents (dependenters?). Some DNS providers require this kind of ordering and the provider code had to carefully re-order updates. Now this is done for the provider.
Due to the complexity of DNS, when adding, removing, and modifying records this ordering process can be very difficult to get right!
Because this feature is new and might still have bugs, it can be disabled with the --disableordering flag. (dnscontrol --disableordering preview
)
Thanks to @blackshadev for delivering this feature (and putting up with all my suggestions along the way!)
Changelog
Major features:
- e32bdc0: NEW FEATURE: Order changes based on the record dependencies (#2419) (@blackshadev)
- 5416793: NEW PROVIDER: Mythic Beasts DNS (#2528) (@tomfitzhenry)
- e26afaf: New feature: Telegram Notifier (#2503) (@chrisbrownie)
Provider-specific changes:
- 7e2e3bd: AUTODNS: Added CAA records (#2533) (@prey87)
- d8047eb: OVH: allow native OVH records for DKIM, etc. to be managed (#2535) (@masterzen)
Other changes and improvements:
- c2eb989: DOCS: Improved docker instructions (#2532) (@tlimoncelli)
- a7fe17a: Display changes, even if upstream has no records. (#2531) (@tomfitzhenry)
- c69bd43: Doc fixes noticed while writing a provider (#2530) (@tomfitzhenry)
- 8bf996b: Strip ANSI color codes from notifications (#2508) (@costasd)
v4.2.0
Holy cow! What a different 3 months makes! I was away for 2 months on a much-needed sabbatical. Now I'm caught up and releases are flowing again.
A TON of bugfixes and improvements for for BIND, Cloudflare, CSCGlobal, DigitalOcean, Google DNS, Hexonet, INWX, Linode, NS1, OVH, POWERDNS, and TRANSIP. Global changes include a new flag --no-colors
, "get-zones" produces better looking output, a broken log message is fixed, and @cafferata has generously completed another round of documentation overhauls.
Sadly this release says goodbye to 32-bit OSs. DNSControl still builds and runs on 32-bit OSes (bug reports accepted!), but we'll no longer ship binaries, packages, or containers for 32-bit Linux, FreeBSD, or Windows.
Speaking of releases, @musdav has been hard at work improving the CI/CD pipelines. Thanks, David!
Thanks to all the contributors! Github lists 193 so far! This is a community-driven project. We couldn't do it without you!
Changelog
Major features:
- 9741d3c: BIND: BUG: not handling long TXT records correctly (#2447) (@tlimoncelli)
- 012c944: New flag: --no-colors (disables colored output) (#2507) (@costasd)
- 68f0de4: 32-bit binaries are no longer supported. Update CI/CD-related files (#2524) * 1d9646d: Adjust Error message formatting for preview/push (#2477) (@asn-iac)
Provider-specific changes:
- 7fc80ac: CLOUDFLARE: BUGFIX: Proxy=full not handled in diff2 (#2525) (@tlimoncelli)
- b74da0e: CLOUDFLARE: Bump github.com/cloudflare/cloudflare-go from 0.68.0 to 0.75.0 (#2519) (@dependabot[bot])
- 5d9b82e: CLOUDFLARE: Support unicode domains (#2466) (@tresni)
- 56b11d0: CLOUDFLARE: Upgrade modules/GitHub.com/cloudflare/cloudflare go 0.70.0 (#2518) (@tlimoncelli)
- 449e2a7: CSCGLOBAL: Adding rate limit to CSCGlobal (#2490) (@atma-stackoverflow)
- fddec1d: DIGITALOCEAN: Enable get-zones "all" feature (implement ListZones()) (#2437) (@RickyGrassmuck)
- 1ea9f4c: GCLOUD: Support "private domains" plus many bugfixes (#2482) (@asn-iac)
- 4ba630d: HEXONET: Updated GO-SDK to the latest version (#2448) (@AsifNawaz-cnic)
- 3250681: INWX: Fix PTR test failing/unexpected PTR modify operation (#2430) (@patschi)
- 6808472: INWX: Implemented ListZones() support (#2428) (@patschi)
- e166160: INWX: Update providers.md maintainer (#2427) (@patschi)
- 0bf24d0: LINODE: Add Default TTL as allowed TTL (#2442) (@koesie10)
- bdbe476: NS1: Enable BYO secrets for NS1 in the CI/CD pipeline (#2523) (@costasd)
- f13ae54: NS1: Implementing API retries when receiving 429 (TooManyRequests) HTTP Error (#2506) (@kabenin)
- 3c33ee2: NS1: update ns1-go to 2.7.8 (#2516) (@costasd)
- 59cbb73: OVH: Add DMARC support (#2485) (@HLFH)
- d93308f: POWERDNS: Add option to set SOA-EDIT-API when creating zones via the API (#2458) (@dkim1970)
- d00804b: TRANSIP: Improve error-checking on ListZones() (#2433) (@TomOnTime)
- bd81bb3: TRANSIP: Add runtime dependencies for container (#2434) (@Firefishy)
Other changes and improvements:
- d4f6e01: "get zones" js/djs format should generate double quotes, not single (#2526) (@tlimoncelli)
(@musdav) - 31bf652: ANNOUNCEMENT: Proposal to no longer generate 32-bit binaries (#2464) (@tlimoncelli)
- 354063c: BUGFIX: Add missing var statements at loop initialization (#2436) (@killerbees19)
- 194c471: Build(deps): Bump alpine from 3.18.2 to 3.18.3 (#2502) (@dependabot[bot])
- ec0585c: CHORE: Fix CF and NS1 due to api changes (#2520) (@tlimoncelli)
- d6a12bc: CHORE: Fix release automation (#2498) (@tlimoncelli)
- 0f1a256: CHORE: Update dependencies (#2460) (@tlimoncelli)
- 5c44e7e: CHORE: Update deps (#2500) (@tlimoncelli)
- 7a3e30b: CHORE: Update goreleaser config for new NFPM format (#2467) (@tlimoncelli)
- 794fcd6: CHORE: remove pkg/natsort which is unused (#2426) (@tlimoncelli)
- acd47d5: CORE: Update docs CCI -> GHA (#2496) (@tlimoncelli)
- 89cc1f0: DOCS: Expand docs about how to use notifications (#2504) (@cafferata)
- 7977a7b: DOCS: Improve consistency in code examples in language reference (#2439) (@cafferata)
- 5b3bb31: DOCS: Improved the preview of the new rtypes addition. (#2441) (@cafferata)
- e211bfb: DOCS: Remove second parameter from NewDnsProvider() (#2505) (@cafferata)
- 8656ffd: DOCS: The Javascript code examples are no longer tied to a DNS provider (#2443) (@cafferata)
- 38b0be5: Fix types for SPF_BUILDER (#2487) (@j-f1)
- 7ab38dd: dnscontrol get-zones --help typo fix (#2459) (@jesse-matsec)
v4.1.1
The focus of this bugfix release is to fix the BIND provider which was not naming zonefiles correctly (fixed in #2407). Container fans will appreciate that containers are now also uploaded to GHCR (https://github.com/stackexchange/dnscontrol/pkgs/container/dnscontrol) which has more generous download/rate limits.
Changelog
Provider-specific changes:
- c0770e6: AUTODNS: Guard against conversion errors (#2396) (@tlimoncelli)
- 207ed69: BIND: Automatically create the subdirectories leading up to zonefiles (#2397) (@tlimoncelli)
- 23ba49e: BIND: reset zonefile for reading records (#2407) (@fritterhoff)
- 3492b26: CLOUDFLAREAPI: Allow API debugging to be enabled via env variable (#2395) (@hmoffatt)
Other changes and improvements:
- f4ae37f: Also push container images to github / gcr.io (#2408) (@Firefishy)
- 8b915a4: Build(deps): Bump github.com/G-Core/gcore-dns-sdk-go from 0.2.3 to 0.2.6 (#2413) (@dependabot[bot])
- ce89f7f: CHORE: Eliminate SetTargetTXTString() (#2409) (@tlimoncelli)
- e9b4b9b: CHORE: Rename js.Javascript to js.JavaScript (#2405) (@tlimoncelli)
- c1777cf: CHORE: Update dependencies (#2415) (@tlimoncelli)
- 9c9ff4d: CICD: Add required GHA permissions for goreleaser (#2424) (@Firefishy)
- 5477b10: CICD: Also push container images to GitHub Container Registry (ghcr.io) (#2418) (@Firefishy)
- 2606487: Create codeql.yml (@tlimoncelli)
- e6f3fb4: DOCS: Add to styleguide info about top-of-doc params (#2404) (@tlimoncelli)
- f5a9f8b: DOCS: TypeScript updates (#2402) (@j-f1)
- 83a7f06: DOCUMENTATION: Add JSDoc info to style guide (#2403) (@tlimoncelli)
- f80f94f: REFACTOR: .target should always be FQDN (#2421) (@tlimoncelli)
- 83e41e5: Revert "Also push container images to github / gcr.io" (#2416) (@tlimoncelli)
v4.1.0
Welcome to v4.1.0! The big new feature is the IGNORE() function. There are many other updates (see below).
Full documentation on IGNORE() Is here: https://docs.dnscontrol.org/language-reference/domain-modifiers/ignore
It is backwards compatible with the old, deprecated, IGNORE() command. However the IGNORE_NAME_DISABLE_SAFETY_CHECK
flag disappeared with v4 if --diff2=true
is enabled. This is replaced by DISABLE_IGNORE_SAFETY_CHECK
which is set at the D()
level. If you are still using diff1 (i.e. --diff2=false
) you'll need to convert. (I have high confidence this didn't break any existing configurations because no breakage has been reported). In v4.1.0 the error message was updated to tell you what to do.
Special thanks to @hmoffatt for updating the CloudFlare Go module, the API changed and required more than the usual work. Also thanks to @cafferata for so many documentation fixes and updates! This is a community-driven project and couldn't happen without all our contributors!
Changelog
Major features:
- 0b7daba: NEW FEATURE: IGNORE() (diff2 only) (#2388) (@tlimoncelli)
Provider-specific changes:
- 1405901: CLOUDFLAREAPI: Update cloudflare-go to v0.68 (#2390) (@hmoffatt)
- 7e87d5f: DESEC: implement ListZones (#2381) (@imlonghao)
- 1ef7c80: INWX: Enabling TXT with 255 bytes works (#2380) (@patschi)
Other changes and improvements:
- fb1f2bd: CHORE: Update dependencies (#2389) (@tlimoncelli)
- 0edffa1: CI: Release Docker images without the "v" (#2378) (@cafferata)
- 89b9f1b: DOCS: Code examples missing provider constants (#2384) (@cafferata)
- 9a3cd8e: DOCS: Documentation Style Guide (#2383) (@cafferata)
- 4d360d4: DOCS: Fixed creds.json example (#2385) (@cafferata)
- cfcc451: DOCS: Removed comments from
dnsconfig.js
code examples (#2386) (@cafferata) - d8f45aa: DOCS: Split horizon (#2379) (@cafferata)
- e97cf01: DOCS: consistency in code examples in language reference (#2394) (@cafferata)
- 64f083a: Update issue templates (@tlimoncelli)
- 5ae2310: Update version in go.mod (#2382) (@nemunaire)
v4.0.1
A small but useful bugfix release. The dnscontrol version
command was broken and a provider wasn't calculating the number of corrections correctly.
dnscontrol version
now works (this time for sure!)- AXFRPROVIDER's "INFO" output no longer counts as a change (#2372) (@fritterhoff)
- CLOUDFLAREAPI now uses the newest library (#2367) (@hmoffatt)
- New macro: M365_BUILDER() which can be used to simply set up Microsoft 365 for a domain in an opinionated way. (#2365) (@juliusrickert)
Because we've had problems with version
before, I thought I'd show some proof of testing:
MacOS:
$ ./dnscontrol version
dnscontrol "4.0.1" ("3cd907bfd3bc069b09b31e5d81ee6eb7790d2a9b") built 18 May 23 19:09 EDT
LInux:
$ rpm2cpio dnscontrol-4.0.1.x86_64.rpm | cpio --no-absolute-filenames -idmv
cpio: Removing leading `/' from member names
usr/bin/dnscontrol
67977 blocks
$ usr/bin/dnscontrol version
dnscontrol "4.0.1" ("3cd907bfd3bc069b09b31e5d81ee6eb7790d2a9b") built 18 May 23 23:09 UTC
Windows:
PS C:\> C:\Users\tlimoncelli\Desktop\dnscontrol.exe version
dnscontrol "4.0.1" ("3cd907bfd3bc069b09b31e5d81ee6eb7790d2a9b") built 18 May 23 23:09 UTC
Changelog
Major features:
- 08cdba4: NEW FEATURE: M365_BUILDER() (Microsoft 365 builder) (#2365) (@juliusrickert)
Provider-specific changes:
Other changes and improvements:
- 8ba95d4: AXFRPROVIDER: Don't count "reports" as a change (#2372) (@fritterhoff)
- 3cd907b: CHORE: Update deps (#2377) (@tlimoncelli)
- 42b3795: DOCS: Added
M365_BUILDER()
to menu and code tricks (#2371) (@cafferata) - f82bcfe: DOCS: Fix quote and a broken link (#2375) (@tlimoncelli)
- ed9654c: DOCS: More fixes (#2376) (@tlimoncelli)
- 835ea88: ci: Disable old release process (#2368) (@tlimoncelli)
- e4f9dd0: ci: Remove release.yml (#2369) (@tlimoncelli)