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 hypercache() { $timefile = "/etc/artica-postfix/pids/exec.nightly.php.hypercache.time"; $unix = new unix(); if ($unix->file_time_min($timefile) < 1440) { updater_events("Current {$timefile}Mn !== 1440", __FUNCTION__, __LINE__); return; } @unlink($timefile); @file_put_contents($timefile, time()); $squiver = $unix->squid_version(); if (!preg_match("#^3\\.(5|6|7|8)\\.#", $squiver)) { return; } $uri = "https://svb.unveiltech.com/box/articatech/getlatest.php"; $curl = new ccurl($uri); $tmpfile = $unix->FILE_TEMP(); if (!$curl->GetFile($tmpfile)) { _artica_update_event(0, "Unable to download hypercache-plugin infos {$curl->error_num}, {$curl->error}", __FILE__, __LINE__); @unlink($tmpfile); return; } $array = json_decode(@file_get_contents($tmpfile)); @unlink($tmpfile); $local_version = hypercachestoreid_version(); $remote_version = $array->ver; $remote_uri = $array->url; $remote_date = $array->date; if ($GLOBALS["VERBOSE"]) { echo "{$local_version} / {$remote_version} - " . intval($remote_version) . " {$remote_date}\n"; } if (intval($remote_version) == 0) { return; } if ($remote_version == $local_version) { return; } $curl = new ccurl($remote_uri); $tmpfile = $unix->FILE_TEMP(); if (!$curl->GetFile($tmpfile)) { _artica_update_event(0, "Unable to download hypercache-plugin infos {$curl->error_num}, {$curl->error}", __FILE__, __LINE__); @unlink($tmpfile); return; } $tempdir = $unix->TEMP_DIR() . "/" . time(); @mkdir($tempdir, 0755, true); $tar = $unix->find_program("tar"); $rm = $unix->find_program("rm"); shell_exec("{$tar} xf {$tmpfile} -C {$tempdir}/"); @unlink($tmpfile); if (!is_file("{$tempdir}/64bits/hypercache-plugin")) { _artica_update_event(0, "Unable to extract hypercache-plugin version {$remote_version}", null, __FILE__, __LINE__); shell_exec("{$rm} -rf xf {$tempdir}"); } @copy("/lib/squid3/hypercache-plugin", "/lib/squid3/hypercache-plugin-{$local_version}"); @unlink("/lib/squid3/hypercache-plugin"); @copy("{$tempdir}/64bits/hypercache-plugin", "/lib/squid3/hypercache-plugin"); shell_exec("{$rm} -rf xf {$tempdir}"); @chmod("/lib/squid3/hypercache-plugin", 0755); @chown("/lib/squid3/hypercache-plugin", "squid"); squid_admin_mysql(1, "Reloading proxy service in order to update Hypercache software version from {$local_version} to {$remote_version}", null, __FILE__, __LINE__); _artica_update_event(2, "Success update Hypercache software version from {$local_version} to {$remote_version}", null, __FILE__, __LINE__); shell_exec("/etc/init.d/squid reload --force --script=" . basename(__FILE__) . "/" . __LINE__); }
function downgrade($file) { $unix = new unix(); $pidFile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid"; $unix = new unix(); $pid = $unix->get_pid_from_file($pidFile); if ($unix->process_exists($pid)) { Events("??%: A process already exists PID {$pid}"); return; } @file_put_contents($pidFile, getmypid()); $workdir = "/home/squid/downgrade"; $gzf = "/home/squid/downgrade/{$file}"; @mkdir("/home/squid/downgrade", 0755, true); Events("0%: Ask to update package name {$file}"); Events("1%: downloading {$file}"); if (!is_dir($workdir)) { Events("100%: Failed, {$workdir} Permission denied"); die; } if (is_file($gzf)) { @unlink($gzf); } $unix = new unix(); $URIBASE = $unix->MAIN_URI(); Events("5%: PLEASE WAIT,PLEASE WAIT,PLEASE WAIT.....downloading {$file}"); $curl = new ccurl("{$URIBASE}/download/old-squid/{$file}"); $curl->NoHTTP_POST = true; $curl->ProgressFunction = "downgrade_prg"; $curl->WriteProgress = true; if (!$curl->GetFile($gzf)) { Events("100%: Failed to download {$curl->error}"); die; } if (!is_file($gzf)) { Events("100%: Failed to download permission denied on disk"); die; } $size = @filesize($gzf); $size = $size / 1024; $size = $size / 1024; Events("10%: " . basename($gzf) . " " . round($size, 2) . " MB"); Events("10%: Testing {$gzf}"); if ($GLOBALS["VERBOSE"]) { echo "Open TAR...\n"; } $tar = new tar(); if (!$tar->openTar($gzf)) { Events("100%: Failed archive seems corrupted.."); die; } Events("10%: Testing {$gzf} success"); Events("15%: Start upgrade procedure..."); Events("16%: Stopping Squid-Cache..."); shell_exec("/etc/init.d/squid stop"); $squidbin = $unix->LOCATE_SQUID_BIN(); $rm = $unix->find_program("rm"); $tar = $unix->find_program("tar"); $php5 = $unix->LOCATE_PHP5_BIN(); $nohup = $unix->find_program("nohup"); Events("17%: Removing {$squidbin}..."); @unlink($squidbin); $f[] = "/lib/squid3"; $f[] = "/usr/share/squid-langpack"; $f[] = "/usr/share/squid3"; while (list($num, $dir) = each($f)) { Events("20%: Removing {$dir} directory..."); shell_exec("{$rm} -rf {$dir} >/dev/null 2>&1"); } Events("50%: Installing..."); shell_exec("{$tar} xf {$gzf} -C / >/dev/null"); $squidbin = $unix->LOCATE_SQUID_BIN(); if (!is_file($squidbin)) { Events("100%: Failed archive seems corrupted, please restart again or contact or support team..."); die; } $ver = $unix->squid_version(); Events("60%: New Squid-cache version {$ver}"); Events("65%: Reconfiguring parameters"); shell_exec("{$php5} /usr/share/artica-postfix/exec.squid.php --build --force >/dev/null"); Events("70%: Starting Squid-Cache"); shell_exec("/etc/init.d/squid start"); Events("80%: Refresh Artica with the new version..."); shell_exec("/etc/init.d/artica-process1 start"); Events("90%: Restarting watchdogs..."); system("/etc/init.d/cache-tail restart"); system("{$nohup} /etc/init.d/artica-status reload >/dev/null 2>&1 &"); shell_exec("{$nohup} /etc/init.d/monit restart >/dev/null 2>&1 &"); Events("100%: Done..."); Events("-------------------------------------------------------------"); Events("---------------- Squid Cache V.{$ver} ------------------"); Events("-------------------------------------------------------------"); }
$GLOBALS["EnableRemoteStatisticsAppliance"] = $EnableRemoteStatisticsAppliance; events("SQUID ENGINE: EnableRemoteStatisticsAppliance = {$EnableRemoteSyslogStatsAppliance}"); if (is_file("/etc/artica-postfix/auth-tail-debug")) { $GLOBALS["VERBOSE"] = true; } if ($GLOBALS["VERBOSE"]) { events("waiting event in VERBOSE MODE...."); } @mkdir("/var/log/artica-postfix/squid-users", 0755, true); @mkdir("/var/log/artica-postfix/squid-brut", 0777, true); @mkdir("/var/log/artica-postfix/squid-reverse", 0777, true); @mkdir("/var/log/artica-postfix/youtube", 0755, true); @mkdir('/var/log/artica-postfix/squid-userAgent'); @chmod("/var/log/artica-postfix/squid-brut", 0777); @chmod("/var/log/artica-postfix/squid-reverse", 0777); $squidver = $unix->squid_version(); if (preg_match("#^([0-9]+)\\.([0-9]+)\\.([0-9]+)#", $squidver, $re)) { $SQUID_MAJOR = $re[1]; $SQUID_MINOR = $re[2]; } if ($SQUID_MAJOR > 2) { if ($SQUID_MINOR > 1) { $GLOBALS["SQUID32"] = true; } } $unix = new unix(); $pid = $unix->get_pid_from_file("/var/run/artica-auth-tail.pid"); if ($unix->process_exists($pid, basename(__FILE__))) { echo "Already process exists PID {$pid}\n"; die; }
function current_version() { $unix = new unix(); echo "<articadatascgi>" . base64_encode($unix->squid_version()) . "</articadatascgi>"; }
function squid_updates_table() { $unix = new unix(); $sock = new sockets(); $squidbin = $unix->LOCATE_SQUID_BIN(); $users = new usersMenus(); if (!is_file($squidbin)) { return; } $tmpfile = $unix->TEMP_DIR() . "/squid.update.db"; $VERSION = @file_get_contents(dirname(__FILE__) . "/VERSION"); $UUID = $unix->GetUniqueID(); $SQUID_VERSION = $unix->squid_version(); $WizardSavedSettings = unserialize(base64_decode($sock->GET_INFO("WizardSavedSettings"))); $LICENSE = 0; if ($users->CORP_LICENSE == 1) { $LICENSE = 1; } $WizardSavedSettings["LICENSE"] = $LICENSE; $WizardSavedSettings["UUID"] = trim($UUID); $WizardSavedSettings["SQUID_VERSION"] = trim($SQUID_VERSION); $WizardSavedSettings["ARTICA_VERSION"] = trim($VERSION); $content = urlencode(base64_encode(serialize($WizardSavedSettings))); $TimeFile = $unix->file_time_min("/etc/artica-postfix/settings/Daemons/ArticaTechNetSquidRepo"); if ($TimeFile > 380) { $curl = new ccurl("http://articatech.net/squid.update.php?content={$content}"); if (!$curl->GetFile($tmpfile)) { @unlink($tmpfile); squid_admin_mysql(1, "Unable to retreive Proxy available versions", $curl->error, __FILE__, __LINE__); return; } $DATA = @file_get_contents($tmpfile); $ARRAY = unserialize(base64_decode($DATA)); if (count($ARRAY) > 1) { @unlink("/etc/artica-postfix/settings/Daemons/ArticaTechNetSquidRepo"); @copy("{$tmpfile}", "/etc/artica-postfix/settings/Daemons/ArticaTechNetSquidRepo"); } @unlink($tmpfile); } }