function ScanPostfixID($q) { $q = new mysql(); $unix = new unix(); $super = 0; $path = "{$GLOBALS["ARTICALOGDIR"]}/RTM"; $timefile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; $timesched = $unix->file_time_min($timefile); if ($timesched <= $GLOBALS["ArticaSMTPStatsTimeFrame"]) { if ($GLOBALS["VERBOSE"]) { echo "{$timesched}/{$GLOBALS["ArticaSMTPStatsTimeFrame"]} aborting\n"; } return; } if ($GLOBALS["VERBOSE"]) { echo "Scanning {$path}...\n"; } $startedAT = date("Y-m-d H:i:s"); $count = 0; if (!($handle = opendir($path))) { @mkdir($path, 0755, true); return; } $countDeFiles = 0; $KILL_THIS_QUEUE = false; while (false !== ($file = readdir($handle))) { if ($file == ".") { continue; } if ($file == "..") { continue; } $targetFile = "{$path}/{$file}"; $countDeFiles++; if ($countDeFiles > $GLOBALS["ArticaSMTPStatsMaxFiles"]) { break; } $count++; $super++; if (preg_match("#\\.id-message\$#", $file)) { $amavis[] = $file; continue; } events("ScanPostfixID():: ({$count}/{$GLOBALS["ArticaSMTPStatsMaxFiles"]})"); events("ScanPostfixID():: \"{$path}/{$file}\""); if (!preg_match("#\\.msg\$#", $file)) { continue; } if ($file == "NOQUEUE.msg") { events("ScanPostfixID():: Delete /{$path}/{$file}"); @unlink("{$path}/{$file}"); continue; } if ($KILL_THIS_QUEUE) { @unlink("/{$path}/{$file}"); continue; } if ($GLOBALS["VERBOSE"]) { echo "ArticaStatusUsleep:{$GLOBALS["ArticaStatusUsleep"]}ms\n"; } usleep($GLOBALS["ArticaStatusUsleep"]); if ($count > $GLOBALS["ArticaSMTPStatsMaxFiles"]) { events("ScanPostfixID():: Break..."); break; } if ($GLOBALS["VERBOSE"]) { echo "PostfixFullProcess -> {$targetFile}\n"; } $t1 = time(); if (!PostfixFullProcess($targetFile, $q)) { continue; } $t2 = time(); $distanceInSeconds = round(abs($t2 - $t1)); if ($GLOBALS["VERBOSE"]) { echo "PostfixFullProcess -> {$distanceInSeconds} seconds\n"; } if ($distanceInSeconds > 3) { send_email_events("Too many time parsing {$GLOBALS["ARTICALOGDIR"]}/RTM", "Processing file take more than 3s ({$distanceInSeconds}s) the realtime monitor will be kept for this queue..", "postfix"); $KILL_THIS_QUEUE = true; } SetStatus("Postfix", $GLOBALS["ArticaSMTPStatsMaxFiles"], $count, $startedAT); events("ScanPostfixID():: ({$count}/{$GLOBALS["ArticaSMTPStatsMaxFiles"]}) with a sleep of {$GLOBALS["ArticaStatusUsleep"]} microseconds line " . __LINE__); } if (is_array($amavis)) { reset($amavis); $max = count($amavis); $count = 0; while (list($num, $file) = each($amavis)) { $count = $count + 1; $super++; if (!preg_match("#\\.id-message\$#", $file)) { continue; } events("ScanPostfixID():amavis_logger(): parsing /{$path}/{$file} {$count}/{$max}"); SetStatus("amavis", $max, $count, $startedAT); amavis_logger("{$path}/{$file}"); } } $path = "/tmp/savemail-infos"; if (!($handle = opendir($path))) { @mkdir($path, 0755, true); return; } $max = $GLOBALS["ArticaSMTPStatsMaxFiles"]; $count = 0; while (false !== ($file = readdir($handle))) { if ($file == ".") { continue; } if ($file == "..") { continue; } $targetFile = "{$path}/{$file}"; $super++; events("ScanPostfixID():amavis_logger(): parsing /tmp/savemail-infos/{$file} {$count}/{$max}"); amavis_logger("/tmp/savemail-infos/{$file}"); } if ($super++ > 0) { $unix->THREAD_COMMAND_SET($unix->LOCATE_PHP5_BIN() . " /usr/share/artica-postfix/exec.postfix.vip.php"); write_syslog("Success inserting {$super} mails events in mysql database...", __FILE__); } }
function ScanPostfixID($q) { $q = new mysql(); $unix = new unix(); $super = 0; $path = "var/log/artica-postfix/RTM"; $timefile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; $timesched = $unix->file_time_min($timefile); if ($timesched <= $GLOBALS["ArticaSMTPStatsTimeFrame"]) { if ($GLOBALS["VERBOSE"]) { echo "{$timesched}/{$GLOBALS["ArticaSMTPStatsTimeFrame"]} aborting\n"; } return; } if ($GLOBALS["VERBOSE"]) { echo "Scanning {$path}...\n"; } $files = DirList("/var/log/artica-postfix/RTM"); $startedAT = date("Y-m-d H:i:s"); $count = 0; if (!is_array($files)) { events("ScanPostfixID() No files.. Aborting"); return null; } events("ScanPostfixID():: Get messages in {$path} " . count($files)); $max = count($files); if ($max > 0) { events("ScanPostfixID():: Starting analyze {$max} sql files....", __FILE__); } if ($max > $GLOBALS["ArticaSMTPStatsMaxFiles"]) { $max = $GLOBALS["ArticaSMTPStatsMaxFiles"]; } if ($max > 0) { while (list($num, $file) = each($files)) { $count++; $super++; if (preg_match("#\\.id-message\$#", $file)) { $amavis[] = $file; continue; } events("ScanPostfixID():: ({$count}/{$max})"); events("ScanPostfixID():: \"/{$path}/{$file}\""); if (!preg_match("#\\.msg\$#", $file)) { continue; } if ($file == "NOQUEUE.msg") { events("ScanPostfixID():: Delete /{$path}/{$file}"); @unlink("/{$path}/{$file}"); continue; } usleep($GLOBALS["ArticaStatusUsleep"]); if ($count > $max) { events("ScanPostfixID():: Break..."); break; } if (PostfixFullProcess("/{$path}/{$file}", $q)) { SetStatus("Postfix", $max, $count, $startedAT); unset($files[$num]); events("ScanPostfixID():: ({$count}/{$max}) with a sleep of {$GLOBALS["ArticaStatusUsleep"]} microseconds line " . __LINE__); } else { continue; } } if (is_array($amavis)) { reset($amavis); $max = count($amavis); $count = 0; while (list($num, $file) = each($amavis)) { $count = $count + 1; $super++; if (!preg_match("#\\.id-message\$#", $file)) { continue; } events("ScanPostfixID():amavis_logger(): parsing /{$path}/{$file} {$count}/{$max}"); SetStatus("amavis", $max, $count, $startedAT); amavis_logger("/{$path}/{$file}"); } } } $files = DirList("/tmp/savemail-infos"); $max = count($files); if ($GLOBALS["VERBOSE"]) { echo "Scanning /tmp/savemail-infos...({$max} files)\n"; } if ($max > 0) { events("ScanPostfixID():: Starting analyze {$max} sql files....", __FILE__); } if ($max > $GLOBALS["ArticaSMTPStatsMaxFiles"]) { $max = $GLOBALS["ArticaSMTPStatsMaxFiles"]; } if (count($files > 0)) { $count = 0; while (list($num, $file) = each($files)) { $super++; events("ScanPostfixID():amavis_logger(): parsing /tmp/savemail-infos/{$file} {$count}/{$max}"); amavis_logger("/tmp/savemail-infos/{$file}"); } } if ($super++ > 0) { $unix->THREAD_COMMAND_SET($unix->LOCATE_PHP5_BIN() . " /usr/share/artica-postfix/exec.postfix.vip.php"); write_syslog("Success inserting {$super} mails events in mysql database...", __FILE__); } }
function ScanPostfixID($q) { $q = new mysql(); $path = "var/log/artica-postfix/RTM"; $files = DirList("/var/log/artica-postfix/RTM"); $startedAT = date("Y-m-d H:i:s"); $count = 0; if (!is_array($files)) { events("ScanPostfixID() No files.. Aborting"); return null; } events('ScanPostfixID():: ##########################################################'); events("ScanPostfixID():: Get msg in {$path} " . count($files)); $max = count($files); if ($max > 0) { events("ScanPostfixID():: Starting analyze {$max} sql files....", __FILE__); } while (list($num, $file) = each($files)) { $count = $count + 1; if (preg_match("#\\.id-message\$#", $file)) { $amavis[] = $file; continue; } events("ScanPostfixID():: ({$count}/{$max})"); events("ScanPostfixID():: \"/{$path}/{$file}\""); if (!preg_match("#\\.msg\$#", $file)) { continue; } if ($file == "NOQUEUE.msg") { events("ScanPostfixID(): Delete /{$path}/{$file}"); @unlink("/{$path}/{$file}"); continue; } if (PostfixFullProcess("/{$path}/{$file}", $q)) { SetStatus("Postfix", $max, $count, $startedAT); unset($files[$num]); events("ScanPostfixID(): DOne..."); events("ScanPostfixID():: ({$count}/{$max})"); } else { continue; } } events("##########################################################"); events("ScanPostfixID():Get messages-id"); if (is_array($amavis)) { reset($amavis); $max = count($amavis); $count = 0; while (list($num, $file) = each($amavis)) { $count = $count + 1; if (!preg_match("#\\.id-message\$#", $file)) { continue; } events("##########################################################"); events("ScanPostfixID():amavis_logger(): parsing /{$path}/{$file} {$count}/{$max}"); SetStatus("amavis", $max, $count, $startedAT); amavis_logger("/{$path}/{$file}"); events("##########################################################"); } } if ($count > 0) { write_syslog("Success inserting {$count} mails events in mysql database...", __FILE__); } }