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";
    }
}
Beispiel #2
0
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();
}