コード例 #1
0
include_once dirname(__FILE__) . '/framework/class.unix.inc';
include_once dirname(__FILE__) . "/framework/frame.class.inc";
if (preg_match("#--verbose#", implode(" ", $argv))) {
    $GLOBALS["debug"] = true;
    $GLOBALS["VERBOSE"] = true;
}
if (preg_match("#--reload#", implode(" ", $argv))) {
    $GLOBALS["RELOAD"] = true;
    $GLOBALS["RESTART"] = true;
}
if ($argv[1] == "--kinit") {
    kinit_config();
    exit;
}
if ($argv[1] == "--DirectorySize") {
    DirectorySize();
    exit;
}
if ($argv[1] == "--cyrusadm-ad") {
    ExtractCyrusAdmAD();
    exit;
}
if ($argv[1] == "--imaps-failed") {
    cyrus_ssl_error();
    exit;
}
if ($argv[1] == "--DB_CONFIG") {
    DB_CONFIG();
    exit;
}
function ExtractCyrusAdmAD()
コード例 #2
0
ファイル: exec.cyrus.php プロジェクト: rsd/artica-1.5
<?php
include_once(dirname(__FILE__).'/ressources/class.templates.inc');
include_once(dirname(__FILE__).'/ressources/class.ini.inc');
if(posix_getuid()<>0){die("Cannot be used in web server mode\n\n");}
include_once(dirname(__FILE__).'/framework/class.unix.inc');
include_once(dirname(__FILE__)."/framework/frame.class.inc");

if(preg_match("#--verbose#",implode(" ",$argv))){$GLOBALS["debug"]=true;$GLOBALS["VERBOSE"]=true;}
if(preg_match("#--reload#",implode(" ",$argv))){$GLOBALS["RELOAD"]=true;$GLOBALS["RESTART"]=true;}
if($argv[1]=="--kinit"){kinit_config();exit;}
if($argv[1]=="--DirectorySize"){DirectorySize();exit;}
if($argv[1]=="--cyrusadm-ad"){ExtractCyrusAdmAD();exit;}
if($argv[1]=="--imaps-failed"){cyrus_ssl_error();exit;}
if($argv[1]=="--DB_CONFIG"){DB_CONFIG();exit;}




function ExtractCyrusAdmAD(){
	$sock=new sockets();
	$CyrusToAD=$sock->GET_INFO("CyrusToAD");
	$EnableSambaActiveDirectory=$sock->GET_INFO("EnableSambaActiveDirectory");
	if(!is_numeric($EnableSambaActiveDirectory)){$EnableSambaActiveDirectory=0;}
	if($CyrusToAD==null){$CyrusToAD=0;}
	@unlink("/etc/artica-postfix/CyrusAdmPlus");
	if($CyrusToAD==0){return;}
	$array=unserialize(base64_decode($sock->GET_INFO("CyrusToADConfig")));
	if($EnableSambaActiveDirectory==1){
		$newconf=unserialize(base64_decode($sock->GET_INFO("SambaAdInfos")));
		$array["domain"]=$newconf["ADDOMAIN"];
		$array["servername"]=$newconf["ADSERVER"];
コード例 #3
0
function xstart()
{
    $T1 = time();
    $curl = new ccurl();
    $unix = new unix();
    $GLOBALS["MYPID"] = getmypid();
    $pidfile = "/etc/artica-postfix/pids/windowupdate.partial.processor.pid";
    $pid = $unix->get_pid_from_file($pidfile);
    if ($unix->process_exists($pid, basename(__FILE__))) {
        die;
    }
    $pids = $unix->PIDOF_PATTERN_ALL(basename(__FILE__), true);
    if (count($pids) > 0) {
        while (list($i, $line) = each($pids)) {
            events("Already executed PID:{$i}... aborting ", __LINE__);
        }
        die;
    }
    $TEMPDIR = $unix->TEMP_DIR() . "/WindowsUpdates";
    $rm = $unix->find_program("rm");
    @file_put_contents($pidfile, $GLOBALS["MYPID"]);
    if (is_dir($TEMPDIR)) {
        shell_exec("{$rm} -rf {$TEMPDIR}");
        @mkdir($TEMPDIR);
    }
    $GLOBALS["WindowsUpdateMaxToPartialQueue"] = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateMaxToPartialQueue"));
    $GLOBALS["WindowsUpdateCachingDir"] = @file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateCachingDir");
    if ($GLOBALS["WindowsUpdateCachingDir"] == null) {
        $GLOBALS["WindowsUpdateCachingDir"] = "/home/squid/WindowsUpdate";
    }
    $WindowsUpdateDownTimeout = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateDownTimeout"));
    if ($WindowsUpdateDownTimeout == 0) {
        $WindowsUpdateDownTimeout = 600;
    }
    $WindowsUpdateBandwidthMaxFailed = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateBandwidthMaxFailed"));
    if ($WindowsUpdateBandwidthMaxFailed == 0) {
        $WindowsUpdateBandwidthMaxFailed = 50;
    }
    $WindowsUpdateMaxPartition = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateMaxPartition"));
    if ($WindowsUpdateMaxPartition == 0) {
        $WindowsUpdateMaxPartition = 80;
    }
    $fileSource = "{$GLOBALS["WindowsUpdateCachingDir"]}/Partials/Queue.log";
    $LinesCount = $unix->COUNT_LINES_OF_FILE($fileSource);
    if (!is_file($fileSource)) {
        return;
    }
    $md5start = md5_file($fileSource);
    $CheckPartitionPercentage = CheckPartitionPercentage();
    if ($CheckPartitionPercentage > $WindowsUpdateMaxPartition) {
        events("Failed: Storage Partition exceed {$WindowsUpdateMaxPartition}% Stopping retreivals", __LINE__);
        @touch("/etc/squid3/WindowsUpdatePartitionExceed");
        DirectorySize();
        return;
    }
    $WindowsUpdateInProduction = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateInProduction"));
    if ($WindowsUpdateInProduction == 0) {
        if ($unix->IsProductionTime()) {
            $time = $unix->file_time_min("/etc/artica-postfix/pids/WindowsUpdateInProduction");
            if ($time > 15) {
                @unlink("/etc/artica-postfix/pids/WindowsUpdateInProduction");
                @touch("/etc/artica-postfix/pids/WindowsUpdateInProduction");
                events("INFO: Aborting, No download during production time", __LINE__);
                DirectorySize();
            }
            return;
        }
    }
    if (is_file("/etc/squid3/WindowsUpdatePartitionExceed")) {
        @unlink("/etc/squid3/WindowsUpdatePartitionExceed");
    }
    $handle = @fopen($fileSource, "r");
    if (!$handle) {
        events("Fopen failed on {$fileSource}", __LINE__);
        return false;
    }
    $NEWBUFFER = array();
    $URLALREADY = array();
    $NewBuffer = array();
    $FinalSize = 0;
    $FF = 0;
    $c = 0;
    while (!feof($handle)) {
        $buffer = trim(fgets($handle));
        $c++;
        if ($buffer == null) {
            continue;
        }
        $TR = explode("|||", $buffer);
        $LocalFile = $TR[0];
        $URI = $TR[1];
        $ExpectedSize = $TR[2];
        if (!isset($TR[3])) {
            $TR[3] = 1;
        }
        if (isset($URLALREADY[$URI])) {
            continue;
        }
        $URLALREADY[$URI] = true;
        $BaseNameOfFile = basename($URI);
        events("INFO: {$BaseNameOfFile} " . xFormatBytes($ExpectedSize / 1024) . " Retry:{$TR[3]} [{$c}/{$LinesCount}]", __LINE__);
        if (DownloadByRange($URI, $ExpectedSize, $LocalFile)) {
            update_mysql($LocalFile, $URI);
            continue;
        }
        $TR[3] = $TR[3] + 1;
        if ($TR[3] > $WindowsUpdateBandwidthMaxFailed) {
            events("Error: Max retry ({$WindowsUpdateBandwidthMaxFailed}) for filename: {$BaseNameOfFile}", __LINE__);
            SaveToBlacklists($BaseNameOfFile);
            RemoveTempOf($URI, $LocalFile);
            continue;
        }
        $NewBuffer[] = @implode("|||", $TR);
    }
    if (count($NewBuffer) == 0) {
        @unlink($fileSource);
        return;
    }
    events("INFO: add " . count($NewBuffer) . " orders to queue", __LINE__);
    @file_put_contents($fileSource, @implode("\n", $NewBuffer));
    DirectorySize();
}
コード例 #4
0
function build()
{
    if (!isset($GLOBALS["WindowsUpdateCachingDir"])) {
        $GLOBALS["WindowsUpdateCachingDir"] = @file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateCachingDir");
        if ($GLOBALS["WindowsUpdateCachingDir"] == null) {
            $GLOBALS["WindowsUpdateCachingDir"] = "/home/squid/WindowsUpdate";
        }
    }
    $WindowsUpdateCaching = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/WindowsUpdateCaching"));
    if ($WindowsUpdateCaching == 1) {
        build_progress_build("{building} {enabled}", 10);
        build_ufdb();
        build_apache_ON();
    } else {
        build_progress_build("{building} {disabled}", 10);
        build_apache_OFF();
    }
    DirectorySize(true);
    build_progress_build("{building} {success}", 100);
}