diff --git a/www/caddy/pkg-descr b/www/caddy/pkg-descr index 59d58f317..9a3d7175c 100644 --- a/www/caddy/pkg-descr +++ b/www/caddy/pkg-descr @@ -32,7 +32,7 @@ Plugin Changelog * Add: forward_auth directive with Authelia as Authz Provider. * Add: Default HTTP and HTTPS ports can be changed in general settings. * Add: Introduce HTTP version to handler. HTTP/1.1, HTTP/2 and HTTP/3 can be chosen. -* Change: NTLM is now deprecated, though the option will stay for a while longer. +* Add: HTTP Keepalive can be set in a handler. * Change: Option "tls_trusted_ca_certs" is now "tls_trust_pool". 1.5.7 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 e8013cd00..f467f6576 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 @@ -87,17 +87,30 @@ true - - header - - true - handle.PassiveHealthFailDuration text + + header + + true + + + handle.HttpVersion + + dropdown + + + + handle.HttpKeepalive + + text + 120 + + header @@ -109,18 +122,11 @@ checkbox - - handle.HttpVersion - - dropdown - - handle.HttpNtlm checkbox - - true + handle.HttpTlsInsecureSkipVerify 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 b44276dc2..e00c0efb6 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 @@ -335,6 +335,10 @@ HTTP/3 + + 0 + 86400 + 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 41622bac3..9da4e4596 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 @@ -337,6 +337,7 @@ {{ lang._('Forward Auth') }} {{ lang._('TLS') }} {{ lang._('HTTP Version') }} + {{ lang._('HTTP Keepalive') }} {{ lang._('TLS CA') }} {{ lang._('TLS Server Name') }} {{ lang._('NTLM') }} diff --git a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile index 592f552d5..3dac6c0ab 100644 --- a/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile +++ b/www/caddy/src/opnsense/service/templates/OPNsense/Caddy/Caddyfile @@ -355,6 +355,7 @@ # - HttpTlsServerName (string, optional): Specifies the server name for the TLS handshake. # - PassiveHealthFailDuration (integer, optional): Enables passive health checks when set > 0. # - HttpVersion (string, optional): Choose HTTP version. Empty (default) is 1.1 and 2. +# - HttpKeepalive (string, optional): Keeaplive is either off (0) or a value. Empty (default) 120s. #} {% macro reverse_proxy_configuration(handle) %} {{ handle.HandleType }} {{ handle.HandlePath|default("") }} { @@ -374,7 +375,7 @@ {% if handle.PassiveHealthFailDuration|default("") %} fail_duration {{ handle.PassiveHealthFailDuration }}s {% endif %} - {% if handle.HttpTls|default("0") == "1" or handle.HttpTlsInsecureSkipVerify|default("0") == "1" or handle.HttpTlsTrustedCaCerts or handle.HttpTlsServerName or handle.HttpVersion %} + {% if handle.HttpTls|default("0") == "1" or handle.HttpTlsInsecureSkipVerify|default("0") == "1" or handle.HttpTlsTrustedCaCerts or handle.HttpTlsServerName or handle.HttpVersion or handle.HttpKeepalive %} {% if handle.HttpNtlm|default("0") == "1" %} transport http_ntlm { {% if handle.HttpTls|default("0") == "1" %} @@ -397,6 +398,13 @@ {% if handle.HttpVersion %} versions {{ version_map[handle.HttpVersion] }} {% endif %} + {% if handle.HttpKeepalive %} + {% if handle.HttpKeepalive == "0" %} + keepalive off + {% else %} + keepalive {{ handle.HttpKeepalive }}s + {% endif %} + {% endif %} {% if handle.HttpTls|default("0") == "1" %} tls {% endif %} diff --git a/www/caddy/src/opnsense/www/js/widgets/CaddyCertificate.js b/www/caddy/src/opnsense/www/js/widgets/CaddyCertificate.js index e06511117..24b45f44f 100644 --- a/www/caddy/src/opnsense/www/js/widgets/CaddyCertificate.js +++ b/www/caddy/src/opnsense/www/js/widgets/CaddyCertificate.js @@ -30,7 +30,7 @@ export default class CaddyCertificate extends BaseTableWidget { constructor() { super(); this.resizeHandles = "e, w"; - this.tickTimeout = 30000; + this.tickTimeout = 30; } getGridOptions() { @@ -51,26 +51,22 @@ export default class CaddyCertificate extends BaseTableWidget { } async onWidgetTick() { - try { - // Check if Caddy is enabled - const caddyStatus = await ajaxGet('/api/caddy/reverse_proxy/get', {}); - if (!caddyStatus.caddy.general || caddyStatus.caddy.general.enabled === "0") { - this.displayError(`${this.translations.unconfigured}`); - return; - } - - // Fetch the certificate details - const response = await ajaxGet('/api/caddy/diagnostics/certificate', {}); - if (response.status !== "success") { - this.displayError(`${this.translations.nocerts}`); - return; - } - - // Process certificates if the response is successful - this.processCertificates(response.content); - } catch (error) { - this.displayError(`${this.translations.error}`); + // Check if Caddy is enabled + const caddyStatus = await this.ajaxGet('/api/caddy/reverse_proxy/get'); + if (!caddyStatus.caddy.general || caddyStatus.caddy.general.enabled === "0") { + this.displayError(`${this.translations.unconfigured}`); + return; } + + // Fetch the certificate details + const response = await this.ajaxGet('/api/caddy/diagnostics/certificate'); + if (response.status !== "success") { + this.displayError(`${this.translations.nocerts}`); + return; + } + + // Process certificates if the response is successful + this.processCertificates(response.content); } // Utility function to display errors within the widget diff --git a/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js b/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js index 04eca5ad1..552c6a195 100644 --- a/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js +++ b/www/caddy/src/opnsense/www/js/widgets/CaddyDomain.js @@ -50,21 +50,16 @@ export default class CaddyDomain extends BaseTableWidget { } async onWidgetTick() { - try { - // Check if caddy is enabled - const data = await ajaxGet('/api/caddy/reverse_proxy/get', {}); - if (!data.caddy.general || data.caddy.general.enabled === "0") { - this.displayError(`${this.translations.unconfigured}`); - return; - } - - // Process domains if caddy is enabled - let domains = { ...data.caddy.reverseproxy.reverse, ...data.caddy.reverseproxy.subdomain }; - this.processDomains(domains); - - } catch (error) { - this.displayError(`${this.translations.error}`); + // Check if caddy is enabled + const data = await this.ajaxGet('/api/caddy/reverse_proxy/get'); + if (!data.caddy.general || data.caddy.general.enabled === "0") { + this.displayError(`${this.translations.unconfigured}`); + return; } + + // Process domains if caddy is enabled + let domains = { ...data.caddy.reverseproxy.reverse, ...data.caddy.reverseproxy.subdomain }; + this.processDomains(domains); } // Utility function to display errors within the widget