Skip to content

REFACTOR: Adopt codeberg.org/miekg/dns instead of bespoke fields in RecordConfig#4414

Draft
TomOnTime wants to merge 13 commits into
mainfrom
release_candidate_v5
Draft

REFACTOR: Adopt codeberg.org/miekg/dns instead of bespoke fields in RecordConfig#4414
TomOnTime wants to merge 13 commits into
mainfrom
release_candidate_v5

Conversation

@TomOnTime

@TomOnTime TomOnTime commented Jul 2, 2026

Copy link
Copy Markdown
Collaborator

Issue

Problem: RecordConfig has individual fields for each rtype: MxPreference, SrvPriority, SrvWeight, SrvPort, CaaTag, CaaFlag, DsKeyTag, DsAlgorithm, DnskeyFlags, DnskeyProtocol, etc. etc. etc. This wastes memory, requires bespoke functions for each type, and so on.

Solution: Add a field called .RDATA that is an interface reference to dns.RDATA. This stores a reference to a different struct for each rtype. Thus, saving memory (once the old fields are removed). In the meanwhile, bidirectional conversion from the old and new ways is automatic. Old providers still work. New providers can use the new features.

Resolution

Release Notes

DNSControl v5 is refactoring some of the biggest internal parts of the system. There should be zero user-facing
changes. However, I'm releasing a few "test balloons" to get feedback early.

  • MAJOR REFACTOR: RecordConfig now uses (a reference to) codeberg.org/miekg/dns "RDATA" struct instead of storing individual fields.
    • This enhances RFC compliance, automatically supports all RFC record types.
    • Currently the RDATA fields are stored in the old and new location, with automatic, bi-directional syncing.
    • Eventually this will save memory in a future release when the old fields are removed.
  • Standardized factory for creating DomainConfig and RecordConfig structs. The old "manual" way still works, but is being deprecated.
  • Replaced github.com/miekg/dns (v1) with codeberg.org/miekg/dns (v2) in various places.

Extra testing needed!

  • BIND: SOA handling has been rewritten to be easier to debug and more reliable. Shouldn't have any user-visible changes but please be on the lookout for problems.
  • CLOUDFLAREAPI: CF_WORKER_ROUTES() need extra testing. Internally they were represented sometimes as WORKER_ROUTE and sometimes as CF_WORKER_ROUTE. It's amazing such complex code ever worked. Now we use CF_WORKER_ROUTE exclusively. The changes were core to the worker feature. Pleaes give extra attending and testing.
  • IMPORT_TRANSFORM() hasn't changed but related parts have.
  • Any provider that implements pseudo-types such as CF_WORKER_ROUTES(), BUNNY_DNS_PZ(), etc.

If you maintain a DNS provider, please give this release extra testing!

I only have automated testing for the following providers. All others are at risk of being broken!

AXFRDDNS_DNSSEC AZURE_DNS AZURE_PRIVATE_DNS BIND CLOUDFLAREAPI CNR
DIGITALOCEAN GANDI_V5 GCLOUD HEDNS MYTHICBEASTS NETNOD NS1 ROUTE53
SAKURACLOUD TRANSIP VERCEL

Provider maintainers! Please run the integration tests on this branch and report back any problems. (This is also an excellent opportunity to add your provider to the automated testing list)

Developer notes

  • See documentation/developer-info/cookbook.md for developer notes
  • It is now significantly easier to write providers. The translation from native to models.RecordConfig is much easier thanks to new factory functions.
  • Supporting new DNS record types, including custom record types, is significantly easier.

Future

  • "PTR magic" and "REV()" continue to work, basically unchanged. There is now an opportunity to reimplement them in a cleaner way.

Workarounds required for codeberg.org/miekg/dns

The migration to the new DNS package was very smooth. However there were some things I couldn't figure out how to do:

  • To implement pkg/txtutil/miekg.go ZoneifyQuoted(), we needed access to https://codeberg.org/miekg/dns/src/branch/main/internal/ddd/ddd.go. However, that is "internal" and therefore could not be imported. I copied the files needed to pkg/txtutil/{miekg.go miekg_test.go ddd/ddd.go}. It would be nice to not have to copy those.
  • dnsutil.Trim() returns "" when z is longer than s. That's rather unintuitive considering that strings.TrimPrefix() returns the original string in that situation. The "" result is ambiguous because it can also mean "s == z". I wrote pkg/txtutil.StripZone() which adopts a more useful behavior (though my implementation is not as performant).
  • There's no way to parse the SVCB params ("port=80 ech=1234") into a svcb.Pairs. You can run NewData("1 port=80 ech=1234") and extract the .Value. Not a big deal, but it would be nice to be able to construct the Pairs directly.

Changes

  • Add factory for models.DomainConfig: models.NewDomainConfig(zone).
  • Add factories for models.RecordConfig, replace old code where we can.
  • Down-casing, canonicalization, IDN, Stutter checking, and normalizing fields is now done when making the RecordConfig, not at the validation/normalization step. pkg/normalize/validate.go still exists and is used, but is slowly being deprecated.
  • Remove the rtypecontrol module. In the few places it was used, replace with the new RDATA functionality.
  • DNS types RP and DS were reimplemented using the new RDATA system.
  • Bidirectionally convert old models.RecordConfig fields to new.
  • Replace RecordConfig.Comparable with RecordConfig.ComparableV3 (name change to find stragglers).
  • Custom types are now described in YAML with code generated automatically (pkg/privatetypes/types_generate.yaml)
  • TLSA comparison is now done on ToUpper, not ToLower, strings.
  • Add "cookbook" of how to use new factories.
  • Integration tests: Test cfworkers and cfredirect by default.
  • Integration tests: Improve SVCB/HTTPS tests, especially for ech=IGNORE
  • LOC() is now a "builder" that outputs LOC records.
  • LOC floating point rounding error fixed
  • models.RegisterBuilder() allows you to register a new builder.
  • No longer store the "Raw" domain names (the name as the user input them). They were never used.
  • D_EXTEND() refactored. It can be much more simple and faster thanks to the other refactoring.
  • RecordConfig now stores .TypeNum which is the numeric value for the type. Eventually we'll remove .Type.
  • Change github.com/miekg/dns to codeberg.org/miekg/dns (and related packages) where possible, including new helper functions in pkg/dnsrr/dnsrr.go to help migrate away from dnsv1
  • pkg/js/helpers.js: Improve rawRecordBuilder() to be feature-compatible with recordBuilder()
  • pkg/js/helpers.js: Convert to "the new way" for A AAAA CAA CF_REDIRECT CF_SINGLE_REDIRECT CF_TEMP_REDIRECT CNAME DHCID DNAME DNSKEY DS HTTPS LOC MX NAPTR NS OPENPGPKEY PTR R53_ALIAS RP SMIMEA SOA SRV SSHFP SVCB TLSA
  • pkg/js/parse_tests update fixtures due to new JSON fields. .json files no longer have Unicode chars.
  • Zonefiles now include "real" data for custom types instead of comments.
  • New package: mustbe for converting raw data to the types we need.
  • BIND: Zonefile generator produces better files.
  • BIND: Refactor SOA serial number handling.
  • CLOUDFLAREAPI: Update SINGLE_REDIRECT, CF_REDIRECT, CF_TMP_REDIRECT, CF_WORKER_ROUTE to comply with the new way to do custom record types.
  • New functions ZoneifyQuoted, Zoneify, etc. are standard ways to create zonefile-compatible strings.

TODO

These may or may not make it into v5:

  • Use codeberg.org/miekg/dns's "Unknown record type" handling for unknown records seen in APIs.
  • 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
  • Remove the "-" support in "dnscontrol get-zones"
  • Bring back TestWriteZoneFileEach
  • Move txtutil.StripZone() to a more-appropriate pkg.

@TomOnTime TomOnTime requested a review from cafferata as a code owner July 2, 2026 18:31
@TomOnTime TomOnTime changed the title REFACTOR: Base RecordConfig on codeberg.org/miekg/dns instead of bespoke fields REFACTOR: Adopt codeberg.org/miekg/dns instead of bespoke fields in RecordConfig Jul 2, 2026
@TomOnTime TomOnTime marked this pull request as draft July 2, 2026 19:30
commit 0ddcee94dcefc9d48f819a162413f2a3cb7e8ded
Merge: efe62ad 756ef44d
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Thu Jul 2 16:20:56 2026 -0400

    Merge branch 'tlim_experiment1' into testbranch

commit 756ef44d3a8652b2ff5d89336ed15fd0c1681676
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Thu Jul 2 16:15:18 2026 -0400

    cleanups

commit 91df6dd30f0c68d9fc00ed39cf39cfd1c965b750
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Thu Jul 2 15:53:48 2026 -0400

    Cleanups

commit 713bcb8
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 30 21:20:08 2026 -0400

    m

commit f11041c
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 30 21:08:57 2026 -0400

    m

commit 40d35ca
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 17:10:08 2026 -0400

    Cleanups!

commit f3b8020
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 17:04:29 2026 -0400

    cleanups

commit ecb8df0
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 16:56:59 2026 -0400

    fix ROUTE53

commit d796850
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 16:55:07 2026 -0400

    code cleanups

commit 73a41cf
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 16:37:01 2026 -0400

    Fix LOC

commit 18ee261
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 16:30:57 2026 -0400

    Improve SVCB/HTTPS testing

commit e6b3630
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 16:08:54 2026 -0400

    Remove .NameRaw and .NameFQDNRaw (unused fields in RecordConfig)

commit af2e10e
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 14:55:15 2026 -0400

    Rearrange RecordConfig factories

commit ae87f93
Merge: 3caa333 64beb5a
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 14:35:52 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 3caa333
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 10:42:26 2026 -0400

    cleanup

commit 70463a7
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 10:38:00 2026 -0400

    Fix BUILDERS with subdomains

commit 3255b00
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 10:03:39 2026 -0400

    remove comments

commit aa4ca20
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 09:45:07 2026 -0400

    SubDomain processing should not repeat IDN conversion

commit 7694c8b
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 30 08:00:59 2026 -0400

    Revert "ROUTE53: Enable SOA record editing (#4402)" (#4403)

    This reverts commit b7d62d0.

    <!--
    ## Before submiting a pull request

    Please make sure you've run the following commands from the root
    directory.

        bin/generate-all.sh

    (this runs commands like "go generate", fixes formatting, and so on)

    ## Release changelog section

    Help keep the release changelog clear by pre-naming the proper section
    in the GitHub pull request title.

    Some examples:
    * CICD: Add required GHA permissions for goreleaser
    * DOCS: Fixed providers with "contributor support" table
    * ROUTE53: Allow R53_ALIAS records to enable target health evaluation

    More examples/context can be found in the file .goreleaser.yml under the
    'build' > 'changelog' key.
    !-->

    Co-authored-by: Tom Limoncelli <tlimoncelli@coreweave.com>

commit c106352
Author: Ilari Stenroth <istenrot@users.noreply.github.com>
Date:   Tue Jun 30 14:44:07 2026 +0300

    ROUTE53: Enable SOA record editing (#4402)

    This change enables editing SOA records.

    Co-authored-by: Ilari Stenroth <ilari.stenroth@iki.fi>

commit 3bfb7b5
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 07:58:45 2026 -0400

    remove comments

commit 0d38b1d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 30 08:12:03 2026 -0400

    empty

commit 1156dee
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 07:51:47 2026 -0400

    SAKURACLOUD CAA fix attempt

commit d2afa5f
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 30 07:36:32 2026 -0400

    fix Gandi txt with slashes

commit 84b2ca1
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 30 07:16:31 2026 -0400

    wip!

commit d6b805d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 29 21:06:37 2026 -0400

    m

commit c4d32c2
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 29 20:53:24 2026 -0400

    GANDI txt records

commit 43309c8
Merge: 729bec9 0b36a3d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 29 12:23:19 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 729bec9
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 29 08:56:27 2026 -0400

    Make go generate work better

commit ab9b459
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 29 08:49:42 2026 -0400

    fix gandi txt issue

commit 06e70ba
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 29 08:37:07 2026 -0400

    wip!

commit acfc606
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 29 08:14:17 2026 -0400

    Route53 Fix r53_alias

commit bfe3b93
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 28 23:22:39 2026 -0400

    linting

commit 582e48a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 28 23:16:27 2026 -0400

    AzureAlias: do not downcase the target

commit ea90e58
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 28 21:53:05 2026 -0400

    gandi ALIAS workaround

commit be76cdf
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 28 21:23:43 2026 -0400

    fixing ech=IGNORE

commit 3531df8
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 28 21:19:07 2026 -0400

    ech=IGNORE works

commit 9e6faf3
Merge: 9b97375 7ba346e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 28 11:09:53 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 9b97375
Merge: d3c5348 df8100e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 28 07:40:51 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit d3c5348
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 24 06:59:35 2026 -0400

    empty

commit 2a61546
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 24 06:58:36 2026 -0400

    generate

commit 78b4a06
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 21:01:32 2026 -0400

    m

commit bf017dc
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 16:53:47 2026 -0400

    fixed INCLUDE

commit dc88b95
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 16:49:04 2026 -0400

    m

commit d12e8a1
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 15:15:59 2026 -0400

    tlsazone

commit 85edacc
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 14:46:16 2026 -0400

    caa

commit f7427ff
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 14:31:09 2026 -0400

    fix parse_test data

commit c65ad17
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 12:52:19 2026 -0400

    fix CAA Flag bug

commit a6241bc
Merge: a8bb45b d065c0a
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 10:32:09 2026 -0400

    Merge branch 'tlim_experiment1' into tlim_experiment1_hjs

commit d065c0a
Merge: 73aaf6e ae7eca6
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Tue Jun 23 10:32:00 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit a8bb45b
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 23 10:29:12 2026 -0400

    m

commit 61553c5
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 22 20:42:03 2026 -0400

    debugging

commit 491faf0
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 22 20:33:00 2026 -0400

    empty

commit 57a38da
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 22 19:43:05 2026 -0400

    fix rejectif

commit c098c7d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 22 19:36:26 2026 -0400

    debug sakuracloud svcb

commit 73aaf6e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 22 19:10:37 2026 -0400

    wip!

commit 1dcedf4
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 22 08:59:10 2026 -0400

    m

commit 058a97d
Merge: 8217d93 f1d056a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 22 08:24:47 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 8217d93
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 21:14:49 2026 -0400

    wip!

commit e4b4384
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 21:08:44 2026 -0400

    wip!

commit 01fd4f3
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 20:50:44 2026 -0400

    wip!

commit 6204e19
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 16:51:31 2026 -0400

    m

commit 70f2f2a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 15:27:30 2026 -0400

    CLOUADFLAREAPI tests green

commit 6a727bc
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 15:27:20 2026 -0400

    CLOUADFLAREAPI tests green

commit 8e167cd
Merge: 434a99a 815b0ef
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 09:40:48 2026 -0400

    Merge branch 'tlim_experiment1' into tlim_experiment1_rdata

commit 815b0ef
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 21 09:40:24 2026 -0400

    BIND works!

commit 434a99a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 18:53:12 2026 -0400

    m

commit ac4658e
Merge: e422488 7021400
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 18:08:10 2026 -0400

    Merge branch 'tlim_experiment1' into tlim_experiment1_rdata

commit 7021400
Merge: 2ffc2b7 2579533
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 18:07:58 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit e422488
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 18:06:08 2026 -0400

    m

commit f47df5b
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 13:38:33 2026 -0400

    m

commit fceb6dc
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 13:18:17 2026 -0400

    wip!

commit e9b75e4
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 12:37:14 2026 -0400

    wip!

commit 033fb17
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 12:17:20 2026 -0400

    m

commit 403d757
Merge: 7f0c971 f69dc64
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Sat Jun 20 13:17:38 2026 -0400

    Merge branch 'tlim_experiment1' into tlim_experiment1_rdata

commit 7f0c971
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Thu Jun 18 12:12:28 2026 -0400

    wip!

commit 10eaf5c
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Thu Jun 18 12:12:20 2026 -0400

    wip!

commit f69dc64
Merge: 2ffc2b7 2579533
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Sat Jun 20 13:14:37 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit f31d190
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 09:28:21 2026 -0400

    m

commit 263e204
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 09:26:08 2026 -0400

    wip!

commit 6d6fd4d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 08:41:24 2026 -0400

    m

commit 561bb20
Merge: 5413473 e9a673b
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 07:52:36 2026 -0400

    Merge branch 'tlim_experiment1' into tlim_experiment1_rdata

commit e9a673b
Merge: 2ffc2b7 2579533
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 07:52:15 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 5413473
Merge: 1cb51d3 2579533
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 20 07:52:06 2026 -0400

    Merge branch 'main' into tlim_experiment1_rdata

commit 1cb51d3
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 17 11:24:13 2026 -0400

    wip!

commit aa53221
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 17 10:41:09 2026 -0400

    m

commit e195c0e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 17 08:37:03 2026 -0400

    m

commit 42f2db3
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 17 08:36:39 2026 -0400

    m

commit 95e18a5
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 15 17:05:17 2026 -0700

    wip!

commit 4930a80
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 15 16:12:57 2026 -0700

    return pointers to RDATA

commit 2ffc2b7
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 15 10:50:31 2026 -0700

    fix HEDNS

commit bce135c
Merge: 3937d23 855a01e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 15 10:10:49 2026 -0700

    Merge branch 'main' into tlim_experiment1

commit 3937d23
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon Jun 15 09:53:18 2026 -0700

    CLOUDFLAREAPI: Fix all crashes and integration tests

commit 96971f3
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun Jun 14 00:26:29 2026 -0700

    fixes

commit 3e7e557
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 23:50:50 2026 -0700

    Make panics in test more visible. Change WORKER_ROUTE to CF_WORKER_ROUTE

commit 38fe3a5
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 23:08:42 2026 -0700

    Default CF features on

commit dfb022e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 23:06:27 2026 -0700

    minimal change to HEDNS

commit 08a8db8
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 15:29:09 2026 -0700

    m

commit 43457d9
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 15:28:47 2026 -0700

    Fix LabelFromFDQNnodot

commit 7ec4a50
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 13:38:46 2026 -0700

    linting

commit e2f54ce
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 13:34:46 2026 -0700

    lintimg

commit 1d57f32
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 13:31:46 2026 -0700

    Fix NS records for HEDNS

commit 4c14d19
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 11:30:35 2026 -0700

    Fix CF_SR crash

commit c6cc853
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 09:10:35 2026 -0700

    m

commit b62817e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 09:03:48 2026 -0700

    fix SOA

commit ac1d8e9
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 07:47:48 2026 -0700

    Rename Generators to Builders

commit 69e3f7a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat Jun 13 07:20:38 2026 -0700

    import cycle fixed

commit d3e3a97
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri Jun 12 22:17:19 2026 -0700

    optional and runtimes values now work!

commit bf6e62e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri Jun 12 14:22:46 2026 -0400

    r53_alias works

commit d30b06a
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Fri Jun 12 05:49:48 2026 -0400

    m

commit 61f65f5
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Fri Jun 12 05:49:15 2026 -0400

    m

commit e7df68a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu Jun 11 09:00:50 2026 -0400

    Eliminated .F

commit 3e5f888
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 10 21:46:12 2026 -0400

    fixups!

commit e9eb1de
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 21:42:18 2026 -0400

    m

commit d29eb99
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 16:00:17 2026 -0400

    m

commit 77ffe66
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 14:56:15 2026 -0400

    m

commit 013c891
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 14:47:44 2026 -0400

    m

commit 0dbbee8
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 14:30:54 2026 -0400

    m

commit afbf78b
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 12:45:58 2026 -0400

    fix comments

commit 458544f
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 12:19:21 2026 -0400

    m

commit e6bcc76
Merge: 1e8ada9 182888e
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 10 12:17:39 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 1e8ada9
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 10 12:17:10 2026 -0400

    Replace rtypecontrol with dnsv2.RDATA and friends (#4373)

    Co-authored-by: Tom Limoncelli <tlimoncelli@coreweave.com>

commit 6c72efd
Merge: f16f30d 0c75178
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 3 20:53:33 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit f16f30d
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 3 17:11:50 2026 -0400

    better error message on Gandi

commit ee8b9cc
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 3 16:58:31 2026 -0400

    fix

commit b81e84d
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 3 16:36:22 2026 -0400

    fixed DS bug

commit d9a3a08
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Wed Jun 3 15:18:24 2026 -0400

    DS improvements

commit 556a08d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 3 10:01:00 2026 -0400

    remove dead comments

commit a76a9bf
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 3 09:31:55 2026 -0400

    SVCB now works (except ech=IGNORE is disabled)

commit 0c83aec
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 3 07:54:13 2026 -0400

    BIND passes all tests (except ech=IGNORE)

commit 98d62d0
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed Jun 3 06:36:09 2026 -0400

    m

commit 06008f6
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 2 22:12:31 2026 -0400

    m

commit bc70a32
Merge: c79b1b1 5eaf231
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 2 15:23:04 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit c79b1b1
Merge: 2012fd8 db01b64
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 2 10:21:47 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 2012fd8
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 2 09:37:45 2026 -0400

    getting everything except ECH=IGNORE working

commit aa7a210
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue Jun 2 08:33:58 2026 -0400

    Create Make*() functions, use them in FixUp().  BIND works

commit 8c4b185
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 1 14:30:11 2026 -0400

    add missing files

commit 2f9b9ca
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 1 14:01:25 2026 -0400

    Fix part of DS

commit ecd4d1f
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Mon Jun 1 13:50:52 2026 -0400

    Fix TargetHost for CNAME, ALIAS, AZUREALIAS, and more

commit c8d88a8
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 23:01:07 2026 -0400

    REFACTOR: Use a factory for DomainConfig

commit e9daf34
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 20:31:31 2026 -0400

    renames to t_ and rdata_

commit c737431
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 15:47:21 2026 -0400

    Fix intergation test **substring** updates

commit b0f8ef9
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 15:22:58 2026 -0400

    linting

commit ca3c6fb
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 14:52:56 2026 -0400

    empty

commit 7a51a4a
Merge: 8be2be1 7a079bc
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 14:50:56 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 8be2be1
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 14:47:43 2026 -0400

    phase 2 wip

commit 9a0e167
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 31 14:33:19 2026 -0400

    phase2

commit bc85db8
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat May 30 19:53:13 2026 -0400

    remove comments

commit 13b848b
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat May 30 16:14:12 2026 -0400

    Fix SOA and serial numbers

commit 2a26395
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat May 30 12:15:43 2026 -0400

    Pretty converted to dnsv2. Fix makeRecAndFix. Fix DS and RP

commit 1be8bf0
Author: Tom Limoncelli <tlimoncelli@coreweave.com>
Date:   Fri May 29 16:29:48 2026 -0400

    Migrating to dnsv2

commit 917069f
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 10:03:02 2026 -0400

    wip!

commit 6aa27ed
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 08:32:24 2026 -0400

    Fix AddNSRecords

commit 5cbde3a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 08:28:38 2026 -0400

    Add placeholders for remaining custom types

commit 5143be9
Merge: efec4ae b226341
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 08:03:12 2026 -0400

    Merge branch 'tlim_azureoptimize' into tlim_experiment1

commit efec4ae
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 08:02:59 2026 -0400

    m

commit e33206e
Merge: 703e1bf 480a6f4
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 08:01:49 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit b226341
Merge: 8cbf28d 480a6f4
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 08:01:29 2026 -0400

    Merge branch 'main' into tlim_azureoptimize

commit 703e1bf
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Fri May 29 07:48:07 2026 -0400

    m

commit b890bd0
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 23:06:54 2026 -0400

    use args consistently. normalize file order

commit 7ade52f
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 22:23:28 2026 -0400

    fix adguard

commit b716b01
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 21:35:04 2026 -0400

    worker route

commit 266395f
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 21:31:46 2026 -0400

    fix cfWorkerRoute

commit 8ade93c
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 21:00:55 2026 -0400

    implement cfworkerroute

commit 9f3c46e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 20:28:01 2026 -0400

    AZURE_ALIAS and R53_ALIAS

commit 0190255
Merge: ee2018a df8e1f3
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 19:13:08 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 8cbf28d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 19:09:40 2026 -0400

    linting

commit deeecfa
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 19:02:30 2026 -0400

    more

commit 469f2bd
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 18:53:45 2026 -0400

    fix only()

commit 74e03bf
Merge: 475fd46 df8e1f3
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 18:50:24 2026 -0400

    Merge branch 'main' into tlim_azureoptimize

commit 475fd46
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 09:42:15 2026 -0400

    fixups!

commit d4b22b9
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 09:23:30 2026 -0400

    AZURE_PRIVATE_DNS: Fix more tests

commit ee2018a
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Thu May 28 08:57:06 2026 -0400

    m

commit 7564202
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed May 27 17:11:58 2026 -0400

    fix 027-ds

commit 1313e56
Merge: 3a6d065 5154617
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed May 27 16:48:11 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 3a6d065
Merge: 45d6bf4 3bd6aa3
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 26 22:33:47 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 45d6bf4
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 26 20:04:50 2026 -0400

    m

commit 92e8c82
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 26 20:03:49 2026 -0400

    m

commit 4e2a923
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon May 25 08:24:00 2026 -0400

    CICD: Skip failing HEDNS test (#4329)

    # Issue

    HEDNS fails the `testgroup("Ech")`, test.

    # Resolution

    Skip this test for now. Bug
    #4328 opened to track
    this.

commit 52cbb6e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 24 12:59:48 2026 -0400

    BUGFIX: ech=s (#4324)

    # Issue

    Bug: #3804

    **Describe the bug**
    When using `HTTPS("…", 1, ".", "alpn=h3 … ech=IGNORE")`, but ech has not yet been set by the owner, then dnscontrol keeps saying it needs to change it … by adding a space that isn't there every run…

    **To Reproduce**
    1. Create a HTTPS record with [`ech=IGNORE`](https://docs.dnscontrol.org/language-reference/domain-modifiers/https)
        - `+ CREATE ccccc.example.com HTTPS 1 . alpn="h3"  ttl=1`
    3. run dnscontrol again
        - `± MODIFY ccccc.example.com HTTPS (1 . alpn="h3" ttl=1) -> (1 . alpn="h3"  ttl=1) id=X`
    5. Observe changes, every, run…
        - `± MODIFY ccccc.example.com HTTPS (1 . alpn="h3" ttl=1) -> (1 . alpn="h3"  ttl=1) id=X`

    **Expected behavior**
    1. `+ CREATE ccccc.example.com HTTPS 1 . alpn="h3" ttl=1`
        - observe no double space between value and ttl
    2. re-run
        - observe no change to record

    **DNS Provider**
     - Cloudflare

    **Additional context**
    The ECH field needs to be managed by whoever manages the certs (probably the webserver), and when making these records but before first use means it doesn't have a value.

    Note that this issue was missed in testing because [ech has a value](https://github.com/StackExchange/dnscontrol/blob/6ef064877859f3dbc096112c8896160af9e91e3f/integrationTest/integration_test.go#L296) there…

    # Resolution

    Remove the quotes in that one situation.

commit b68b682
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 24 11:19:15 2026 -0400

    CLOUDFLAREAPI: Reduce integration tests to match the free tier (#4325)

    CC @tresni @allixsenos @jzhang-sre

    # Issue

    Some tests fail because they use features that are not available in the
    "free tier" account we use for testing.

    # Resolution

    Reduce the tests to avoid them.

    The following features will no longer be regularly tested:

      * CNAME flattening
      * Tags
      * "Single redirects" that use the "Matches" subcommand

    NOTE: Would you like these features to be tested regularly? We'd gladly
    accept the donation to enable us to buy a "business plan"-level account.
    (Cloudflare, if you're listening, we'd love a partnership!)

commit b64638f
Merge: a3c3cde 5d9726d
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sat May 23 08:42:42 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit a3c3cde
Merge: 625134c aee8769
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed May 20 16:16:30 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 625134c
Merge: 4b0a415 aac371c
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed May 20 15:09:53 2026 -0400

    Merge branch 'tlim_pipefail' into tlim_experiment1

commit aac371c
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed May 20 15:09:42 2026 -0400

    CICD: Add pipefail to catch all errors

commit 4b0a415
Merge: ddf89c4 918f795
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Wed May 20 09:40:10 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit ddf89c4
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 17:37:13 2026 -0400

    empty

commit 674e9b0
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 17:34:57 2026 -0400

    linting

commit 4c27250
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 17:27:25 2026 -0400

    diff2: fixing analyze_test.go

commit 268a4ed
Merge: 429112e 1a66a42
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 17:03:14 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 429112e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 10:04:10 2026 -0400

    m

commit 5f2ffa6
Merge: 0532d06 42ec97e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 09:56:04 2026 -0400

    Merge branch 'tlim_recordng' into tlim_experiment1

commit 42ec97e
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 09:49:56 2026 -0400

    REFACTOR: Add V3 fields to RecordConfig

commit 0532d06
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Tue May 19 09:40:22 2026 -0400

    wip!

commit 59c9ffa
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon May 18 21:18:32 2026 -0400

    Native types converted

commit 87b1660
Merge: 444d61c 47d64a9
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Mon May 18 20:57:47 2026 -0400

    Merge branch 'main' into tlim_experiment1

commit 444d61c
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 17 20:55:45 2026 -0400

    SVCB and HTTPS now supports

commit fbb8920
Author: Tom Limoncelli <tal@whatexit.org>
Date:   Sun May 17 19:05:06 2026 -0400

    Use RCv3 in diff2
@imlonghao

Copy link
Copy Markdown
Member

I tested this with PORKBUN and breaking.

Can we remove PORKBUN_URLFWD since it's an alias to URL and URL301 since #3951 and the new version is v5?

=== RUN   TestDNSProviders
Testing Profile="PORKBUN" (TYPE="PORKBUN")
=== RUN   TestDNSProviders/122323.xyz
=== RUN   TestDNSProviders/122323.xyz/Clean_Slate:Empty
    helpers_integration_test.go:246: 
        - DELETE final.122323.xyz TXT "TestDNSProviders was successful!" ttl=600, porkbun ID: 560927484
=== RUN   TestDNSProviders/122323.xyz/99:PORKBUN_URLFWD_tests:Add_a_urlfwd
WARNING: `PORKBUN_URLFWD` is deprecated. Please use `URL` or `URL301` instead.
    helpers_integration_test.go:246: 
        + CREATE urlfwd1.122323.xyz URL "http://example.com" "" "" "" includePath=no wildcard=yes ttl=0
    helpers_integration_test.go:251: failed create url forwarding record (porkbun): porkbun API error: Invalid value for location. URL:api.porkbun.com/api/json/v3/domain/addUrlForward/122323.xyz 
--- FAIL: TestDNSProviders (10.23s)
    --- FAIL: TestDNSProviders/122323.xyz (10.23s)
        --- PASS: TestDNSProviders/122323.xyz/Clean_Slate:Empty (7.00s)
        --- FAIL: TestDNSProviders/122323.xyz/99:PORKBUN_URLFWD_tests:Add_a_urlfwd (3.21s)
FAIL
exit status 1
FAIL    github.com/DNSControl/dnscontrol/v4/integrationTest     11.085s
failed to wait for command termination: exit status 1

# Issue

Test TestWriteZoneFileEach is commented out because it was failing.

# Resolution

Fix TestWriteZoneFileEach
TomOnTime added 2 commits July 5, 2026 10:02
* TLSA fixtures should have uppercase hex data
* cookbook.md: Add info about models.LabelFromFQDNWithDot
* Add NewRecordConfigForRRv2toRC() for use by BIND
* Replace RRtoRCV2 with RRv2toRC, which removes any layering violations
* Fix TestWriteZoneFileTxt to handle FQDNs right
…ssing, not after (#4425)

* MakeDomainNameVarieties() immediate after processing dnsconfig.js
instead of fixing it later in the PostProcess hack.
* Remove hack where we copied
DomainConfig.{Name,NameRaw,Tags,UniqueName} and others into
DomainConfig.Metadata. This requires a new signature for
EnsureZoneExists() and updating all pkg/js fixtures
## Summary

Fixes the AliDNS audit path for internationalized CNAME targets that
have already been converted to ACE/punycode before `AuditRecords` runs.

AliDNS supports ASCII and Chinese IDN values, but rejects non-Chinese
IDN targets such as `ööö.com.`. During integration testing, that target
reaches the provider audit as `xn--ndaaa.com.`, so the existing
ASCII/Chinese check sees only ASCII and allows it through. The AliDNS
API then rejects the create request with `SubDomainInvalid.Value`.

This changes `targetConstraint` to decode the target with
`idna.ToUnicode` before applying the existing AliDNS string validation.
That preserves support for ASCII and Chinese IDN targets while rejecting
non-Chinese IDN targets during audit, so the integration test is skipped
as provider-unsupported instead of failing at the API call.

related to: #4421

## Tests

```bash
go test ./providers/alidns
go test ./integrationTest -run TestNonExistent -count=0
```
willpower232 and others added 3 commits July 6, 2026 08:53
#4421 (comment)


#4421 (comment)

not sure if there is a neat way of detecting the provider or not,
probably preferable to making a second kind of URL301 type
# Issue

MakeSVCB() uses an inefficient parser. It builds up a big string, parses
it, and tosses most of the results.

# Resolution

Use svcb.Parse() to only parse the parts we need.

Co-authored-by: Tom Limoncelli <tlimoncelli@coreweave.com>
…methods (#4426)

* Rewrite `models.backfill()` to set legacy fields directly. Do not use
`SetTarget*()` helpers. This prevents accidental infinite recursion.
* `MakeCAA()` now validates the tag string.
* BUGFIX: `MyNewData()` appended wrong domain.
* Create `models.legacySetTargetArgs()` and
`models.legacySetTargetParse()` to make it easier to moderize
`models/t_*.go` files
* Add `dc.AddTestRCParse()`
* Moderize `models.t_caa.go`
* Moderize `models/t_dnskey.go`
* Modernize `models/t_ds.go`
* Rewrite `t_parse.go` to use `legacySetTargetParse()`
* Rewrite `PopulateFromString()` to use `PopulateFromStringFunc()`
* Modernize `pkg/diff2/analyze_test.go`
* Convert `pkg/diff2/handsoff_test.go` to use dnsv2
* Rewrite `pkg/dnsrr/dnsrr.go` to use RecordConfig factories, not
`SetTarget*()` helpers. This prevents accidental infinite recursion.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment