From 83c4dbfc4febee6ee55fc67fa503b975e1947fbb Mon Sep 17 00:00:00 2001 From: Mathieu Date: Fri, 27 Sep 2024 17:11:03 +0200 Subject: [PATCH 1/7] feat: Introduce xymon-client plugin Closes #4259 --- net-mgmt/xymon-client/+POST_INSTALL.post | 15 ++++ net-mgmt/xymon-client/LICENSE | 21 ++++++ net-mgmt/xymon-client/Makefile | 8 +++ net-mgmt/xymon-client/pkg-descr | 13 ++++ .../src/etc/inc/plugins.inc.d/xymonclient.inc | 72 +++++++++++++++++++ .../etc/rc.syshook.d/start/50-xymon-client | 3 + .../XymonClient/Api/ServiceController.php | 56 +++++++++++++++ .../XymonClient/Api/SettingsController.php | 45 ++++++++++++ .../Kumy/XymonClient/IndexController.php | 34 +++++++++ .../Kumy/XymonClient/forms/settings.xml | 13 ++++ .../app/models/Kumy/XymonClient/Menu/Menu.xml | 5 ++ .../app/models/Kumy/XymonClient/Settings.php | 30 ++++++++ .../app/models/Kumy/XymonClient/Settings.xml | 15 ++++ .../mvc/app/views/Kumy/XymonClient/index.volt | 54 ++++++++++++++ .../conf/actions.d/actions_xymonclient.conf | 23 ++++++ .../templates/Kumy/XymonClient/+TARGETS | 2 + .../templates/Kumy/XymonClient/xymon_client | 1 + .../Kumy/XymonClient/xymonclient.cfg | 4 ++ 18 files changed, 414 insertions(+) create mode 100644 net-mgmt/xymon-client/+POST_INSTALL.post create mode 100644 net-mgmt/xymon-client/LICENSE create mode 100644 net-mgmt/xymon-client/Makefile create mode 100644 net-mgmt/xymon-client/pkg-descr create mode 100644 net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc create mode 100755 net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/IndexController.php create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Menu/Menu.xml create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.php create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml create mode 100644 net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt create mode 100644 net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf create mode 100644 net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS create mode 100644 net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymon_client create mode 100644 net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymonclient.cfg diff --git a/net-mgmt/xymon-client/+POST_INSTALL.post b/net-mgmt/xymon-client/+POST_INSTALL.post new file mode 100644 index 0000000000..7a7dbcb02d --- /dev/null +++ b/net-mgmt/xymon-client/+POST_INSTALL.post @@ -0,0 +1,15 @@ +#!/bin/sh + +# We need to add one "include" line in the default config file from xymon-client +# to load values from our own template + +INCLUDE="include /usr/local/etc/xymon/xymonclient.cfg" +FILE=/usr/local/www/xymon/client/etc/xymonclient.cfg + +grep -q "^${INCLUDE}$" "${FILE}" && exit 0 + +sed -i '' "/^LOGFETCHOPTS=/a \\ +\\ +# Added by OPNsense os-xymon-client plugin\\ +${INCLUDE}\\ +" "${FILE}" diff --git a/net-mgmt/xymon-client/LICENSE b/net-mgmt/xymon-client/LICENSE new file mode 100644 index 0000000000..05e44609c7 --- /dev/null +++ b/net-mgmt/xymon-client/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Kumy + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/net-mgmt/xymon-client/Makefile b/net-mgmt/xymon-client/Makefile new file mode 100644 index 0000000000..10576a5e6c --- /dev/null +++ b/net-mgmt/xymon-client/Makefile @@ -0,0 +1,8 @@ +PLUGIN_NAME= xymon-client +PLUGIN_VERSION= 1.0.0 +PLUGIN_REVISION= 1 +PLUGIN_DEPENDS= xymon-client +PLUGIN_COMMENT= Client for the Xymon network monitor +PLUGIN_MAINTAINER= github+opnsense-xymon-client@kumy.net + +.include "../../Mk/plugins.mk" diff --git a/net-mgmt/xymon-client/pkg-descr b/net-mgmt/xymon-client/pkg-descr new file mode 100644 index 0000000000..b903f655e1 --- /dev/null +++ b/net-mgmt/xymon-client/pkg-descr @@ -0,0 +1,13 @@ +Client data collection package for Xymon (previously known as Hobbit). + +This gathers statistics and data from a single system and reports it to +the Xymon monitor. + +WWW: https://sourceforge.net/projects/xymon/ + +Plugin Changelog +================ + +1.0.0 + +* Initial release diff --git a/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc b/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc new file mode 100644 index 0000000000..d1cd77a8ed --- /dev/null +++ b/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc @@ -0,0 +1,72 @@ +enabled == '1'; +} + +function xymonclient_services() +{ + global $config; + + $services = []; + + $fqdn = sprintf('%s.%s', + $config['system']['hostname'], + $config['system']['domain'], + ); + + if (xymonclient_enabled()) { + $services[] = [ + 'description' => gettext('Xymon client'), + 'configd' => [ + 'restart' => ['xymonclient restart'], + 'start' => ['xymonclient start'], + 'stop' => ['xymonclient stop'], + ], + 'name' => 'xymonclient', + 'pidfile' => "/usr/local/www/xymon/client/logs/clientlaunch.$fqdn.pid" + ]; + } + + return $services; +} + +function xymonclient_xmlrpc_sync() +{ + $result = []; + + $result[] = [ + 'description' => gettext('Xymon client'), + 'section' => 'kumy.xymon.client', + 'id' => 'xymonclient', + 'services' => ['xymonclient'], + ]; + + return $result; +} diff --git a/net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client b/net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client new file mode 100755 index 0000000000..8400368b49 --- /dev/null +++ b/net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client @@ -0,0 +1,3 @@ +#!/bin/sh + +service xymon-client start diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php new file mode 100644 index 0000000000..68a703de0a --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php @@ -0,0 +1,56 @@ +request->isPost()) { + $backend = new Backend(); + $status = strtolower(trim($backend->configdRun('template reload Kumy/XymonClient'))); + + $config = Config::getInstance()->object()->kumy->xymon->client; + if ( + $status == 'ok' && + (string)$config->enabled == "1" && + !empty((string)$config->XYMSERVERS) + ) { + $status = strtolower(trim($backend->configdRun('xymonclient restart'))); + } + } + return ['status' => $status]; + } +} diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php new file mode 100644 index 0000000000..2bf9616560 --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php @@ -0,0 +1,45 @@ +getModel(); + if ( + (string)$config->enabled == "0" || + empty((string)$config->XYMSERVERS) + ) { + $backend = new Backend(); + $backend->configdRun('xymonclient stop'); + } + } +} diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/IndexController.php b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/IndexController.php new file mode 100644 index 0000000000..5c5274ab56 --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/IndexController.php @@ -0,0 +1,34 @@ +view->formSettings = $this->getForm('settings'); + $this->view->pick('Kumy/XymonClient/index'); + } +} diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml new file mode 100644 index 0000000000..4d68dc2704 --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml @@ -0,0 +1,13 @@ +
+ + xymonclient.enabled + + checkbox + + + xymonclient.XYMSERVERS + + text + Xymon server addresses. + +
diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Menu/Menu.xml b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Menu/Menu.xml new file mode 100644 index 0000000000..0fffdf082b --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Menu/Menu.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.php b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.php new file mode 100644 index 0000000000..f3fb72613c --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.php @@ -0,0 +1,30 @@ + + //kumy/xymon/client + Xymon client settings + 0.0.0 + + + 1 + Y + + + + N + + + diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt b/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt new file mode 100644 index 0000000000..0e7c8105b1 --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt @@ -0,0 +1,54 @@ + + +{%- macro action_button(button, text, class="btn-default") %} + +{%- endmacro %} + +
+
+ {{ partial("layout_partials/base_form", ["fields": formSettings, "id": "frm_Settings"]) }} +
+

+ +
+
+
+ {{ action_button("save", lang._("Save"), "primary") }} +

+
+
+
diff --git a/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf b/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf new file mode 100644 index 0000000000..a0633a4b6a --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf @@ -0,0 +1,23 @@ +[start] +command: service xymon-client start +parameters: +type:script +message:xymon-client service start + +[stop] +command: service xymon-client stop +parameters: +type:script +message:xymon-client service stop + +[restart] +command: service xymon-client restart +parameters: +type:script +message:xymon-client service restart + +[status] +command: service xymon-client status || true +parameters: +type:script_output +message:xymon-client service status diff --git a/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS new file mode 100644 index 0000000000..4e43bdac75 --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS @@ -0,0 +1,2 @@ +xymonclient.cfg:/usr/local/etc/xymon/xymonclient.cfg +xymon_client:/usr/local/etc/rc.conf.d/xymon_client diff --git a/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymon_client b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymon_client new file mode 100644 index 0000000000..2d28a76322 --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymon_client @@ -0,0 +1 @@ +xymon_client_enable={% if not helpers.empty('kumy.xymon.client.enabled') and not helpers.empty('kumy.xymon.client.XYMSERVERS') %}YES{% else %}NO{% endif %} diff --git a/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymonclient.cfg b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymonclient.cfg new file mode 100644 index 0000000000..7366e5aaaf --- /dev/null +++ b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/xymonclient.cfg @@ -0,0 +1,4 @@ +# Automatically managed config do not edit manually + +XYMSRV="0.0.0.0" +XYMSERVERS="{% if not helpers.empty('kumy.xymon.client.XYMSERVERS') %}{{ kumy.xymon.client.XYMSERVERS }}{% endif %}" From b2ba355a37ed87b71683fc5f07c93f05b4dca6d3 Mon Sep 17 00:00:00 2001 From: Mathieu A Date: Fri, 8 Nov 2024 20:30:05 +0100 Subject: [PATCH 2/7] refactor: Code change from PR review --- .../xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc | 5 +---- .../controllers/Kumy/XymonClient/Api/ServiceController.php | 2 +- .../opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml | 1 - 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc b/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc index d1cd77a8ed..932dbe9a29 100644 --- a/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc +++ b/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc @@ -22,12 +22,9 @@ SOFTWARE. */ -use Kumy\XymonClient\Settings; - function xymonclient_enabled() { - $model = new Settings(); - return (string)$model->enabled == '1'; + return (string)(new Kumy\XymonClient\Settings())->enabled == '1'; } function xymonclient_services() diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php index 68a703de0a..b3c8ecf1e1 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php @@ -42,7 +42,7 @@ public function reloadAction() $backend = new Backend(); $status = strtolower(trim($backend->configdRun('template reload Kumy/XymonClient'))); - $config = Config::getInstance()->object()->kumy->xymon->client; + $config = $this->getModel(); if ( $status == 'ok' && (string)$config->enabled == "1" && diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml index dc13f99023..48983ca60d 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml @@ -8,7 +8,6 @@ Y - N From 2685bff67fd06c73c6639097a3559237d6533da4 Mon Sep 17 00:00:00 2001 From: Mathieu A Date: Sat, 9 Nov 2024 09:05:35 +0100 Subject: [PATCH 3/7] refactor: Switch XYMSERVERS to HostnameField --- .../controllers/Kumy/XymonClient/forms/settings.xml | 5 ++++- .../mvc/app/models/Kumy/XymonClient/Settings.xml | 10 ++++++++-- .../opnsense/mvc/app/views/Kumy/XymonClient/index.volt | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml index 4d68dc2704..f7f0b96410 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/forms/settings.xml @@ -7,7 +7,10 @@ xymonclient.XYMSERVERS - text + select_multiple + true + + Xymon server addresses. diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml index 48983ca60d..76f76ed418 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/models/Kumy/XymonClient/Settings.xml @@ -4,11 +4,17 @@ 0.0.0 - 1 + 0 Y - + N + Y + N + N + N + Y + diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt b/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt index 0e7c8105b1..b707f7a005 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt @@ -10,6 +10,7 @@ mapDataToFormUI({"frm_Settings": "/api/xymonclient/settings/get"}).done(function(data) { if ('frm_Settings' in data) { updateServiceControlUI('xymonclient'); + formatTokenizersUI(); } }); @@ -25,7 +26,7 @@ }) .always(function() { spinStop("#button-save_progress"); - });; + }); }); }); }); From f2bf6f2f66838bd95d6b41905b247e3044c933fd Mon Sep 17 00:00:00 2001 From: Mathieu A Date: Sat, 9 Nov 2024 09:58:51 +0100 Subject: [PATCH 4/7] refactor: Switch to SimpleActionButton style --- .../XymonClient/Api/ServiceController.php | 21 --------- .../XymonClient/Api/SettingsController.php | 21 ++++++--- .../mvc/app/views/Kumy/XymonClient/index.volt | 44 +++++++------------ 3 files changed, 29 insertions(+), 57 deletions(-) diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php index b3c8ecf1e1..1586d290c9 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/ServiceController.php @@ -25,8 +25,6 @@ namespace Kumy\XymonClient\Api; use OPNsense\Base\ApiMutableServiceControllerBase; -use OPNsense\Core\Backend; -use OPNsense\Core\Config; class ServiceController extends ApiMutableServiceControllerBase { @@ -34,23 +32,4 @@ class ServiceController extends ApiMutableServiceControllerBase protected static $internalServiceTemplate = 'Kumy\XymonClient'; protected static $internalServiceEnabled = 'enabled'; protected static $internalServiceName = 'xymonclient'; - - public function reloadAction() - { - $status = 'failed'; - if ($this->request->isPost()) { - $backend = new Backend(); - $status = strtolower(trim($backend->configdRun('template reload Kumy/XymonClient'))); - - $config = $this->getModel(); - if ( - $status == 'ok' && - (string)$config->enabled == "1" && - !empty((string)$config->XYMSERVERS) - ) { - $status = strtolower(trim($backend->configdRun('xymonclient restart'))); - } - } - return ['status' => $status]; - } } diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php index 2bf9616560..910460fcf3 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/controllers/Kumy/XymonClient/Api/SettingsController.php @@ -32,14 +32,21 @@ class SettingsController extends ApiMutableModelControllerBase protected static $internalModelClass = '\Kumy\XymonClient\Settings'; protected static $internalModelName = 'xymonclient'; - protected function setActionHook() { - $config = $this->getModel(); - if ( - (string)$config->enabled == "0" || - empty((string)$config->XYMSERVERS) - ) { + public function reconfigureAction() + { + $status = 'failed'; + if ($this->request->isPost()) { $backend = new Backend(); - $backend->configdRun('xymonclient stop'); + $status = strtolower(trim($backend->configdRun('template reload Kumy/XymonClient'))); + if ($status === 'ok') { + $config = $this->getModel(); + if ((string)$config->enabled == "1" && !empty((string)$config->XYMSERVERS)) { + $status = $backend->configdRun('xymonclient restart'); + } else { + $status = $backend->configdRun('xymonclient stop'); + } + } } + return ['status' => strtolower(trim($status))]; } } diff --git a/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt b/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt index b707f7a005..6a547b9007 100644 --- a/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt +++ b/net-mgmt/xymon-client/src/opnsense/mvc/app/views/Kumy/XymonClient/index.volt @@ -1,12 +1,5 @@ -{%- macro action_button(button, text, class="btn-default") %} - -{%- endmacro %} -
{{ partial("layout_partials/base_form", ["fields": formSettings, "id": "frm_Settings"]) }} @@ -48,7 +28,13 @@

- {{ action_button("save", lang._("Save"), "primary") }} +

From 639ff46ecc01bf57c39490f18a86d9e6f889ab2d Mon Sep 17 00:00:00 2001 From: Mathieu A Date: Sat, 9 Nov 2024 16:05:58 +0100 Subject: [PATCH 5/7] fix: Pure rx system --- .../xymon-client/src/etc/rc.syshook.d/start/50-xymon-client | 3 --- .../opnsense/service/conf/actions.d/actions_xymonclient.conf | 2 ++ .../src/opnsense/service/templates/Kumy/XymonClient/+TARGETS | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) delete mode 100755 net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client diff --git a/net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client b/net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client deleted file mode 100755 index 8400368b49..0000000000 --- a/net-mgmt/xymon-client/src/etc/rc.syshook.d/start/50-xymon-client +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -service xymon-client start diff --git a/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf b/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf index a0633a4b6a..df4aa4487f 100644 --- a/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf +++ b/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf @@ -17,6 +17,8 @@ type:script message:xymon-client service restart [status] +# Note: The rc script is exiting with errcode 1 +# if the service is not running command: service xymon-client status || true parameters: type:script_output diff --git a/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS index 4e43bdac75..87c9cdf8cb 100644 --- a/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS +++ b/net-mgmt/xymon-client/src/opnsense/service/templates/Kumy/XymonClient/+TARGETS @@ -1,2 +1,2 @@ xymonclient.cfg:/usr/local/etc/xymon/xymonclient.cfg -xymon_client:/usr/local/etc/rc.conf.d/xymon_client +xymon_client:/etc/rc.conf.d/xymon_client From 2d9c39275d39874fa28c624a49c97deb14a40930 Mon Sep 17 00:00:00 2001 From: Mathieu A Date: Mon, 11 Nov 2024 10:26:56 +0100 Subject: [PATCH 6/7] chore: Fix style from code review --- .../opnsense/service/conf/actions.d/actions_xymonclient.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf b/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf index df4aa4487f..8dfc6ffdc4 100644 --- a/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf +++ b/net-mgmt/xymon-client/src/opnsense/service/conf/actions.d/actions_xymonclient.conf @@ -19,7 +19,7 @@ message:xymon-client service restart [status] # Note: The rc script is exiting with errcode 1 # if the service is not running -command: service xymon-client status || true +command: service xymon-client status; exit 0 parameters: type:script_output message:xymon-client service status From 37d76b3f9c723720815f844cbec990cce1329b2e Mon Sep 17 00:00:00 2001 From: Mathieu A Date: Mon, 11 Nov 2024 12:18:42 +0100 Subject: [PATCH 7/7] fix: Set static pidfile directory --- net-mgmt/xymon-client/+POST_INSTALL.post | 15 --------------- .../src/etc/inc/plugins.inc.d/xymonclient.inc | 2 +- 2 files changed, 1 insertion(+), 16 deletions(-) delete mode 100644 net-mgmt/xymon-client/+POST_INSTALL.post diff --git a/net-mgmt/xymon-client/+POST_INSTALL.post b/net-mgmt/xymon-client/+POST_INSTALL.post deleted file mode 100644 index 7a7dbcb02d..0000000000 --- a/net-mgmt/xymon-client/+POST_INSTALL.post +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh - -# We need to add one "include" line in the default config file from xymon-client -# to load values from our own template - -INCLUDE="include /usr/local/etc/xymon/xymonclient.cfg" -FILE=/usr/local/www/xymon/client/etc/xymonclient.cfg - -grep -q "^${INCLUDE}$" "${FILE}" && exit 0 - -sed -i '' "/^LOGFETCHOPTS=/a \\ -\\ -# Added by OPNsense os-xymon-client plugin\\ -${INCLUDE}\\ -" "${FILE}" diff --git a/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc b/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc index 932dbe9a29..d095d3b54e 100644 --- a/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc +++ b/net-mgmt/xymon-client/src/etc/inc/plugins.inc.d/xymonclient.inc @@ -47,7 +47,7 @@ function xymonclient_services() 'stop' => ['xymonclient stop'], ], 'name' => 'xymonclient', - 'pidfile' => "/usr/local/www/xymon/client/logs/clientlaunch.$fqdn.pid" + 'pidfile' => "/var/run/xymon/xymon_client.pid" ]; }