mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-10 22:25:51 +08:00
* 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>
145 lines
3.5 KiB
JSON
145 lines
3.5 KiB
JSON
{
|
|
"ACTIVEDIRECTORY_PS": {
|
|
"ADServer": "$AD_SERVER",
|
|
"domain": "$AD_DOMAIN"
|
|
},
|
|
"AXFRDDNS": {
|
|
"domain": "$AXFRDDNS_DOMAIN",
|
|
"master": "$AXFRDDNS_MASTER",
|
|
"nameservers": "ns.example.com",
|
|
"transfer-key": "$AXFRDDNS_TRANSFER_KEY",
|
|
"update-key": "$AXFRDDNS_UPDATE_KEY"
|
|
},
|
|
"AZURE_DNS": {
|
|
"ClientID": "$AZURE_CLIENT_ID",
|
|
"ClientSecret": "$AZURE_CLIENT_SECRET",
|
|
"ResourceGroup": "$AZURE_RESOURCE_GROUP",
|
|
"SubscriptionID": "$AZURE_SUBSCRIPTION_ID",
|
|
"TenantID": "$AZURE_TENANT_ID",
|
|
"domain": "$AZURE_DOMAIN"
|
|
},
|
|
"BIND": {
|
|
"domain": "example.com"
|
|
},
|
|
"CLOUDFLAREAPI": {
|
|
"apitoken": "$CF_TOKEN",
|
|
"domain": "$CF_DOMAIN"
|
|
},
|
|
"CLOUDFLAREAPI_OLD": {
|
|
"apikey": "$CF_KEY",
|
|
"apiuser": "$CF_USER",
|
|
"domain": "$CF_DOMAIN",
|
|
"knownFailures": "54"
|
|
},
|
|
"CLOUDNS": {
|
|
"auth-id": "$CLOUDNS_AUTH_ID",
|
|
"auth-password": "$CLOUDNS_AUTH_PASSWORD",
|
|
"domain": "$CLOUDNS_DOMAIN"
|
|
},
|
|
"DIGITALOCEAN": {
|
|
"domain": "$DO_DOMAIN",
|
|
"token": "$DO_TOKEN"
|
|
},
|
|
"DNSIMPLE": {
|
|
"baseurl": "https://api.sandbox.dnsimple.com",
|
|
"domain": "$DNSIMPLE_DOMAIN",
|
|
"token": "$DNSIMPLE_TOKEN"
|
|
},
|
|
"EXOSCALE": {
|
|
"apikey": "$EXOSCALE_API_KEY",
|
|
"dns-endpoint": "https://api.exoscale.ch/dns",
|
|
"domain": "$EXOSCALE_DOMAIN",
|
|
"secretkey": "$EXOSCALE_SECRET_KEY"
|
|
},
|
|
"GANDI_V5": {
|
|
"apikey": "$GANDI_V5_APIKEY",
|
|
"domain": "$GANDI_V5_DOMAIN"
|
|
},
|
|
"GCLOUD": {
|
|
"client_email": "$GCLOUD_EMAIL",
|
|
"domain": "$GCLOUD_DOMAIN",
|
|
"private_key": "$GCLOUD_PRIVATEKEY",
|
|
"project_id": "$GCLOUD_PROJECT",
|
|
"type": "$GCLOUD_TYPE"
|
|
},
|
|
"HEDNS": {
|
|
"domain": "$HEDNS_DOMAIN",
|
|
"password": "$HEDNS_PASSWORD",
|
|
"session-file-path": ".",
|
|
"totp-key": "$HEDNS_TOTP_SECRET",
|
|
"username": "$HEDNS_USERNAME"
|
|
},
|
|
"HETZNER": {
|
|
"api_key": "$HETZNER_API_KEY",
|
|
"domain": "$HETZNER_DOMAIN",
|
|
"rate_limited": "true"
|
|
},
|
|
"HEXONET": {
|
|
"apientity": "$HEXONET_ENTITY",
|
|
"apilogin": "$HEXONET_UID",
|
|
"apipassword": "$HEXONET_PW",
|
|
"debugmode": "$HEXONET_DEBUGMODE",
|
|
"domain": "$HEXONET_DOMAIN",
|
|
"ipaddress": "$HEXONET_IP"
|
|
},
|
|
"INWX": {
|
|
"domain": "$INWX_DOMAIN",
|
|
"password": "$INWX_PASSWORD",
|
|
"sandbox": "1",
|
|
"username": "$INWX_USER"
|
|
},
|
|
"LINODE": {
|
|
"domain": "$LINODE_DOMAIN",
|
|
"token": "$LINODE_TOKEN"
|
|
},
|
|
"NAMECHEAP": {
|
|
"apikey": "$NAMECHEAP_KEY",
|
|
"apiuser": "$NAMECHEAP_USER",
|
|
"domain": "$NAMECHEAP_DOMAIN"
|
|
},
|
|
"NAMEDOTCOM": {
|
|
"apikey": "$NAMEDOTCOM_KEY",
|
|
"apiurl": "$NAMEDOTCOM_URL",
|
|
"apiuser": "$NAMEDOTCOM_USER",
|
|
"domain": "$NAMEDOTCOM_DOMAIN"
|
|
},
|
|
"NETCUP": {
|
|
"api-key": "$NETCUP_KEY",
|
|
"api-password": "$NETCUP_PASSWORD",
|
|
"customer-number": "$NETCUP_CUSTOMER_NUMBER",
|
|
"domain": "$NETCUP_DOMAIN"
|
|
},
|
|
"NS1": {
|
|
"api_token": "$NS1_TOKEN",
|
|
"domain": "$NS1_DOMAIN"
|
|
},
|
|
"OCTODNS": {
|
|
"directory": "config",
|
|
"domain": "example.com"
|
|
},
|
|
"OVH": {
|
|
"app-key": "$OVH_APP_KEY",
|
|
"app-secret-key": "$OVH_APP_SECRET_KEY",
|
|
"consumer-key": "$OVH_CONSUMER_KEY",
|
|
"domain": "$OVH_DOMAIN"
|
|
},
|
|
"POWERDNS": {
|
|
"apikey": "$POWERDNS_APIKEY",
|
|
"apiurl": "$POWERDNS_APIURL",
|
|
"servername": "$POWERDNS_SERVERNAME"
|
|
},
|
|
"ROUTE53": {
|
|
"KeyId": "$R53_KEY_ID",
|
|
"SecretKey": "$R53_KEY",
|
|
"domain": "$R53_DOMAIN"
|
|
},
|
|
"SOFTLAYER": {
|
|
"api_key": "$SL_API_KEY",
|
|
"domain": "$SL_DOMAIN",
|
|
"username": "$SL_USERNAME"
|
|
},
|
|
"VULTR": {
|
|
"domain": "$VULTR_DOMAIN",
|
|
"token": "$VULTR_TOKEN"
|
|
}
|
|
}
|