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 e07d56a0c..225d50110 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 @@ -302,6 +302,9 @@ reverseproxy.reverse FromDomain,FromPort %s %s + + /^\*\./ + diff --git a/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/reverse_proxy.volt b/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/reverse_proxy.volt index 672cd81aa..abb23a0a4 100644 --- a/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/reverse_proxy.volt +++ b/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/reverse_proxy.volt @@ -336,6 +336,9 @@ .selectpicker('val', selectedDomains) .selectpicker('refresh'); } + + // Trigger to filter the dropdowns if subdomains are selected + $("#handle\\.subdomain").trigger("change"); } }); @@ -387,6 +390,26 @@ }); }); + // When subdomain is selected in handler show only wildcard domains + $("#handle\\.subdomain").on("change", function () { + const subdomainSelected = $("#handle\\.subdomain").val() !== ""; + + $("#handle\\.reverse").find("option").each(function () { + const isWildcard = $(this).text().includes("*."); + $(this).toggle(!subdomainSelected || isWildcard); + }); + + if (subdomainSelected) { + const selectedText = $("#handle\\.reverse").find("option:selected").text(); + if (!selectedText.includes("*.")) { + // Clear selection if not a wildcard + $("#handle\\.reverse").val("").change(); + } + } + + $("#handle\\.reverse").selectpicker("refresh"); + }); + // Trigger bootgrid setup for handlers tab too (even if not active) to ensure command buttons always work $('a[href="#handlers"]').trigger('shown.bs.tab');