From 8a569560cd81bb2d723e11ec1c7752e7331ead28 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Sun, 4 Mar 2018 19:50:01 +0100 Subject: [PATCH 1/4] net/haproxy: support rise/fall parameters in health checks --- .../OPNsense/HAProxy/forms/dialogBackend.xml | 14 ++++++++++++++ .../mvc/app/models/OPNsense/HAProxy/HAProxy.xml | 12 ++++++++++++ .../templates/OPNsense/HAProxy/haproxy.conf | 8 ++++++++ 3 files changed, 34 insertions(+) diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml index 5c6111295..592d39369 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml @@ -77,6 +77,20 @@ checkbox + + backend.healthCheckFall + + text + + true + + + backend.healthCheckRise + + text + + true + header diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml index 4a3e48460..8896d6f82 100644 --- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml +++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml @@ -664,6 +664,18 @@ 0 N + + 1 + 100 + Please specify a value between 1 and 100. + N + + + 1 + 100 + Please specify a value between 1 and 100. + N + N sourceipv4 diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf index c3392cfa6..cb58fc47b 100644 --- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf +++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf @@ -1012,6 +1012,14 @@ backend {{backend.name}} {% if server_data.checkDownInterval|default("") != "" %} {% do server_options.append('downinter ' ~ server_data.checkDownInterval) %} {% endif %} +{# # unhealthy threshold #} +{% if backend.healthCheckFall|default("") != "" %} +{% do server_options.append('fall ' ~ backend.healthCheckFall) %} +{% endif %} +{# # healthy threshold #} +{% if backend.healthCheckRise|default("") != "" %} +{% do server_options.append('rise ' ~ backend.healthCheckRise) %} +{% endif %} {# # use a different port for health check #} {% if healthcheck_data.checkport|default("") != "" %} {# # prefer port from health check template #} From 1fc557c9a9bc594eb3962cbe6caa075956b15884 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Sun, 4 Mar 2018 20:05:49 +0100 Subject: [PATCH 2/4] net/haproxy: support inter/downinter parameters in backends --- .../OPNsense/HAProxy/forms/dialogBackend.xml | 14 ++++++++++++++ .../OPNsense/HAProxy/forms/dialogHealthcheck.xml | 2 +- .../OPNsense/HAProxy/forms/dialogServer.xml | 2 +- .../mvc/app/models/OPNsense/HAProxy/HAProxy.xml | 10 ++++++++++ .../templates/OPNsense/HAProxy/haproxy.conf | 11 ++++++++--- 5 files changed, 34 insertions(+), 5 deletions(-) diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml index 592d39369..ebb2ef33b 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml @@ -77,6 +77,20 @@ checkbox + + backend.checkInterval + + text + + true + + + backend.checkDownInterval + + text + + true + backend.healthCheckFall diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml index 1fb2beee5..2c1e8e200 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogHealthcheck.xml @@ -21,7 +21,7 @@ healthcheck.interval text - + healthcheck.checkport diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml index a96adc5f2..abaea38ab 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml @@ -77,7 +77,7 @@ server.checkInterval text - + true diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml index 8896d6f82..4b238b370 100644 --- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml +++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml @@ -664,6 +664,16 @@ 0 N + + /^([0-9]{1,8}(?:us|ms|s|m|h|d)?)/u + Should be a number between 1 and 8 characters, optionally followed by either "d", "h", "m", "s", "ms" or "us". + N + + + /^([0-9]{1,8}(?:us|ms|s|m|h|d)?)/u + Should be a number between 1 and 8 characters, optionally followed by either "d", "h", "m", "s", "ms" or "us". + N + 1 100 diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf index cb58fc47b..45e29c45b 100644 --- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf +++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf @@ -1002,14 +1002,19 @@ backend {{backend.name}} {# # check if health check is enabled #} {% if healthcheck_enabled == '1' %} {% do server_options.append('check') %} -{# # server settings take precedence over healthcheck settings #} -{% if server_data.checkInterval|default("") != "" %} +{# # This can be configured in multiple places. #} +{# # Priority for which value is used: backend > server > health check #} +{% if backend.checkInterval|default("") != "" %} +{% do server_options.append('inter ' ~ backend.checkInterval) %} +{% elif server_data.checkInterval|default("") != "" %} {% do server_options.append('inter ' ~ server_data.checkInterval) %} {% elif healthcheck_data.interval|default("") != "" %} {% do server_options.append('inter ' ~ healthcheck_data.interval) %} {% endif %} {# # use a different interval when server is in DOWN state #} -{% if server_data.checkDownInterval|default("") != "" %} +{% if backend.checkDownInterval|default("") != "" %} +{% do server_options.append('downinter ' ~ backend.checkDownInterval) %} +{% elif server_data.checkDownInterval|default("") != "" %} {% do server_options.append('downinter ' ~ server_data.checkDownInterval) %} {% endif %} {# # unhealthy threshold #} From 7aad5411dc0598d1dbe209f8380ec45d24a00670 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Mon, 5 Mar 2018 22:27:36 +0100 Subject: [PATCH 3/4] net/haproxy: support set-path in ACLs --- .../OPNsense/HAProxy/forms/dialogAction.xml | 11 +++++++++++ .../mvc/app/models/OPNsense/HAProxy/HAProxy.xml | 5 +++++ .../service/templates/OPNsense/HAProxy/haproxy.conf | 7 +++++++ 3 files changed, 23 insertions(+) diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml index 90addff7a..55d8645ca 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogAction.xml @@ -193,6 +193,17 @@ text + + + header + + + + action.http_request_set_path + + text + + header diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml index 4b238b370..f48700e17 100644 --- a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml +++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml @@ -1542,6 +1542,7 @@ http-request header delete http-request header replace http-request header replace value + http-request set-path http-response allow http-response deny http-response lua script @@ -1641,6 +1642,10 @@ /^.{1,4096}$/u N + + /^.{1,4096}$/u + N + /^.{1,4096}$/u N diff --git a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf index 45e29c45b..da72c7a5a 100644 --- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf +++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf @@ -374,6 +374,13 @@ {% set action_enabled = '0' %} # ERROR: missing parameters {% endif %} +{% elif action_data.type == 'http-request_set-path' %} +{% if action_data.http_request_set_path|default("") != "" %} +{% do action_options.append('http-request set-path ' ~ action_data.http_request_set_path) %} +{% else %} +{% set action_enabled = '0' %} + # ERROR: missing parameters +{% endif %} {% elif action_data.type == 'http-response_allow' %} {% do action_options.append('http-response allow') %} {% elif action_data.type == 'http-response_deny' %} From 84d815ff301b98e97d22ac9fe2966866f2d2a3e9 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Mon, 16 Apr 2018 22:54:34 +0200 Subject: [PATCH 4/4] net/haproxy: fix HTTP option visibility, closes #647 --- .../app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml index 6835cbd09..65cda8171 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogFrontend.xml @@ -200,7 +200,7 @@ header - + frontend.forwardFor