diff --git a/www/caddy/pkg-descr b/www/caddy/pkg-descr index 570748fa5..edcee0664 100644 --- a/www/caddy/pkg-descr +++ b/www/caddy/pkg-descr @@ -31,6 +31,7 @@ Plugin Changelog 1.6.3 * Add: Disable Propagation Timeout in DNS Provider Tab. This can help if the DNS Challenge fails due to DNS Propagation being too slow. +* Add: Set custom resolver for the DNS Challenge in the DNS Provider tab. 1.6.2 diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dnsprovider.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dnsprovider.xml index 738419d5c..b296f9117 100644 --- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dnsprovider.xml +++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dnsprovider.xml @@ -51,6 +51,12 @@ true + + caddy.general.TlsDnsPropagationResolvers + + text + + caddy.general.TlsDnsPropagationTimeout diff --git a/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml b/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml index f61d5c937..4b3e91a56 100644 --- a/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml +++ b/www/caddy/src/opnsense/mvc/app/models/OPNsense/Caddy/Caddy.xml @@ -70,6 +70,9 @@ + + N + diff --git a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile index 32d33f062..673fd397c 100644 --- a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile +++ b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile @@ -319,36 +319,38 @@ # - @param dnsSecretApiKey (string, optional): A secret API key or token for additional security, depending on the provider. # - @param TlsDnsOptionalField1 to 4 (string, optional): Additional fields for specific DNS provider configurations. # - @param TlsDnsPropagationTimeout (boolean, optional): Disables Propagation Timeout for DNS Challenge. +# - @param TlsDnsPropagationResolvers (string, optional): Set custom nameserver for DNS Challenge. #} -{% macro tls_configuration(dnsProvider, dnsApiKey, customCert, dnsChallenge, dnsSecretApiKey, TlsDnsOptionalField1, TlsDnsOptionalField2, TlsDnsOptionalField3, TlsDnsOptionalField4, TlsDnsPropagationTimeout) %} - {% if dnsChallenge == "1" and dnsProvider %} - {% if dnsProvider in dnsProviderSpecialConfig %} - tls { - issuer acme { - dns {{ dnsProvider }} { - {% include "OPNsense/Caddy/includeDnsProvider" %} - } - {% if TlsDnsPropagationTimeout|default("0") == "1" %} - propagation_delay 30s - propagation_timeout -1 - {% endif %} +{% macro tls_configuration( + customCert, + dnsChallenge, + dnsProvider, + dnsApiKey, + dnsSecretApiKey, + tlsDnsOptionalField1, + tlsDnsOptionalField2, + tlsDnsOptionalField3, + tlsDnsOptionalField4, + tlsDnsPropagationTimeout, + tlsDnsPropagationResolvers +) %} + {% if customCert or (dnsChallenge == "1" and dnsProvider) %} + tls {% if customCert %}/var/db/caddy/data/caddy/certificates/temp/{{ customCert }}.pem /var/db/caddy/data/caddy/certificates/temp/{{ customCert }}.key{% endif %} {% if not customCert and dnsChallenge == "1" and dnsProvider %}{ + issuer acme { + dns {{ dnsProvider }} {% if dnsProvider not in dnsProviderSpecialConfig %}{{ dnsApiKey }}{% else %}{ + {% include "OPNsense/Caddy/includeDnsProvider" %} } + {% endif %} + + {% if tlsDnsPropagationResolvers %} + resolvers {{ tlsDnsPropagationResolvers }} + {% endif %} + {% if tlsDnsPropagationTimeout|default("0") == "1" %} + propagation_delay 30s + propagation_timeout -1 + {% endif %} } - {% else %} - tls { - issuer acme { - {# Other DNS Providers fall under this default #} - dns {{ dnsProvider }} {{ dnsApiKey }} - {% if TlsDnsPropagationTimeout|default("0") == "1" %} - propagation_delay 30s - propagation_timeout -1 - {% endif %} - } - } - {% endif %} - {% endif %} - {% if customCert %} - tls /var/db/caddy/data/caddy/certificates/temp/{{ customCert }}.pem /var/db/caddy/data/caddy/certificates/temp/{{ customCert }}.key + }{% endif %} {% endif %} {% endmacro %} @@ -558,8 +560,21 @@ {% endif %} {% set customCert = reverse.CustomCertificate|default("") %} {% set dnsChallenge = reverse.DnsChallenge|default("0") %} - {% set TlsDnsPropagationTimeout = generalSettings.TlsDnsPropagationTimeout %} - {{ tls_configuration(dnsProvider, dnsApiKey, customCert, dnsChallenge, dnsSecretApiKey, TlsDnsOptionalField1, TlsDnsOptionalField2, TlsDnsOptionalField3, TlsDnsOptionalField4, TlsDnsPropagationTimeout) }} + {% set tlsDnsPropagationTimeout = generalSettings.TlsDnsPropagationTimeout %} + {% set tlsDnsPropagationResolvers = generalSettings.TlsDnsPropagationResolvers %} + {{ tls_configuration( + customCert, + dnsChallenge, + dnsProvider, + dnsApiKey, + dnsSecretApiKey, + tlsDnsOptionalField1, + tlsDnsOptionalField2, + tlsDnsOptionalField3, + tlsDnsOptionalField4, + tlsDnsPropagationTimeout, + tlsDnsPropagationResolvers + ) }} {% if not reverse.accesslist %} {% set basicauth_uuids = reverse.basicauth %}