예제 #1
0
function cron_compile()
{
    $users = new usersMenus();
    if (!$users->APP_UFDBGUARD_INSTALLED) {
        return;
    }
    $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid";
    $unix = new unix();
    $restart = false;
    if ($unix->process_exists(@file_get_contents($pidfile))) {
        return;
    }
    if (is_file("/etc/artica-postfix/ufdbguard.compile.alldbs")) {
        @unlink("/etc/artica-postfix/ufdbguard.compile.alldbs");
        events_ufdb_exec("CRON:: -> ufdbguard_recompile_dbs()");
        ufdbguard_recompile_dbs();
        return;
    }
    if (is_file("/etc/artica-postfix/ufdbguard.compile.missing.alldbs")) {
        events_ufdb_exec("CRON:: -> ufdbguard_recompile_missing_dbs()");
        @unlink("/etc/artica-postfix/ufdbguard.compile.missing.alldbs");
        ufdbguard_recompile_missing_dbs();
        return;
    }
    if (is_file("/etc/artica-postfix/ufdbguard.reconfigure.task")) {
        events_ufdb_exec("CRON:: -> build()");
        @unlink("/etc/artica-postfix/ufdbguard.reconfigure.task");
        build();
        return;
    }
    foreach (glob("/etc/artica-postfix/ufdbguard.recompile-queue/*") as $filename) {
        $restart = true;
        $db = @file_get_contents($filename);
        @unlink($filename);
        UFDBGUARD_COMPILE_SINGLE_DB("/var/lib/squidguard/{$db}/domains");
    }
    if ($restart) {
        shell_exec("/etc/init.d/ufdb reload");
    }
}
예제 #2
0
function UFDBGUARD_DOWNLOAD_ALL_CATEGORIES()
{
    include_once dirname(__FILE__) . "/ressources/class.ccurl.inc";
    $unix = new unix();
    $sock = new sockets();
    $tar = $unix->find_program("tar");
    $rm = $unix->find_program("rm");
    $RemoteStatisticsApplianceSettings = unserialize(base64_decode($sock->GET_INFO("RemoteStatisticsApplianceSettings")));
    if (!is_numeric($RemoteStatisticsApplianceSettings["SSL"])) {
        $RemoteStatisticsApplianceSettings["SSL"] = 1;
    }
    if (!is_numeric($RemoteStatisticsApplianceSettings["PORT"])) {
        $RemoteStatisticsApplianceSettings["PORT"] = 9000;
    }
    $GLOBALS["REMOTE_SSERVER"] = $RemoteStatisticsApplianceSettings["SERVER"];
    $GLOBALS["REMOTE_SPORT"] = $RemoteStatisticsApplianceSettings["PORT"];
    $GLOBALS["REMOTE_SSL"] = $RemoteStatisticsApplianceSettings["SSL"];
    if ($GLOBALS["REMOTE_SSL"] == 1) {
        $refix = "https";
    } else {
        $refix = "http";
    }
    $uri = "{$refix}://{$GLOBALS["REMOTE_SSERVER"]}:{$GLOBALS["REMOTE_SPORT"]}/ressources/databases/blacklist.tar.gz";
    $curl = new ccurl($uri, true);
    if (!$curl->GetFile("/tmp/blacklist.tar.gz")) {
        ufdbguard_admin_events("Failed to download blacklist.tar.gz aborting `{$curl->error}`", __FUNCTION__, __FILE__, __LINE__, "global-compile");
        return;
    }
    $t = time();
    shell_exec("{$rm} -rf /var/lib/squidguard/*");
    exec("{$tar} -xf /tmp/blacklist.tar.gz -C /var/lib/squidguard/ 2>&1", $results);
    $ttook = $unix->distanceOfTimeInWords($t, time(), true);
    ufdbguard_admin_events("Extracting blacklist.tar.gz took {$ttook} `" . @implode("\n", $results), __FUNCTION__, __FILE__, __LINE__, "global-compile");
    $array = $unix->dirdir("/var/lib/squidguard");
    $GLOBALS["NORESTART"] = true;
    while (list($index, $directoryPath) = each($array)) {
        if (!is_file("{$directoryPath}/domains.ufdb")) {
            UFDBGUARD_COMPILE_SINGLE_DB("{$directoryPath}/domains");
        }
    }
    build_ufdbguard_HUP();
}