function status_all_mysql_engines() { $unix = new unix(); if (systemMaxOverloaded()) { return; } $cachefile = "/usr/share/artica-postfix/ressources/logs/web/MYSQLDB_STATUS"; $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $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; } @file_put_contents($pidfile, getmypid()); if (!$GLOBALS["VERBOSE"]) { $time = $unix->file_time_min($cachefile); if ($time < 60) { return; } } $sock = new sockets(); $datadir = $unix->MYSQL_DATA_DIR(); $ArticaDBPath = $sock->GET_INFO("ArticaDBPath"); if ($ArticaDBPath == null) { $ArticaDBPath = "/opt/articatech"; } $SquidStatsDatabasePath = $sock->GET_INFO("SquidStatsDatabasePath"); if ($SquidStatsDatabasePath == null) { $SquidStatsDatabasePath = "/opt/squidsql"; } $array["APP_MYSQL_ARTICA"]["size"] = $unix->DIRSIZE_BYTES($datadir); $array["APP_MYSQL_ARTICA"]["INFO"] = $unix->DIRPART_INFO($datadir); if (is_dir("{$ArticaDBPath}/mysql")) { $array["APP_ARTICADB"]["size"] = $unix->DIRSIZE_BYTES("{$ArticaDBPath}"); $array["APP_ARTICADB"]["INFO"] = $unix->DIRPART_INFO("{$ArticaDBPath}"); } if (is_dir("{$SquidStatsDatabasePath}/data")) { $array["APP_SQUID_DB"]["size"] = $unix->DIRSIZE_BYTES("{$SquidStatsDatabasePath}"); $array["APP_SQUID_DB"]["INFO"] = $unix->DIRPART_INFO("{$SquidStatsDatabasePath}"); } $MySQLSyslogWorkDir = $sock->GET_INFO("MySQLSyslogWorkDir"); if ($MySQLSyslogWorkDir == null) { $MySQLSyslogWorkDir = "/home/syslogsdb"; } if (is_dir($MySQLSyslogWorkDir)) { $array["MYSQL_SYSLOG"]["size"] = $unix->DIRSIZE_BYTES($MySQLSyslogWorkDir); $array["MYSQL_SYSLOG"]["INFO"] = $unix->DIRPART_INFO($MySQLSyslogWorkDir); } if ($GLOBALS["VERBOSE"]) { print_r($array); } @unlink($cachefile); @file_put_contents($cachefile, base64_encode(serialize($array))); @chmod($cachefile, 0777); }
function get_status() { $unix = new unix(); $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $TimeFile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; $pid = $unix->get_pid_from_file($pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { $time = $unix->PROCCESS_TIME_MIN($pid); if ($GLOBALS["OUTPUT"]) { echo "Restarting....: " . date("H:i:s") . " [INIT]: Already Artica task running PID {$pid} since {$time}mn\n"; } return; } @file_put_contents($pidfile, getmypid()); if ($GLOBALS["VERBOSE"]) { echo "TimeFile: {$TimeFile}\n"; } if (!$GLOBALS["VERBOSE"]) { $zTime = $unix->file_time_min($TimeFile); if ($zTime < 10) { return; } } @unlink($TimeFile); @file_put_contents($TimeFile, time()); $sock = new sockets(); $StreamCacheCache = $sock->GET_INFO("StreamCacheCache"); $StreamCacheMainCache = $sock->GET_INFO("StreamCacheMainCache"); if ($StreamCacheCache == null) { $StreamCacheCache = "/home/squid/videocache"; } if ($StreamCacheMainCache == null) { $StreamCacheMainCache = "/home/squid/streamcache"; } $dir = $StreamCacheCache; if (is_link($dir)) { $dir = readlink($dir); } $Partition = $unix->DIRPART_INFO($dir); $SIZE = $unix->DIRSIZE_BYTES($dir); $array["VIDEOCACHE"]["SIZE"] = $SIZE; $array["VIDEOCACHE"]["PART"] = $Partition; $dir = $StreamCacheMainCache; if (is_link($dir)) { $dir = readlink($dir); } $Partition = $unix->DIRPART_INFO($dir); $SIZE = $unix->DIRSIZE_BYTES($dir); $array["SQUID"]["SIZE"] = $SIZE; $array["SQUID"]["PART"] = $Partition; @file_put_contents("/usr/share/artica-postfix/ressources/logs/web/videocache.dirs.status.db", @serialize($array)); @chmod("/usr/share/artica-postfix/ressources/logs/web/videocache.dirs.status.db", 0755); }
function InfluxDbSize() { $dir = "/home/ArticaStatsDB"; $unix = new unix(); $size = $unix->DIRSIZE_KO($dir); $partition = $unix->DIRPART_INFO($dir); $TOT = $partition["TOT"]; $percent = $size / $TOT * 100; $percent = round($percent, 3); if ($GLOBALS["VERBOSE"]) { echo "{$dir}: {$size} Partition {$TOT}\n"; } $ARRAY["PERCENTAGE"] = $percent; $ARRAY["SIZEKB"] = $size; $ARRAY["PART"] = $TOT; if ($GLOBALS["VERBOSE"]) { print_r($ARRAY); } @unlink("/usr/share/artica-postfix/ressources/logs/web/InfluxDB.state"); @file_put_contents("/usr/share/artica-postfix/ressources/logs/web/InfluxDB.state", serialize($ARRAY)); }
function caches_size() { $unix = new unix(); $cache_file = "/usr/share/artica-postfix/ressources/logs/web/squid_caches_center.db"; if ($unix->file_time_min($cache_file) < 120) { return; } $q = new mysql(); if ($q->COUNT_ROWS("squid_caches_center", "artica_backup") > 0) { $sql = "SELECT * FROM squid_caches_center WHERE `enabled`=1 AND `remove`=0 ORDER BY zOrder"; $results = $q->QUERY_SQL($sql, "artica_backup"); while ($ligne = mysql_fetch_assoc($results)) { $cachename = $ligne["cachename"]; $cache_dir = $ligne["cache_dir"]; $cache_type = $ligne["cache_type"]; if ($cache_type == "Cachenull") { continue; } $cache_partition = $unix->DIRPART_OF($cache_dir); $ARRAY["CACHES_SIZE"][$cache_partition] = $unix->DIRECTORY_FREEM($cache_dir); $ARRAY[$cache_dir]["NAME"] = $cachename; $ARRAY[$cache_dir]["PARTITION"] = $cache_partition; $ARRAY[$cache_dir]["DIRPART_INFO"] = $unix->DIRPART_INFO($cache_dir); $ARRAY[$cache_dir]["SIZE"] = $ARRAY["CACHES_SIZE"][$cache_partition]; $ARRAY[$cache_dir]["DIRSIZE_MB"] = $unix->DIRSIZE_MB($cache_dir); } } $caches = $unix->SQUID_CACHE_FROM_SQUIDCONF_FULL(); while (list($cache_dir, $line) = each($caches)) { if (isset($ARRAY[$cache_dir])) { continue; } $cachename = basename($cache_dir); $cache_partition = $unix->DIRPART_OF($cache_dir); $ARRAY["CACHES_SIZE"][$cache_partition] = $unix->DIRECTORY_FREEM($cache_dir); $ARRAY[$cache_dir]["NAME"] = $cachename; $ARRAY[$cache_dir]["PARTITION"] = $cache_partition; $ARRAY[$cache_dir]["DIRPART_INFO"] = $unix->DIRPART_INFO($cache_dir); $ARRAY[$cache_dir]["SIZE"] = $GLOBALS["CACHES_SIZE"][$cache_partition]; $ARRAY[$cache_dir]["DIRSIZE_MB"] = $unix->DIRSIZE_MB($cache_dir); } print_r($ARRAY); @unlink($cache_file); @file_put_contents($cache_file, serialize($ARRAY)); @chmod($cache_file, 0777); }
function DirectorySize() { if (!isset($GLOBALS["WindowsUpdateCachingDir"])) { $GLOBALS["WindowsUpdateCachingDir"] = @file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateCachingDir"); if ($GLOBALS["WindowsUpdateCachingDir"] == null) { $GLOBALS["WindowsUpdateCachingDir"] = "/home/squid/WindowsUpdate"; } } $dir = $GLOBALS["WindowsUpdateCachingDir"]; $unix = new unix(); $time = $unix->file_time_min("/usr/share/artica-postfix/ressources/logs/web/WindowsUpdate.state"); if ($time < 120) { return; } $size = $unix->DIRSIZE_KO_nocache($dir); $partition = $unix->DIRPART_INFO($dir); print_r($partition); $TOT = $partition["TOT"]; $AIV = $partition["AIV"]; $percent = $size / $TOT * 100; $percent = round($percent, 3); events("INFO: Storage {$size} Partition {$TOT}", __LINE__); $ARRAY["PERCENTAGE"] = $percent; $ARRAY["SIZEKB"] = $size; $ARRAY["PART"] = $TOT; $ARRAY["AIV"] = $AIV; @unlink("/usr/share/artica-postfix/ressources/logs/web/WindowsUpdate.state"); @file_put_contents("/usr/share/artica-postfix/ressources/logs/web/WindowsUpdate.state", serialize($ARRAY)); }
function BackupLogsMaxStoragePercent_info() { $BackupMaxDaysDir = trim(@file_get_contents("/etc/artica-postfix/settings/Daemons/BackupMaxDaysDir")); if ($BackupMaxDaysDir == null) { $BackupMaxDaysDir = "/home/logrotate_backup"; } if (!is_dir("{$BackupMaxDaysDir}")) { @mkdir("{$BackupMaxDaysDir}", true); } $unix = new unix(); $DIRPART_INFO = $unix->DIRPART_INFO($BackupMaxDaysDir); $DIRSIZE = $unix->DIRSIZE_BYTES($BackupMaxDaysDir); $DIRPART_INFO["CURSIZE"] = $DIRSIZE; echo "<articadatascgi>" . base64_encode(serialize($DIRPART_INFO)) . "</articadatascgi>"; }
function xscan() { $ARRAY = array(); $sock = new sockets(); $unix = new unix(); $Pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $PidTime = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; // /etc/artica-postfix/pids/exec.clean.logs.php.squidClean.time if ($GLOBALS["VERBOSE"]) { echo "Pidfile: {$Pidfile}\n"; } if ($GLOBALS["VERBOSE"]) { echo "PidTime: {$PidTime}\n"; } if ($GLOBALS["VERBOSE"]) { echo "Memory Free: " . $unix->TOTAL_MEMORY_MB_FREE() . "/" . $unix->TOTAL_MEMORY_MB() . "\n"; echo "Memory Use: " . $unix->TOTAL_MEMORY_MB_USED() . " - " . $unix->TOTAL_MEM_POURCENT_USED() . "%\n"; } $pid = $unix->get_pid_from_file($Pidfile); if ($unix->process_exists($pid, basename(__FILE__))) { if ($GLOBALS["VERBOSE"]) { echo "Aborting Task already running pid {$pid} " . __FUNCTION__ . "()\n"; } return; } if (!$GLOBALS["FORCE"]) { $TimeExec = $unix->file_time_min($PidTime); if ($TimeExec < 20) { if ($GLOBALS["VERBOSE"]) { echo "Aborting Task {$TimeExec}mn, require 20mn " . __FUNCTION__ . "()\n"; } return; } } @unlink($PidTime); @file_put_contents($PidTime, time()); @file_put_contents($Pidfile, getmypid()); xscan2(); $q = new mysql_storelogs(); $LogRotatePath = $sock->GET_INFO("LogRotatePath"); $SystemLogsPath = $sock->GET_INFO("SystemLogsPath"); $BackupMaxDays = intval($sock->GET_INFO("BackupMaxDays")); $BackupMaxDaysDir = $sock->GET_INFO("BackupMaxDaysDir"); if ($BackupMaxDaysDir == null) { $BackupMaxDaysDir = "/home/logrotate_backup"; } if (!is_dir("{$BackupMaxDaysDir}")) { @mkdir("{$BackupMaxDaysDir}", true); } if ($BackupMaxDays == 0) { $BackupMaxDays = 30; } $BackupLogsMaxStoragePercent = intval($sock->GET_INFO("BackupLogsMaxStoragePercent")); if ($BackupLogsMaxStoragePercent == 0) { $BackupLogsMaxStoragePercent = 50; } $BackupMaxDaysMins = $BackupMaxDays * 1440; echo "Max TTL : {$BackupMaxDaysMins} Minutes\n"; $files = $unix->DirFiles($BackupMaxDaysDir); while (list($filepath, $none) = each($files)) { $filename = "{$BackupMaxDaysDir}/{$filepath}"; $filetime = $unix->file_time_min($filename); echo "{$filepath} = {$filetime}/{$BackupMaxDaysMins}\n"; if ($filetime > $BackupMaxDaysMins) { rotate_admin_events("Removed {$filepath} {$filetime}mn, exceed {$BackupMaxDays} days", __FUNCTION__, __FILE__, __LINE__); @unlink($filename); continue; } $filesecs = filemtime($filename); $ARRAY[$filesecs] = $filepath; } $DIRPART_INFO = $unix->DIRPART_INFO($BackupMaxDaysDir); $TOTAL_PART = $DIRPART_INFO["TOT"]; $percent = $BackupLogsMaxStoragePercent / 100; $TOTAL_AVAILABLE = $TOTAL_PART * $percent; $DIRSIZE = $unix->DIRSIZE_BYTES($BackupMaxDaysDir); $TOTAL_PART = $DIRPART_INFO["TOT"] / 1024; $q->events("Directory size = {$DIRSIZE}/{$TOTAL_AVAILABLE} " . FormatBytes($DIRSIZE / 1024, true) . "/" . FormatBytes($TOTAL_AVAILABLE / 1024, true), __FUNCTION__, __LINE__); if ($DIRSIZE > $TOTAL_AVAILABLE) { CleanPercent($BackupMaxDaysDir, $TOTAL_AVAILABLE); } }
function CheckPartitionPercentage() { if (!isset($GLOBALS["WindowsUpdateCachingDir"])) { $GLOBALS["WindowsUpdateCachingDir"] = @file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateCachingDir"); if ($GLOBALS["WindowsUpdateCachingDir"] == null) { $GLOBALS["WindowsUpdateCachingDir"] = "/home/squid/WindowsUpdate"; } } $dir = $GLOBALS["WindowsUpdateCachingDir"]; $unix = new unix(); $partition = $unix->DIRPART_INFO($dir); return $partition["POURC"]; }
function DirectorySize() { $unix = new unix(); $pid_path = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__; $timePath = "/etc/artica-postfix/croned.1/" . basename(__FILE__) . "." . __FUNCTION__ . ".time"; $pid = @file_get_contents($pid_path); if (!$GLOBALS["FORCE"]) { if ($unix->process_exists($pid)) { die; } $childpid = posix_getpid(); @file_put_contents($pid_path, $childpid); if (system_is_overloaded()) { if ($GLOBALS["VERBOSE"]) { echo "Overloaded system.\n"; } return; } } $filetim = $unix->file_time_min($timePath); if ($GLOBALS["VERBOSE"]) { echo "Time File: {$timePath} ({$filetim}Mn)\n"; } if (!$GLOBALS["FORCE"]) { if ($filetim < 240) { return; } } $partition_default = $unix->IMAPD_GET("partition-default"); if (is_link($partition_default)) { $partition_default = readlink($partition_default); } @file_put_contents($timePath, time()); if ($GLOBALS["VERBOSE"]) { echo "partition_default = {$partition_default}\n"; } artica_mysql_events("Starting calculate - {$partition_default} - disk size", null, __FILE__, "mailbox"); if (strlen($partition_default) < 3) { return; } if (!is_dir($partition_default)) { return; } $currentsize = $unix->DIRSIZE_BYTES($partition_default) / 1024 / 1024; $PartInfo = $unix->DIRPART_INFO($partition_default); $totalMB = $PartInfo["TOT"]; $totalMB = round($totalMB / 1048576); if ($GLOBALS["VERBOSE"]) { echo "partition_default = {$currentsize}MB/{$totalMB}MB\n"; } $sock = new sockets(); $currentsize = round($currentsize); $sock->SET_INFO("CyrusImapPartitionDefaultSize", $currentsize); $sock->SET_INFO("CyrusImapPartitionDefaultSizeTime", time()); $sock->SET_INFO("CyrusImapPartitionDiskSize", $totalMB); send_email_events("Mailboxes size on your server: {$currentsize} MB", "Mailboxes size on your server: {$currentsize} MB", "mailbox"); if ($partition_default == "/var/spool/cyrus/mail") { $sock->SET_INFO("CyrusImapPartitionDefaultDirSize", $currentsize); return; } $currentsize = $unix->DIRSIZE_BYTES("/var/spool/cyrus/mail") / 1024 / 1024; $sock->SET_INFO("CyrusImapPartitionDefaultDirSize", $currentsize); }