From 045beddf0eab55fe0cf94c43f9d146a1f3ad1e45 Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Sun, 25 Jan 2009 06:30:01 -0500 Subject: [PATCH] Fixed: FS#474 - serial not updated for domain after changes --- server/mods-available/monitor_core_module.inc.php | 624 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 527 insertions(+), 97 deletions(-) diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php index f89625b..cf263a2 100644 --- a/server/mods-available/monitor_core_module.inc.php +++ b/server/mods-available/monitor_core_module.inc.php @@ -1,7 +1,6 @@ <?php - /* -Copyright (c) 2008, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com +Copyright (c) 2007-2008, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com All rights reserved. Redistribution and use in source and binary forms, with or without modification, @@ -27,6 +26,7 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + class monitor_core_module { /* TODO: this should be a config - var instead of a "constant" */ var $interval = 5; // do the monitoring every 5 minutes @@ -36,7 +36,16 @@ /* No actions at this time. maybe later... */ var $actions_available = array(); - /* + //* This function is called during ispconfig installation to determine + // if a symlink shall be created for this plugin. + function onInstall() { + global $conf; + + return true; + + } + + /* This function is called when the module is loaded */ function onLoad() { @@ -104,9 +113,15 @@ $this->monitorMailWarnLog(); $this->monitorMailErrLog(); $this->monitorMessagesLog(); + $this->monitorISPCCronLog(); $this->monitorFreshClamLog(); $this->monitorClamAvLog(); $this->monitorIspConfigLog(); + $this->monitorSystemUpdate(); + $this->monitorMailQueue(); + $this->monitorRaid(); + $this->monitorRkHunter(); + $this->monitorSysLog(); } function monitorServer(){ @@ -119,9 +134,6 @@ /** The type of the data */ $type = 'server_load'; - /* Delete Data older than 1 day */ - $this->_delOldRecords($type, 0, 0, 1); - /* Fetch the data into a array */ @@ -132,11 +144,11 @@ $data['uptime'] = shell_exec("uptime"); - $tmp = explode(",", $data['uptime'], 3); - $tmpUser = explode(" ", trim($tmp[1])); + $tmp = explode(",", $data['uptime'], 4); + $tmpUser = explode(" ", trim($tmp[2])); $data['user_online'] = intval($tmpUser[0]); - $loadTmp = explode(":" , trim($tmp[2])); + $loadTmp = explode(":" , trim($tmp[3])); $load = explode(",", $loadTmp[1]); $data['load_1'] = floatval(trim($load[0])); $data['load_5'] = floatval(trim($load[1])); @@ -155,12 +167,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } function monitorDiskUsage() { @@ -173,14 +188,11 @@ /** The type of the data */ $type = 'disk_usage'; - /* Delete Data older than 10 minutes */ - $this->_delOldRecords($type, 10); - /** The state of the disk-usage */ $state = 'ok'; - /** Fetch the data into a array */ - $dfData = shell_exec("df"); + /** Fetch the data of ALL devices into a array (needed for monitoring!)*/ + $dfData = shell_exec("df -hT"); // split into array $df = explode("\n", $dfData); @@ -196,11 +208,12 @@ */ $s = preg_split ("/[\s]+/", $df[$i]); $data[$i]['fs'] = $s[0]; - $data[$i]['size'] = $s[1]; - $data[$i]['used'] = $s[2]; - $data[$i]['available'] = $s[3]; - $data[$i]['percent'] = $s[4]; - $data[$i]['mounted'] = $s[5]; + $data[$i]['type'] = $s[1]; + $data[$i]['size'] = $s[2]; + $data[$i]['used'] = $s[3]; + $data[$i]['available'] = $s[4]; + $data[$i]['percent'] = $s[5]; + $data[$i]['mounted'] = $s[6]; /* * calculate the state */ @@ -219,12 +232,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } @@ -239,9 +255,6 @@ /** The type of the data */ $type = 'mem_usage'; - /* Delete Data older than 10 minutes */ - $this->_delOldRecords($type, 10); - /* Fetch the data into a array */ @@ -250,7 +263,7 @@ $memInfo = explode("\n", $miData); foreach($memInfo as $line){ - $part = split(":", $line); + $part = preg_split("/:/", $line); $key = trim($part[0]); $tmp = explode(" ", trim($part[1])); $value = 0; @@ -270,12 +283,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } @@ -290,9 +306,6 @@ /** The type of the data */ $type = 'cpu_info'; - /* There is only ONE CPU-Data, so delete the old one */ - $this->_delOldRecords($type, 0); - /* Fetch the data into a array */ @@ -300,7 +313,7 @@ $cpuInfo = explode("\n", $cpuData); foreach($cpuInfo as $line){ - $part = split(":", $line); + $part = preg_split("/:/", $line); $key = trim($part[0]); $value = trim($part[1]); $data[$key] = $value; @@ -315,12 +328,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } @@ -333,13 +349,10 @@ $server_id = intval($conf["server_id"]); /** get the "active" Services of the server from the DB */ - $services = $app->db->queryOneRecord("SELECT * FROM server WHERE server_id = " . $server_id); + $services = $app->dbmaster->queryOneRecord("SELECT * FROM server WHERE server_id = " . $server_id); /* The type of the Monitor-data */ $type = 'services'; - - /* There is only ONE Service-Data, so delete the old one */ - $this->_delOldRecords($type, 0); /** the State of the monitoring */ /* ok, if ALL aktive services are running, @@ -439,16 +452,345 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } - function monitorMailLog() + + function monitorSystemUpdate(){ + /* + * This monitoring is expensive, so do it only once a hour + */ + $min = date('i'); + if ($min != 0) return; + + /* + * OK - here we go... + */ + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'system_update'; + + /* This monitoring is only available at debian or Ubuntu */ + if(file_exists('/etc/debian_version')){ + + /* + * first update the "update-database" + */ + shell_exec('apt-get update'); + + /* + * Then test the upgrade. + * if there is any output, then there is a needed update + */ + $aptData = shell_exec('apt-get -s -qq dist-upgrade'); + if ($aptData == '') + { + /* There is nothing to update! */ + $state = 'ok'; + } + else + { + /* There is something to update! */ + $state = 'warning'; + } + + /* + * Fetch the output + */ + $data['output'] = shell_exec('apt-get -s -q dist-upgrade'); + } + else { + /* + * It is not debian/Ubuntu, 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['output']= ''; + } + + /* + * 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, 0, 2); + } + + function monitorMailQueue(){ + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'mailq'; + + /* Get the data from the mailq */ + $data['output'] = shell_exec('mailq'); + + /* + * The last line has more informations + */ + $tmp = explode("\n", $data['output']); + $more = $tmp[sizeof($tmp) - 1]; + $this->_getIntArray($more); + $data['bytes'] = $res[0]; + $data['requests'] = $res[1]; + + /** The state of the mailq. */ + $state = 'ok'; + if ($data['requests'] > 2000 ) $state = 'info'; + if ($data['requests'] > 5000 ) $state = 'warning'; + if ($data['requests'] > 8000 ) $state = 'critical'; + if ($data['requests'] > 10000 ) $state = 'error'; + + /* + * 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 monitorRaid(){ + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'raid_state'; + + /* This monitoring is only available if mdadm is installed */ + $location = shell_exec('which mdadm'); + if($location != ''){ + /* + * Fetch the output + */ + $data['output'] = shell_exec('cat /proc/mdstat'); + + /* + * Then calc the state. + */ + $tmp = explode("\n", $data['output']); + $state = 'ok'; + for ($i = 0; $i < sizeof($tmp); $i++){ + /* fetch the next line */ + $line = $tmp[$i]; + + if ((strpos($line, '[U_]') !== false) || (strpos($line, '[_U]') !== false)) + { + /* One Disk is not working. + * if the next line starts with "[>" or "[=" then + * recovery (resync) is in state and the state is + * information instead of critical + */ + $nextLine = $tmp[$i+1]; + if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) { + $state = $this->_setState($state, 'critical'); + } + else + { + $state = $this->_setState($state, 'info'); + } + } + if (strpos($line, '[__]') !== false) + { + /* both Disk are not working */ + $state = $this->_setState($state, 'error'); + } + if (strpos($line, '[UU]') !== false) + { + /* The disks are OK. + * if the next line starts with "[>" or "[=" then + * recovery (resync) is in state and the state is + * information instead of ok + */ + $nextLine = $tmp[$i+1]; + if ((strpos($nextLine, '[>') === false) && (strpos($nextLine, '[=') === false)) { + $state = $this->_setState($state, 'ok'); + } + else + { + $state = $this->_setState($state, 'info'); + } + } + } + + } + else { + /* + * mdadm 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['output']= ''; + } + + /* + * 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 monitorRkHunter(){ + /* + * This monitoring is expensive, so do it only once a hour + */ + $min = date('i'); + if ($min != 0) return; + + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'rkhunter'; + + /* This monitoring is only available if rkhunter is installed */ + $location = shell_exec('which rkhunter'); + if($location != ''){ + /* + * Fetch the output + */ + $data['output'] = shell_exec('rkhunter --update --checkall --nocolors --skip-keypress'); + + /* + * At this moment, there is no state (maybe later) + */ + $state = 'no_state'; + } + else { + /* + * rkhunter 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['output']= ''; + } + + /* + * 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, 0, 2); + } + + function monitorSysLog(){ + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'sys_log'; + + /* + * 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'); + } + } + + /** There is no monitor-data because the data is in the sys_log table */ + $data['output']= ''; + + /* + * 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 monitorMailLog() { global $app; global $conf; @@ -458,9 +800,6 @@ /** The type of the data */ $type = 'log_mail'; - - /* There is only ONE Log-Data, so delete the old one */ - $this->_delOldRecords($type, 0); /* Get the data of the log */ $data = $this->_getLogData($type); @@ -477,12 +816,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } function monitorMailWarnLog() @@ -496,10 +838,6 @@ /** The type of the data */ $type = 'log_mail_warn'; - /* There is only ONE Log-Data, so delete the old one */ - $this->_delOldRecords($type, 0); - - /* Get the data of the log */ $data = $this->_getLogData($type); @@ -515,12 +853,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } function monitorMailErrLog() @@ -534,10 +875,6 @@ /** The type of the data */ $type = 'log_mail_err'; - /* There is only ONE Log-Data, so delete the old one */ - $this->_delOldRecords($type, 0); - - /* Get the data of the log */ $data = $this->_getLogData($type); @@ -553,12 +890,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } @@ -573,8 +913,42 @@ /** The type of the data */ $type = 'log_messages'; - /* There is only ONE Log-Data, so delete the old one */ - $this->_delOldRecords($type, 0); + /* Get the data of the log */ + $data = $this->_getLogData($type); + + /* + * actually this info has no state. + * maybe someone knows better...???... + */ + $state = 'no_state'; + + /* + 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 monitorISPCCronLog() + { + global $app; + global $conf; + + /* the id of the server as int */ + $server_id = intval($conf["server_id"]); + + /** The type of the data */ + $type = 'log_ispc_cron'; /* Get the data of the log */ $data = $this->_getLogData($type); @@ -591,14 +965,17 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); - } + $app->dbmaster->query($sql); + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); + } + function monitorFreshClamLog() { global $app; @@ -610,15 +987,49 @@ /** The type of the data */ $type = 'log_freshclam'; - /* There is only ONE Log-Data, so delete the old one */ - $this->_delOldRecords($type, 0); - - /* Get the data of the log */ $data = $this->_getLogData($type); - // Todo: the state should be calculated. + /* Get the data from the LAST log-Entry. + * if there can be found: + * WARNING: Your ClamAV installation is OUTDATED! + * then the clamav is outdated. This is a warning! + */ $state = 'ok'; + + $tmp = explode("\n", $data); + $lastLog = array(); + if ($tmp[sizeof($tmp)-1] == "") + { + /* the log ends with an empty line remove this */ + array_pop($tmp); + } + if (strpos($tmp[sizeof($tmp)-1], "-------------") !== false) + { + /* the log ends with "-----..." remove this */ + array_pop($tmp); + } + for ($i = sizeof($tmp) -1; $i > 0; $i--){ + if (strpos($tmp[$i], "---------") === false){ + /* no delimiter found, so add this to the last-log */ + $lastLog[] = $tmp[$i]; + } + else + { + /* delimiter found, so there is no more line left! */ + break; + } + } + + /* + * Now we have the last log in the array. + * Check if the outdated-string is found... + */ + foreach($lastLog as $line){ + if (strpos(strtolower($line), "outdated") !== false) { + $state = $this->_setState($state, 'warning'); + } + } /* Insert the data into the database @@ -626,12 +1037,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } function monitorClamAvLog() @@ -645,9 +1059,6 @@ /** The type of the data */ $type = 'log_clamav'; - /* There is only ONE Log-Data, so delete the old one */ - $this->_delOldRecords($type, 0); - /* Get the data of the log */ $data = $this->_getLogData($type); @@ -660,12 +1071,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } function monitorIspConfigLog() @@ -679,10 +1093,6 @@ /** The type of the data */ $type = 'log_ispconfig'; - /* There is only ONE Log-Data, so delete the old one */ - $this->_delOldRecords($type, 0); - - /* Get the data of the log */ $data = $this->_getLogData($type); @@ -695,12 +1105,15 @@ $sql = "INSERT INTO monitor_data (server_id, type, created, data, state) " . "VALUES (". $server_id . ", " . - "'" . $app->db->quote($type) . "', " . + "'" . $app->dbmaster->quote($type) . "', " . time() . ", " . - "'" . $app->db->quote(serialize($data)) . "', " . + "'" . $app->dbmaster->quote(serialize($data)) . "', " . "'" . $state . "'" . ")"; - $app->db->query($sql); + $app->dbmaster->query($sql); + + /* The new data is written, now we can delete the old one */ + $this->_delOldRecords($type, 10); } @@ -717,6 +1130,9 @@ break; case 'log_messages': $logfile = '/var/log/messages'; + break; + case 'log_ispc_cron': + $logfile = '/var/log/ispconfig/cron.log'; break; case 'log_freshclam': $logfile = '/var/log/clamav/freshclam.log'; @@ -805,10 +1221,10 @@ $old = $now - ($min * 60) - ($hour * 60 * 60) - ($days * 24 * 60 * 60); $sql = "DELETE FROM monitor_data " . "WHERE " . - "type =" . "'" . $app->db->quote($type) . "' " . + "type =" . "'" . $app->dbmaster->quote($type) . "' " . "AND " . "created < " . $old; - $app->db->query($sql); + $app->dbmaster->query($sql); } /* @@ -872,7 +1288,21 @@ } } + function _getIntArray($line){ + /** The array of float found */ + $res = array(); + /* First build a array from the line */ + $data = explode(' ', $line); + /* then check if any item is a float */ + foreach ($data as $item) { + if ($item . '' == (int)$item . ''){ + $res[] = $item; + } + } + return $res; + } + } // end class -?> \ No newline at end of file +?> -- Gitblit v1.9.1