Commit graph

61 commits

Author SHA1 Message Date
Patrik Kernstock
6e42ccfb31
INWX: Enable concurrency support (#3856)
Tested dnscontrol with `CanConcur()` enabled and seems to work fine.
Read #2873 to see what to do, and hope below is the right way to test.

```text
$ go build -race -o dnscontrol-race
$ ./dnscontrol-race version
v4.27.2-0.20251127184623-cf6b870052c0+dirty

$ dnscontrol-race preview
CONCURRENTLY checking for 16 zone(s)
SERIALLY checking for 6 zone(s)
Serially checking for zone: "domainX.tld"
Serially checking for zone: "domainX.tld"
Serially checking for zone: "domainX.tld"
Serially checking for zone: "domainX.tld"
Serially checking for zone: "domainX.tld"
Serially checking for zone: "domainX.tld"
Waiting for concurrent checking(s) to complete...DONE
CONCURRENTLY gathering records of 16 zone(s)
SERIALLY gathering records of 6 zone(s)
Serially Gathering: "domainX.tld"
Serially Gathering: "domainX.tld"
Serially Gathering: "domainX.tld"
Serially Gathering: "domainX.tld"
Serially Gathering: "domainX.tld"
Serially Gathering: "domainX.tld"
Waiting for concurrent gathering(s) to complete...DONE
******************** Domain: domainX.tld
INFO#1: 4 records not being deleted because of NO_PURGE:
[...]
******************** Domain: domainX.tld
******************** Domain: domainX.tld
INFO#1: 4 records not being deleted because of NO_PURGE:
[...]
******************** Domain: domainX.tld
******************** Domain: domainX.tld
******************** Domain: domainX.tld
1 correction (PK-INWX)
INFO#1: 1 records not being deleted because of IGNORE*():
[...]
******************** Domain: domainX.tld
******************** Domain: domainX.tld
******************** Domain: domainX.tld
******************** Domain: domainX.tld
30 corrections (PK-INWX)
[...]
******************** Domain: domainX.tld
******************** Domain: domainX.tld
2 corrections (PK-INWX)
[...]
******************** Domain: domainX.tld
******************** Domain: domainX.tld
******************** Domain: domainX.tld
******************** Domain: domainX.tld
2 corrections (PK-INWX)
[...]
******************** Domain: domainX.tld
******************** Domain: domainX.tld
Done. 37 corrections.
```

Unfortunately INWX sandbox is sporadically still broken so `go test` is
of limited help:
```text
$ go test -v -verbose -profile INWX
=== RUN   TestDNSProviders
Testing Profile="INWX" (TYPE="INWX")
    helpers_test.go:122: INWX: Unable to login
--- FAIL: TestDNSProviders (30.03s)
=== RUN   TestDualProviders
Testing Profile="INWX" (TYPE="INWX")
    provider_test.go:50: Clearing everything
    provider_test.go:57: Adding test nameservers
    provider_test.go:44: #1:
        + CREATE dnscontrol-inwx.com NS ns1.example.com. ttl=300
    provider_test.go:44: #2:
        + CREATE dnscontrol-inwx.com NS ns2.example.com. ttl=300
    provider_test.go:60: Running again to ensure stability
    provider_test.go:76: Removing test nameservers
    provider_test.go:44: #1:
        - DELETE dnscontrol-inwx.com NS ns1.example.com. ttl=300
    provider_test.go:44: #2:
        - DELETE dnscontrol-inwx.com NS ns2.example.com. ttl=300
--- PASS: TestDualProviders (2.44s)
=== RUN   TestNameserverDots
Testing Profile="INWX" (TYPE="INWX")
=== RUN   TestNameserverDots/No_trailing_dot_in_nameserver
--- PASS: TestNameserverDots (0.30s)
    --- PASS: TestNameserverDots/No_trailing_dot_in_nameserver (0.00s)
=== RUN   TestDuplicateNameservers
Testing Profile="INWX" (TYPE="INWX")
    provider_test.go:145: Skipping. Deduplication logic is not implemented for this provider.
--- SKIP: TestDuplicateNameservers (0.35s)
FAIL
exit status 1
FAIL    github.com/StackExchange/dnscontrol/v4/integrationTest  33.127s
```
2025-12-01 09:13:06 -05:00
Patrik Kernstock
9aad2926fb
INWX: Fix INWX provider after their unexpected data-type breaking-change (#3855)
Fixes #3854 

Unfortunately I couldn't run the integrationTests properly as INWX
doesn't seem to have properly updated their sandbox environment (it
still presents `int` instead of `string` like production). Hence, the
tests do fail. I don't want to run this against my own production
account, to be frank.

See:
```shell
$ curl -X POST https://api.ote.domrobot.com/xmlrpc/ -H "Content-Type: application/xml" -d '<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
   <methodName>nameserver.info</methodName>
   <params>
      <param>
         <value>
            <struct>
               <member>
                  <name>user</name>
                  <value>
                     <string>[USER]</string>
                  </value>
               </member>
               <member>
                  <name>lang</name>
                  <value>
                     <string>en</string>
                  </value>
               </member>
               <member>
                  <name>pass</name>
                  <value>
                     <string>[PASS]</string>
                  </value>
               </member>
               <member>
                  <name>domain</name>
                  <value>
                     <string>[DOMAIN]</string>
                  </value>
               </member>
            </struct>
         </value>
      </param>
   </params>
</methodCall>' | xmllint --format - | grep -iE "id|roId" -C3
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  3968    0  2971  100   997  13375   4488 --:--:-- --:--:-- --:--:-- 17954
            <value>
              <struct>
                <member>
                  <name>roId</name>
                  <value>
                    <int>9677</int>
                  </value>
--
                        <value>
                          <struct>
                            <member>
                              <name>id</name>
                              <value>
                                <int>118057</int>
                              </value>
--
                        <value>
                          <struct>
                            <member>
                              <name>id</name>
                              <value>
                                <int>118060</int>
                              </value>
--
                        <value>
                          <struct>
                            <member>
                              <name>id</name>
                              <value>
                                <int>79610</int>
                              </value>
--
                        <value>
                          <struct>
                            <member>
                              <name>id</name>
                              <value>
                                <int>77243</int>
                              </value>
--
            </value>
          </member>
          <member>
            <name>svTRID</name>
            <value>
              <string>20251127--ote</string>
            </value>
```

Hence, only done manualy tests via `dnscontrol push --domains
<example.com>`:
(tested create, delete and modify)

```text
CONCURRENTLY checking for 0 zone(s)
SERIALLY checking for 1 zone(s)
Serially checking for zone: "example.tld"
CONCURRENTLY gathering records of 0 zone(s)
SERIALLY gathering records of 1 zone(s)
Serially Gathering: "example.tld"
******************** Domain: example.tld
3 corrections (PK-INWX)
#1: - DELETE _test1.example.tld TXT "123" ttl=43200
SUCCESS!
#2: ± MODIFY _test2.example.tld TXT ("1234" ttl=43200) -> ("12345" ttl=43200)
SUCCESS!
#3: + CREATE _test4.example.tld TXT "123" ttl=43200
SUCCESS!
Done. 3 corrections.
```
2025-11-29 12:17:13 -05:00
Elvis Ratzlaff
a1e74eb11f
POWERDNS: Zone creation now abides by variant tags (#3830) 2025-11-05 09:33:47 -05:00
Eli Heady
c1b90d06a0
INWX: Let the API (not DNSControl) enforce the RFC 7505 prohibition of mixed regular/null MX records (#3805)
Co-authored-by: Tom Limoncelli <6293917+tlimoncelli@users.noreply.github.com>
2025-11-03 11:44:40 -05:00
Eli Heady
97bbc80b2a
INWX: BUGFIX: ALIAS RRs updates are broken due to trailing dot issue (#3564) 2025-05-05 10:29:44 -04:00
Manuel
c204ccea09
INWX: support ALIAS records (#3499)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-05-03 08:27:30 -04:00
Eli Heady
07ffb3ab58
INWX: use domain ACE encoding as cache key (#3519) 2025-05-03 08:25:57 -04:00
Eli Heady
1c04affe7c
INWX: Add AutoDNSSEC support (#3534)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-05-03 08:23:38 -04:00
Eli Heady
cfaa82f5c9
INWX: Fix Null MX handling (#3524) 2025-04-14 10:24:05 -04:00
Jakob Ackermann
76e1d38287
INWX: populate zone cache after creating zone (#3334) 2025-04-08 10:32:20 -04:00
Jeffrey Cafferata
9c7fafab78
DOCS: Reclassify providers concurrency status (#3518) 2025-04-02 16:36:00 -04:00
Eli Heady
6bf1fda6d9
INWX: move to diff2 for record corrections (#3501)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2025-03-23 15:43:59 -04:00
Eli Heady
e0e3021ca8
INWX: use provisioned nameservers, fall back to hardcoded defaults (#3502) 2025-03-23 15:42:15 -04:00
Tom Limoncelli
1a1a4bf00d
INWX: Enable SRV to have "." target (#3380) 2025-01-16 12:54:48 -05:00
Tom Limoncelli
89c65b6683
INWX: Permit "." target for SRV records (#3377) 2025-01-16 10:03:00 -05:00
Tom Limoncelli
5dbe5e84c9
CHORE: Fix lint warnings from golangci-lint (#3311) 2025-01-13 11:33:12 -05:00
Tom Limoncelli
06ba3cce77
Bugfix: Providers with batched updates might not report the correct number of changes (#3108) 2024-09-16 12:20:30 -04:00
Jeffrey Cafferata
8fa1a8d7d6
BUILD: Generate OWNERS files (#2997) 2024-07-10 15:53:50 -04:00
Christian Burmeister
cf4cca0df4
INWX: Enable support for SVCB/HTTPS (#2930) 2024-05-03 07:08:54 -04:00
Tom Limoncelli
4765f402bd
FEATURE: New capability: Can provider run concurrently (#2876) 2024-03-20 12:36:54 -04:00
Tom Limoncelli
e52ec54453
Remove unused CantUseNOPURGE capability (#2877) 2024-03-18 18:30:09 -04:00
Gert Van Gool
cd371c1149
INWX: support MxNull records (#2700)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2023-12-08 11:58:24 -05:00
Tom Limoncelli
76d93acaf5
CHORE: Remove dead code: txtutil.SplitSingleLongTxt() and txtutil.Segment() (#2685) 2023-12-05 09:47:52 -05:00
Tom Limoncelli
cbccbbeb8d
REFACTOR: Opinion: TXT records are one long string (#2631)
Co-authored-by: Costas Drogos <costas.drogos@gmail.com>
Co-authored-by: imlonghao <git@imlonghao.com>
Co-authored-by: Jeffrey Cafferata <jeffrey@jcid.nl>
Co-authored-by: Vincent Hagen <blackshadev@users.noreply.github.com>
2023-12-04 17:45:25 -05:00
Tom Limoncelli
159fdf07ad
REFACTOR: providers should not directly access .TxtStrings (#2629) 2023-11-18 15:06:20 -05:00
Joachim Schwarm
bf4118a041
INWX: Paginate through Nameserver Records (#2609)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2023-11-01 13:34:34 -04:00
Tom Limoncelli
c91fe6c1c8
CHORE: Remove diff1 from codebase (#2575) 2023-10-22 13:56:13 -04:00
Costas Drogos
397c2dcc7a
INWX: Pull list of zones from zones, not registrar (#2577)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2023-10-18 10:30:31 -04:00
Patrik Kernstock
4e3f5f31c7
INWX: Support up to 2,147,483,647 domains (old limit was 20) (#2566)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2023-09-27 09:13:07 -04:00
Patrik Kernstock
68084726c0
INWX: Implemented ListZones() support (#2428)
Co-authored-by: Tom Limoncelli <tal@whatexit.org>
2023-06-08 13:59:57 -04:00
Patrik Kernstock
3250681821
INWX: Fix PTR test failing/unexpected PTR modify operation (#2430) 2023-06-08 13:34:03 -04:00
nemunaire
5ae231030e
Update version in go.mod (#2382) 2023-05-20 13:21:45 -04:00
Patrik Kernstock
1ef7c80e3a
INWX: Enabling TXT with 255 bytes works (#2380) 2023-05-20 13:19:15 -04:00
Tom Limoncelli
489be2e3dc
ROUTE53: fix R53_ZONE() handling for domains (#2306)
Co-authored-by: Tom Limoncelli <tal@whatexit.org>
2023-05-02 13:04:59 -04:00
Tom Limoncelli
60470a3886
BUG: Some DNS zones are downloaded twice (#2120)
Signed-off-by: Amelia Aronsohn <squirrel@wearing.black>
Co-authored-by: Tom Limoncelli <tal@whatexit.org>
Co-authored-by: Grégoire Henry <hnrgrgr@users.noreply.github.com>
Co-authored-by: Amelia Aronsohn <squirrel@wearing.black>
Co-authored-by: Kai Schwarz <kschwarz@hexonet.net>
Co-authored-by: Asif Nawaz <asif.nawaz@centralnic.com>
Co-authored-by: imlonghao <git@imlonghao.com>
Co-authored-by: Will Power <1619102+willpower232@users.noreply.github.com>
2023-04-14 15:22:23 -04:00
Tom Limoncelli
367c83a3f5
LOC: Refine which providers support it (#2185) 2023-03-16 19:59:44 -04:00
Paul Dee
3b6591fd95
NEW FEATURE: Support DNS LOC record type (#2174) 2023-03-16 14:04:20 -04:00
Tom Limoncelli
0491aadd36
BUG: Fix all err scopes (#2160) 2023-03-13 14:19:19 -04:00
Yannik Sembritzki
5e06c249d6
Rename DomainCreator to the more accurate ZoneCreator (#2038)
Co-authored-by: Yannik Sembritzki <yannik@sembritzki.org>
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2023-02-07 07:22:49 -05:00
Tom Limoncelli
30c653eeba
INWX: Adopt diff2 in compatibility mode (#1891) 2023-01-09 08:51:45 -05:00
Tom Limoncelli
b0f2945510
REFACTOR: Add diff2 enable flag to all DNS providers (#1851)
This should enable the diff2 code to be inserted with good "git blame" results for new code.  I'm adding this early to catch any problems early.
2022-12-11 15:02:58 -05:00
Jed Fox
cc2fb89b00
DOCS: Remove Cannot() records for Azure and R53 ALIAS records (#1827)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2022-12-02 09:21:37 -05:00
Tom Limoncelli
61e500b7dc
DEV: Optimize integration tests (#1742) 2022-09-07 14:08:06 -04:00
Tom Limoncelli
ccb582b278
CHORE: Linting (#1704)
* Remove deprecated io/ioutil
* fixup!
* staticcheck and linting
* revert models/provider.go
* Fix imports to new style
* linting
2022-08-14 20:46:56 -04:00
Tom Limoncelli
31723ad146
PERFORMANCE: Refactor auditrecords.go to loop only once #1570 (#1658)
* stash

* Use rejectif idea

* rename

* wip!

* Convert old systems to new

* fixup!

* fix typo
2022-08-11 17:24:47 -04:00
Tom Limoncelli
959f721c04
MAINT: Update TXT docs, suggest not using TxtNoLen255 (#1548)
* suggest not using TxtNoLen255

* Rename functions

* wip!

* fixing!
2022-06-20 11:34:05 -04:00
Jan-Philipp Benecke
bcb968411a
MAINT: Unify provider outputs to pkg/printer (#1546)
* Unify provider outputs to pkg/printer

Signed-off-by: Jan-Philipp Benecke <jan-philipp@bnck.me>

* No need for custom Errorf

Signed-off-by: Jan-Philipp Benecke <jan-philipp@bnck.me>

* Add missing import for activedir

Signed-off-by: Jan-Philipp Benecke <jan-philipp@bnck.me>

* Add missing fmt import for activedir

Signed-off-by: Jan-Philipp Benecke <jan-philipp@bnck.me>
2022-06-18 09:01:02 -04:00
Tom Limoncelli
444b893e1b
MAINT: Sort various lists (#1433)
* maint: sort lists in build/generate/featureMatrix.go

* maint: sort lists in docs/byo-secrets.md

* maint: sort lists in models/record.go

* maint: sort lists in pkg/normalize/validate.go

* maint: sort lists in providers/activedir/activedirProvider.go

* maint: sort lists in providers/akamaiedgedns/akamaiEdgeDnsProvider.go

* maint: sort lists in providers/axfrddns/axfrddnsProvider.go

* maint: sort lists in providers/azuredns/azureDnsProvider.go

* maint: sort lists in providers/cloudflare/cloudflareProvider.go

* maint: sort lists in providers/cloudns/cloudnsProvider.go

* maint: sort lists in providers/desec/desecProvider.go

* maint: sort lists in providers/digitalocean/digitaloceanProvider.go

* maint: sort lists in providers/dnsimple/dnsimpleProvider.go

* maint: sort lists in providers/dnsmadeeasy/dnsMadeEasyProvider.go

* maint: sort lists in providers/exoscale/exoscaleProvider.go

* maint: sort lists in providers/gandiv5/gandi_v5Provider.go

* maint: sort lists in providers/hedns/hednsProvider.go

* maint: sort lists in providers/hetzner/hetznerProvider.go

* maint: sort lists in providers/hexonet/hexonetProvider.go

* maint: sort lists in providers/inwx/inwxProvider.go

* maint: sort lists in providers/linode/linodeProvider.go

* maint: sort lists in providers/namecheap/namecheapProvider.go

* maint: sort lists in providers/namedotcom/namedotcomProvider.go

* maint: sort lists in providers/netcup/netcupProvider.go

* maint: sort lists in providers/ns1/ns1Provider.go

* maint: sort lists in providers/octodns/octodnsProvider.go

* maint: sort lists in providers/oracle/oracleProvider.go

* maint: sort lists in providers/ovh/ovhProvider.go

* maint: sort lists in providers/packetframe/packetframeProvider.go

* maint: sort lists in providers/powerdns/powerdnsProvider.go

* maint: sort lists in providers/route53/route53Provider.go

* maint: sort lists in providers/vultr/vultrProvider.go

* Update go:build pragmas for windows

* More sorting

* go generate
2022-03-02 11:19:15 -05:00
Patrik Kernstock
f0026b8073
Revert "INWX: fix apex domains (#1221)" (#1242)
This reverts commit f63302b978.
2021-08-29 19:35:25 -04:00
Sven Peter
f63302b978
INWX: fix apex domains (#1221)
INWX has changed their API to use an empty string () instead of
the common @. Fix that by converting between the two.
2021-07-25 11:51:27 -04:00