Example #1
0
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);
    }
}
Example #2
0
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("-------------------------------------------------------------");
}
Example #4
0
$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;
}
Example #5
0
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);
    }
}