mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2024-05-11 05:55:12 +00:00
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>
This commit is contained in:
73
docs/_providers/hetzner.md
Normal file
73
docs/_providers/hetzner.md
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
name: Hetzner DNS Console
|
||||
title: Hetzner DNS Console
|
||||
layout: default
|
||||
jsId: HETZNER
|
||||
---
|
||||
|
||||
# Hetzner DNS Console Provider
|
||||
|
||||
## Configuration
|
||||
|
||||
In your credentials file, you must provide a
|
||||
[Hetzner API Key](https://dns.hetzner.com/settings/api-token).
|
||||
|
||||
{% highlight json %}
|
||||
{
|
||||
"hetzner": {
|
||||
"api_key": "your-api-key"
|
||||
}
|
||||
}
|
||||
{% endhighlight %}
|
||||
|
||||
## Metadata
|
||||
|
||||
This provider does not recognize any special metadata fields unique to Hetzner
|
||||
DNS Console.
|
||||
|
||||
## Usage
|
||||
|
||||
Example Javascript:
|
||||
|
||||
{% highlight js %}
|
||||
var REG_NONE = NewRegistrar('none', 'NONE');
|
||||
var HETZNER = NewDnsProvider("hetzner", "HETZNER");
|
||||
|
||||
D("example.tld", REG_NONE, DnsProvider(HETZNER),
|
||||
A("test","1.2.3.4")
|
||||
);
|
||||
{%endhighlight%}
|
||||
|
||||
## Activation
|
||||
|
||||
Create a new API Key in the
|
||||
[Hetzner DNS Console](https://dns.hetzner.com/settings/api-token).
|
||||
|
||||
## Caveats
|
||||
|
||||
### SOA
|
||||
|
||||
Hetzner DNS Console does not allow changing the SOA record via their API.
|
||||
There is an alternative method using an import of a full BIND file, but this
|
||||
approach does not play nice with incremental changes or ignored records.
|
||||
At this time you cannot update SOA records via DNSControl.
|
||||
|
||||
### Rate Limiting
|
||||
|
||||
In case you are frequently seeing messages about being rate-limited:
|
||||
|
||||
{% highlight txt %}
|
||||
WARNING: request rate-limited, constant back-off is now at 1s.
|
||||
{% endhighlight %}
|
||||
|
||||
You may want to enable the `rate_limited` mode by default.
|
||||
|
||||
In your `creds.json` for all `HETZNER` provider entries:
|
||||
{% highlight json %}
|
||||
{
|
||||
"hetzner": {
|
||||
"rate_limited": "true",
|
||||
"api_key": "your-api-key"
|
||||
}
|
||||
}
|
||||
{% endhighlight %}
|
||||
Reference in New Issue
Block a user