-
+
{{ partial("layout_partials/base_form",['fields':formGeneralSettings,'id':'frm_GeneralSettings','apply_btn_id':'btn_ApplyGeneralSettings'])}}
diff --git a/sysutils/monit/src/opnsense/scripts/OPNsense/Monit/post-install.php b/sysutils/monit/src/opnsense/scripts/OPNsense/Monit/post-install.php
index f0d11aa2a..25d7450fa 100755
--- a/sysutils/monit/src/opnsense/scripts/OPNsense/Monit/post-install.php
+++ b/sysutils/monit/src/opnsense/scripts/OPNsense/Monit/post-install.php
@@ -37,16 +37,29 @@ use OPNsense\Monit\Monit;
$mdlMonit = new OPNsense\Monit\Monit;
+$cfg = Config::getInstance();
+$cfgObj = $cfg->object();
+$shellObj = new OPNsense\Core\Shell;
+$generalNode = $mdlMonit->getNodeByReference('general');
+
+// generate password for local Monit plugin user
+if (empty($cfgObj->general->httpdUsername) && empty($cfgObj->general->httpdPassword)) {
+ srand();
+ $generalNode->setNodes(array(
+ "httpdUsername" => "root",
+ "httpdPassword" => substr(str_shuffle(str_repeat('0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz', 32)), rand(0, 16), rand(17, 32))
+ )
+ );
+ $mdlMonit->serializeToConfig(false, true);
+ $cfg->save();
+}
+
$nodes = $mdlMonit->getNodes();
// test if Monit is already configured
if (count($nodes['service']) != 0 || count($nodes['test']) != 0) {
exit;
}
-$cfg = Config::getInstance();
-$cfgObj = $cfg->object();
-$shellObj = new OPNsense\Core\Shell;
-
// get number of cpus and calculate load average limits
$nCPU = array();
$shellObj->exec('/sbin/sysctl -n kern.smp.cpus', false, $nCPU);
@@ -130,7 +143,6 @@ $systemService['tests'] = substr($systemService['tests'], 0, -1);
$rootFsService['tests'] = substr($rootFsService['tests'], 0, -1);
// set general properties
-$generalNode = $mdlMonit->getNodeByReference('general');
$generalNode->setNodes($generalSettings);
// add an alert with (almost) default settings
diff --git a/sysutils/monit/src/opnsense/service/templates/OPNsense/Monit/monitrc b/sysutils/monit/src/opnsense/service/templates/OPNsense/Monit/monitrc
index f98a69a18..1fa8bc96e 100644
--- a/sysutils/monit/src/opnsense/service/templates/OPNsense/Monit/monitrc
+++ b/sysutils/monit/src/opnsense/service/templates/OPNsense/Monit/monitrc
@@ -2,12 +2,52 @@
{% from 'OPNsense/Macros/interface.macro' import physical_interface %}
{% if helpers.exists('OPNsense.monit.general') %}
+{% if helpers.exists('OPNsense.monit.general.httpdEnabled') and OPNsense.monit.general.httpdEnabled|default('0') == '1' %}
+{% set httpdCredentials = OPNsense.monit.general.httpdUsername ~ ':"' ~ OPNsense.monit.general.httpdPassword ~ '"' %}
+{% set httpdport = "port " ~ OPNsense.monit.general.httpdPort %}
+set httpd unixsocket /var/run/monit.sock {{ httpdport }}
+ allow localhost
+ allow {{ httpdCredentials }}
+{% if helpers.exists('OPNsense.monit.general.httpdAllow') %}
+{% for allow in OPNsense.monit.general.httpdAllow.split(",") %}
+{% set cred = allow.split(":") %}
+{% if cred[1] %}
+{% set pass = cred[1].split() %}
+{% set allow = cred[0] ~ ':"' ~ pass[0] ~ '" ' ~ pass[1] %}
+{% endif %}
+ allow {{ allow }}
+{% endfor %}
+{% endif %}
+{% if helpers.exists('OPNsense.monit.general.mmonitUrl') and OPNsense.monit.general.mmonitUrl|default('') != '' %}
+{% set mregister = 'register without credentials' if OPNsense.monit.general.mmonitRegisterCredentials|default('1') == '0' %}
+
+set mmonit {{ OPNsense.monit.general.mmonitUrl }} timeout {{ OPNsense.monit.general.mmonitTimeout }} seconds {{ mregister }}
+{% endif %}
+{% else %}
set httpd unixsocket /var/run/monit.sock
- allow localhost
+ allow localhost
+{% endif %}
set daemon {{ OPNsense.monit.general.interval }} with start delay {{ OPNsense.monit.general.startdelay }}
+{% if helpers.exists('OPNsense.monit.general.logfile') and OPNsense.monit.general.logfile|default('') != '' %}
+set logfile {{ OPNsense.monit.general.logfile }}
+{% else %}
set logfile syslog facility log_daemon
+{% endif %}
+
+{% if helpers.exists('OPNsense.monit.general.statefile') and OPNsense.monit.general.statefile|default('') != '' %}
+set statefile {{ OPNsense.monit.general.statefile }}
+{% endif %}
+
+{% if helpers.exists('OPNsense.monit.general.eventqueuePath') and OPNsense.monit.general.eventqueuePath|default('') != '' %}
+{% set slots = '' %}
+{% if helpers.exists('OPNsense.monit.general.eventqueueSlots') %}
+{% set slots = "slots " ~ OPNsense.monit.general.eventqueueSlots %}
+{% endif %}
+
+set eventqueue basedir {{ OPNsense.monit.general.eventqueuePath }} {{ slots }}
+{% endif %}
{% if helpers.exists('OPNsense.monit.general.mailserver') %}
{% set port = "port " ~ OPNsense.monit.general.port if OPNsense.monit.general.port|default('') != '' %}
@@ -15,7 +55,7 @@ set logfile syslog facility log_daemon
{% set password = '' %}
{% if helpers.exists('OPNsense.monit.general.username') and helpers.exists('OPNsense.monit.general.password') %}
{% set username = "username " ~ OPNsense.monit.general.username %}
-{% set password = "password " ~ OPNsense.monit.general.password %}
+{% set password = "password " ~ '"' ~ OPNsense.monit.general.password ~ '"' %}
{% endif %}
{% set ssl = 'using ssl' if OPNsense.monit.general.ssl|default('0') == '1' %}
set mailserver {{ OPNsense.monit.general.mailserver }} {{ port }} {{ username }} {{ password }} {{ ssl }}