function varlog() { $unix = new unix(); $rsync = $unix->find_program("rsync"); $rm = $unix->find_program("rm"); if (!is_file($rsync)) { $unix->DEBIAN_INSTALL_PACKAGE("rsync"); } //$GLOBALS["ArticaMaxLogsSize"]=$ArticaMaxLogsSize; //$GLOBALS["logs_cleaning"]=$sock->GET_NOTIFS("logs_cleaning"); //$GLOBALS["MaxTempLogFilesDay"]=$sock->GET_INFO("MaxTempLogFilesDay"); //if($GLOBALS["MaxTempLogFilesDay"]==null){$GLOBALS["MaxTempLogFilesDay"]=5;} if (!is_numeric($GLOBALS["ArticaMaxLogsSize"])) { init(); } $sock = new sockets(); $LogsRotateDefaultSizeRotation = $sock->GET_INFO("LogsRotateDefaultSizeRotation"); if (!is_numeric($LogsRotateDefaultSizeRotation)) { $LogsRotateDefaultSizeRotation = 100; } $LogsDirectoryStorage = $sock->GET_INFO("LogsDirectoryStorage"); if (trim($LogsDirectoryStorage) == null) { $LogsDirectoryStorage = "/home/logs-backup"; } $echo = $unix->find_program("echo"); $LogRotatePath = $sock->GET_INFO("LogRotatePath"); if ($LogRotatePath == null) { $LogRotatePath = "/home/logrotate"; } $SQUIDEnable = $sock->GET_INFO("SQUIDEnable"); if (!is_numeric($SQUIDEnable)) { $SQUIDEnable = 1; } $REMOVE_PHP_SCRIPTS[] = "/usr/share/artica-postfix/miniadm.logon.php"; $REMOVE_PHP_SCRIPTS[] = "/usr/share/artica-postfix/miniadm.index.php"; $REMOVE_PHP_SCRIPTS[] = "/usr/share/artica-postfix/miniadm.logoff.php"; while (list($index, $filepath) = each($REMOVE_PHP_SCRIPTS)) { if (is_file($filepath)) { @unlink($filepath); } } $RESTART_SQUID = false; $syslog[] = "/var/log/syslog"; $syslog[] = "/var/log/messages"; $syslog[] = "/var/log/daemon.log"; $syslog[] = "/var/log/auth.log"; $syslog[] = "/var/log/kern.log"; $syslog[] = "/var/log/user.log"; $other[] = "/var/log/php.log"; $other[] = "/var/log/artica-postfix/framework.log"; $other[] = "/usr/share/artica-postfix/ressources/logs/php.log"; $other[] = "/var/log/artica-postfix/logrotate.debug"; $other[] = "/var/log/ArticaProc.log"; $other[] = "/var/log/clamav/clamav.log"; $other[] = "/var/log/clamav/clamd.log"; $other[] = "/var/log/clamav/freshclam.log"; $other[] = "/var/log/lighttpd/access.log"; $other[] = "/var/log/lighttpd/apache-access.log"; $other[] = "/var/log/apt/history.log"; $other[] = "/var/log/apt/term.log"; $other[] = "/var/log/redis/redis-server.log"; $other[] = "/var/log/clamav-unofficial-sigs.log"; $other[] = "/var/log/influxdb/influxdb.startup"; $other[] = "/var/log/influxdb/influxd.log"; $other[] = "/var/log/influxdb/influxd.service.log"; if (is_dir("/usr/share/artica-postfix/ressources/ressources")) { shell_exec("{$rm} -rf /usr/share/artica-postfix/ressources/ressources"); } if (is_file("/var/log/artica-postfix/squid-logger-start.log")) { shell_exec("{$echo} \"\">/var/log/artica-postfix/squid-logger-start.log"); } if (is_file("/var/log/artica-postfix/exec.syslog-engine.php.log")) { shell_exec("{$echo} \"\">/var/log/artica-postfix/exec.syslog-engine.php.log"); } if (is_file("/var/log/squid/squidtail.log")) { $size = @filesize("/var/log/squid/squidtail.log") / 1024 / 1000; if ($size > $LogsRotateDefaultSizeRotation) { if (@copy("/var/log/squid/squidtail.log", "{$LogRotatePath}/squidtail.log." . time())) { shell_exec("{$echo} \"\">/var/log/squid/squidtail.log"); $RESTART_SYSLOG = true; $RESTART_SQUID = true; } } } if (is_file("/var/log/squid/logfile_daemon.debug")) { $size = @filesize("/var/log/squid/logfile_daemon.debug") / 1024 / 1000; if ($size > $LogsRotateDefaultSizeRotation) { shell_exec("{$echo} \"\">/var/log/squid/logfile_daemon.debug"); $RESTART_SYSLOG = true; } } if (is_file("/var/log/squid/ext_time_quota_acl.log")) { $size = @filesize("/var/log/squid/ext_time_quota_acl.log") / 1024 / 1000; if ($size > $LogsRotateDefaultSizeRotation) { shell_exec("{$echo} \"\">/var/log/squid/ext_time_quota_acl.log"); } } $RESTART_SYSLOG = false; $checks = array(); while (list($index, $filepath) = each($syslog)) { $size = @filesize($filepath) / 1024 / 1000; echo "{$filepath} {$size}MB <> {$LogsRotateDefaultSizeRotation}M\n"; if ($size > $LogsRotateDefaultSizeRotation) { $nextfile = "{$LogsDirectoryStorage}/" . basename($filepath) . "-" . time(); if (!@copy($filepath, $nextfile)) { @unlink($nextfile); continue; } $checks[] = $nextfile; shell_exec("{$echo} \"\" >{$filepath}"); $RESTART_SYSLOG = true; } } if ($RESTART_SQUID) { $squidbin = $unix->LOCATE_SQUID_BIN(); if (is_file($squidbin)) { if ($SQUIDEnable == 1) { $restart_squid_stamp = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __LINE__; if ($unix->file_time_min($restart_squid_stamp) > 240) { system_admin_mysql(1, "Ask to rotate logs after cleaning log files", null, __FILE__, __LINE__); shell_exec("{$squidbin} -f /etc/squid3/squid.conf -k reconfigure"); shell_exec("{$squidbin} -f /etc/squid3/squid.conf -k rotate"); @unlink($restart_squid_stamp); @file_put_contents($restart_squid_stamp, time()); } } } } if ($RESTART_SYSLOG) { squid_admin_mysql(1, "Restarting Syslog after a rotation", null, __FILE__, __LINE__); $unix->RESTART_SYSLOG(); } while (list($index, $filepath) = each($other)) { $size = @filesize($filepath) / 1024 / 1000; echo "{$filepath} {$size}MB <> {$LogsRotateDefaultSizeRotation}M\n"; if ($size > 50) { shell_exec("{$echo} \"\" >{$filepath}"); } } $q = new mysql_storelogs(); if ($handle = opendir($LogsDirectoryStorage)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogsDirectoryStorage}/{$fileZ}"; $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename, null); } } if ($handle = opendir("/var/log")) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $path = "/var/log/{$filename}"; if (is_dir($path)) { continue; } if (!preg_match("#artica-status\\.log\\.[0-9]+\$#", $fileZ)) { continue; } if ($unix->file_time_min($path) > 1440) { @unlink($path); } } } if ($handle = opendir("/var/log/influxdb")) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $path = "/var/log/influxdb/{$filename}"; if (is_dir($path)) { continue; } if (preg_match("#\\.log\\.[0-9]+\$#", $fileZ)) { @unlink($path); continue; } } } if ($handle = opendir("/var/log/squid")) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $path = "/var/log/squid/{$filename}"; if (is_dir($path)) { continue; } if (preg_match("#ufdbguardd\\.log\\.[0-9]+\$#", $fileZ)) { @unlink($path); continue; } } } $BackupMaxDays = $sock->GET_INFO("BackupMaxDays"); $BackupMaxDaysDir = $sock->GET_INFO("BackupMaxDaysDir"); $BackupMaxDaysAccess = $sock->GET_INFO("BackupMaxDaysAccess"); if (!is_numeric($BackupMaxDaysAccess)) { $BackupMaxDaysAccess = 365; } $LogRotatePath = $sock->GET_INFO("LogRotatePath"); if (!is_numeric($BackupMaxDays)) { $BackupMaxDays = 30; } $BackupMaxHours = $BackupMaxDays * 24; $BackupMaxMins = $BackupMaxHours * 60; $BackupMaxDaysAccess = $BackupMaxDaysAccess * 24; $BackupMaxDaysAccess = $BackupMaxDaysAccess * 60; if ($BackupMaxDaysDir == null) { $BackupMaxDaysDir = "/home/logrotate_backup"; } if ($LogRotatePath == null) { $LogRotatePath = "/home/logrotate"; } if (is_dir($BackupMaxDaysDir)) { if ($handle = opendir($BackupMaxDaysDir)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$BackupMaxDaysDir}/{$fileZ}"; $mins = $unix->file_time_min($filename); if (preg_match("#^access\\.#", $filename)) { if ($mins >= $BackupMaxDaysAccess) { $q->events("Removing {$filename} {$mins}>=BackupMaxDaysAccess:{$BackupMaxDaysAccess}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } continue; } if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } if (is_dir($LogRotatePath)) { if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $mins = $unix->file_time_min($filename); if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } $LogRotatePath = $LogRotatePath . "/work"; if (is_dir($LogRotatePath)) { if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $filemd5 = md5_file($filename); if (isset($ARRAYMD[$filemd5])) { @unlink($filename); continue; } $ARRAYMD[$filemd5] = $filename; } } if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $mins = $unix->file_time_min($filename); if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if (preg_match("#^access\\.#", $filename)) { if ($mins >= $BackupMaxDaysAccess) { echo "Removing {$filename}\n"; $q->events("Removing {$filename} {$mins}>=BackupMaxDaysAccess:{$BackupMaxDaysAccess}", __FUNCTION__, __LINE__); @unlink($filename); continue; } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); continue; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } }
function varlog() { $unix = new unix(); //$GLOBALS["ArticaMaxLogsSize"]=$ArticaMaxLogsSize; //$GLOBALS["logs_cleaning"]=$sock->GET_NOTIFS("logs_cleaning"); //$GLOBALS["MaxTempLogFilesDay"]=$sock->GET_INFO("MaxTempLogFilesDay"); //if($GLOBALS["MaxTempLogFilesDay"]==null){$GLOBALS["MaxTempLogFilesDay"]=5;} if (!is_numeric($GLOBALS["ArticaMaxLogsSize"])) { init(); } $sock = new sockets(); $LogsRotateDefaultSizeRotation = $sock->GET_INFO("LogsRotateDefaultSizeRotation"); if (!is_numeric($LogsRotateDefaultSizeRotation)) { $LogsRotateDefaultSizeRotation = 100; } $LogsDirectoryStorage = $sock->GET_INFO("LogsDirectoryStorage"); if (trim($LogsDirectoryStorage) == null) { $LogsDirectoryStorage = "/home/logs-backup"; } $echo = $unix->find_program("echo"); $syslog[] = "/var/log/syslog"; $syslog[] = "/var/log/messages"; $syslog[] = "/var/log/daemon.log"; $syslog[] = "/var/log/auth.log"; $syslog[] = "/var/log/kern.log"; $syslog[] = "/var/log/user.log"; $other[] = "/var/log/php.log"; $other[] = "/var/log/artica-postfix/framework.log"; $other[] = "/var/log/artica-postfix/logrotate.debug"; $other[] = "/var/log/ArticaProc.log"; $checks = array(); while (list($index, $filepath) = each($syslog)) { $size = @filesize($filepath) / 1024 / 1000; echo "{$filepath} {$size}MB <> {$LogsRotateDefaultSizeRotation}M\n"; if ($size > $LogsRotateDefaultSizeRotation) { $nextfile = "{$LogsDirectoryStorage}/" . basename($filepath) . "-" . time(); if (!@copy($filepath, $nextfile)) { @unlink($nextfile); continue; } $checks[] = $nextfile; shell_exec("{$echo} \"\" >{$filepath}"); } } while (list($index, $filepath) = each($other)) { $size = @filesize($filepath) / 1024 / 1000; echo "{$filepath} {$size}MB <> {$LogsRotateDefaultSizeRotation}M\n"; if ($size > 50) { shell_exec("{$echo} \"\" >{$filepath}"); } } $q = new mysql_storelogs(); if ($handle = opendir($LogsDirectoryStorage)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogsDirectoryStorage}/{$fileZ}"; $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename, null); } } $BackupMaxDays = $sock->GET_INFO("BackupMaxDays"); $BackupMaxDaysDir = $sock->GET_INFO("BackupMaxDaysDir"); $BackupMaxDaysAccess = $sock->GET_INFO("BackupMaxDaysAccess"); if (!is_numeric($BackupMaxDaysAccess)) { $BackupMaxDaysAccess = 365; } $LogRotatePath = $sock->GET_INFO("LogRotatePath"); if (!is_numeric($BackupMaxDays)) { $BackupMaxDays = 30; } $BackupMaxHours = $BackupMaxDays * 24; $BackupMaxMins = $BackupMaxHours * 60; $BackupMaxDaysAccess = $BackupMaxDaysAccess * 24; $BackupMaxDaysAccess = $BackupMaxDaysAccess * 60; if ($BackupMaxDaysDir == null) { $BackupMaxDaysDir = "/home/logrotate_backup"; } if ($LogRotatePath == null) { $LogRotatePath = "/home/logrotate"; } if (is_dir($BackupMaxDaysDir)) { if ($handle = opendir($BackupMaxDaysDir)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$BackupMaxDaysDir}/{$fileZ}"; $mins = $unix->file_time_min($filename); if (preg_match("#^access\\.#", $filename)) { if ($mins >= $BackupMaxDaysAccess) { $q->events("Removing {$filename} {$mins}>=BackupMaxDaysAccess:{$BackupMaxDaysAccess}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } continue; } if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } if (is_dir($LogRotatePath)) { if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $mins = $unix->file_time_min($filename); if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } $LogRotatePath = $LogRotatePath . "/work"; if (is_dir($LogRotatePath)) { if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $filemd5 = md5_file($filename); if (isset($ARRAYMD[$filemd5])) { @unlink($filename); continue; } $ARRAYMD[$filemd5] = $filename; } } if ($handle = opendir($LogRotatePath)) { while (false !== ($fileZ = readdir($handle))) { if ($fileZ == ".") { continue; } if ($fileZ == "..") { continue; } $filename = "{$LogRotatePath}/{$fileZ}"; $mins = $unix->file_time_min($filename); if ($GLOBALS["VERBOSE"]) { echo "{$filename} = {$mins}Mn\n"; } if (preg_match("#^access\\.#", $filename)) { if ($mins >= $BackupMaxDaysAccess) { echo "Removing {$filename}\n"; $q->events("Removing {$filename} {$mins}>=BackupMaxDaysAccess:{$BackupMaxDaysAccess}", __FUNCTION__, __LINE__); @unlink($filename); continue; } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); continue; } if ($mins >= $BackupMaxMins) { $q->events("Removing {$filename} {$mins}>=BackupMaxMins:{$BackupMaxMins}", __FUNCTION__, __LINE__); echo "Removing {$filename}\n"; @unlink($filename); } $q->events("Injecting {$filename}", __FUNCTION__, __LINE__); $q->InjectFile($filename); } } } }
function awstats_mail() { $users = new usersMenus(); if (!$users->POSTFIX_INSTALLED) { return; } $unix = new unix(); $sock = new sockets(); $ArticaMetaEnabled = trim($sock->GET_INFO("ArticaMetaEnabled")); if (!is_numeric($ArticaMetaEnabled)) { $ArticaMetaEnabled = 0; } $EnableArticaSMTPStatistics = $sock->GET_INFO("EnableArticaSMTPStatistics"); if (!is_numeric($EnableArticaSMTPStatistics)) { $EnableArticaSMTPStatistics = 1; } $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $pidTime = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; if ($EnableArticaSMTPStatistics == 0) { return; } $pid = $unix->get_pid_from_file($pidfile); if (!$GLOBALS["VERBOSE"]) { if ($unix->process_exists($pid, basename(__FILE__))) { $pidTime = $unix->PROCCESS_TIME_MIN($pid); events("Already process PID: {$pid} running since {$pidTime} minutes", __FUNCTION__, __FILE__, __LINE__, "postfix-stats"); return; } $time = $unix->file_time_min("{$pidTime}"); if ($time < 120) { events("Current {$time}mn, need 60mn"); return; } if (system_is_overloaded(basename(__FILE__))) { system_admin_events("Overloaded system, aborting", __FUNCTION__, __FILE__, __LINE__, "postfix-stats"); return; } @unlink($pidTime); @file_put_contents($pidTime, time()); @file_put_contents($pidfile, getmypid()); } $tt1 = time(); $nohup = $unix->find_program("nohup"); if (!$users->awstats_installed) { events("awstats is not installed, artica will install it itself", __FUNCTION__, __FILE__, __LINE__, "postfix-stats"); events("{$nohup} /usr/share/artica-postfix/bin/artica-make APP_AWSTATS >/dev/null &"); shell_exec(trim("{$nohup} /usr/share/artica-postfix/bin/artica-make APP_AWSTATS >/dev/null &")); return; } $sock = new sockets(); $GLOBALS["EnablePostfixMultiInstance"] = $sock->GET_INFO("EnablePostfixMultiInstance"); $GLOBALS["maillogconvert"] = $unix->LOCATE_maillogconvert(); $GLOBALS["zcat"] = $unix->find_program("zcat"); $GLOBALS["perl"] = $unix->find_program("perl"); $GLOBALS["nice"] = EXEC_NICE(); $GLOBALS["sed"] = $unix->find_program("sed"); $GLOBALS["mv"] = $unix->find_program("mv"); $GLOBALS["cp"] = $unix->find_program("cp"); $GLOBALS["touch"] = $unix->find_program("touch"); $GLOBALS["echo"] = $unix->find_program("echo"); $GLOBALS["postfix"] = $unix->find_program("postfix"); if ($GLOBALS["VERBOSE"]) { echo "maillogconvert..........:{$GLOBALS["maillogconvert"]}\n"; echo "zcat....................:{$GLOBALS["zcat"]}\n"; echo "perl....................:{$GLOBALS["perl"]}\n"; echo "nice....................:{$GLOBALS["nice"]}\n"; echo "sed.....................:{$GLOBALS["sed"]}\n"; } if (strlen($GLOBALS["maillogconvert"]) == null) { events("maillogconvert.pl, no such file", __FUNCTION__, __FILE__, __LINE__, "postfix-stats"); return; } @mkdir("/var/log/mail-backup", 666, true); foreach (glob("/var/log/mail.log.*.gz") as $filename) { events("{$GLOBALS["nice"]}{$GLOBALS["zcat"]} {$filename} >/tmp/mail.log"); shell_exec("{$GLOBALS["nice"]}{$GLOBALS["zcat"]} {$filename} >/tmp/mail.log"); $t1 = time(); prepflog("/tmp/mail.log"); $distanceOfTimeInWords = distanceOfTimeInWords($t1, time()); shell_exec("/bin/mv {$filename} /var/log/mail-backup/"); events("/bin/mv {$filename} /var/log/mail-backup/", __FUNCTION__, __FILE__, __LINE__, "postfix-stats"); events(basename($filename) . " {$distanceOfTimeInWords}"); $ev[] = basename($filename) . " " . $distanceOfTimeInWords; @unlink("/tmp/mail.log"); } foreach (glob("/var/log/mail.log.*") as $filename) { if (!preg_match("#\\.[0-9]+\$#", basename($filename))) { if ($GLOBALS["VERBOSE"]) { echo basename($filename) . " SKIP\n"; } continue; } $t1 = time(); prepflog($filename); $distanceOfTimeInWords = distanceOfTimeInWords($t1, time()); if ($GLOBALS["VERBOSE"]) { echo basename($filename) . " {$distanceOfTimeInWords}\n"; } $ev[] = basename($filename) . " " . $distanceOfTimeInWords; shell_exec("/bin/mv {$filename} /var/log/mail-backup/"); } $t1 = time(); if (is_file("/var/log/mail.log")) { $nextFile = "/var/log/mail.log." . time(); shell_exec("{$GLOBALS["cp"]} /var/log/mail.log {$nextFile}"); shell_exec("{$GLOBALS["echo"]} \"\" > /var/log/mail.log"); events("Restarting Syslogs..."); $syslog_init = $unix->RESTART_SYSLOG_FORMAIL(); prepflog($nextFile); $storelogs = new mysql_storelogs(); events("Injecting {$nextFile} to MySQL store logs"); $storelogs->InjectFile($nextFile); artica_parse(); events("reloading postfix"); shell_exec("{$GLOBALS["postfix"]} reload"); } $distanceOfTimeInWords = distanceOfTimeInWords($t1, time()); $ev[] = basename("/var/log/mail.log") . " " . $distanceOfTimeInWords; if ($GLOBALS["VERBOSE"]) { echo basename("/var/log/mail.log") . " {$distanceOfTimeInWords}\n"; } //$cmd="$nice$perl /usr/share/artica-postfix/bin/prepflog.pl </tmp/mail.log|$nice$perl $maillogconvert standard >>/var/log/artica-postfix/awstats-postfix.stats"; foreach (glob("/var/log/artica-mail/*.stats") as $filename) { if (preg_match("#(.+?)\\.([0-9]+)\\.stats#", basename($filename), $re)) { $instance = $re[1]; $time = $re[2]; $cmd = "{$GLOBALS["nice"]}{$GLOBALS["perl"]} {$GLOBALS["maillogconvert"]} standard< {$filename} >/var/log/artica-mail/{$instance}.{$time}.aws"; events($cmd); shell_exec($cmd); @unlink($filename); if (system_is_overloaded(basename(__FILE__))) { system_admin_events("Overloaded system, aborting", __FUNCTION__, __FILE__, __LINE__, "postfix-stats"); return; } } } $filecount = 0; foreach (glob("/var/log/artica-mail/*.aws") as $filename) { artica_parse($filename); $filecount++; $filecountl[] = $filename; } $distanceOfTimeInWords = distanceOfTimeInWords($tt1, time()); if ($filecount > 0) { system_admin_events("Success generating {$filecount} stats files ({$distanceOfTimeInWords})\n" . @implode("\n", $filename), __FUNCTION__, __FILE__, __LINE__, "postfix-stats"); if ($ArticaMetaEnabled == 1) { $cmd = "{$GLOBALS["nice"]}" . LOCATE_PHP5_BIN() . " " . dirname(__FILE__) . "/exec.artica.meta.users.php --export-postfix-events >/dev/null 2>&1 &"; shell_exec($cmd); } } }