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 5a7881def..c10565e9f 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
@@ -203,6 +203,28 @@
text
+
+
+ header
+
+
+
+ action.http_request_set_var_scope
+
+ dropdown
+
+
+
+ action.http_request_set_var_name
+
+ text
+
+
+ action.http_request_set_var_expr
+
+ text
+
+
header
@@ -310,6 +332,28 @@
text
+
+
+ header
+
+
+
+ action.http_response_set_var_scope
+
+ dropdown
+
+
+
+ action.http_response_set_var_name
+
+ text
+
+
+ action.http_response_set_var_expr
+
+ 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 e06699a61..d7968fcdf 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
@@ -1829,6 +1829,7 @@
http-request header replace
http-request header replace value
http-request set-path
+ http-request set-var
http-response allow
http-response deny
http-response lua script
@@ -1837,7 +1838,8 @@
http-response header delete
http-response header replace
http-response header replace value
- Set HTTP status code in response
+ http-response set-status
+ http-response set-var
tcp-request connection accept
tcp-request connection reject
tcp-request content accept
@@ -1934,6 +1936,25 @@
/^.{1,4096}$/u
N
+
+ N
+ txn
+
+ variable is shared with the whole process
+ variable is shared with the whole session
+ variable is shared with the transaction (request/response)
+ variable is shared only during request processing
+ variable is shared only during response processing
+
+
+
+ /^.{1,4096}$/u
+ N
+
+
+ /^.{1,4096}$/u
+ N
+
/^.{1,4096}$/u
N
@@ -1984,6 +2005,25 @@
/^.{1,4096}$/u
N
+
+ N
+ txn
+
+ variable is shared with the whole process
+ variable is shared with the whole session
+ variable is shared with the transaction (request/response)
+ variable is shared only during request processing
+ variable is shared only during response processing
+
+
+
+ /^.{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 bb61aa948..f1abab9d0 100644
--- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
+++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf
@@ -415,6 +415,13 @@
{% set action_enabled = '0' %}
# ERROR: missing parameters
{% endif %}
+{% elif action_data.type == 'http-request_set-var' %}
+{% if action_data.http_request_set_var_scope|default("") != "" and action_data.http_request_set_var_name|default("") != "" and action_data.http_request_set_var_expr|default("") != "" %}
+{% do action_options.append('http-request set-var(' ~ action_data.http_request_set_var_scope ~ '.' ~ action_data.http_request_set_var_name ~ ') ' ~ action_data.http_request_set_var_expr) %}
+{% 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' %}
@@ -473,6 +480,13 @@
{% set action_enabled = '0' %}
# ERROR: missing parameters
{% endif %}
+{% elif action_data.type == 'http-response_set-var' %}
+{% if action_data.http_response_set_var_scope|default("") != "" and action_data.http_response_set_var_name|default("") != "" and action_data.http_response_set_var_expr|default("") != "" %}
+{% do action_options.append('http-response set-var(' ~ action_data.http_response_set_var_scope ~ '.' ~ action_data.http_response_set_var_name ~ ') ' ~ action_data.http_response_set_var_expr) %}
+{% 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' %}