From 476a60908e004bd330a111a0e6028d61053fafa5 Mon Sep 17 00:00:00 2001 From: vogelor <vogelor@ispconfig3> Date: Mon, 26 Jan 2009 13:48:02 -0500 Subject: [PATCH] Added fail2ban - Log to the monitor (if installed at the server). Updated installation-Instruction for debian --- server/mods-available/monitor_core_module.inc.php | 80 ++++++++++++++++++++++++++++++++++------ 1 files changed, 68 insertions(+), 12 deletions(-) diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php index cf263a2..5633539 100644 --- a/server/mods-available/monitor_core_module.inc.php +++ b/server/mods-available/monitor_core_module.inc.php @@ -121,6 +121,7 @@ $this->monitorMailQueue(); $this->monitorRaid(); $this->monitorRkHunter(); + $this->monitorFail2ban(); $this->monitorSysLog(); } @@ -748,6 +749,58 @@ $this->_delOldRecords($type, 0, 2); } + function monitorFail2ban(){ + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'log_fail2ban'; + + /* This monitoring is only available if fail2ban is installed */ + $location = shell_exec('which fail2ban-client'); + if($location != ''){ + /* Get the data of the log */ + $data = $this->_getLogData($type); + + /* + * At this moment, there is no state (maybe later) + */ + $state = 'no_state'; + } + else { + /* + * fail2ban is not installed, so there is no data and no state + * + * no_state, NOT unknown, because "unknown" is shown as state + * inside the GUI. no_state is hidden. + * + * We have to write NO DATA inside the DB, because the GUI + * could not know, if there is any dat, or not... + */ + $state = 'no_state'; + $data = ''; + } + + /* + * Insert the data into the database + */ + $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . + "VALUES (". + $server_id . ", " . + "'" . $app->dbmaster->quote($type) . "', " . + time() . ", " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . + "'" . $state . "'" . + ")"; + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } + function monitorSysLog(){ global $app; global $conf; @@ -758,19 +811,19 @@ /** The type of the data */ $type = 'sys_log'; - /* - * is there any warning or error for this server? - */ - $state = 'ok'; + /* + * is there any warning or error for this server? + */ + $state = 'ok'; $dbData = $app->dbmaster->queryAllRecords("SELECT loglevel FROM sys_log WHERE server_id = " . $server_id . " AND loglevel > 0"); - if (is_array($dbData)) { - foreach($dbData as $item){ - if ($item['loglevel'] == 1) $state = $this->_setState($state, 'warning'); - if ($item['loglevel'] == 2) $state = $this->_setState($state, 'error'); - } - } + if (is_array($dbData)) { + foreach($dbData as $item){ + if ($item['loglevel'] == 1) $state = $this->_setState($state, 'warning'); + if ($item['loglevel'] == 2) $state = $this->_setState($state, 'error'); + } + } - /** There is no monitor-data because the data is in the sys_log table */ + /** There is no monitor-data because the data is in the sys_log table */ $data['output']= ''; /* @@ -790,7 +843,7 @@ $this->_delOldRecords($type, 10); } -function monitorMailLog() + function monitorMailLog() { global $app; global $conf; @@ -1140,6 +1193,9 @@ case 'log_clamav': $logfile = '/var/log/clamav/clamav.log'; break; + case 'log_fail2ban': + $logfile = '/var/log/fail2ban.log'; + break; case 'log_ispconfig': $logfile = '/var/log/ispconfig/ispconfig.log'; break; -- Gitblit v1.9.1