From 7faded335d3880cac2cffb7ddf4039b75bd5f7b2 Mon Sep 17 00:00:00 2001
From: Monviech <79600909+Monviech@users.noreply.github.com>
Date: Fri, 20 Sep 2024 15:09:49 +0200
Subject: [PATCH] www/caddy: Handler and other dialogue form cleanup (#4242)
* www/caddy: Cleanup Handle, Domain and Layer4 dialogue. Convert all TLS checkboxes to dropdowns for consistency.
* www/caddy: Remove all hints from forms that do not imply a default value. Change the position of some options. Improve some help texts.
* www/caddy: Refactor dialogHandler to hide options based on selections or inside advanced mode.
* www/caddy: Remove boldness from tabs since it renders strange in some browsers. Change spot of HttpTls in handler.
* www/caddy: Add Access header with advanced mode.
* www/caddy: Final touches on the improved dialogHandle.
* www/caddy: Changelog
* www/caddy: Access is inside handler
* www/caddy: Caddy Domains widget opens links to domains in new tab.
* www/caddy: Improve Domain and Subdomain dialogue, rename Bootgrid options for consistency.
* www/caddy: Mark ACME as default.
* www/caddy: Last tweaks to dialogDomain.
---
www/caddy/Makefile | 3 +-
www/caddy/pkg-descr | 7 +
.../OPNsense/Caddy/forms/dialogAccessList.xml | 2 -
.../OPNsense/Caddy/forms/dialogHandle.xml | 124 +++++++++---------
.../OPNsense/Caddy/forms/dialogHeader.xml | 2 -
.../OPNsense/Caddy/forms/dialogLayer4.xml | 32 ++---
.../Caddy/forms/dialogReverseProxy.xml | 67 +++++-----
.../OPNsense/Caddy/forms/dialogSubdomain.xml | 29 ++--
.../OPNsense/Caddy/forms/general.xml | 12 +-
.../mvc/app/models/OPNsense/Caddy/Caddy.xml | 31 +++--
.../app/views/OPNsense/Caddy/diagnostics.volt | 4 -
.../views/OPNsense/Caddy/reverse_proxy.volt | 57 +++++---
.../opnsense/www/js/widgets/CaddyDomain.js | 2 +-
13 files changed, 203 insertions(+), 169 deletions(-)
diff --git a/www/caddy/Makefile b/www/caddy/Makefile
index 0a0183dac..2581e24c6 100644
--- a/www/caddy/Makefile
+++ b/www/caddy/Makefile
@@ -1,6 +1,5 @@
PLUGIN_NAME= caddy
-PLUGIN_VERSION= 1.7.0
-PLUGIN_REVISION= 1
+PLUGIN_VERSION= 1.7.1
PLUGIN_DEPENDS= caddy-custom
PLUGIN_COMMENT= Modern Reverse Proxy with Automatic HTTPS, Dynamic DNS and Layer4 Routing
PLUGIN_MAINTAINER= cedrik@pischem.com
diff --git a/www/caddy/pkg-descr b/www/caddy/pkg-descr
index 38f7cbb89..8f4f1679f 100644
--- a/www/caddy/pkg-descr
+++ b/www/caddy/pkg-descr
@@ -13,6 +13,13 @@ DOC: https://docs.opnsense.org/manual/how-tos/caddy.html
Plugin Changelog
================
+1.7.1
+
+* Add: Frontend HTTP Version can be selected in General Settings, can be used to disable QUIC protocol
+* Change: Caddy Domains widget will now open links to managed websites in new browser tabs
+* Cleanup: TLS checkboxes have been converted to dropdowns with http/https for clarity
+* Cleanup: Layer4, Domain and Handle dialogues have been cleaned up, some options are now hidden in advanced mode
+
1.7.0
* Add: Layer4 protocols: DNS
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogAccessList.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogAccessList.xml
index 0d51368f6..b38f500fd 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogAccessList.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogAccessList.xml
@@ -23,14 +23,12 @@
accesslist.HttpResponseCode
text
- 403
accesslist.HttpResponseMessage
text
- Forbidden
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHandle.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHandle.xml
index 85ac5b0c4..b8402ecca 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHandle.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHandle.xml
@@ -5,6 +5,16 @@
checkbox
+
+ handle.description
+
+ text
+
+
+
+ header
+
+
handle.reverse
@@ -15,59 +25,80 @@
handle.subdomain
dropdown
+
-
- handle.description
-
- text
-
-
header
-
- true
+
+ true
handle.HandleType
-
+
dropdown
-
+
+ true
handle.HandlePath
-
+
text
-
+ any
+
+ true
header
- true
+ true
handle.ForwardAuth
checkbox
+ true
header
- true
+ true
handle.header
-
+
dropdown
select_multiple
5
-
+
+ true
header
+
+ handle.HttpVersion
+
+ dropdown
+
+ true
+
+
+ handle.HttpKeepalive
+
+ text
+ 120
+
+ true
+
+
+ handle.HttpTls
+
+ dropdown
+
+
handle.ToDomain
@@ -75,7 +106,7 @@
true
192.168.1.1
-
+
handle.ToPort
@@ -88,71 +119,42 @@
handle.ToPath
text
-
+
true
-
- handle.HttpTlsInsecureSkipVerify
-
- checkbox
-
-
-
- header
-
- true
-
handle.PassiveHealthFailDuration
text
+ true
- header
-
- true
-
-
- handle.HttpVersion
-
- dropdown
-
-
-
- handle.HttpKeepalive
-
- text
- 120
-
-
-
- header
-
- true
-
-
- handle.HttpTls
-
+ handle.HttpTlsInsecureSkipVerify
+
checkbox
-
-
-
- handle.HttpNtlm
-
- checkbox
-
+
+
handle.HttpTlsTrustedCaCerts
dropdown
+
handle.HttpTlsServerName
text
+
+
+ handle.HttpNtlm
+
+ checkbox
+
+
+
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHeader.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHeader.xml
index 070e8b603..df19819f0 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHeader.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogHeader.xml
@@ -8,14 +8,12 @@
header.HeaderType
- Host
text
header.HeaderValue
- {upstream_hostport}
text
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogLayer4.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogLayer4.xml
index bbc7d6b30..acac47c8c 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogLayer4.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogLayer4.xml
@@ -5,6 +5,16 @@
checkbox
+
+ layer4.description
+
+ text
+
+
+
+ header
+
+
layer4.FromDomain
@@ -19,6 +29,10 @@
dropdown
+
+ header
+
+
layer4.ToDomain
@@ -33,33 +47,19 @@
text
-
- layer4.description
-
- text
-
-
-
- header
-
- true
-
layer4.PassiveHealthFailDuration
text
-
-
- header
-
- true
+ true
layer4.ProxyProtocol
dropdown
+ true
header
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml
index 56f2562dd..5cba4c1a2 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogReverseProxy.xml
@@ -5,26 +5,6 @@
checkbox
-
- reverse.DisableTls
-
- dropdown
-
-
-
- reverse.FromDomain
-
- text
- example.com
-
-
-
- reverse.FromPort
-
- text
- 443
-
-
reverse.description
@@ -33,37 +13,54 @@
header
-
- true
+
- reverse.DynDns
-
- checkbox
-
+ reverse.DisableTls
+
+ dropdown
+
- header
-
- true
+ reverse.FromDomain
+
+ text
+ example.com
+
- reverse.DnsChallenge
-
- checkbox
-
+ reverse.FromPort
+
+ text
+ 443
+
reverse.CustomCertificate
-
+
dropdown
-
+
+
reverse.AcmePassthrough
text
+ true
+
+
+ reverse.DnsChallenge
+
+ checkbox
+
+
+
+
+ reverse.DynDns
+
+ checkbox
+
header
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogSubdomain.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogSubdomain.xml
index 49e3b51a0..8711c4a96 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogSubdomain.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/dialogSubdomain.xml
@@ -5,6 +5,16 @@
checkbox
+
+ subdomain.description
+
+ text
+
+
+
+ header
+
+
subdomain.reverse
@@ -16,18 +26,7 @@
text
opn.example.com
-
-
-
- subdomain.description
-
- text
-
-
-
- header
-
- true
+
subdomain.DynDns
@@ -35,16 +34,12 @@
checkbox
-
- header
-
- true
-
subdomain.AcmePassthrough
text
+ true
header
diff --git a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/general.xml b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/general.xml
index beb0b5ef1..09ef4f2ab 100644
--- a/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/general.xml
+++ b/www/caddy/src/opnsense/mvc/app/controllers/OPNsense/Caddy/forms/general.xml
@@ -211,6 +211,12 @@
dropdown
+
+ caddy.general.AuthToTls
+
+ dropdown
+
+
caddy.general.AuthToDomain
@@ -223,12 +229,6 @@
text
-
- caddy.general.AuthToTls
-
- checkbox
-
-
caddy.general.AuthToUri
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 243b323b0..e489d2f6e 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
@@ -157,7 +157,14 @@
-
+
+ Y
+ 0
+
+ http://
+ https://
+
+
/^(\/.*)?$/u
Please enter a valid 'URI' that starts with '/'.
@@ -199,7 +206,9 @@
-
+
+ ACME (HTTP-01, TLS-ALPN-01)
+
@@ -207,8 +216,8 @@
Y
0
- HTTPS (default)
- HTTP
+ https://
+ http://
@@ -269,8 +278,8 @@
OPNsense.Caddy.Caddy
reverseproxy.reverse
- FromDomain,FromPort
- %s %s
+ DisableTls,FromDomain,FromPort
+ %s%s %s
@@ -324,10 +333,16 @@
Please enter a value between 1 to 100.
-
+
+ Y
+ 0
+
+ http://
+ https://
+
- TLS and NTLM must be enabled at the same time.
+ HTTPS and NTLM must be enabled at the same time.
DependConstraint
HttpNtlm
diff --git a/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/diagnostics.volt b/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/diagnostics.volt
index 259c6e141..4d9a3dc9f 100644
--- a/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/diagnostics.volt
+++ b/www/caddy/src/opnsense/mvc/app/views/OPNsense/Caddy/diagnostics.volt
@@ -133,10 +133,6 @@
@@ -360,16 +387,16 @@
| {{ lang._('ID') }} |
{{ lang._('Enabled') }} |
+ {{ lang._('Protocol') }} |
{{ lang._('Domain') }} |
{{ lang._('Port') }} |
{{ lang._('Access List') }} |
{{ lang._('Basic Auth') }} |
- {{ lang._('DNS-01 challenge') }} |
+ {{ lang._('DNS-01 Challenge') }} |
{{ lang._('Dynamic DNS') }} |
{{ lang._('HTTP Access Log') }} |
- {{ lang._('Custom Certificate') }} |
- {{ lang._('HTTP-01 redirection') }} |
- {{ lang._('Disable TLS') }} |
+ {{ lang._('Certificate') }} |
+ {{ lang._('HTTP-01 Challenge Redirection') }} |
{{ lang._('Description') }} |
{{ lang._('Commands') }} |
@@ -405,7 +432,7 @@
{{ lang._('Access List') }} |
{{ lang._('Basic Auth') }} |
{{ lang._('Dynamic DNS') }} |
- {{ lang._('HTTP-01 redirection') }} |
+ {{ lang._('HTTP-01 Challenge Redirection') }} |
{{ lang._('Description') }} |
{{ lang._('Commands') }} |
@@ -438,18 +465,18 @@
{{ lang._('Enabled') }} |
{{ lang._('Domain') }} |
{{ lang._('Subdomain') }} |
- {{ lang._('Handle Type') }} |
- {{ lang._('Handle Path') }} |
- {{ lang._('Header') }} |
+ {{ lang._('Handler') }} |
+ {{ lang._('Path') }} |
+ {{ lang._('HTTP Headers') }} |
+ {{ lang._('Protocol') }} |
{{ lang._('Upstream Domain') }} |
{{ lang._('Upstream Port') }} |
{{ lang._('Upstream Path') }} |
- {{ lang._('Fail Duration') }} |
+ {{ lang._('Upstream Fail Duration') }} |
{{ lang._('Forward Auth') }} |
- {{ lang._('TLS') }} |
{{ lang._('HTTP Version') }} |
{{ lang._('HTTP Keepalive') }} |
- {{ lang._('TLS CA') }} |
+ {{ lang._('TLS Trust Pool') }} |
{{ lang._('TLS Server Name') }} |
{{ lang._('NTLM') }} |
{{ lang._('TLS Insecure Skip Verify') }} |
diff --git a/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js b/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js
index a43f51050..c544cfe6f 100644
--- a/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js
+++ b/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js
@@ -91,7 +91,7 @@ export default class CaddyDomain extends BaseTableWidget {
data-tooltip="caddy-domain-${domainPort}" title="${tooltipText}">
-
+
${domainPort}