diff --git a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/Api/SettingsController.php b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/Api/SettingsController.php index 8140652f0..1a55d8e2d 100644 --- a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/Api/SettingsController.php +++ b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/Api/SettingsController.php @@ -42,4 +42,35 @@ class SettingsController extends ApiMutableModelControllerBase { static protected $internalModelName = 'zabbixagent'; static protected $internalModelClass = '\OPNsense\ZabbixAgent\ZabbixAgent'; + + public function searchUserparametersAction() + { + return $this->searchBase('userparameters.userparameter', array("enabled", "key", "command")); + } + + public function getUserparameterAction($uuid = null) + { + $this->sessionClose(); + return $this->getBase('userparameter', 'userparameters.userparameter', $uuid); + } + + public function addUserparameterAction() + { + return $this->addBase('userparameter', 'userparameters.userparameter'); + } + + public function delUserparameterAction($uuid) + { + return $this->delBase('userparameters.userparameter', $uuid); + } + + public function setUserparameterAction($uuid) + { + return $this->setBase('userparameter', 'userparameters.userparameter', $uuid); + } + + public function toggleUserparameterAction($uuid) + { + return $this->toggleBase('userparameters.userparameter', $uuid); + } } diff --git a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/IndexController.php b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/IndexController.php index 8b784d788..eb119fa02 100644 --- a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/IndexController.php +++ b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/IndexController.php @@ -43,6 +43,8 @@ class IndexController extends \OPNsense\Base\IndexController { // include form definitions $this->view->settingsForm = $this->getForm("settings"); + // link userparameter dialog + $this->view->formDialogUserparameter = $this->getForm("dialogUserparameter"); // pick the template to serve $this->view->pick('OPNsense/ZabbixAgent/index'); } diff --git a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/forms/dialogUserparameter.xml b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/forms/dialogUserparameter.xml new file mode 100644 index 000000000..9a2fe131f --- /dev/null +++ b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/forms/dialogUserparameter.xml @@ -0,0 +1,26 @@ +
+ + userparameter.enabled + + checkbox + Enable this userparameter. + + + userparameter.key + + text + Enter a unique item key of your choice. + + + userparameter.command + + text + Command to be executed to evaluate value of the key. + + + userparameter.acceptParams + + checkbox + Flexible user parameters accept parameters with the key. This way a flexible user parameter can be the basis for creating several items. + +
diff --git a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/forms/settings.xml b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/forms/settings.xml index 9eeb9c64c..c9a5fe969 100644 --- a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/forms/settings.xml +++ b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/controllers/OPNsense/ZabbixAgent/forms/settings.xml @@ -1,4 +1,5 @@
+ zabbixagent-settings-main zabbixagent.settings.main.enabled @@ -125,5 +126,4 @@ - zabbixagent-settings-main
diff --git a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/models/OPNsense/ZabbixAgent/ZabbixAgent.xml b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/models/OPNsense/ZabbixAgent/ZabbixAgent.xml index 49e39a6e2..fc159f6e4 100644 --- a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/models/OPNsense/ZabbixAgent/ZabbixAgent.xml +++ b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/models/OPNsense/ZabbixAgent/ZabbixAgent.xml @@ -1,9 +1,7 @@ //OPNsense/ZabbixAgent - 1.1.0 - - Enterprise-class open source distributed monitoring agent - + 1.2.0 + Enterprise-class open source distributed monitoring agent @@ -132,5 +130,30 @@ + + + + Y + + + 1 + Y + + + /^[^\t^,^;^\.^\[^\]^\{^\}]{1,255}$/u + Should be a string between 1 and 255 characters. + Y + + + /^[^\t^,^;^\.^\[^\]^\{^\}]{1,4096}$/u + Should be a string between 1 and 4096 characters. + Y + + + 0 + Y + + + diff --git a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/views/OPNsense/ZabbixAgent/index.volt b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/views/OPNsense/ZabbixAgent/index.volt index 5721a8a96..c0e5c2f21 100644 --- a/net-mgmt/zabbix-agent/src/opnsense/mvc/app/views/OPNsense/ZabbixAgent/index.volt +++ b/net-mgmt/zabbix-agent/src/opnsense/mvc/app/views/OPNsense/ZabbixAgent/index.volt @@ -36,6 +36,23 @@ $( document ).ready(function() { updateServiceControlUI('zabbixagent'); }); + /*********************************************************************** + * link grid actions + **********************************************************************/ + + $("#grid-userparameters").UIBootgrid( + { search:'/api/zabbixagent/settings/searchUserparameters', + get:'/api/zabbixagent/settings/getUserparameter/', + set:'/api/zabbixagent/settings/setUserparameter/', + add:'/api/zabbixagent/settings/addUserparameter/', + del:'/api/zabbixagent/settings/delUserparameter/', + toggle:'/api/zabbixagent/settings/toggleUserparameter/', + options: { + rowCount:[10,25,50,100,500,1000] + } + } + ); + /*********************************************************************** * Commands **********************************************************************/ @@ -45,6 +62,7 @@ $( document ).ready(function() { $(this).click(function(){ var frm_id = $(this).closest("form").attr("id"); var frm_title = $(this).closest("form").attr("data-title"); + // save data for tab saveFormToEndpoint(url="/api/zabbixagent/settings/set",formid=frm_id,callback_ok=function(){ // set progress animation when reloading @@ -66,6 +84,33 @@ $( document ).ready(function() { } else { updateServiceControlUI('zabbixagent'); } + // when done, disable progress animation. + $("#"+frm_id+"_progress").removeClass("fa fa-spinner fa-pulse"); + }); + }); + }); + }); + + // Reconfigure - activate changes + $('[id*="reconfigureAct"]').each(function(){ + $(this).click(function(){ + // set progress animation + $('[id*="reconfigureAct_progress"]').each(function(){ + $(this).addClass("fa fa-spinner fa-pulse"); + }); + // reconfigure service + ajaxCall(url="/api/zabbixagent/service/reconfigure", sendData={}, callback=function(data,status) { + if (status != "success" || data['status'] != 'ok') { + BootstrapDialog.show({ + type: BootstrapDialog.TYPE_WARNING, + title: "{{ lang._('Error reconfiguring Zabbix Agent') }}", + message: data['status'], + draggable: true + }); + } + // when done, disable progress animation + $('[id*="reconfigureAct_progress"]').each(function(){ + $(this).removeClass("fa fa-spinner fa-pulse"); }); }); }); @@ -83,8 +128,57 @@ $( document ).ready(function() {
+ {# add automatically generated tab content #} {{ partial("layout_partials/base_tabs_content",['formData':settingsForm]) }} + + {# manually add tab content #} +
+ + + + + + + + + + + + + + + + + + + +
{{ lang._('Enabled') }}{{ lang._('User Parameter Key') }}{{ lang._('User Parameter Command') }}{{ lang._('Commands') }}{{ lang._('ID') }}
+ + +
+ +
+
+ +
+
+
+
+ +{# include dialogs #} +{{ partial("layout_partials/base_dialog",['fields':formDialogUserparameter,'id':'DialogUserparameter','label':lang._('Edit User Parameter')]) }} diff --git a/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf b/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf index 50ae3852d..48c9e7af9 100644 --- a/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf +++ b/net-mgmt/zabbix-agent/src/opnsense/service/templates/OPNsense/ZabbixAgent/zabbix_agentd.conf @@ -209,6 +209,16 @@ Include=/usr/local/etc/zabbix_agentd.conf.d # See 'zabbix_agentd' directory for examples. # # Disabled. A configuration file should be placed on directory: <%= @include %> +{% if helpers.exists('OPNsense.ZabbixAgent.userparameters') %} +{% for userparam in helpers.toList('OPNsense.ZabbixAgent.userparameters.userparameter') %} +{% if userparam.enabled == '1' %} +{% if userparam.acceptParams == '1' %} +{% set userparam_opts = '[*]' %} +{% endif %} +UserParameter={{userparam.key}}{{userparam_opts}},{{userparam.command}} +{% endif %} +{% endfor %} +{% endif %} ####### LOADABLE MODULES ####### ### Option: LoadModulePath