load('monitor_tools'); $this->_tools = new monitor_tools(); /* end global section for monitor cronjobs */ /* the id of the server as int */ $server_id = intval($conf['server_id']); /** The type of the data */ $type = 'log_clamav'; /* Get the data of the log */ $data = $this->_tools->_getLogData($type); // Todo: the state should be calculated. $state = 'ok'; $res = array(); $res['server_id'] = $server_id; $res['type'] = $type; $res['data'] = $data; $res['state'] = $state; /* * Insert the data into the database */ $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . 'VALUES (' . $res['server_id'] . ', ' . "'" . $app->dbmaster->quote($res['type']) . "', " . 'UNIX_TIMESTAMP(), ' . "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " . "'" . $res['state'] . "'" . ')'; $app->dbmaster->query($sql); /* The new data is written, now we can delete the old one */ $this->_tools->delOldRecords($res['type'], $res['server_id']); /** The type of the data */ $type = 'log_freshclam'; /* Get the data of the log */ $data = $this->_tools->_getLogData($type); /* 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) { /* * Outdatet is only info, because if we set this to warning, the server is * as long in state warning, as there is a new version of ClamAv which takes * sometimes weeks! */ $state = $this->_tools->_setState($state, 'info'); } } $res = array(); $res['server_id'] = $server_id; $res['type'] = $type; $res['data'] = $data; $res['state'] = $state; /* * Insert the data into the database */ $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' . 'VALUES (' . $res['server_id'] . ', ' . "'" . $app->dbmaster->quote($res['type']) . "', " . 'UNIX_TIMESTAMP(), ' . "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " . "'" . $res['state'] . "'" . ')'; $app->dbmaster->query($sql); /* The new data is written, now we can delete the old one */ $this->_tools->delOldRecords($res['type'], $res['server_id']); parent::onRunJob(); } /* this function is optional if it contains no custom code */ public function onAfterRun() { global $app; parent::onAfterRun(); } } ?>