diff --git a/net/haproxy/Makefile b/net/haproxy/Makefile index d8b80dd3f..5054e0397 100644 --- a/net/haproxy/Makefile +++ b/net/haproxy/Makefile @@ -1,5 +1,5 @@ PLUGIN_NAME= haproxy -PLUGIN_VERSION= 2.14 +PLUGIN_VERSION= 2.15 PLUGIN_COMMENT= Reliable, high performance TCP/HTTP load balancer PLUGIN_DEPENDS= haproxy PLUGIN_MAINTAINER= opnsense@moov.de diff --git a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php index 6ac701921..716d3d5a8 100644 --- a/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php +++ b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/Api/SettingsController.php @@ -123,9 +123,14 @@ class SettingsController extends ApiMutableModelControllerBase return $this->delBase('servers.server', $uuid); } + public function toggleServerAction($uuid, $enabled = null) + { + return $this->toggleBase('servers.server', $uuid); + } + public function searchServersAction() { - return $this->searchBase('servers.server', array('name', 'address', 'port', 'description'), 'name'); + return $this->searchBase('servers.server', array('enabled', 'name', 'address', 'port', 'description'), 'name'); } public function getHealthcheckAction($uuid = null) 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 67b7c8919..56f12a5cd 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 @@ -332,6 +332,17 @@ text + + + header + + + + action.tcp_request_inspect_delay + + text + + header @@ -343,6 +354,17 @@ text + + + header + + + + action.tcp_response_inspect_delay + + text + + header 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 e00da8571..d5c98e31a 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 @@ -316,6 +316,7 @@ select_multiple + true Choose rules. 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 c6ec4ebaf..04ee8183e 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 @@ -95,6 +95,7 @@ select_multiple true + true @@ -401,6 +402,7 @@ select_multiple + true Choose rules. 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 77fe51e4f..0eede8c31 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 @@ -1,4 +1,10 @@
+ + server.enabled + + checkbox + Enable this server. + server.name @@ -29,7 +35,6 @@ dropdown - true server.ssl 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 cbb44ae18..a5be01a92 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 @@ -1,6 +1,6 @@ //OPNsense/HAProxy - 2.6.0 + 2.7.0 the HAProxy load balancer @@ -398,6 +398,7 @@ N no-sslv3,no-tlsv10,no-tls-tickets + Y Y no-sslv3 @@ -667,6 +668,7 @@ Related action item not found + Y Y N @@ -983,6 +985,7 @@ Related action item not found + Y Y N @@ -1005,6 +1008,10 @@ Y + + 1 + Y + /^([0-9a-zA-Z._]){1,255}$/u Should be a string between 1 and 255 characters. @@ -1756,10 +1763,12 @@ tcp-request content reject tcp-request content lua script tcp-request content use-service + tcp-request inspect-delay tcp-response content accept tcp-response content close tcp-response content reject tcp-response content lua script + tcp-response inspect-delay Custom rule (option pass-through) @@ -1902,10 +1911,18 @@ /^.{1,4096}$/u N + + /^.{1,32}$/u + N + /^.{1,4096}$/u N + + /^.{1,32}$/u + N + /^.{1,4096}$/u N diff --git a/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/Migrations/M2_7_0.php b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/Migrations/M2_7_0.php new file mode 100644 index 000000000..5a22931f6 --- /dev/null +++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/Migrations/M2_7_0.php @@ -0,0 +1,42 @@ +getNodeByReference('servers.server')->iterateItems() as $server) { + $server->enabled = '1'; + } + } +} diff --git a/net/haproxy/src/opnsense/mvc/app/views/OPNsense/HAProxy/index.volt b/net/haproxy/src/opnsense/mvc/app/views/OPNsense/HAProxy/index.volt index 52a9c842a..c806d2edc 100644 --- a/net/haproxy/src/opnsense/mvc/app/views/OPNsense/HAProxy/index.volt +++ b/net/haproxy/src/opnsense/mvc/app/views/OPNsense/HAProxy/index.volt @@ -79,6 +79,7 @@ POSSIBILITY OF SUCH DAMAGE. set:'/api/haproxy/settings/setServer/', add:'/api/haproxy/settings/addServer/', del:'/api/haproxy/settings/delServer/', + toggle:'/api/haproxy/settings/toggleServer/', options: { rowCount:[10,25,50,100,500,1000] } @@ -716,6 +717,7 @@ POSSIBILITY OF SUCH DAMAGE. + 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 7a77bcf1f..76a446013 100644 --- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf +++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf @@ -490,6 +490,13 @@ {% set action_enabled = '0' %} # ERROR: missing parameters {% endif %} +{% elif action_data.type == 'tcp-request_inspect-delay' %} +{% if action_data.tcp_request_inspect_delay|default("") != "" %} +{% do action_options.append('tcp-request inspect-delay ' ~ action_data.tcp_request_inspect_delay) %} +{% else %} +{% set action_enabled = '0' %} + # ERROR: missing parameters +{% endif %} {% elif action_data.type == 'tcp-response_content_accept' %} {% do action_options.append('tcp-response content accept') %} {% elif action_data.type == 'tcp-response_content_close' %} @@ -503,6 +510,13 @@ {% set action_enabled = '0' %} # ERROR: missing parameters {% endif %} +{% elif action_data.type == 'tcp-response_inspect-delay' %} +{% if action_data.tcp_response_inspect_delay|default("") != "" %} +{% do action_options.append('tcp-response inspect-delay ' ~ action_data.tcp_response_inspect_delay) %} +{% else %} +{% set action_enabled = '0' %} + # ERROR: missing parameters +{% endif %} {% elif action_data.type == 'custom' %} {% if action_data.custom|default("") != "" %} {% do action_options.append(action_data.custom) %} @@ -527,7 +541,7 @@ {% set acl_line = [action_data.testType, action_acls|join(join_operator)]|join(' ') %} {% else %} {% set acl_line = '' %} -{% set comment_lines = ['# NOTE: actions with no ACLs/conditions will always match'] + comment_lines %} +{% set comment_lines = comment_lines + [' # NOTE: actions with no ACLs/conditions will always match'] %} {% endif %} {% if action_options|length > 0 %} {% do global_action_options.append(comment_lines|join('\n')) %} @@ -1373,7 +1387,10 @@ backend {{backend.name}} {% if server_data.advanced|default("") != "" %} {% do server_options.append(server_data.advanced) %} {% endif %} +{# # server enabled? #} +{% if server_data.enabled == '1' %} server {{server_data.name}} {{server_data.address}}:{% if backend.tuning_noport != '1' %}{% if server_data.port|default("") != "" %}{{server_data.port}}{% endif %}{% endif %} {{server_options|join(' ')}} +{% endif %} {% endif %} {% endfor %}
{{ lang._('Enabled') }} {{ lang._('Server ID') }} {{ lang._('Server Name') }} {{ lang._('Server Address') }}