function user_status_table() { if (isset($GLOBALS["user_status_table_executed"])) { if ($GLOBALS["VERBOSE"]) { $trace = debug_backtrace(); if (isset($trace[1])) { $called = " called by " . basename($trace[1]["file"]) . " {$trace[1]["function"]}() line {$trace[1]["line"]}"; echo "user_status_table Already executed {$called}\n"; } } return; } $GLOBALS["user_status_table_executed"] = true; $unix = new unix(); $sock = new sockets(); $timefile = "/usr/share/artica-postfix/ressources/databases/ZARAFA_DB_STATUS.db"; $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $mns = $unix->file_time_min($timefile); if ($GLOBALS["VERBOSE"]) { echo "{$timefile} = {$mns}Mn\n"; } if (!$GLOBALS["FORCE"]) { if (system_is_overloaded(basename(__FILE__))) { system_admin_events("Overload system, aborting", __FUNCTION__, __FILE__, __LINE__, "zarafa"); return; } if ($mns < 180) { return; } $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $timeProcess = $unix->PROCCESS_TIME_MIN($pid); system_admin_events("{$pid}, task is already executed (since {$timeProcess}Mn}), aborting", __FUNCTION__, __FILE__, __LINE__, "zarafa"); if ($timeProcess < 15) { return; } $kill = $unix->find_program("kill"); unix_system_kill_force($pid); system_admin_events("{$pid}, killed (since {$timeProcess}Mn}), aborting", __FUNCTION__, __FILE__, __LINE__, "zarafa"); } } @file_put_contents($pidfile, getmypid()); @unlink($timefile); @file_put_contents($timefile, time()); $ZarafaIndexPath = $sock->GET_INFO("ZarafaIndexPath"); $ZarafaStoreOutsidePath = $sock->GET_INFO("ZarafaStoreOutsidePath"); $ZarafaMySQLServiceType = $sock->GET_INFO("ZarafaMySQLServiceType"); if (!is_numeric($ZarafaMySQLServiceType)) { $ZarafaMySQLServiceType = 1; } // $ZarafaMySQLServiceType =1 ou 2 /var/lib/mysql // $ZarafaMySQLServiceType =3 --> dedicated instance if ($ZarafaIndexPath == null) { $ZarafaIndexPath = "/var/lib/zarafa/index"; } if ($ZarafaStoreOutsidePath == null) { $ZarafaStoreOutsidePath = "/var/lib/zarafa"; } $ARRAY["ZARAFA_INDEX"] = $unix->DIRSIZE_BYTES($ZarafaIndexPath); if ($ZarafaMySQLServiceType == 1 or $ZarafaMySQLServiceType == 2) { $ARRAY["ZARAFA_DB"] = $unix->DIRSIZE_BYTES("/var/lib/mysql"); } if ($ZarafaMySQLServiceType == 3) { $WORKDIR = $sock->GET_INFO("ZarafaDedicateMySQLWorkDir"); if ($WORKDIR == null) { $WORKDIR = "/home/zarafa-db"; } $ARRAY["ZARAFA_DB"] = $unix->DIRSIZE_BYTES($WORKDIR); } $ARRAY["ATTACHS"] = $unix->DIRSIZE_BYTES($ZarafaStoreOutsidePath); @file_put_contents($timefile, serialize($ARRAY)); @chmod($timefile, 0750); unset($ARRAY); $zarafaadmin = $unix->find_program("zarafa-admin"); $kill = $unix->find_program("kill"); $pids = $unix->PIDOF_PATTERN_ALL("zarafa-admin -l"); if (count($pids) > 0) { while (list($pid, $line) = each($pids)) { $time = $unix->PROCESS_TTL($pid); if ($time > 15) { $unix->_syslog("killing zarafa-admin -l pid {$pid} ({$time}mn)", basename(__FILE__)); unix_system_kill_force($pid); } } } $pid = $unix->PIDOF_PATTERN("zarafa-admin -l"); if ($unix->process_exists($pid)) { $unix->_syslog("zarafa-admin -l pid {$pid} still running", basename(__FILE__)); } if ($GLOBALS["VERBOSE"]) { echo "{$zarafaadmin} -l 2>&1\n--------------------------------------------------------------------\n"; } exec("{$zarafaadmin} -l 2>&1", $results); while (list($num, $line) = each($results)) { $line = trim($line); if ($GLOBALS["VERBOSE"]) { echo "\"{$line}\"\n"; } if (preg_match("#User list for\\s+(.+?)\\(#i", $line, $re)) { $ou = $re[1]; continue; } if (preg_match("#Username#", $line)) { continue; } if (preg_match("#SYSTEM#", $line)) { continue; } if (preg_match("#^(.+?)\\s+.+?#", $line, $re)) { if ($GLOBALS["VERBOSE"]) { echo "\"{$ou}\" -> \"{$re[1]}\" -> \"_user_status_table_info({$re[1]},{$zarafaadmin})\"\n"; } $array[$ou][$re[1]] = _user_status_table_info($re[1], $zarafaadmin); } } $q = new mysql(); if (!$q->TABLE_EXISTS('zarafauserss', 'artica_events')) { $sql = "CREATE TABLE IF NOT EXISTS `zarafauserss` (\n\t\t\t `zmd5` varchar(90) NOT NULL PRIMARY KEY,\n\t\t\t `uid` varchar(128) NOT NULL,\n\t\t\t `ou` varchar(128) NOT NULL,\n\t\t\t `mail` varchar(255) NOT NULL,\n\t\t\t `license` smallint(1) NOT NULL,\n\t\t\t `NONACTIVETYPE` varchar(60) NOT NULL,\n\t\t\t `storesize` BINT(100) UNSIGNED NOT NULL,\n\t\t\t KEY `uid` (`uid`),\n\t\t\t KEY `ou` (`ou`),\n\t\t\t KEY `mail` (`mail`),\n\t\t\t KEY `license` (`license`),\n\t\t\t KEY `NONACTIVETYPE` (`NONACTIVETYPE`),\n\t\t\t KEY `storesize` (`storesize`)\n\t\t\t) "; $q->QUERY_SQL($sql, 'artica_events'); if (!$q->ok) { echo $q->mysql_error . "\n"; return; } } $prefix = "INSERT IGNORE INTO zarafauserss (zmd5,uid,ou,mail,license,NONACTIVETYPE,storesize) VALUES "; while (list($ou, $members) = each($array)) { while (list($uid, $main) = each($members)) { $md5 = md5("{$uid}{$ou}"); if (!isset($main["NONACTIVETYPE"])) { $main["NONACTIVETYPE"] = ''; } if ($GLOBALS["VERBOSE"]) { echo "\"('{$md5}','{$uid}','{$ou}','{$main["MAIL"]}','{$main["ACTIVE"]}','{$main["NONACTIVETYPE"]}','{$main["STORE_SIZE"]}')\n"; } $f[] = "('{$md5}','{$uid}','{$ou}','{$main["MAIL"]}','{$main["ACTIVE"]}','{$main["NONACTIVETYPE"]}','{$main["STORE_SIZE"]}')"; } } if (count($f) == 0) { return; } $q->QUERY_SQL("TRUNCATE TABLE zarafauserss", "artica_events"); $q->QUERY_SQL($prefix . @implode(",", $f), "artica_events"); if (!$q->ok) { echo $q->mysql_error . "\n"; } if ($GLOBALS["VERBOSE"]) { echo "FINISH\n--------------------------------------------------------------------\n"; } }
function sessions_clean() { $unix = new unix(); $sock = new sockets(); $TimeFile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; $APACHE_SRC_ACCOUNT = $unix->APACHE_SRC_ACCOUNT(); $APACHE_SRC_GROUP = $unix->APACHE_SRC_GROUP(); $CleanPHPSessionTime = $sock->GET_INFO("CleanPHPSessionTime"); if (!is_numeric($CleanPHPSessionTime)) { $CleanPHPSessionTime = 2880; } if ($unix->file_time_min($TimeFile) < 60) { return; } @unlink($TimeFile); @file_put_contents($TimeFile, time()); if ($CleanPHPSessionTime > 5) { if (is_dir("/var/lib/php5")) { foreach (glob("/var/lib/php5/*") as $filename) { $unix->chown_func($APACHE_SRC_ACCOUNT, $APACHE_SRC_GROUP, $filename); $time = $unix->file_time_min($filename); if ($time > 2880) { $unix->_syslog("Clean: Remove PHP Session file " . basename($filename) . " {$time}Mn", basename(__FILE__)); @unlink($filename); } } } if (is_dir("/var/lib/php5-zarafa")) { foreach (glob("/var/lib/php5-zarafa/*") as $filename) { $time = $unix->file_time_min($filename); if ($time > 2880) { $unix->_syslog("Clean: Remove PHP Zarafa Session file " . basename($filename) . " {$time}Mn", basename(__FILE__)); @unlink($filename); } } } } foreach (glob("/usr/share/artica-postfix/ressources/logs/jGrowl/*") as $filename) { $time = $unix->file_time_min($filename); if ($time > 360) { @unlink($filename); } } foreach (glob("/usr/share/artica-postfix/ressources/conf/*") as $filename) { $time = $unix->file_time_min($filename); if ($time > 360) { @unlink($filename); } } }
function build_ufdbguard_HUP() { if (isset($GLOBALS["build_ufdbguard_HUP_EXECUTED"])) { return; } $GLOBALS["build_ufdbguard_HUP_EXECUTED"] = true; $unix = new unix(); $sock = new sockets(); $forceTXT = null; $ufdbguardReloadTTL = intval($sock->GET_INFO("ufdbguardReloadTTL")); if ($ufdbguardReloadTTL < 1) { $ufdbguardReloadTTL = 10; } $php5 = $unix->LOCATE_PHP5_BIN(); $rm = $unix->find_program("rm"); shell_exec("{$php5} /usr/share/artica-postfix/exec.ufdbclient.reload.php"); shell_exec("{$rm} /home/squid/error_page_cache/*"); if (function_exists("debug_backtrace")) { $trace = @debug_backtrace(); if (isset($trace[1])) { $called = "called by " . basename($trace[1]["file"]) . " {$trace[1]["function"]}() line {$trace[1]["line"]}"; } } $trace = debug_backtrace(); if (isset($trace[1])) { $called = " called by " . basename($trace[1]["file"]) . " {$trace[1]["function"]}() line {$trace[1]["line"]}"; } $timeFile = "/etc/artica-postfix/pids/UfdbGuardReload.time"; $TimeReload = $unix->file_time_min($timeFile); if (!$GLOBALS["FORCE"]) { if ($TimeReload < $ufdbguardReloadTTL) { build_progress("{reloading_service} {failed}", 110); $unix->_syslog("Webfiltering service Aborting reload, last reload since {$TimeReload}Mn, need at least {$ufdbguardReloadTTL}Mn", basename(__FILE__)); echo "Starting......: " . date("H:i:s") . " Webfiltering service Aborting reload, last reload since {$TimeReload}Mn, need at least {$ufdbguardReloadTTL}Mn\n"; return; } } else { echo "Starting......: " . date("H:i:s") . " --- FORCED --- ufdbGuard last reload was {$TimeReload}mn\n"; } @unlink($timeFile); @file_put_contents($timeFile, time()); $pid = ufdbguard_pid(); build_progress("{reloading_service} {$pid}", 71); $squidbin = $unix->LOCATE_SQUID_BIN(); $ufdbguardd = $unix->find_program("ufdbguardd"); if (strlen($ufdbguardd) < 5) { WriteToSyslogMail("ufdbguardd no such binary", basename(__FILE__)); return; } $kill = $unix->find_program("kill"); if ($unix->process_exists($pid)) { $processTTL = intval($unix->PROCCESS_TIME_MIN($pid)); $LastTime = intval($unix->file_time_min($timeFile)); build_progress("{reloading_service} {$pid} {$processTTL}Mn", 72); echo "Starting......: " . date("H:i:s") . " Webfiltering service Reloading service TTL {$processTTL}Mn\n"; echo "Starting......: " . date("H:i:s") . " Webfiltering service Reloading service Last config since {$LastTime}Mn\n"; echo "Starting......: " . date("H:i:s") . " Webfiltering service Reloading Max reload {$ufdbguardReloadTTL}Mn\n"; if (!$GLOBALS["FORCE"]) { echo "Starting......: " . date("H:i:s") . " Webfiltering service Reloading force is disabled\n"; if ($LastTime < $ufdbguardReloadTTL) { squid_admin_mysql(2, "Reloading Web Filtering PID: {$pid} [Aborted] last reload {$LastTime}Mn, need {$ufdbguardReloadTTL}mn", null, __FILE__, __LINE__); echo "Starting......: " . date("H:i:s") . " Webfiltering service Reloading service Aborting... minimal time was {$ufdbguardReloadTTL}mn - Current {$LastTime}mn\n{$called}\n"; return; } if ($processTTL < $ufdbguardReloadTTL) { squid_admin_mysql(2, "Reloading Web Filtering PID: {$pid} [Aborted] {$processTTL}Mn, need {$ufdbguardReloadTTL}mn", null, __FILE__, __LINE__); echo "Starting......: " . date("H:i:s") . " Webfiltering service PID: {$pid} Reloading service Aborting... minimal time was {$ufdbguardReloadTTL}mn\n{$called}\n"; return; } } if ($GLOBALS["FORCE"]) { $forceTXT = " with option FORCE enabled"; $prefix = "[FORCED]:"; } @unlink($timeFile); @file_put_contents($timeFile, time()); echo "Starting......: " . date("H:i:s") . " Webfiltering service Reloading service PID:{$pid} {$processTTL}mn\n"; squid_admin_mysql(1, "{$prefix}Reloading Web Filtering service PID: {$pid} TTL {$processTTL}Mn", "{$forceTXT}\n{$called}\n{$GLOBALS["CMDLINEXEC"]}"); build_progress("{reloading_service} HUP {$pid}", 75); unix_system_HUP($pid); build_progress("{reloading_proxy_service}", 76); shell_exec("{$php5} /usr/share/artica-postfix/exec.ufdbclient.reload.php"); $squidbin = $unix->LOCATE_SQUID_BIN(); squid_admin_mysql(1, "{$prefix}Reloading Proxy service", null, __FILE__, __LINE__); system("{$squidbin} -k reconfigure"); return true; } squid_admin_mysql(1, "Warning, Reloading Web Filtering but not running [action=start]", "{$forceTXT}\n{$called}\n{$GLOBALS["CMDLINEXEC"]}"); echo "Starting......: " . date("H:i:s") . " Webfiltering service reloading service no pid is found, Starting service...\n"; @unlink($timeFile); @file_put_contents($timeFile, time()); build_progress("{starting_service}", 76); if (!ufdbguard_start()) { return; } echo "Starting......: " . date("H:i:s") . " Webfiltering Service restarting ufdb-tail process\n"; shell_exec("/etc/init.d/ufdb-tail restart"); shell_exec("{$php5} /usr/share/artica-postfix/exec.ufdbclient.reload.php"); squid_admin_mysql(1, "{$prefix}Reloading Proxy service", null, __FILE__, __LINE__); system("{$squidbin} -k reconfigure"); build_progress("{starting_service} {done}", 77); return true; }
function reload() { $unix = new unix(); $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $sock = new sockets(); $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } $timeFile = "/etc/artica-postfix/pids/UfdbGuardReload.time"; $ufdbguardReloadTTL = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/ufdbguardReloadTTL")); $UfdbReloadBySchedule = trim(@file_get_contents("/etc/artica-postfix/settings/Daemons/UfdbReloadBySchedule")); if (!is_numeric($UfdbReloadBySchedule)) { $UfdbReloadBySchedule = 1; } $TimeReload = $unix->file_time_min($timeFile); if (!$GLOBALS["FORCE"]) { if ($ufdbguardReloadTTL < 1) { $ufdbguardReloadTTL = 10; } if ($TimeReload < $ufdbguardReloadTTL) { $unix->_syslog("{$GLOBALS["TITLENAME"]} Aborting reload, last reload since {$TimeReload}Mn, need at least {$ufdbguardReloadTTL}Mn", basename(__FILE__)); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Aborting reload, last reload since {$TimeReload}Mn, need at least {$ufdbguardReloadTTL}Mn\n"; } return; } if ($UfdbReloadBySchedule == 1) { if (!$GLOBALS["BYSCHEDULE"]) { $unix->_syslog("{$GLOBALS["TITLENAME"]} Aborting reload, only allowed trough a schedule", basename(__FILE__)); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Aborting reload, only allowed trough a schedule\n"; } return; } } } if ($GLOBALS["FORCE"]) { $pid = PID_NUM(); $TimeService = $unix->PROCCESS_TIME_MIN($pid); squid_admin_mysql(1, "Force Webfiltering service Running since {$TimeService}Mn to be reloaded", "last reload since {$TimeReload}Mn", __FILE__, __LINE__); } @unlink($timeFile); @file_put_contents($timeFile, time()); $squid_version = $unix->squid_version(); if (preg_match("#^([0-9]+)\\.([0-9]+)#", $squid_version, $re)) { if (intval($re[2]) > 4) { $re[2] = 4; } $squid_version = "{$re[1]}.{$re[2]}"; } $kill = $unix->find_program("kill"); $php5 = $unix->LOCATE_PHP5_BIN(); $verif_Squid_Version = verif_Squid_Version(); if ($verif_Squid_Version != $squid_version) { squid_admin_mysql(1, "{$verif_Squid_Version}/{$squid_version} reconfiguring for squid compatibility", __FILE__, __LINE__, "global-compile"); $unix->_syslog("{$GLOBALS["TITLENAME"]} {$verif_Squid_Version}/{$squid_version} reconfiguring for squid compatibility", basename(__FILE__)); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} {$verif_Squid_Version}/{$squid_version} reconfiguring for squid compatibility...\n"; } shell_exec("{$php5} /usr/share/artica-postfix/exec.squidguard.php --build --force"); } if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Squid-Cache version {$squid_version}\n"; } $pid = PID_NUM(); if ($unix->process_exists($pid)) { $unix->_syslog("{$GLOBALS["TITLENAME"]} Reloading PID {$pid}\n", basename(__FILE__)); $chmod = $unix->find_program("chmod"); $chown = $unix->find_program("chown"); shell_exec("{$chmod} 0755 /etc/squid3/ufdbGuard.conf"); shell_exec("{$chown} squid:squid /etc/squid3"); shell_exec("{$chown} squid:squid /etc/squid3/ufdbGuard.conf"); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Reloading PID {$pid}\n"; } shell_exec("{$php5} /usr/share/artica-postfix/exec.squidguard.php --dbmem"); shell_exec("{$php5} /usr/share/artica-postfix/exec.squidguard.php --reload"); shell_exec("{$php5} /usr/share/artica-postfix/exec.ufdbclient.reload.php"); } else { start(true); } }
function reload() { $unix = new unix(); $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $sock = new sockets(); $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } $pid = PID_NUM(); if ($unix->process_exists($pid)) { $unix->_syslog("{$GLOBALS["TITLENAME"]} Reloading PID {$pid}\n", basename(__FILE__)); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Reloading PID {$pid}\n"; } CheckDirectories(); buildconfig(); unix_system_HUP($pid); } else { start(true); } }
function reload() { $unix = new unix(); $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $sock = new sockets(); $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Already Artica task running PID {$pid} since {$time}mn\n"; } return; } $DisableUfdbCat = $sock->DisableUfdbCat(); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} DisableUfdbCat= {$DisableUfdbCat}\n"; } if ($DisableUfdbCat == 1) { if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see DisableUfdbCat)\n"; } stop(); return; } $pid = PID_NUM(); $time = $unix->PROCCESS_TIME_MIN($pid); if ($unix->process_exists($pid)) { CheckDirectories(true); CheckDirectoriesTLSE(); buildconfig(); $unix->_syslog("{$GLOBALS["TITLENAME"]} Reloading PID {$pid} (running since {$time}Mn)\n", basename(__FILE__)); if ($GLOBALS["OUTPUT"]) { echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Reloading PID {$pid}\n"; } squid_admin_mysql(1, "Reloading Categories service (running since {$time}Mn)", null, __FILE__, __LINE__); unix_system_HUP($pid); } else { start(true); } }
$familysite = null; } if ($GLOBALS["OUTPUT"]) { echo "{$www} -> STAMP\n"; } $q->QUERY_SQL("UPDATE webtests SET checked=1 WHERE sitename='{$ligne["sitename"]}'"); if ($GLOBALS["OUTPUT"]) { echo "{$www} -> GET_CATEGORIES\n"; } $articacats = trim($q->GET_CATEGORIES($ligne["sitename"], true, false)); if ($GLOBALS["OUTPUT"]) { echo "{$ligne["sitename"]} -> \"{$articacats}\"\n"; } if ($articacats != null) { $q->categorize($ligne["sitename"], $articacats); $unix->_syslog("{$percent}) {$ligne["sitename"]} = {$articacats}", __FILE__); continue; } if ($familysite != null) { $articacats = trim($q->GET_CATEGORIES($familysite, true, false)); if ($GLOBALS["OUTPUT"]) { echo "{$ligne["sitename"]} {$familysite} -> {$articacats}\n"; } if ($articacats != null) { $q->categorize($ligne["sitename"], $articacats); $unix->_syslog("{$percent}) {$ligne["sitename"]} = {$articacats}", __FILE__); continue; } } $ipaddr = gethostbyname($ligne["sitename"]); if (!$IpClass->isIPAddress($ipaddr)) {