106 lines
3.9 KiB
Python
106 lines
3.9 KiB
Python
|
|
# Hosting provider API definitions
|
||
|
|
# Each provider has its DNS API endpoint format and auth method
|
||
|
|
|
||
|
|
PROVIDERS = {
|
||
|
|
"hostinger": {
|
||
|
|
"name": "Hostinger",
|
||
|
|
"dns_base": "https://api.hostinger.com/api/dns/v1/zones",
|
||
|
|
"auth_type": "bearer",
|
||
|
|
"auth_header": "Authorization",
|
||
|
|
"auth_prefix": "Bearer ",
|
||
|
|
"docs": "https://developers.hostinger.com",
|
||
|
|
"api_key_label": "API Key",
|
||
|
|
"notes": "Generate API key from Hostinger hPanel > API Keys",
|
||
|
|
},
|
||
|
|
"cloudflare": {
|
||
|
|
"name": "Cloudflare",
|
||
|
|
"dns_base": "https://api.cloudflare.com/client/v4/zones",
|
||
|
|
"auth_type": "bearer",
|
||
|
|
"auth_header": "Authorization",
|
||
|
|
"auth_prefix": "Bearer ",
|
||
|
|
"docs": "https://developers.cloudflare.com/api",
|
||
|
|
"api_key_label": "API Token",
|
||
|
|
"notes": "Create API token at dash.cloudflare.com > My Profile > API Tokens",
|
||
|
|
"needs_zone_id": True,
|
||
|
|
},
|
||
|
|
"digitalocean": {
|
||
|
|
"name": "DigitalOcean",
|
||
|
|
"dns_base": "https://api.digitalocean.com/v2/domains",
|
||
|
|
"auth_type": "bearer",
|
||
|
|
"auth_header": "Authorization",
|
||
|
|
"auth_prefix": "Bearer ",
|
||
|
|
"docs": "https://docs.digitalocean.com/reference/api",
|
||
|
|
"api_key_label": "API Token",
|
||
|
|
"notes": "Generate token at cloud.digitalocean.com > API > Tokens",
|
||
|
|
},
|
||
|
|
"vultr": {
|
||
|
|
"name": "Vultr",
|
||
|
|
"dns_base": "https://api.vultr.com/v2/domains",
|
||
|
|
"auth_type": "bearer",
|
||
|
|
"auth_header": "Authorization",
|
||
|
|
"auth_prefix": "Bearer ",
|
||
|
|
"docs": "https://www.vultr.com/api",
|
||
|
|
"api_key_label": "API Key",
|
||
|
|
"notes": "Get API key from my.vultr.com > Account > API",
|
||
|
|
},
|
||
|
|
"linode": {
|
||
|
|
"name": "Linode (Akamai)",
|
||
|
|
"dns_base": "https://api.linode.com/v4/domains",
|
||
|
|
"auth_type": "bearer",
|
||
|
|
"auth_header": "Authorization",
|
||
|
|
"auth_prefix": "Bearer ",
|
||
|
|
"docs": "https://www.linode.com/docs/api",
|
||
|
|
"api_key_label": "Personal Access Token",
|
||
|
|
"notes": "Create token at cloud.linode.com > My Profile > API Tokens",
|
||
|
|
},
|
||
|
|
"godaddy": {
|
||
|
|
"name": "GoDaddy",
|
||
|
|
"dns_base": "https://api.godaddy.com/v1/domains",
|
||
|
|
"auth_type": "sso",
|
||
|
|
"auth_header": "Authorization",
|
||
|
|
"auth_prefix": "sso-key ",
|
||
|
|
"docs": "https://developer.godaddy.com",
|
||
|
|
"api_key_label": "API Key:Secret",
|
||
|
|
"notes": "Format: key:secret. Get from developer.godaddy.com > API Keys",
|
||
|
|
},
|
||
|
|
"namecheap": {
|
||
|
|
"name": "Namecheap",
|
||
|
|
"dns_base": "https://api.namecheap.com/xml.response",
|
||
|
|
"auth_type": "query",
|
||
|
|
"docs": "https://www.namecheap.com/support/api/intro",
|
||
|
|
"api_key_label": "API Key",
|
||
|
|
"notes": "Enable API at namecheap.com > Profile > Tools > API Access. Requires IP whitelist.",
|
||
|
|
},
|
||
|
|
"hetzner": {
|
||
|
|
"name": "Hetzner",
|
||
|
|
"dns_base": "https://dns.hetzner.com/api/v1/zones",
|
||
|
|
"auth_type": "header",
|
||
|
|
"auth_header": "Auth-API-Token",
|
||
|
|
"auth_prefix": "",
|
||
|
|
"docs": "https://dns.hetzner.com/api-docs",
|
||
|
|
"api_key_label": "API Token",
|
||
|
|
"notes": "Create token at dns.hetzner.com > API Tokens",
|
||
|
|
},
|
||
|
|
"ovh": {
|
||
|
|
"name": "OVH",
|
||
|
|
"dns_base": "https://api.ovh.com/1.0/domain/zone",
|
||
|
|
"auth_type": "ovh",
|
||
|
|
"docs": "https://api.ovh.com",
|
||
|
|
"api_key_label": "Application Key",
|
||
|
|
"notes": "Requires Application Key, Application Secret, and Consumer Key from api.ovh.com/createApp",
|
||
|
|
},
|
||
|
|
"aws_route53": {
|
||
|
|
"name": "AWS Route 53",
|
||
|
|
"dns_base": "https://route53.amazonaws.com/2013-04-01/hostedzone",
|
||
|
|
"auth_type": "aws",
|
||
|
|
"docs": "https://docs.aws.amazon.com/Route53/latest/APIReference",
|
||
|
|
"api_key_label": "Access Key ID",
|
||
|
|
"notes": "Requires AWS Access Key ID and Secret Access Key with Route53 permissions",
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
PROVIDER_LIST = [
|
||
|
|
{"id": k, **{kk: vv for kk, vv in v.items()}}
|
||
|
|
for k, v in PROVIDERS.items()
|
||
|
|
]
|