function udfbguard_admin_events($nopid = false) { $f = array(); $unix = new unix(); $q = new mysql(); $q->BuildTables(); if (!$q->TABLE_EXISTS('ufdbguard_admin_events', 'artica_events', true)) { return; mysql_admin_events_check(); } $prefix = "INSERT IGNORE INTO ufdbguard_admin_events (`zDate`,`function`,`filename`,`line`,`description`,`category`,`TASKID`) VALUES "; @mkdir("{$GLOBALS["ARTICALOGDIR"]}/ufdbguard_admin_events", 0755, true); if (!($handle = opendir("{$GLOBALS["ARTICALOGDIR"]}/ufdbguard_admin_events"))) { return; } $countDeFiles = 0; while (false !== ($filename = readdir($handle))) { if ($filename == ".") { continue; } if ($filename == "..") { continue; } $filename = "{$GLOBALS["ARTICALOGDIR"]}/ufdbguard_admin_events/{$filename}"; $filetime = $unix->file_time_min($filename); if ($filetime > 240) { @unlink($filename); continue; } $array = unserialize(@file_get_contents($filename)); if (!is_array($array)) { @unlink($filename); continue; } if ($array["category"] == "ufdbguard-service") { udfbguard_admin_events_smtp($array); } if (!is_numeric($array["TASKID"])) { $array["TASKID"] = 0; } $tableName = "TaskSq{$array["TASKID"]}"; $array["text"] = mysql_escape_string2($array["text"]); WriteMyLogs("ufdbguard_admin_events:{$array["function"]}/{$array["file"]}: Task `{$array["TASKID"]}` " . strlen("{$array["text"]}") . "bytes", __FUNCTION__, __FILE__, __LINE__); $f[$tableName][] = "('{$array["zdate"]}','{$array["function"]}','{$array["file"]}','{$array["line"]}','{$array["text"]}','{$array["category"]}')"; @unlink($filename); } system_admin_events_inject($f); udfbguard_update_events(); sarg_admin_events_checks(); if ($GLOBALS["VERBOSE"]) { echo __FUNCTION__ . "::" . __LINE__ . " ->END\n"; } }
function udfbguard_admin_events($nopid = false) { $f = array(); if ($nopid) { $unix = new unix(); $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $pid = @file_get_contents($pidfile); if ($unix->process_exists($pid)) { writelogs("Already running pid {$pid}", __FUNCTION__, __FILE__, __LINE__); return; } $t = 0; } $q = new mysql(); if (!$q->TABLE_EXISTS('ufdbguard_admin_events', 'artica_events')) { $q->BuildTables(); } if (!$q->TABLE_EXISTS('ufdbguard_admin_events', 'artica_events', true)) { return; mysql_admin_events_check(); } $prefix = "INSERT IGNORE INTO ufdbguard_admin_events (`zDate`,`function`,`filename`,`line`,`description`,`category`) VALUES "; foreach (glob("/var/log/artica-postfix/ufdbguard_admin_events/*") as $filename) { $array = unserialize(@file_get_contents($filename)); if (!is_array($array)) { $array["text"] = basename($filename) . " is not an array, skip event " . @file_get_contents($filename); $array["date"] = date('Y-m-d H:i:s'); $array["pid"] = getmypid(); $array["function"] = __FUNCTION__; $array["category"] = "parser"; $array["file"] = basename(__FILE__); $array["line"] = __LINE__; } $array["text"] = addslashes($array["text"]); $f[] = "('{$array["zdate"]}','{$array["function"]}','{$array["file"]}','{$array["line"]}','{$array["text"]}','{$array["category"]}')"; @unlink($filename); } if (count($f) > 0) { $sql = $prefix . @implode(",", $f); $q->QUERY_SQL($sql, "artica_events"); if (!$q->ok) { writelogs("{$q->mysql_error}", __FUNCTION__, __FILE__, __LINE__); } } $num = $q->COUNT_ROWS("ufdbguard_admin_events", "artica_events"); if ($num > 4000) { $q->QUERY_SQL("DELETE FROM ufdbguard_admin_events ORDER BY zDate LIMIT 4000", "artica_events"); } mysql_admin_events_check(); }