v5.0.0 #4815
TomOnTime
announced in
Announcements
v5.0.0
#4815
Replies: 1 comment
|
TENCENTDNS #e55b628 was assisted with test and revise, and all tests have passed. It just wasn’t marked as completed. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Greetings DNS fans!
v5.0.0 is released! This was a big community effort!
Thanks to all the people that helped test and fix bugs including @labrown @fm @cafferata @chicks @androw @AsifNawaz-cnic @blackshadev @bytemain @chicks-net @cylonchau @das7pad @dnscale-ops @DustyRah @eliheady @haylinmoore @huihuimoe @huskyistaken @imlonghao @jbelien @jochristian @kallsyms @KlettIT @kordianbruck @labrown @masterzen @meghanakudua02 @morozov-alexey @mtmn @patschi @pgaskin @ppmathis @rblenkinsopp @riku22 @riyadhalnur @SimenBai @SukkaW @ttkzw @vojtad @willpower232 @xddxdd @yzqzss @zupolgec (it's impossible to make such a list without forgetting someone. Apologies in advance to anyone I missed!) A special thanks to my new employer, CoreWeave, for their support!
v5.0.0 is all about EXTENSIBILITY!
dnsconfig.jsshould “just work”.How did this happen? We upgraded from github.com/miekg/dns to codeberg.org/miekg/dns (a.k.a. “DNS version 2”) and took advantage of the new features. Specifically,
models.RecordConfigno longer contains fields for each record type, most of which go unused. Instead it stores a DNS version 2RDATAinterface that contains the fields needed for that specific record type. This also allowed us to create new factories (NewRecordConfig() and NewRecordConfigParse()) which replace many lines of code in providers. As a result, every file that touchesmodels.RecordConfighad to change. Thanks to @miekg for collaborating on the RDATA features which make much of this possible.What does this mean to you?
IGNORE()is now reliable for all providers!SOArecords are no longer special. They work like all other records.DSordering works: A DS record is created after its target NS exists, and deleted only after its target NS is removeddnscontrol foonow errors “command not found” instead of carping that no help for “foo” exists.ADGUARDHOME,AKAMAIDNS,AZURE_DNS,ROUTE52,BUNNYDNS,CLOUDFLAREAPI,CLOUDNS,LUADNS,MIKROTIK,NETLIFY, andPORKBUNhave been converted to the new custom record type system. They are no longer special and even appear in zonefile backups.Some potential regressions: (These record types may not have worked previously.)
Dev notes:
Developers might be interested in the code changes, which are described here in modernizingproviders.md
models/record_astype.go) and custom types (pkg/privatetypes/) are generated.There is a new “cookbook” which explains common code patterns: Cookbook.
RecordConfigwere supported with a very slick bidirectional conversion process. As the legacy fields were eliminated, the conversionn process got closer and closer to being a no-op until suddenly the and nStats:
Testing notes
The following providers received extensive testing:
AKAMAIEDGEDNS ALIDNS AXFRDDNS AZUREDNS AZUREPRIVATEDNS BIND CLOUDFLARE CLOUDNS
CNR DESEC DIGITALOCEAN DNSCALE DNSIMPLE DOMAINNAMESHOP DYNU GANDIV5 GCLOUD
GIDINET HEDNS HUAWEICLOUD INFOMANIAK INWX LINODE LUADNS MYTHICBEASTS NAMECHEAP
NAMEDOTCOM NETBIRD NETLIFY NETNOD NEXDNS NS1 OPENWRT ORACLE OVH PORKBUN POWERDNS
ROUTE53 SAKURACLOUD TRANSIP UNIFI VERCEL VULTR WEBSUPPORT
The following providers lacked testing. Please use with caution:
ADGUARDHOME AUTODNS BUNNYDNS CSCGLOBAL DNSMADEEASY EXOSCALE FORTIGATE GCORE
GIGAHOST HETZNERV2 HOSTINGDE JOKER LOOPIA MIKROTIK NETCUP PACKETFRAME
REALTIMEREGISTER RWTH SCALEWAY SOFTLAYER TENCENTDNS
Users of the
IMPORT_TRANSFORM()andIMPORT_TRANSFORM_STRIP()functions should test carefully before using in production.Changes
The list is too long to include all commits, but here are the highlights:
models.NewDomainConfig(zone).pkg/normalize/validate.gostill exists and is used, but is slowly being deprecated.rtypecontrolmodule. In the few places it was used, replace with the new RDATA functionality.RPandDSwere reimplemented using the new RDATA system.models.RegisterBuilder()pkg/dnsrr/dnsrr.goto help migrate away from dnsv1pkg/js/helpers.js: Improved rawRecordBuilder() to be feature-compatible with recordBuilder()pkg/js/helpers.js: Convert to "the new way" for all record types.pkg/js/parse_testsupdate fixtures due to new JSON fields. .json files no longer have Unicode chars.mustbefor converting raw data to the types we need.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:
Provider-specific changes:
Documentation:
CI/CD:
Dependencies:
Other changes and improvements:
Deprecation warnings
Warning
Install
macOS and Linux
Install with Homebrew (recommended)
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/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:
Update
Update to the latest version depends on how you choose to install
dnscontrolon your machine.Update with Homebrew
Alternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.
This discussion was created from the release v5.0.0.
All reactions