From c1d79c36c08dc52e90dfaaa8ea77000518b0858d Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Mon, 25 Feb 2019 23:02:10 +0100 Subject: [PATCH 1/7] net/haproxy: make rules sortable, closes #582 --- .../app/controllers/OPNsense/HAProxy/forms/dialogBackend.xml | 1 + .../controllers/OPNsense/HAProxy/forms/dialogFrontend.xml | 2 ++ .../src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml | 5 ++++- 3 files changed, 7 insertions(+), 1 deletion(-) 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/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml index cbb44ae18..7f000b9bb 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 From efd35b198475397926def42b0b0642d9e6d5e108 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Mon, 25 Feb 2019 23:05:52 +0100 Subject: [PATCH 2/7] net/haproxy: bump version --- net/haproxy/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 1cfc259e0b25e782af92584c045ddd5aa0440523 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Mon, 25 Feb 2019 23:57:44 +0100 Subject: [PATCH 3/7] net/haproxy: allow to enable/disable servers, closes #1208 --- .../HAProxy/Api/SettingsController.php | 7 +++- .../OPNsense/HAProxy/forms/dialogServer.xml | 6 +++ .../app/models/OPNsense/HAProxy/HAProxy.xml | 4 ++ .../OPNsense/HAProxy/Migrations/M2_7_0.php | 42 +++++++++++++++++++ .../mvc/app/views/OPNsense/HAProxy/index.volt | 2 + .../templates/OPNsense/HAProxy/haproxy.conf | 3 ++ 6 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/Migrations/M2_7_0.php 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/dialogServer.xml b/net/haproxy/src/opnsense/mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml index 77fe51e4f..dc27d638a 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 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 7f000b9bb..159b55eca 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 @@ -1008,6 +1008,10 @@ Y + + 1 + Y + /^([0-9a-zA-Z._]){1,255}$/u Should be a string between 1 and 255 characters. 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..463bc64f8 --- /dev/null +++ b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/Migrations/M2_7_0.php @@ -0,0 +1,42 @@ +getNodeByReference('servers.servers')->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..6bf38aecf 100644 --- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf +++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf @@ -1373,7 +1373,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 %} From 4a2b6ca1403de2396cb468aebcbbd0a9e8dbc6fe Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Mon, 25 Feb 2019 23:58:42 +0100 Subject: [PATCH 4/7] net/haproxy: server mode is no longer an advanced option, refs #1208 --- .../mvc/app/controllers/OPNsense/HAProxy/forms/dialogServer.xml | 1 - 1 file changed, 1 deletion(-) 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 dc27d638a..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 @@ -35,7 +35,6 @@ dropdown - true server.ssl From 046bbb1787b2bfb7629963bf44d1e126b2bbce8e Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Tue, 26 Feb 2019 10:31:46 +0100 Subject: [PATCH 5/7] net/haproxy: fix typo in model migration --- .../mvc/app/models/OPNsense/HAProxy/Migrations/M2_7_0.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 463bc64f8..5a22931f6 100644 --- 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 @@ -35,7 +35,7 @@ class M2_7_0 extends BaseModelMigration public function run($model) { // Servers have an 'enabled' field now - foreach ($model->getNodeByReference('servers.servers')->iterateItems() as $server) { + foreach ($model->getNodeByReference('servers.server')->iterateItems() as $server) { $server->enabled = '1'; } } From 9109d0705d571b326931f21ae3f3a387d982e947 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Tue, 26 Feb 2019 14:45:07 +0100 Subject: [PATCH 6/7] net/haproxy: support TCP inspection delay in rules, refs #1188 --- .../OPNsense/HAProxy/forms/dialogAction.xml | 22 +++++++++++++++++++ .../app/models/OPNsense/HAProxy/HAProxy.xml | 10 +++++++++ .../templates/OPNsense/HAProxy/haproxy.conf | 14 ++++++++++++ 3 files changed, 46 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 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/models/OPNsense/HAProxy/HAProxy.xml b/net/haproxy/src/opnsense/mvc/app/models/OPNsense/HAProxy/HAProxy.xml index 159b55eca..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 @@ -1763,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) @@ -1909,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/service/templates/OPNsense/HAProxy/haproxy.conf b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf index 6bf38aecf..22c450175 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) %} From 50d68b799eef3eedf893cbb4171e47a820d31985 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Tue, 26 Feb 2019 15:29:09 +0100 Subject: [PATCH 7/7] net/haproxy: align indention --- .../opnsense/service/templates/OPNsense/HAProxy/haproxy.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 22c450175..76a446013 100644 --- a/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf +++ b/net/haproxy/src/opnsense/service/templates/OPNsense/HAProxy/haproxy.conf @@ -541,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')) %}
{{ lang._('Enabled') }} {{ lang._('Server ID') }} {{ lang._('Server Name') }} {{ lang._('Server Address') }}