Commit graph

343 commits

Author SHA1 Message Date
Thomas Limoncelli
24db38bf58
fixup! 2025-12-03 15:43:33 -05:00
Thomas Limoncelli
a4cf909357
Only ALIDNS should get TTL=600 2025-12-03 15:35:46 -05:00
Thomas Limoncelli
46c4ec431e
try DefaultTTL 2025-12-03 15:26:09 -05:00
Thomas Limoncelli
376871961f
fixup! 2025-12-03 14:23:03 -05:00
artin
dbdec14486 TESTING: increase minimum TTL values in tests 2025-12-04 00:35:18 +08:00
Sukka
daf5a7a501
VERCEL: Implement Vercel DNS Provider (#3379) (#3542)
Fixes https://github.com/StackExchange/dnscontrol/issues/3379

Thanks to @SukkaW for adding this provider!  Even though you claimed to be "not familiar with Go at all" the new code looks excellent!  Great job!
2025-12-01 08:41:56 -05:00
Jakob Ackermann
1e67585e8f
HETZNER_V2: Add provider for Hetzner DNS API (#3837)
Closes https://github.com/StackExchange/dnscontrol/issues/3787

This PR is adding a `HETZNER_V2` provider for the "new" Hetzner DNS API.

Testing:
- The integration tests are passing.
- Manual testing:
  - `preview` (see diff for existing zone)
- `preview --populate-on-preview` (see full diff for newly created zone)
  - `push` (see full diff; no diff after push)
- `push` (see full diff; no diff after push to newly created zone --
i.e. single pass and done)

```js
var REG_NONE = NewRegistrar('none')
var DSP = NewDnsProvider('HETZNER_V2')

D('testing-2025-11-14-7.dev', REG_NONE, DnsProvider(DSP),
    A('@', '127.0.0.1')
)
```

<details>

```
# push for newly created zone
CONCURRENTLY checking for 1 zone(s)
SERIALLY checking for 0 zone(s)
Waiting for concurrent checking(s) to complete...DONE
******************** Domain: testing-2025-11-14-7.dev
1 correction (HETZNER_V2)
#1: Ensuring zone "testing-2025-11-14-7.dev" exists in "HETZNER_V2"
SUCCESS!
CONCURRENTLY gathering records of 1 zone(s)
SERIALLY gathering records of 0 zone(s)
Waiting for concurrent gathering(s) to complete...DONE
******************** Domain: testing-2025-11-14-7.dev
4 corrections (HETZNER_V2)
#1: ± MODIFY-TTL testing-2025-11-14-7.dev NS helium.ns.hetzner.de. ttl=(3600->300)
± MODIFY-TTL testing-2025-11-14-7.dev NS hydrogen.ns.hetzner.com. ttl=(3600->300)
± MODIFY-TTL testing-2025-11-14-7.dev NS oxygen.ns.hetzner.com. ttl=(3600->300)
SUCCESS!
#2: + CREATE testing-2025-11-14-7.dev A 127.0.0.1 ttl=300
SUCCESS!
Done. 5 corrections.
```
</details>

Feedback for @jooola and @LKaemmerling:
- The SDK was very useful in getting 80% there! Nice! 🎉 
- Footgun:
- The `result` values are not "up-to-date" after waiting for an
`Action`, e.g. `Zone.AuthoritativeNameservers.Assigned` is not set when
`Client.Zone.Create()` returns and the following "wait" will not update
it.
- Taking a step back here: Waiting for an `Action` with a separate SDK
call does not seem very natural to me. Does the SDK-user need to know
that you are processing operations asynchronous? (Which seems like an
implementation detail to me, something that the SDK could abstrct over.)
Can `Client.Zone.Create()` return the final `Zone` instead of the
intermediate result?
- Features missing compared to the DNS Console, in priority order:
- It is no longer possible to remove your provided name servers from the
root/apex. Use-case: dual-home/multi-home zone with fewer than three
servers from Hetzner. I'm operating one of these and cannot migrate over
until this is fixed.
- Performance regression due to lack of bulk create/modify. E.g. [one of
the test
suites](a71b89e5a2/integrationTest/integration_test.go (L619))
spends about 4.5 minutes on making creating 100 record-sets and then
another 4 minutes for deleting them in sequence again. With your async
API, these are `create 2*100 + delete 2*100 = 400` API calls.
Previously, these were `create 1 + delete 100 = 101` API calls. Are you
planning on adding batch processing again?
- Usability nits
- Compared to other record-set based APIs, upserts for record-sets are
missing. This applies to records of a record-set and the ttl of the
record-set (see separate SDK calls for the cases `diff2.CREATE` vs
`diff2.CHANGE` and two calls in `diff2.CHANGE` for updating the TTL vs
records).
- Some SDK methods return an `Action` (e.g. `Zone.ChangeRRSetTTL()`),
others wrap the `Action` in a struct (`Client.Zone.CreateRRSet()`) --
even when the struct has a single field (`ZoneRRSetDeleteResult`).

---------

Co-authored-by: "Jonas L." <jooola@users.noreply.github.com>
Co-authored-by: "Lukas Kämmerling" <LKaemmerling@users.noreply.github.com>
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
2025-11-30 09:14:54 -05:00
Tom Limoncelli
1b2f5d4d34
BUGFIX: IDN support is broken for domain names (#3845)
# Issue

Fixes https://github.com/StackExchange/dnscontrol/issues/3842

CC @das7pad

# Resolution

Convert domain.Name to IDN earlier in the pipeline. Hack the --domains
processing to convert everything to IDN.

* Domain names are now stored 3 ways: The original input from
dnsconfig.js, canonical IDN format (`xn--...`), and Unicode format. All
are downcased. Providers that haven't been updated will receive the IDN
format instead of the original input format. This might break some
providers but only for users with unicode in their D("domain.tld").
PLEASE TEST YOUR PROVIDER.
* BIND filename formatting options have been added to access the new
formats.

# Breaking changes

* BIND zonefiles may change. The default used the name input in the D()
statement. It now defaults to the IDN name + "!tag" if there is a tag.
* Providers that are not IDN-aware may break (hopefully only if they
weren't processing IDN already)

---------

Co-authored-by: Jakob Ackermann <das7pad@outlook.com>
2025-11-29 12:17:44 -05:00
Jan von Aschwege
a71b89e5a2
NEW FEATURE: Add SMIMEA support for BIND and deSEC (#3786) 2025-10-10 11:16:13 -04:00
Louis Laureys
2122390f29
DOCS: Fill some question marks for cloudns (#3767)
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
2025-10-01 15:47:50 -04:00
James O'Gorman
89ac03faca
PORKBUN: Configurable retry parameters (#3746) 2025-08-28 12:24:40 -04:00
Georg
8c8948e69a
NEW RECORD TYPE: OPENPGPKEY (basic) (#3718)
Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-08-11 10:44:12 -04:00
Alex Trull
ca64774004
Joker: Implement DNS Provider (#3661)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-08-04 16:37:20 -04:00
Tom Limoncelli
633196e328
Warn if IGNORE() is unreliable for this provider (#3683) 2025-07-30 20:41:49 -04:00
Tom Limoncelli
6105082715
TESTING: Exempt 4 providers from NS_only_APEX test (#3687) 2025-07-25 09:46:59 -04:00
Paul Donald
e84925b491
Loopia: feature updates (#3686) 2025-07-24 14:41:57 -04:00
Tom Limoncelli
78c2313d71
fmt (#3684) 2025-07-23 17:49:24 -04:00
Klett IT
a815bdcf45
FORTIGATE: Add NS and MX record support (#3671)
Co-authored-by: Klett IT <git@klett-it.net>
2025-07-18 10:22:37 -04:00
Tom Limoncelli
8a6baa7c24 Reapply "CHORE: Remove the MSDNS provider (#3656)"
This reverts commit e9f136036f.
2025-07-09 13:07:03 -04:00
Tom Limoncelli
e9f136036f Revert "CHORE: Remove the MSDNS provider (#3656)"
This reverts commit 1ccd5eb532.
2025-07-09 13:06:42 -04:00
Tom Limoncelli
1ccd5eb532
CHORE: Remove the MSDNS provider (#3656) 2025-07-09 12:47:48 -04:00
Ishan Jain
e1830abb58
NEW PROVIDER: ADGUARDHOME (#3638) 2025-07-09 12:06:34 -04:00
Tom Limoncelli
b66251bfda
CHORE: update dependencies and fmt (#3655)
Co-authored-by: Klett IT <github@klett-it.net>
Co-authored-by: Klett IT <71817167+KlettIT@users.noreply.github.com>
Co-authored-by: Klett IT <git@klett-it.net>
2025-07-09 10:56:00 -04:00
Klett IT
3bdbb48164
NEW PROVIDE: FORTIGATE (#3642) 2025-07-08 08:37:19 -04:00
Max Chernoff
3ea7ea84c9
FEATURE: Support ignoring the ech= parameter in HTTPS/SVCB RR types (#3485) 2025-06-11 11:16:15 -04:00
Tom Limoncelli
277a260d64
ROUTE53: BUGFIX converting alias to cname causes failure (#3567) 2025-05-12 17:15:51 -04:00
Tom Limoncelli
5e4d68b41c
CLOUDFLAREAPI: Enable inserting DS records at the domain apex (even if they may be rejected) (#3571) 2025-05-12 17:14:32 -04:00
Vatsalya Goel
697433563f
AZURE_DNS: Dedupe nameserver (#3526)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-05-03 08:36:31 -04:00
Will Power
03932c9c1a
NAMECHEAP: fix support for url etc records (#3538)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-05-03 08:25:03 -04:00
Tom Limoncelli
c01bfdc7ab
CHORE: Future proof CAA integration test (#3449) 2025-02-24 11:11:10 -05:00
Tom Limoncelli
2c4cc0c5e5
refactor(current-domain) Remove dot from **current-domain** (#3433) 2025-02-14 07:03:33 -05:00
Tom Limoncelli
311b6d8bbb
REFACTOR: Split integration_test.go (it should mostly contain data tables) (#3420) 2025-02-06 15:13:44 -05:00
Tom Limoncelli
9e88b6a801
CICD: Make pager tests more visible (#3387) 2025-01-16 21:47:10 -05:00
Tom Limoncelli
67db0e287d
GCLOUD: remove (irrelevant) slow test (#3384) 2025-01-16 14:41:18 -05:00
Tom Limoncelli
c348e354ff
GCLOUD: CICD: Skip the pager1201 integration test (#3383) 2025-01-16 14:32:32 -05:00
Tom Limoncelli
fc2c506920
CICD: Warn user if -provider does not match profiles.json:TYPE (#3375) 2025-01-15 18:28:15 -05:00
Tom Limoncelli
5dbe5e84c9
CHORE: Fix lint warnings from golangci-lint (#3311) 2025-01-13 11:33:12 -05:00
Tom Limoncelli
4956d3d068
HEXONET: Skip unneeded test to speed up CICD (#3348) 2025-01-10 13:01:59 -05:00
Grégoire Henry
692633845a
TESTING: Improve AXFRDDNS integration tests (#3317) 2025-01-07 08:38:39 -05:00
Jeffrey Cafferata
e8bf7c71d4 CHORE: Rename -provider to -profile within the integration tests. 2025-01-06 09:38:39 -05:00
Jeffrey Cafferata
59afd10bb4 CHORE: Rename providers.json to profiles.json within the integration tests. 2025-01-06 09:38:39 -05:00
Max Chernoff
e664daea53
AXFRDDNS: Modernize, Update supported capabilities (#3294) 2025-01-03 10:08:35 -05:00
Tom Limoncelli
f202433878
CHORE: Remove debug statements (#3293) 2025-01-01 15:12:40 -05:00
Tom Limoncelli
9c3a161ccd
AXFRDDNS: Enable automated testing (#3290) 2025-01-01 14:51:58 -05:00
Tom Limoncelli
513b8be910
CICD: json files should be strictly formatted (#3282) 2025-01-01 12:02:23 -05:00
tomf
ea5e571bcf
CICD: Update docs/comments after file renames (#3278)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-01-01 09:25:56 -05:00
Tom Limoncelli
a341022068
BUGFIX: IGNORE() deletes ignored records on ByZone() platforms (#3263) 2024-12-18 20:34:52 -05:00
Tom Limoncelli
3d25d3e3bd
TEST: Improve IGNORE() integration tests (#3255) 2024-12-17 07:44:52 -05:00
Tom Limoncelli
006a434fc6
CNR: Disable pager101 integration test (#3226) 2024-12-09 15:22:00 -05:00
Asif Nawaz
b2ee265578
NEW PROVIDER: CentralNic Reseller (CNR) - formerly RRPProxy (#3203) 2024-12-06 17:01:42 -05:00