1
0
mirror of https://github.com/StackExchange/dnscontrol.git synced 2024-05-11 05:55:12 +00:00
Commit Graph

609 Commits

Author SHA1 Message Date
Tom Limoncelli
d4956c225c NS1: Rename ns1provider.go to ns1Provider.go (#1350) 2021-12-26 13:11:59 -05:00
Steven Vernick
1f7889dbd3 AKAMAIEDGEDNS: fix staticcheck warnings/errors (#1346)
* downcase TLSA

* Akamai provider

* Akamai provider

* EdgeDNS provider

* AkamaiEdgeDNS provider

* AkamaiEdgeDNS provider

* AkamaiEdgeDNS provider

* AKAMAIEDGEDNS: fix staticcheck warnings/errors

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-12-23 15:16:37 -05:00
Tom Limoncelli
9f720d1084 CLEANUP: Skip DualProvider tests if Cannot(DocDualHost) (#1345)
* Skip DualProvider tests if Cannot(DocDualHost)
* go generate
* Fix HEXONET domain
2021-12-21 12:23:11 -05:00
Brice Figureau
9d9d299bb7 Fix #1338 - OVH provider should work when domain is not registered (#1340)
* Fix #1338 do not error if domain is not registered

OVH now allows to create zone without registering a domain. The ovh provider
was getting the NS from the registrar and not the zone, which doesn't work
in a scenario where only the zone exists at ovh.
This changeset makes the ovh provider fetch the NS from the registrar and if
there's none from the zone.

* OVH now supports all dual providers scenario

This change updates the OVH provider documentation accordingly.
2021-12-20 11:20:17 -05:00
Tom Limoncelli
02c5258396 CODE: Fix simple staticcheck items (#1329) 2021-12-14 16:28:37 -05:00
Vincent Hagen
cc6638fb95 TRANSIP: Fix staticcheck errors (#1337) 2021-12-14 15:47:38 -05:00
Tom Limoncelli
7ae27aa0b9 Security: Fix many staticcheck warnings 2021-12-14 09:47:32 -05:00
Vojta Drbohlav
e3cd40a1a8 DNSMADEEASY: always override NS records TTL to be 86400 (#1317)
Fixes broken integration tests and spamming output about chaning NS records TTL from fixed one (86400) to dnscontrol default one (300).

This issue was introduced in #1167.

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-12-14 07:49:00 -05:00
Jaye Doepke
900d4042e8 ROUTE53: Adopt aws-sdk-go-v2 (#1321)
* Switch to aws-sdk-go-v2

AWS has released v2 of their SDK for Go.

See: https://aws.github.io/aws-sdk-go-v2/

One big advantage of this is no longer needing to export the
`AWS_SDK_LOAD_CONFIG=1` env var when using named profiles.

* Update integration test README

* Reenable pager601 and pager1201 integration tests for AWS Route53

* Implement intelligent batching for Route53 record changes

The AWS Route53 API for batch record changes limits the request size to
the smaller of:

- 1000 records.
- 32000 characters total for record values.

Also UPSERTs count as double (a DELETE and then a CREATE).

This commit changes how the record ChangeBatches are created to
respect these limits.

* Remove old comments

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-12-07 16:29:29 -05:00
Vojta Drbohlav
899a34ddd4 DNSMADEEASY: Fix staticcheck errors (#1316)
* DNSMADEEASY: remove unused type apiEmptyResponse
* DNSMADEEASY: fix unnecessary use of fmt.Sprintf
* DNSMADEEASY: fix error check in toRecordConfig
2021-12-06 12:45:34 -05:00
Benjamin Altpeter
2cfd2f403b Hosting.de: Allow using as registrar only (#1307)
Previously, the provider would always try to fetch the zone config for
the domain. But that doesn't work if the domain's DNS is not managed
through Hosting.de.

With this patch, getDomainConfig() instead filters directly on the
domain name instead of re-fetching it from the zone.

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-11-27 13:44:28 -05:00
norman-zon
58a5a4bcf0 Remove length checking from TxtNoMultipleStrings (#1308)
All functions in should test for only one condition. There already is a
function that tests for long TXT records: TxtNoLongStrings.
Add calls to TxtNoLongStrings in all providers that use
TxtNoMultipleStrings, to keep functionality, except for NS1 and ClouDNS,
which allow for any TXT record length, but not for multiple strings per
TXT.
2021-11-23 14:35:01 -05:00
Ry3nlNaToR
3405757271 Use ToNameserversStripTD instead of ToNameserver (#1306) 2021-11-18 11:08:52 -05:00
Vincent Bernat
c44ed88659 GANDI_V5 & DESEC: correctly handle multiple RR in a RRset (#1296)
When having multiple RR in a RRset, only a few of them may be applied.
In my case, when I have two A records, only one of them makes its way
to Gandi.

In `convert.go`, we had:

```go
var zrs []livedns.DomainRecord
// [...]
zrs = append(zrs, zr)
keys[key] = &zrs[len(zrs)-1]
```

If the slice needs to be extended when appending, the reference we got
in `keys[key]` may be outdated because the new slice contains a copy
of the old one. We either need to store references to domain records
in the slice or we need to stop keeping reference of items in the
slice.

I have fixed this with the second solution as I think the order of the
RRsets is not important.
2021-11-01 15:41:37 -04:00
Patrik Kernstock
2e21973ddf Disable TXT splitting with OVH provider (#1291) 2021-10-17 09:52:17 -06:00
Patrik Kernstock
0ff44913ae Fixing OVH DKIM MODIFY (#1290)
* Treat DKIM as normal TXT record type

* Empty FieldType before to prevent API error for DKIM

* Unsplit DKIM TXT records before diffing the values
2021-10-16 10:45:06 -06:00
F.D.Castel
0d12eb7dc6 CLOUDFLAREAPI: Adds CF_WORKER_ROUTE (#1243)
* CLOUDFLAREAPI: Adds CF_WORKER_ROUTE.

- CLOUDFLAREAPI: Initial support for CF_WORKER_ROUTE.
- Put CF_WORKER_ROUTE behind a per-domain feature-flag.
- Adds Integration Test.
- Create Cloudflare workers for tests.
- Updates documentation.

* Workaround for updateWorkerRoute causing stack overflow.

* Sets AccountID.

* Updates to latest master (Thanks @tresni!).

* Removes $CLOUDFLAREAPI_ACCOUNTNAME.

* Add alltrue() filter and -cfworkers flag

* Final workers changes

* alltrue() should be implemented like other filters.
* Update documentation.

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-10-11 16:04:49 -04:00
Brian Hartvigsen
156c684be6 Initial support for easyname as registrar (#1277)
* Initial support for easyname as registrar

* DRY

Moving a bunch of the HTTP stuff into a single function for cleanliness and ease of future maintianence.

* Seperate API and Provider logic

* Updating error messages and sorting found nameservers

* Adding provider info to OWNERS and README

This also moves a few of the not-actually-DNS Providers to their own section.

* Update README.md

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-10-04 13:01:38 -04:00
Tom Limoncelli
7f071b4ce8 HEXONET: Support long TXT records and fix whitespace bug (#1283)
* HEXONET: Support for long TXT records

* HEXONET: Revert and update comments in auditrecords.go

* Update auditrecords.go

* HEXONET: Sync TXT support with reality

* Fix the fixed unit tests

Co-authored-by: Burak Tamturk <buraktamturk@gmail.com>
2021-10-04 12:08:57 -04:00
Brian Hartvigsen
d08a8f6c4e CLOUDFLARE: Stop requiring accountname (#1280)
There is no API call I've found that requires it, only the accountID.  Also, we now set the cfClient.AccountID similar to b55278140f (h/t @fdcastel) and no longer store duplicate information in the cfClient and api objects.

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-10-03 16:40:50 -04:00
Brian Hartvigsen
d8941a04bc CLOUDFLARE: Use cloudflare-go (#1267)
* First pass at moving to cloudflare-go vs hand made implementation of cloudflare's API

* Final changes to use cloudflare-go

* Fix for proxy configuration failing

Forgot to set the ID when we created a new records.  This didn't fail in the integrations tests so I missed it.

* Add integration test

To prevent something like what I did from happening in the future.

* Fix bad messaging
2021-09-30 07:09:42 -04:00
Brian Hartvigsen
414f57274d CLOUDFLARE: Fix bug with long TXT records (SplitSingleLongTxt is not needed) (#1265)
This isn't necessary for Cloudflare, just pass the string you want and they'll take care of the rest.  This was breaking DKIM records as it would pass the split string with quotes, which Cloudflare then interpreted the quotes as being necessary for the records.
2021-09-28 15:53:38 -04:00
Vincent Hagen
8c5db2e11c Add R53_ZONE as an domain identifier (#1241)
Using R53_ZONE allows you to differentiate between split horizon
domains across zones.
2021-09-02 16:54:54 -04:00
Patrik Kernstock
f0026b8073 Revert "INWX: fix apex domains (#1221)" (#1242)
This reverts commit f63302b978.
2021-08-29 19:35:25 -04:00
Tom Limoncelli
0203154021 VULTR: Fix TXT quoting issue (#1239)
* VULTR: Fix TXT quoting issue
* VULTR: Add tests that trigger Vultr's SPF mode
* VULTR: Enforce the fact that VULTR only supports a single string in TXT records

Co-authored-by: Lee Martin <lmartin@stackoverflow.com>
2021-08-17 15:58:10 -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
Jauder Ho
a6b9609cd5 gofmt cleanups (#1217)
* Create codeql-config.yml

* Update codeql-analysis.yml

Add config to exclude certain files

* Run gofmt on a few files as reported by goreportcard.com
2021-07-21 16:10:53 -04:00
Tom Limoncelli
8ab0df92cc TRANSIP: Enable privatekey authentication (#1212)
* Add PrivateKey authentication for TransIP

* Remove space before comma

* Re-enable CodeQL for Javascript (#1209)

* Create codeql-config.yml

* Update codeql-analysis.yml

Add config to exclude certain files

* deSEC implement pagination (#1208)

* deSEC: Implement pagination for domain list #1177

* deSEC: add debug logging for pagination

* deSEC: simplify get/post methods by allowing url / api endpoints as target

* deSEC: implement pagination for getRecords function

* deSEC: fix linter warnings

* deSEC: replace domainIndexInitalized variable with checking if the domainIndex == nil

* deSEC: add mutex for domainIndex

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

Co-authored-by: Vincent Hagen <vinnie@script4web.nl>
Co-authored-by: Jauder Ho <jauderho@users.noreply.github.com>
Co-authored-by: Georg <georg@neuland.tech>
2021-07-21 12:06:29 -04:00
Georg
2832746a47 deSEC implement pagination (#1208)
* deSEC: Implement pagination for domain list #1177

* deSEC: add debug logging for pagination

* deSEC: simplify get/post methods by allowing url / api endpoints as target

* deSEC: implement pagination for getRecords function

* deSEC: fix linter warnings

* deSEC: replace domainIndexInitalized variable with checking if the domainIndex == nil

* deSEC: add mutex for domainIndex

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-07-21 11:44:10 -04:00
Vincent Hagen
0770e64c90 NAMECHEAP: Add get zone functionality (#1207) 2021-07-12 06:49:30 -04:00
Georg
228b57e445 DESEC: Implements support for long / multistring txt records (#1204)
* use /auth/account endpoint for token validation
this implements the token validation using the /auth/account api endpoint as suggested in #1177 instead of fetching the domain list

* deSEC: add support for long txt records #996

* deSEC: add support for a different api error response
relates to #996 where we had insufficient error output due to unknown api error format

* deSEC: remove unused fetchDomainList function

* deSEC: improve error handling

* deSEC: support for long / multistring txt records
the previous commit was broken this is now working (CRUD)

* deSEC: document what desecProvider.domainIndex is used for

* deSEC: handle the rate limiting correctly
we try to use the Retry-After header to determine how long we should sleep until retry

* deSEC: further improvement of rate limit handling
we cut off if the Retry-After header exceeds 3 minutes because this might be the daily limit.

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-07-08 10:06:54 -04:00
Vincent Hagen
506b6cc32f Transip provider (#1196)
* Add initial transip provider

* Add GetNameservers to transip

* Add first try to correction function.

* Implemented corrections

* Add docs for transip

* Fix TransIP TTL updates

* Fix transip nameserver records

* Update docs/_providers/transip.md

Co-authored-by: Sven Luijten <11269635+svenluijten@users.noreply.github.com>

Co-authored-by: Sven Luijten <11269635+svenluijten@users.noreply.github.com>
2021-07-07 11:43:10 -04:00
nemunaire
80f22df705 MAINTENANCE: Return error instead of panic when converting RR to RC (#1199) 2021-07-06 11:03:29 -04:00
Tom Limoncelli
4b68e14039 Fix codeql errors (#1181) 2021-07-01 09:30:02 -04:00
Tom Limoncelli
654736be29 Improve MSDNS naptr support (#1165)
* MSDNS: Improve reliability of zone dump

* Update tests

* MSDNS: Add initial NAPTR support

* Update

* fix tests

* fix tests

* Fixing integration tests for NAPTR

* Handle bad JSON. Handle NAPTR TTLs
2021-06-24 18:26:21 -04:00
Tom Limoncelli
6d64fc8cac Fix CodeQL issues (#1173) 2021-06-24 18:15:09 -04:00
Tom Limoncelli
311a6d74ce MSDNS: Improve reliability of zone dump (#1179)
* MSDNS: Improve reliability of zone dump

* Update tests
2021-06-24 06:05:33 -04:00
Steven Vernick
be1f03fb75 NEW PROVIDER: AkamaiEdgeDNS (#1174)
* downcase TLSA

* Akamai provider

* Akamai provider

* EdgeDNS provider

* AkamaiEdgeDNS provider

* AkamaiEdgeDNS provider

* AkamaiEdgeDNS provider

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-06-22 10:24:49 -04:00
James Gilberd
fdd6387aad Show actual URL to use instead of just "sandbox" (#1166)
* Show actual URL to use instead of just "sandbox"

Instead of stating "sandbox", sometimes incorrectly if sandbox is false, just output the actual URL that will be used.

* Replace Println with Printf

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-06-04 13:30:17 -04:00
James Gilberd
c22293e2cf Correct hard coded DNS Made Easy system nameserver TTL (#1167)
In my (very limited) experience with DNS Made Easy, the system nameserver
TTL is always 86400 and is not able to be altered.

Without this change, if you specify any TTL (other than 300) via
NAMESERVER_TTL() dnscontrol detects a difference and attempts to update
DNS Made Easy with the new value, which fails because the system
nameservers cannot be altered.

With this change in place the same thing will obviously still happen, if
you use NAMESERVER_TTL() with any TTL other than 86400, but that will be
a bit less confusing since the 86400 value appears in the DNS Made Easy
UI at least.
2021-06-02 13:48:19 -04:00
nemunaire
607e0bc7f6 AXFRDDNS: fix advertisement of Get-Zones capability (#1161) 2021-05-24 09:30:49 -04:00
9b0b3bcdd6 ClouDNS does not support changing the NAPTR in the API. (#1159)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-05-18 16:22:41 -04:00
Peter Thomassen
d567d554cf DESEC: clarify supported capabilities (#1160)
* DESEC: clarify AutoDNSSEC

* DESEC: improve error messages / hints

* DESEC: add NAPTR support

* DESEC: add to integration test configuration
2021-05-17 15:45:24 -04:00
9949cba00d CLOUDNS: Support NAPTR, Update setup docs: (#1158)
- Changed the URL of the ClouDNS document from "asia.cloudns.net" to "www.cloudns.net".
- A little addition about TTL.
2021-05-15 09:38:27 -04:00
Costas Drogos
ce9005c7a8 ns1: Implement EnsureDomainExists (#1157)
API support is there, let's use it.

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-05-14 14:39:09 -04:00
Costas Drogos
9497a988ea Enable support for CAA in ns1 (#1150)
* Enable support for CAA in ns1

NS1 rest already supports it, enable the capability and handle CAA.

* ns1: sort capabilities

more readable

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-05-11 16:35:28 -04:00
Costas Drogos
d8146a4a19 NS1: fix ALIAS handling (#1154)
A bug was introduced in a2042c2eda, which stoped ALIAS records
from setting their record type correctly (it was set to nil).

Specifically, case "ALIAS" doesn't fall through to any of the other cases
below, leading ALIAS records to set their type to nil.

To fix that, readd the code that got absorbed by the URLFWD in a2042c2eda.
2021-05-11 15:52:27 -04:00
Jan-Philipp Benecke
cf8e288339 PowerDNS: fix order problems of delete corrections & some cleanup (#1153)
Signed-off-by: Jan-Philipp Benecke <jan-philipp.benecke@jpbe.de>
2021-05-10 10:18:40 -04:00
Shrikant Sharat Kandula
4458595333 NAMECHEAP: Enable ALIAS support (#1149)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2021-05-10 08:52:46 -04:00
Tom Limoncelli
24083d3f76 Add integration test for SOA (#1147)
* Add integration test for SOA

* Add docs for SOA record

* MAINT: Rename SoaInfo to SoaDefaults.

gorename -v -from '"github.com/StackExchange/dnscontrol/v3/providers/bind".SoaInfo' -to SoaDefaults
2021-05-07 14:39:26 -04:00