Commit graph

948 commits

Author SHA1 Message Date
Tom Limoncelli 99ae7b4418
update more deps (#988)
* update all deps that i can safely do
2020-12-03 10:35:12 -05:00
Tom Limoncelli 432ec2bb85
update deps (#987)
* update deps

go get -u gopkg.in/yaml.v2
go get -u google.golang.org/api
go get -u golang.org/x/oauth2
go get -u golang.org/x/net
go get -u github.com/urfave/cli/v2
go get -u github.com/miekg/dns
go get -u github.com/digitalocean/godo
go get -u github.com/babolivier/go-doh-client
go get -u github.com/aws/aws-sdk-go
go get -u github.com/DisposaBoy/JsonConfigReader
go get -u github.com/Azure/azure-sdk-for-go

* go mod tidy
2020-12-03 10:02:15 -05:00
Tom Limoncelli 063d550816
js_test.go should generate & test zonefile output too (#986)
* js_test.go: Do a zonefile test if $TESTNAME/parse_tests/{zonefile} exists.
* Add parse_tests zone files for all the tests that make sense.
* js_test.go: Addd the test datafile when displaying failures.
* 007-importTransformTTL.js: Was referring to a non-existent domain.
* 012-duration.js: Had duplicate DNS records.
* 029-dextendsub.js: Move CF-related tests to separate test.
* validate.go: Report non-existent domains as an error.
* cloudflareProvider.go: newCloudflare should not talk to the API.
2020-12-03 09:33:39 -05:00
Tom Limoncelli 6443a31ca8
Fix REV and PTR (#979)
* Fix REV and PTR
2020-12-03 08:33:37 -05:00
Tom Limoncelli 2e7311078c
MAINT: Fix parse_test numbering (#985) 2020-12-01 11:22:12 -05:00
Tom Limoncelli b832a92578
gofmt -s all the things! (#983) 2020-12-01 08:01:44 -05:00
Tom Limoncelli f32218a2f9
GLCOUD: Retry on 502 errors also (#984) 2020-12-01 07:07:38 -05:00
Tom Limoncelli 096458d91c
CLOUDFLAREAPI: Support TXTMulti and empty TXT targets (#978)
* CLOUDFLAREAPI: Add TXTMulti support

* CLOUDFLAREAPI: Support TXTMulti and empty TXT strings
2020-11-29 14:39:15 -05:00
Tom Limoncelli 12a3354c0c
Enable Bring-Your-Own-Secrets (#982)
* Move env from steps to job
* Rename env to be predictable.
* fix conditional
* document B.O.Y.S.
* Update docs/byo-secrets.md

Co-authored-by: Max Horstmann <MaxHorstmann@users.noreply.github.com>

* respond to reviews
* fixup!

Co-authored-by: Max Horstmann <MaxHorstmann@users.noreply.github.com>
2020-11-29 14:15:40 -05:00
Sven Peter f81260ba71
INWX: enable multi txt support (#981)
* INWX: enable MultiTXT support

* run go generate to update docs
2020-11-29 13:54:34 -05:00
Tom Limoncelli 07917006bb
Gracefully skip tests if the secrets are not available (#977)
* Sort provider lists and add comments to explain sorting
* Skip tests we can not run
* Add INWX
2020-11-29 06:04:22 -05:00
André Frimberger 8ba081f06a
POWERDNS: Fix documentation: config keys use camel case (#962)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2020-11-28 15:43:13 -05:00
André Frimberger 533bf5783d
HETZNER: Allow TXTMulti (#963)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2020-11-28 15:40:43 -05:00
Sven Peter e29f7440f5
INWX: Guard against single-quote TXT targets (#971)
* INWX: split out and disable TXT with single-quote test
* INWX: add check for single-quotes in TXT records
2020-11-28 15:38:58 -05:00
Tom Limoncelli d6b191bae4
CLOUDFLARE: get-zones now outputs "orange cloud" status (#952)
* CLOUDFLARE: get-zones now outputs "orange cloud" status
2020-11-24 10:30:21 -05:00
Tom Limoncelli 6fe4ca6996
Document TXT AUTOSPLIT (#957)
* Document TXT AUTOSPLIT

* Update docs/_functions/domain/TXT.md

Co-authored-by: Jakob Ackermann <das7pad@outlook.com>

Co-authored-by: Jakob Ackermann <das7pad@outlook.com>
2020-11-22 09:16:56 -05:00
Tom Limoncelli f30610065c
DOCS: Update install instructions (#951) 2020-11-18 16:15:18 -05:00
Max Horstmann 142b00b5ac
update integration tests section in release engineering doc (#950)
Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2020-11-18 09:41:55 -05:00
Tom Limoncelli db6ad08f5e
GCLOUD: Retry on ratelimit (#946)
* Add exponential delay retry on 429, 503; and single retry on 404s.
2020-11-18 09:06:45 -05:00
Tom Limoncelli 1f471a15b9
DIGITALOCEAN: Support TXTMulti with caveats (#949)
* DIGITALOCEAN: Support TXTMulti with caveats
* go get github.com/digitalocean/godo
* DIGITALOCEAN: Enable CI tests
2020-11-18 08:22:31 -05:00
Tom Limoncelli 13a1360779
TXT records should check length at check/preview time (#947)
* TXT records should check length
* Add validation to TXT generator
* Split and validate long TXT targets
* Add a metaparameter to TXT records to indicate autosplit is requested.
* SPF_BUILDER marks TXT records as needing to be autosplit.
* Validate should check for overly-long TXT targets
2020-11-18 07:05:26 -05:00
Jakob Ackermann 550fa436ed
HETZNER: better rate limit handling (#936)
* 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>
2020-11-16 12:26:52 -05:00
Tom Limoncelli 18c026d7d9
DOCS: Fix golint and vendoring notes (#948) 2020-11-15 14:47:52 -05:00
Tom Limoncelli 7db3741bc7
MAINTENANCE: Unknown rtypes should return errors, not a panic (#945)
* Eliminate panics related to unknown rtypes
2020-11-13 16:32:40 -05:00
Tom Limoncelli 654bb9cfeb
GCLOUD: Don't panic() on unknown domain name (#944)
* GCLOUD: Dont panic on unknown domains
2020-11-13 13:12:36 -05:00
Tom Limoncelli 184131b1e3
AZURE_DNS: Remove artificial delays (#943)
* AZURE_DNS: Remove artificial delays
* CloudflareAPI is too slow for all tests
2020-11-13 12:21:13 -05:00
Jan-Philipp Benecke d759b7b4da
Document: CLI variables (#918)
* Initial version of CLI variables doc

* Add example based on comments

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2020-11-13 12:18:38 -05:00
Tom Limoncelli 0ef6ce2b40
HEXONET: Add GHA tests. Update docs. (#942) 2020-11-13 10:32:32 -05:00
Tom Limoncelli 9f323e70d1
DOCS: Add pkg.go.dev badge (#939) 2020-11-12 11:22:19 -05:00
Tom Limoncelli ba08e718b7
DIGITALOCEAN: Abide by rate limits (#934)
* Implement exponential back-off
2020-11-12 10:53:44 -05:00
Tom Limoncelli 724d5ff6c7
ROUTE53: Fix R53_ALIAS creation failure (#938)
Fixes https://github.com/StackExchange/dnscontrol/issues/937

* Add integration test to repro https://github.com/StackExchange/dnscontrol/issues/937
* Reformat integration tests to be more readable.
* ROUTE53: Create CNAME/R53_ALIAS in best order
* Each R53_ALIAS_* should be its own change, not combined.
* Refactor and simplify (omg it has gotten ugly)
2020-11-12 00:30:40 -05:00
Max Horstmann 50d5cbce25
Update build status badge to GH Actions workflow (#933) 2020-11-06 18:45:06 -05:00
Max Horstmann f920078c0f
Integration tests: add Digital Ocean, Gandi V5 (#932) 2020-11-06 12:56:07 -05:00
Max Horstmann df0f47b52c
Run integration tests for additional DNS providers (#930) 2020-11-05 08:55:20 -05:00
Max Horstmann 866232e0fb
Run integration tests as part of build checks (#928) 2020-11-03 07:53:59 -05:00
Max Horstmann d219941059
Run unit tests as part of build checks (#927) 2020-11-02 08:42:33 -05:00
Jakob Ackermann ab47e92cbf
HETZNER: fix retry of POST/PUT requests -- rebuild request body (#926)
Previously for any retry the request body was already consumed and
 the server received an empty body.

Signed-off-by: Jakob Ackermann <das7pad@outlook.com>

Co-authored-by: Tom Limoncelli <tlimoncelli@stackoverflow.com>
2020-11-01 19:34:10 -05:00
Jakob Ackermann 152fa95031
HETZNER: create and modify multiple records in batches (#925)
Signed-off-by: Jakob Ackermann <das7pad@outlook.com>
2020-11-01 19:30:16 -05:00
Max Horstmann 61bf50d4d7
Build & attach release assets automatically (#789) 2020-11-01 13:37:38 -05:00
Max Horstmann 2792c28f6d
Run build checks on PRs targeting master branch (#922) 2020-11-01 13:20:18 -05:00
Tom Limoncelli 80c81b990a TESTING: Fix broken test 2020-10-30 12:04:41 -04:00
Tom Limoncelli d7601b4fe8
NEW: .editorconfig (#921) 2020-10-29 13:38:15 -04:00
Tom Limoncelli bb6aecc9ad
Build broke on Windows (#920) 2020-10-29 13:36:47 -04:00
Jan-Philipp Benecke 512aa7d4b3
NEW FEATURE: Set JS variables from command line (#913)
* Add ability to specify variables that are passed to js

* Use SplitN to respect a = in value part

* Add JSON parsing for cli variables

* Remove JSON parsing for cli variables

* Add a function to set CLI defaults

* Update static.go
2020-10-27 10:43:00 -04:00
eifelmicha e51688c22d
Update README.md (#915)
Netcup was added in 3.2 https://stackexchange.github.io/dnscontrol/provider-list
2020-10-26 20:20:02 -04:00
Tom Limoncelli ca30c9c34f
Rename provider handles to *Provider (#914) 2020-10-26 09:25:30 -04:00
Patrik Kernstock 29c7ff3a05
Fix #910 (#912)
@patschi Thanks you for the speedy fix!  (and thank you for knowing Javascript!)
2020-10-25 13:29:25 -04:00
Tom Limoncelli d56a8307f3
Be more consistent in API handle variable names (#911) 2020-10-25 12:58:43 -04:00
Jakob Ackermann 2b50af0cbc
NEW PROVIDER: HETZNER DNS Console (#904)
* 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>
2020-10-22 09:44:21 -04:00
Tom Limoncelli 3a2b1b2f7b
Internal: deps updates and linting (#905)
* Update dependencies
* writing-providers.md: Update for Go Mod, etc.
* Linting pkg/version
* s/CloudflareAPI/api/g
* s/ApiKey/APIKey/g
* s/ApiToken/APIToken/g
* s/ApiUser/APIUser/g
2020-10-18 14:04:50 -04:00