net/haproxy: add http-[request|response] set-var, refs #1796

This commit is contained in:
Frank Wall
2020-07-26 17:51:56 +02:00
parent d90832d346
commit 903e64c448
3 changed files with 99 additions and 1 deletions
@@ -203,6 +203,28 @@
<type>text</type>
<help><![CDATA[Rewrites the request path. The query string, if any, is left intact. If a scheme and authority is found before the path, they are left intact as well.]]></help>
</field>
<field>
<label>Parameters</label>
<type>header</type>
<style>type_table table_http-request_set-var</style>
</field>
<field>
<id>action.http_request_set_var_scope</id>
<label>Variable Scope</label>
<type>dropdown</type>
<help><![CDATA[The name of the variable starts with an indication about its scope.]]></help>
</field>
<field>
<id>action.http_request_set_var_name</id>
<label>Variable Name</label>
<type>text</type>
</field>
<field>
<id>action.http_request_set_var_expr</id>
<label>Expression</label>
<type>text</type>
<help><![CDATA[A standard HAProxy expression formed by a sample-fetch followed by some converters.]]></help>
</field>
<field>
<label>Parameters</label>
<type>header</type>
@@ -310,6 +332,28 @@
<type>text</type>
<help><![CDATA[An optional custom reason text for the HTTP status code. If empty the default reason for the specified code will be used.]]></help>
</field>
<field>
<label>Parameters</label>
<type>header</type>
<style>type_table table_http-response_set-var</style>
</field>
<field>
<id>action.http_response_set_var_scope</id>
<label>Variable Scope</label>
<type>dropdown</type>
<help><![CDATA[The name of the variable starts with an indication about its scope.]]></help>
</field>
<field>
<id>action.http_response_set_var_name</id>
<label>Variable Name</label>
<type>text</type>
</field>
<field>
<id>action.http_response_set_var_expr</id>
<label>Expression</label>
<type>text</type>
<help><![CDATA[A standard HAProxy expression formed by a sample-fetch followed by some converters.]]></help>
</field>
<field>
<label>Parameters</label>
<type>header</type>
@@ -1829,6 +1829,7 @@
<http-request_replace-header>http-request header replace</http-request_replace-header>
<http-request_replace-value>http-request header replace value</http-request_replace-value>
<http-request_set-path>http-request set-path</http-request_set-path>
<http-request_set-var>http-request set-var</http-request_set-var>
<http-response_allow>http-response allow</http-response_allow>
<http-response_deny>http-response deny</http-response_deny>
<http-response_lua>http-response lua script</http-response_lua>
@@ -1837,7 +1838,8 @@
<http-response_del-header>http-response header delete</http-response_del-header>
<http-response_replace-header>http-response header replace</http-response_replace-header>
<http-response_replace-value>http-response header replace value</http-response_replace-value>
<http-response_set-status>Set HTTP status code in response</http-response_set-status>
<http-response_set-status>http-response set-status</http-response_set-status>
<http-response_set-var>http-response set-var</http-response_set-var>
<tcp-request_connection_accept>tcp-request connection accept</tcp-request_connection_accept>
<tcp-request_connection_reject>tcp-request connection reject</tcp-request_connection_reject>
<tcp-request_content_accept>tcp-request content accept</tcp-request_content_accept>
@@ -1934,6 +1936,25 @@
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
</http_request_set_path>
<http_request_set_var_scope type="OptionField">
<Required>N</Required>
<default>txn</default>
<OptionValues>
<proc>variable is shared with the whole process</proc>
<sess>variable is shared with the whole session</sess>
<txn>variable is shared with the transaction (request/response)</txn>
<req>variable is shared only during request processing</req>
<res>variable is shared only during response processing</res>
</OptionValues>
</http_request_set_var_scope>
<http_request_set_var_name type="TextField">
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
</http_request_set_var_name>
<http_request_set_var_expr type="TextField">
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
</http_request_set_var_expr>
<http_response_lua type="TextField">
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
@@ -1984,6 +2005,25 @@
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
</http_response_set_status_reason>
<http_response_set_var_scope type="OptionField">
<Required>N</Required>
<default>txn</default>
<OptionValues>
<proc>variable is shared with the whole process</proc>
<sess>variable is shared with the whole session</sess>
<txn>variable is shared with the transaction (request/response)</txn>
<req>variable is shared only during request processing</req>
<res>variable is shared only during response processing</res>
</OptionValues>
</http_response_set_var_scope>
<http_response_set_var_name type="TextField">
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
</http_response_set_var_name>
<http_response_set_var_expr type="TextField">
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
</http_response_set_var_expr>
<tcp_request_content_lua type="TextField">
<mask>/^.{1,4096}$/u</mask>
<Required>N</Required>
@@ -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' %}