Greetings DNS fans!
All providers are now converted. Some "long tail" work still needed.
Most providres have been tested by me or a maintainer. However some are completely untested and WE NEED VOLUNTEERS to test them:
ADGUARDHOME
AUTODNS
DESEC
DOMAINNAMESHOP
EXOSCALE
HOSTINGDE
MIKROTIK
PACKETFRAME
RWTH
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:
- 1826646: ADGUARDHOME: Modernize record conversion (#4536) (@TomOnTime)
- 337f115: AKAMAIEDGEDNS: Fix bugs mentioned in Issue (#4466) while running integration tests (#4421) (#4487) (@meghanakudua02)
- a9ff22f: AKAMAIEDGEDNS: Modernize record conversion (#4537) (@TomOnTime)
- 218b565: ALIDNS: Modernize record conversion (#4538) (@TomOnTime)
- 5401afe: ALIDNS: audit punycoded CNAME targets (#4424) (@bytemain)
- 8950faa: AUTODNS: Modernize record conversion (#4539) (@TomOnTime)
- fdc38db: AUTODNS: support two factor authentication via TOTP (#4626) (@leon-th)
- 93f655c: AXFRDDNS: Adopt dnsv2 (partial) (#4529) (@TomOnTime)
- cb37dcb: BIND: Refactor to use modern constructs (#4423) (@TomOnTime)
- 7128ea7: BUNNYDNS: Modernize code (#4647) (@TomOnTime)
- 4e4da9c: BUNNYDNS: Modernize record conversion (#4540) (@TomOnTime)
- 94b973e: CLOUDFLAREAPI: Modernize field access (#4625) (@TomOnTime)
- f530e0e: CLOUDFLAREAPI: Reduce use of legacy functions (#4480) (@TomOnTime)
- ab531a1: CLOUDNS: Modernize record conversion (#4541) (@TomOnTime)
- c27f98b: CNR: Modernize field access (#4620) (@TomOnTime)
- 38a2273: CNR: Use diff2.ByRecord instead of diff.NewCompat (#4604) (@TomOnTime)
- f92f03a: CSCGLOBAL: Modernize record conversion (#4542) (@TomOnTime)
- 4e7b3cc: CSCGLOBAL: Use diff2.ByRecord instead of diff.NewCompat (#4605) (@TomOnTime)
- 7d3fc44: DNSIMPLE: Modernize field access (#4648) (@TomOnTime)
- b017a1d: DNSMADEEASY: fix TXT ≥256-byte round-trip and ALIAS/ANAME diff loop; document sandbox testing (#4469) (@vojtad)
- fd4dffb: FORTIGATE: Debug failing IGNORE tests (#4621) (@TomOnTime)
- 6f0dc26: GIDINET: v5 test fixes and modernize record conversion (#4451) (@zupolgec)
- c39ac7f: INFOMANIAK: Disable tests for features that do not exist (#4613) (@TomOnTime)
- 278b963: NAMECHEAP: just skip the failing tests (#4635) (@willpower232)
- f56aafd: NAMEDOTCOM: Upgrade to diff2 (#4565) (@TomOnTime)
- cf54521: NETBIRD: Add apiurl creds argument (#4486) (@3l0w)
- 97f6a9c: NETNOD: Fix typo (#4530) (@TomOnTime)
- b3d616f: PORKBUN: Modernize field access for SVCB records (#4649) (@TomOnTime)
- 5cbd56e: POWERDNS: Update access to SVCB fields (#4639) (@TomOnTime)
- 2d57bb7: ROUTE53: Modernize (#4481) (@TomOnTime)
- 430d2c6: SOFTLAYER: Use diff2.ByRecord instead of diff.NewCompat (#4606) (@TomOnTime)
- 233e37f: TRANSIP: Fix TXT bug (#4592) (@TomOnTime)
- 5d6e508: TRANSIP: Fix TXT records (#4597) (@TomOnTime)
- c683ca3: UNIFI: new API compatibility fixes + tests (#4452) (@zupolgec)
- b56dfd3: VERCEL: Modernize fields (#4619) (@TomOnTime)
- 6259760: VULTR: convert fields (#4618) (@TomOnTime)
- 4873383: desec: Modernize record conversion (#4543) (@TomOnTime)
- a3d31ee: dnscale: Modernize record conversion (#4544) (@TomOnTime)
- 5c24a8d: dnsimple: Modernize record conversion (#4545) (@TomOnTime)
- c6af85d: dnsmadeeasy: Modernize record conversion (#4546) (@TomOnTime)
- 0f1f821: domainnameshop: Modernize record conversion (#4547) (@TomOnTime)
- 8453715: dynu: Modernize record conversion (#4548) (@TomOnTime)
- ab2e50b: exoscale: Modernize record conversion (#4549) (@TomOnTime)
- 41b6cc6: fortigate: Modernize record conversion (#4550) (@TomOnTime)
- fb07524: gcore: Modernize record conversion (#4551) (@TomOnTime)
- d076712: gidinet: Modernize record conversion (#4552) (@TomOnTime)
- 70425d2: gigahost: Modernize record conversion (#4553) (@TomOnTime)
- cecd5ea: hostingde: Modernize record conversion (#4555) (@TomOnTime)
- 33d8f21: huaweicloud: Modernize record conversion (#4556) (@TomOnTime)
- 4c07681: infomaniak: Modernize record conversion (#4557) (@TomOnTime)
- 32ecb35: inwx: Modernize record conversion (#4558) (@TomOnTime)
- 620a04f: joker: Modernize record conversion (#4559) (@TomOnTime)
- fa27836: linode: Modernize record conversion (#4560) (@TomOnTime)
- 5af75bd: loopia: Modernize record conversion (#4561) (@TomOnTime)
- a862f2b: luadns: Modernize record conversion (#4562) (@TomOnTime)
- 3ed414a: mikrotik: Modernize record conversion (#4563) (@TomOnTime)
- fe93b0b: namecheap: Modernize record conversion (#4566) (@TomOnTime)
- ff88d92: netbird: Modernize record conversion (#4567) (@TomOnTime)
- 990e72f: netcup: Modernize record conversion (#4568) (@TomOnTime)
- 259b4b7: netlify: Modernize record conversion (#4569) (@TomOnTime)
- 40ad888: ns1: Modernize record conversion (#4570) (@TomOnTime)
- a5894e8: openwrt: Modernize record conversion (#4571) (@TomOnTime)
- 348304e: oracle: Modernize record conversion (#4572) (@TomOnTime)
- 62031d9: packetframe: Modernize record conversion (#4573) (@TomOnTime)
- 7a40210: porkbun: Modernize record conversion (#4574) (@TomOnTime)
- a974a34: powerdns: exclude from DS and DNSKEY record tests (#4614) (@jpbede)
- 9a2e03b: realtimeregister: Modernize record conversion (#4575) (@TomOnTime)
- 1f7ad07: rwth: Modernize record conversion (#4577) (@TomOnTime)
- c813ead: sakuracloud: Modernize record conversion (#4578) (@TomOnTime)
- eb5b16f: scaleway: Modernize record conversion (#4579) (@TomOnTime)
- cde24d1: softlayer: Modernize record conversion (#4580) (BLIND MERGE) (@TomOnTime)
- ba1463d: tencentdns: Modernize record conversion (#4581) (@TomOnTime)
- 4a76fbf: unifi: Modernize record conversion (#4582) (@TomOnTime)
- 823586c: vultr: Modernize record conversion (#4583) (@TomOnTime)
- d66b241: websupport: Modernize record conversion (#4584) (@TomOnTime)
Documentation:
- 7f6139a: DOCS: Document RecordConfig V3 best practices (#4464) (@TomOnTime)
CI/CD:
- f8f1cae: Build(deps): Bump brace-expansion from 5.0.7 to 5.0.9 (#4629) (@dependabot[bot])
Dependencies:
- 9d334eb: CHORE: Update dependencies (#4628) (@TomOnTime)
- 9901840: Update deps (@TomOnTime)
Other changes and improvements:
- c097900: BUG: SPF flattening no longer drops the last term of an include with no "all" (#4630) (@shuvamk)
- 637fbaf: BUG: preview no longer errors when a zone will be created by push (#4612) (@lopster568)
- fcb93e9: BUGFIX: IsPrivateType has an off-by-one error (@TomOnTime)
- f365b0b: BUGFIX: PrettySort not working with PTR-like short names (#4420) (@TomOnTime)
- 68bd3d1: CHORE: "vet -fix" (#4465) (@TomOnTime)
- bfa8067: CHORE: Add Must* equivs of RecordConfig factories (#4461) (@TomOnTime)
- 0df590a: CHORE: Adopt models.MustNewDomainConfig where appropriate (@TomOnTime)
- d38ac06: CHORE: Cleanups to make merging with v5 easier (#4444) (@TomOnTime)
- 51c0dc7: CHORE: Delete obsolete comments (#4455) (@TomOnTime)
- cb6e7ae: CHORE: Eliminate legacy SOA fields (#4615) (@TomOnTime)
- 641d744: CHORE: Fix ALIAS and modernize BIND, CLOUDFLAREAPI, GANDI_V5 (#4468) (@TomOnTime)
- fa6403c: CHORE: Fix GoReleaser to skip release candidates (#4485) (@TomOnTime)
- b3f12e6: CHORE: Fix comments (#4483) (@TomOnTime)
- 4227b12: CHORE: Fix merge error (#4528) (@TomOnTime)
- 50000e0: CHORE: Generated files should have a comment indicating so (#4476) (@TomOnTime)
- 5ddee18: CHORE: Merge from base (#4527) (@TomOnTime)
- cae316b: CHORE: Sync with main (#4589) (@TomOnTime)
- c1d31c9: CORE: Upgrade OVH to RecordConfig v3 functions (#4503) (@TomOnTime)
- 7428911: Change Feature Flags to Feature Summary (@tlimoncelli26)
- b6a4992: Cleanups (@TomOnTime)
- abb50c3: Cleanups (@TomOnTime)
- 8c77f74: Complete merge (@TomOnTime)
- 7f6f7c5: FIX: porkbun url/url301/porkbun_urlfwd (#4440) (@imlonghao)
- fffcf8d: Misc fixes: CLOUDFLAREAPI, TRANSIP, and nrc.Flags (#4627) (@TomOnTime)
- 1005c87: Modernize Azure DNS provider (#4490) (@TomOnTime)
- b02462c: Modernize Azure Private DNS provider (#4491) (@TomOnTime)
- 1e2fa8b: Modernize CNR provider (#4493) (@TomOnTime)
- b6da8d8: Modernize DYNU's access to SVCB records (#4650) (@TomOnTime)
- 70585b2: Modernize DigitalOcean provider (#4494) (@TomOnTime)
- 92588ce: Modernize Gandi v5 provider (#4495) (@TomOnTime)
- c00ada9: Modernize HE.net DNS provider (#4496) (@TomOnTime)
- 7e2673f: Modernize Name.com provider (#4497) (@TomOnTime)
- f518593: Modernize Netnod provider (#4498) (@TomOnTime)
- 927041e: Modernize PowerDNS provider (#4501) (@TomOnTime)
- c7324b3: Modernize TransIP provider (#4499) (@TomOnTime)
- f98aa65: Modernize Vercel provider (#4500) (@TomOnTime)
- c15de40: Prep release (#4643) (@TomOnTime)
- c6bc4e0: REFACTOR: Convert .GetRDATA().(type) to .AsTYPE (#4602) (@TomOnTime)
- 97da255: REFACTOR: Add flags to NewRecordConfig() (#4603) (@TomOnTime)
- ca96ca8: REFACTOR: CAA/DNSKEY/DS/PopulateFromString and others now use modern methods (#4426) (@TomOnTime)
- 5b31ed7: REFACTOR: Compute DomainNameVarieties() as part of dnsconfig.js processing, not after (#4425) (@TomOnTime)
- d7c6ed3: REFACTOR: Eliminate rc.ZonefilePartial (#4446) (@TomOnTime)
- 24d8ee2: REFACTOR: Fix V3 fields in SetRDATA() rather than catching them later (#4435) (@TomOnTime)
- 4dfcf0c: REFACTOR: Modernize AZURE_ALIAS and others (#4473) (@TomOnTime)
- da02ca0: REFACTOR: Modernize CF_SINGLE_REDIRECT FRAME URL URL301 (#4484) (@TomOnTime)
- e5e5c10: REFACTOR: Modernize CLOUDFLAREAPI and AZURE_DNS (partial). Add docs. (#4489) (@TomOnTime)
- 82202ee: REFACTOR: Modernize GCLOUD. New TXT type handling maintains segments inernally (#4479) (@TomOnTime)
- 33058f3: REFACTOR: Modernize LOC, MX, NAPTR, SMIMEA, SOA, SRV, SSHFP, TLSA (#4437) (@TomOnTime)
- 689149a: REFACTOR: Modernize t_svcb.go (#4438) (@TomOnTime)
- 286f15e: REFACTOR: Modernize t_txt.go (#4439) (@TomOnTime)
- 8f1283c: REFACTOR: More efficient SVCB/HTTPS parsing (#4432) (@TomOnTime)
- ec4e9b0: REFACTOR: Remove models.Records.String() (#4631) (@TomOnTime)
- 1d051bc: REFACTOR: Simplify Zonify() functions (#4448) (@TomOnTime)
- 79647b6: REFACTOR: TargetHost is never @, add TargetHostSRV (#4478) (@TomOnTime)
- de81cff: REFACTOR: Use RDATA instead of individual fields (@TomOnTime)
- 088a11f: Release v4.44.1 (#4599) (@TomOnTime)
- 96f64d3: Release v4.45.0 (#4644) (@TomOnTime)
- d3c7a48: Release v5.0.0-rc1 (#4521) (@TomOnTime)
- 153c0d6: Release v5.0.0-rc2 (#4591) (@TomOnTime)
- 1c629cf: Release v5.0.0-rc3 (#4651) (@TomOnTime)
- 562a904: Replace dnsutilv1 functions AddOrigin and TrimDomainName (#4504) (@TomOnTime)
- af11e01: Squashed commit of the following: (@tlimoncelli26)
- 9bd72ab: Switch to dnspatched (@tlimoncelli26)
- 646156c: Sync with main branch (#4533) (@TomOnTime)
- b4ef8a9: adopt newest dnspatched (@TomOnTime)
- 8fbde16: delete .bak files (@TomOnTime)
- 01ceae1: fix blackslash problem (@tlimoncelli26)
- 053d842: go mod tidy (@TomOnTime)
- 2ea8402: hetznerv2: Modernize record conversion (#4554) (@TomOnTime)
- 9b68b96: linting (@tlimoncelli26)
- 12f5bc1: linting (@TomOnTime)
- 8f51939: update is_modern.sh to include dnsv1 (#4535) (@TomOnTime)
- d39bc03: updated go.mod (@tlimoncelli26)
- fe4e7f2: v5 - add non-porkbun compatibility to url301 (#4427) (@willpower232)
- ef14a1c: wip! (@tlimoncelli26)
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 trust --formula dnscontrol/tap/dnscontrol
brew install DNSControl/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/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:
go install github.com/DNSControl/dnscontrol/v4@mainUpdate
Update to the latest version depends on how you choose to install dnscontrol on your machine.
Update with Homebrew
brew upgrade DNSControl/tap/dnscontrolAlternatively, you can grab the latest binary (or the apt/rpm/deb package) from this page.