From 1cfc259e0b25e782af92584c045ddd5aa0440523 Mon Sep 17 00:00:00 2001 From: Frank Wall Date: Mon, 25 Feb 2019 23:57:44 +0100 Subject: [PATCH] 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 %}
{{ lang._('Enabled') }} {{ lang._('Server ID') }} {{ lang._('Server Name') }} {{ lang._('Server Address') }}