diff --git a/net/haproxy/pkg-descr b/net/haproxy/pkg-descr
index aa184412f..3b578b24b 100644
--- a/net/haproxy/pkg-descr
+++ b/net/haproxy/pkg-descr
@@ -11,6 +11,7 @@ Plugin Changelog
Added:
* add support for advanced resolver properties (#2330)
* add graceful stop timeout to service settings
+* support "monitor-uri" and "monitor fail" in rules (#2387)
Fixed:
* no haproxy.conf after restoring a config backup (#2474)
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 1e8683637..f0d17e77e 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
@@ -354,6 +354,17 @@
text
+
+
+ header
+
+
+
+ action.monitor_fail_uri
+
+ 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 b6c025d91..8521443fe 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
@@ -2068,6 +2068,7 @@
http-response header replace value
http-response set-status
http-response set-var
+ monitor fail: report failure to a monitor request
tcp-request connection accept
tcp-request connection reject
tcp-request content accept
@@ -2252,6 +2253,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 71c439df1..15dc3f76e 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -522,6 +522,14 @@
{% set action_enabled = '0' %}
# ERROR: missing parameters
{% endif %}
+{% elif action_data.type == 'monitor_fail' %}
+{% if action_data.monitor_fail_uri|default("") != "" %}
+{% do action_options.append('monitor-uri ' ~ action_data.monitor_fail_uri ~ '\n ') %}
+{% do action_options.append('monitor fail') %}
+{% else %}
+{% set action_enabled = '0' %}
+ # ERROR: missing parameters
+{% endif %}
{% elif action_data.type == 'tcp-request_connection_accept' %}
{% do action_options.append('tcp-request connection accept') %}
{% elif action_data.type == 'tcp-request_connection_reject' %}