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 (?, ?, UNIX_TIMESTAMP(), ?, ?)'; $app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']); /* 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... */ $clamav_outdated_warning = false; $clamav_bytecode_updated = false; foreach ($lastLog as $line) { if (stristr($line,"Can't download daily.cvd from")) { $clamav_outdated_warning = true; } if(stristr($line,'main.cld is up to date')) { $clamav_bytecode_updated = true; } } //* Warn when clamav is outdated and main.cld update failed. if($clamav_outdated_warning == true && $clamav_bytecode_updated == false) { $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 (?, ?, UNIX_TIMESTAMP(), ?, ?)'; $app->dbmaster->query($sql, $res['server_id'], $res['type'], serialize($res['data']), $res['state']); /* 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(); } } ?>