* 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>
* 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
* 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>
* 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
* implement DNS Made Easy provider
* fix sandbox instructions in DNS Made Easy provider docs
* remove unnecessary blank lines and fix golint warnings
* remove unused deleteRecord method from DNSME api
* remove trailing comma in providers.json
* implement check for TXT records with double quotes for DNSME provider
* implement changing apex NS records
* rename DNSME to DNSMADEEASY
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
* Add http.net provider
* Rename httpnetProvider
* Add SSHFP capability
* Add paging for records
* Sort documentation notes alphabetically
* Add custom base URL
* Extend documentation for custom base URL
* - renamed to hosting.de
- Fix EnsureDomainExists
- GetNameservers read from NS Records
* Replaced http.net with hosting.de
Contributor Support from hosting.de
* baseURL for hosting.de in documentation
replaced %v with %w for errors
special handling for txt records using .TxtStrings
* removed last references to rc.Target
fixed Trim of last dot
* Re-engineer TXT records for simplicity and better compliance (#1063)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
Co-authored-by: Oliver Dick <o.dick@hosting.de>
Co-authored-by: Oliver Dick <31733320+membero@users.noreply.github.com>
TXT records are now handled different.
1. The raw input from dnsconfig.js is passed all the way to the provider. The provider can determine if it can or can't handle such records (auditrecords.go) and processes them internally as such.
2. The CanUseTXTMulti capability is no longer needed.
* DSPs now register a table of functions
* Use audits for txt record variations
* unit tests pass. integration fails.
* fix deepcopy problem
* rename to AuditRecordSupport
* Reduce use of TXTMulti
* Remove CanUseTXTMulti
* fix Test Skip
* fix DO
* fix vultr
* fix NDC
* msdns fixes
* Fix powerdns and cloudflare
* HEDNS: Fix usage of target field to resolve TXT handling (#1067)
* Fix HEXONET
Co-authored-by: Robert Blenkinsopp <robert@blenkinsopp.net>
Co-authored-by: Jakob Ackermann <das7pad@outlook.com>
* Implement main feature
* BIND: Permit printf-like file name formats
* BIND: Make filenameformat work forwards and backwards.
* Fix extrator test cases
* Add PTR support for ClouDNS
* Implement PTR Support for CLouDNS
* implemnent DS Record for ClouDNS
* implement DS record for clouDNS
* pull request review
* note that SshFpAlgorithm and DsAlgorithm both use json field algorithm
* primitive rate limit and fix order of NS/DS-entries
* codefixes
Co-authored-by: IT-Sumpfling <it-sumpfling@maxit-con.de>
Co-authored-by: bentaybi jamal <jamal@pfalzcloud.de>
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
* maint: OVH doesn't support Null MX
so, better exclude this provider from the Null MX integration test.
* (#1003) OVH natively supports TXT multistrings
OVH directly supports multistrings TXT, so this change just enables
this feature.
* Add PTR support for ClouDNS
* Implement PTR Support for CLouDNS
Co-authored-by: IT-Sumpfling <it-sumpfling@maxit-con.de>
Co-authored-by: bentaybi jamal <jamal@pfalzcloud.de>
* HETZNER: better rate limit handling
- Hetzner is using a Proxy service 'kong' which broadcasts it limits
- honor 'Retry-After' of 429 responses
- delay requests per-se: see the amended docs for details
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
* HETZNER: apply review feedback: store quotaName as lower case
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
* HETZNER: implement the provider for Hetzner DNS Console
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
* HETZNER: apply review feedback
- add domain into error messages
- insert sub-strings using `%q`
- insert sub-errors using `%w`
- change api.getZone() signature to return a (potentially `nil`) Zone
pointer instead of a (potentially empty) Zone value
- sort imports and confirm with `$ goimports -w providers/hetzner/`
- use exact 'api_key' term in error message of settings validation
- add blank line for logic separation
- drop internal record id from correction messages
Co-Authored-By: Tom Limoncelli <tlimoncelli@stackoverflow.com>
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
* HETZNER: add request rate-limiting handling
There are a limited number of data-points on how their rate-limiting
works at this time. I deduce from my account to others and use a fixed/
constant backoff of 1s as the initial delay. Thereafter exponential
increase with factor 2 (not needed at this time).
Hetzner has not made any official statements on rate-limiting, so this
is guesswork only.
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
* HETZNER: address golint complaints
- baseUrl -> baseURL
- mark Record as private -> record
- mark Zone as private -> zone
- mark RequestRateLimiter as private -> requestRateLimiter
- capitalize Id fields as ID
- keep delay logic on same level, move return out of branch
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
* HETZNER: rate_limited: init the response timestamp on requestRateLimiter
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
* HETZNER: requestRateLimiter: align local variable with struct name
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
* VULTR: Update govultr to v1.0.0 (fixes #892) (#897)
* go get -u github.com/hexonet/go-sdk
* Fix HEXONET providers.json entry
* providers.json: json commma
* providers.json: fmtjson
* HEXONET: Implement get-zones. Fix tests and docs.
* fixup!
* Update azure test failures
* Move version info into its own package
* Use new version system
* Add initial dns.he.net provider support
* Update to new IncrementalDiff interface
* Fix ListZones output for `all` query on `get-zones`
* Refactor authentication code for 2FA with better error checking
* Fix integration test and refactor zone record retrieval
* Add option to use `.hedns-session` file to store sessions between runs
* Add comment on `session-file-path`
* Add integration test for TXT records longer than 255 characters
* Add additional checks for expected responses, and better 2FA error checking
* Minor documentation changes
* Revert "Add integration test for TXT records longer than 255 characters"
This reverts commit 657272db
* Add note on provider fragility due to parsing the web-interface
* Resolve go lint issues
* Clarify security warnings in documentation