www/caddy: Remove dns provider duplication in Caddyfile (#4034)

* www/caddy: Remove dns provider duplication in Caddyfile, move to single source of truth to file includeDnsProvider.

* Refactor DNS Providers that require special configuration into one array to avoid duplication.

* Remove redundant dnsProvider check before tls { } block. Make comments better to explain special cases and how to maintain dns providers in the template.

* Improve comment a bit more

* Add changelog
This commit is contained in:
Monviech
2024-06-10 08:28:50 +02:00
committed by GitHub
parent 2f625afc19
commit 0668669a57
3 changed files with 201 additions and 345 deletions
+1
View File
@@ -38,6 +38,7 @@ Plugin Changelog
* Fix: The subdomain port field has been removed, since it is unsupported. Subdomains track their ports from their parent wildcard domain.
* Add: DNS Providers: dnsmadeeasy, bunny, civo, scaleway, acmeproxy, inwx, namedotcom, easydns, infomaniak, directadmin, hosttech, vultr
* Remove: DNS Providers: godaddy
* Cleanup: Refactor dns provider configuration in Caddyfile template
1.5.6
@@ -143,174 +143,20 @@
{% endfor %}
{% endfor %}
{% if dnsProvider and dnsProvider != "acmedns" and dynDnsDomains|length > 0 %}
{#
# Define special DNS Providers that have more than one API key, or special requirements that do not allow the use of the default.
# The same providers have to be added to "OPNsense/Caddy/includeDnsProvider", best in the same order as in this array for maintainability.
# For a new provider to work, it has to be compiled into the caddy binary.
#}
{% set dnsProviderSpecialConfig = ['duckdns', 'porkbun', 'desec', 'route53', 'acmedns', 'googleclouddns', 'azure', 'ovh', 'namecheap', 'powerdns', 'ddnss', 'linode', 'tencentcloud', 'dinahosting', 'hexonet', 'mailinabox', 'netcup', 'rfc2136', 'dnsmadeeasy', 'civo', 'scaleway', 'acmeproxy', 'inwx', 'namedotcom', 'easydns', 'directadmin'] %}
{# Conditionally add the dynamic_dns section, acmedns provider is special, it does not support dynamic_dns. #}
{% if dnsProvider and dynDnsDomains|length > 0 and dnsProvider != "acmedns" %}
dynamic_dns {
{% if dnsProvider in ['porkbun', 'desec', 'route53', 'googleclouddns', 'azure', 'ovh', 'namecheap', 'powerdns', 'ddnss', 'linode', 'tencentcloud', 'dinahosting', 'hexonet', 'mailinabox', 'netcup', 'rfc2136', 'dnsmadeeasy', 'civo', 'scaleway', 'acmeproxy', 'inwx', 'netcup', 'namedotcom', 'easydns', 'directadmin'] %}
{# duckdns provider is special, it has a different configuration for dynamic dns than for the dns-01 challenge. #}
{% if dnsProvider in dnsProviderSpecialConfig and dnsProvider != "duckdns" %}
provider {{ dnsProvider }} {
{% if dnsProvider == 'porkbun' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_secret_key {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'desec' %}
{% if dnsApiKey %}token {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'route53' %}
{% if dnsApiKey %}access_key_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_access_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}max_retries {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}aws_profile {{ dnsOptionalField2 }}
{% endif %}
{% if dnsOptionalField3 %}region {{ dnsOptionalField3 }}
{% endif %}
{% if dnsOptionalField4 %}token {{ dnsOptionalField4 }}
{% endif %}
{% elif dnsProvider == 'googleclouddns' %}
{% if dnsApiKey %}gcp_project {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'azure' %}
{% if dnsApiKey %}tenant_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}client_id {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}client_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}subscription_id {{ dnsOptionalField2 }}
{% endif %}
{% if dnsOptionalField3 %}resource_group_name {{ dnsOptionalField3 }}
{% endif %}
{% elif dnsProvider == 'ovh' %}
{% if dnsApiKey %}endpoint {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}application_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}application_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}consumer_key {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'namecheap' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}user {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_endpoint {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}client_ip {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'powerdns' %}
{% if dnsApiKey %}server_url {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_token {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'ddnss' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}username {{ dnsSecretApiKey }}
{% endif %}
password {{ dnsOptionalField1 }}
{% elif dnsProvider == 'linode' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_url {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_version {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'tencentcloud' %}
{% if dnsApiKey %}secret_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_key {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'dinahosting' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'hexonet' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'mailinabox' %}
{% if dnsApiKey %}api_url {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}email_address {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}password {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'netcup' %}
{% if dnsApiKey %}customer_number {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_password {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'rfc2136' %}
{% if dnsApiKey %}key_name {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}key_alg {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}key {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}server {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'dnsmadeeasy' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_endpoint {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'civo' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'scaleway' %}
{% if dnsApiKey %}secret_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}organization_id {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'acmeproxy' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}endpoint {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'inwx' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}shared_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}endpoint_url {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'namedotcom' %}
{% if dnsApiKey %}token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}server {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}user {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'easydns' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_url {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'directadmin' %}
{% if dnsApiKey %}host {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}user {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}login_key {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}insecure_requests {{ dnsOptionalField2 }}
{% endif %}
{% endif %}
{% include "OPNsense/Caddy/includeDnsProvider" %}
}
{% else %}
{# Other DNS Providers fall under this default #}
@@ -418,187 +264,10 @@
#}
{% macro tls_configuration(dnsProvider, dnsApiKey, customCert, dnsChallenge, dnsSecretApiKey, TlsDnsOptionalField1, TlsDnsOptionalField2, TlsDnsOptionalField3, TlsDnsOptionalField4) %}
{% if dnsChallenge == "1" and dnsProvider %}
{% if dnsProvider in ['duckdns', 'porkbun', 'desec', 'route53', 'acmedns', 'googleclouddns', 'azure', 'ovh', 'namecheap', 'powerdns', 'ddnss', 'linode', 'tencentcloud', 'dinahosting', 'hexonet', 'mailinabox', 'netcup', 'rfc2136', 'dnsmadeeasy', 'civo', 'scaleway', 'acmeproxy', 'inwx', 'netcup', 'namedotcom', 'easydns', 'directadmin'] %}
{% if dnsProvider in dnsProviderSpecialConfig %}
tls {
dns {{ dnsProvider }} {
{% if dnsProvider == 'duckdns' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}override_domain {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'porkbun' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_secret_key {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'desec' %}
{% if dnsApiKey %}token {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'route53' %}
{% if dnsApiKey %}access_key_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_access_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}max_retries {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}aws_profile {{ dnsOptionalField2 }}
{% endif %}
{% if dnsOptionalField3 %}region {{ dnsOptionalField3 }}
{% endif %}
{% if dnsOptionalField4 %}token {{ dnsOptionalField4 }}
{% endif %}
{% elif dnsProvider == 'acmedns' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}subdomain {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}server_url {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'googleclouddns' %}
{% if dnsApiKey %}gcp_project {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'azure' %}
{% if dnsApiKey %}tenant_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}client_id {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}client_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}subscription_id {{ dnsOptionalField2 }}
{% endif %}
{% if dnsOptionalField3 %}resource_group_name {{ dnsOptionalField3 }}
{% endif %}
{% elif dnsProvider == 'ovh' %}
{% if dnsApiKey %}endpoint {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}application_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}application_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}consumer_key {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'namecheap' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}user {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_endpoint {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}client_ip {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'powerdns' %}
{% if dnsApiKey %}server_url {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_token {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'ddnss' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}username {{ dnsSecretApiKey }}
{% endif %}
password {{ dnsOptionalField1 }}
{% elif dnsProvider == 'linode' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_url {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_version {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'tencentcloud' %}
{% if dnsApiKey %}secret_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_key {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'dinahosting' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'hexonet' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'mailinabox' %}
{% if dnsApiKey %}api_url {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}email_address {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}password {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'netcup' %}
{% if dnsApiKey %}customer_number {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_password {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'rfc2136' %}
{% if dnsApiKey %}key_name {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}key_alg {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}key {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}server {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'dnsmadeeasy' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_endpoint {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'civo' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'scaleway' %}
{% if dnsApiKey %}secret_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}organization_id {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'acmeproxy' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}endpoint {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'inwx' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}shared_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}endpoint_url {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'namedotcom' %}
{% if dnsApiKey %}token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}server {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}user {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'easydns' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_url {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'directadmin' %}
{% if dnsApiKey %}host {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}user {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}login_key {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}insecure_requests {{ dnsOptionalField2 }}
{% endif %}
{% endif %}
{% include "OPNsense/Caddy/includeDnsProvider" %}
}
}
{% else %}
@@ -0,0 +1,186 @@
{#
# This file gets imported in two sections of the Caddyfile template
# - Section: Dynamic DNS Global Configuration
# - Macro: tls_configuration
#
# It only includes DNS Providers that need specific settings and do not default to
# "dns {{ dnsProvider }} {{ dnsApiKey }}"
#}
{% if dnsProvider == 'duckdns' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}override_domain {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'porkbun' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_secret_key {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'desec' %}
{% if dnsApiKey %}token {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'route53' %}
{% if dnsApiKey %}access_key_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_access_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}max_retries {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}aws_profile {{ dnsOptionalField2 }}
{% endif %}
{% if dnsOptionalField3 %}region {{ dnsOptionalField3 }}
{% endif %}
{% if dnsOptionalField4 %}token {{ dnsOptionalField4 }}
{% endif %}
{% elif dnsProvider == 'acmedns' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}subdomain {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}server_url {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'googleclouddns' %}
{% if dnsApiKey %}gcp_project {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'azure' %}
{% if dnsApiKey %}tenant_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}client_id {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}client_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}subscription_id {{ dnsOptionalField2 }}
{% endif %}
{% if dnsOptionalField3 %}resource_group_name {{ dnsOptionalField3 }}
{% endif %}
{% elif dnsProvider == 'ovh' %}
{% if dnsApiKey %}endpoint {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}application_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}application_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}consumer_key {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'namecheap' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}user {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_endpoint {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}client_ip {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'powerdns' %}
{% if dnsApiKey %}server_url {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_token {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'ddnss' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}username {{ dnsSecretApiKey }}
{% endif %}
password {{ dnsOptionalField1 }}
{% elif dnsProvider == 'linode' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_url {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_version {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'tencentcloud' %}
{% if dnsApiKey %}secret_id {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_key {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'dinahosting' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'hexonet' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'mailinabox' %}
{% if dnsApiKey %}api_url {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}email_address {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}password {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'netcup' %}
{% if dnsApiKey %}customer_number {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_password {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'rfc2136' %}
{% if dnsApiKey %}key_name {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}key_alg {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}key {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}server {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'dnsmadeeasy' %}
{% if dnsApiKey %}api_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}secret_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_endpoint {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'civo' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% elif dnsProvider == 'scaleway' %}
{% if dnsApiKey %}secret_key {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}organization_id {{ dnsSecretApiKey }}
{% endif %}
{% elif dnsProvider == 'acmeproxy' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}endpoint {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'inwx' %}
{% if dnsApiKey %}username {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}password {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}shared_secret {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}endpoint_url {{ dnsOptionalField2 }}
{% endif %}
{% elif dnsProvider == 'namedotcom' %}
{% if dnsApiKey %}token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}server {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}user {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'easydns' %}
{% if dnsApiKey %}api_token {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}api_key {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}api_url {{ dnsOptionalField1 }}
{% endif %}
{% elif dnsProvider == 'directadmin' %}
{% if dnsApiKey %}host {{ dnsApiKey }}
{% endif %}
{% if dnsSecretApiKey %}user {{ dnsSecretApiKey }}
{% endif %}
{% if dnsOptionalField1 %}login_key {{ dnsOptionalField1 }}
{% endif %}
{% if dnsOptionalField2 %}insecure_requests {{ dnsOptionalField2 }}
{% endif %}
{% endif %}