Ejemplo n.º 1
1
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);
}
Ejemplo n.º 2
1
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);
}
Ejemplo n.º 3
0
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));
}
Ejemplo n.º 4
0
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));
}
Ejemplo n.º 6
0
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>";
}
Ejemplo n.º 7
0
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);
    }
}
Ejemplo n.º 8
0
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"];
}
Ejemplo n.º 9
0
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);
}