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()
<?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"];
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(); }
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); }