Example #1
0
function start($aspid = false, $verifdbs = false)
{
    $unix = new unix();
    $sock = new sockets();
    $Masterbin = "/opt/ufdbcat/bin/ufdbcatdd";
    if (!is_file($Masterbin)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, ufdbguardd not installed\n";
        }
        return;
    }
    if (!$aspid) {
        $pidfile = "/etc/artica-postfix/pids/" . basename(__FILE__) . "." . __FUNCTION__ . ".pid";
        $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;
        }
        @file_put_contents($pidfile, getmypid());
    }
    $pid = PID_NUM();
    if ($unix->process_exists($pid)) {
        $timepid = $unix->PROCCESS_TIME_MIN($pid);
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Service already started {$pid} since {$timepid}Mn...\n";
        }
        if ($GLOBALS["MONIT"]) {
            @file_put_contents($GLOBALS["PID_PATH"], $pid);
        }
        return;
    }
    $DisableUfdbCat = $sock->DisableUfdbCat();
    if ($DisableUfdbCat == 1) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see DisableUfdbCat)\n";
        }
        stop();
        return;
    }
    $php5 = $unix->LOCATE_PHP5_BIN();
    $sysctl = $unix->find_program("sysctl");
    $echo = $unix->find_program("echo");
    $nohup = $unix->find_program("nohup");
    $kill = $unix->find_program("kill");
    $cp = $unix->find_program("cp");
    @mkdir("/etc/ufdbcat", 0755, true);
    @mkdir("/var/log/ufdbcat", 0755, true);
    @mkdir(dirname($GLOBALS["PID_PATH"]), 0755, true);
    @chmod($GLOBALS["PID_PATH"], 0755);
    @chmod($Masterbin, 0755);
    build_progress("{starting_service}", 10);
    CheckDirectories($verifdbs);
    if (is_file("/var/log/ufdbcat/ufdbguardd.log")) {
        @unlink("/var/log/ufdbcat/ufdbguardd.log");
    }
    if (is_file("/var/run/ufdbcat-03977")) {
        @unlink("/var/run/ufdbcat-03977");
    }
    if ($unix->is_socket("/var/run/ufdbcat-03977")) {
        @unlink("/var/run/ufdbcat-03977");
    }
    $AsCategoriesAppliance = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/AsCategoriesAppliance"));
    $Threads = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/UfdbCatThreads"));
    if ($Threads == 0) {
        $Threads = 4;
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} pid path: {$GLOBALS["PID_PATH"]}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Threads:{$Threads}\n";
    }
    if (is_file("/opt/ufdbcat/bin/ufdbhttpd")) {
        @unlink("/opt/ufdbcat/bin/ufdbhttpd");
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} ** Categories Appliance Mode ***\n";
    }
    $isRemoteSockets = isRemoteSockets();
    if ($isRemoteSockets) {
        if (!is_file("{$Masterbin}.sock")) {
            @copy($Masterbin, "{$Masterbin}.sock");
        }
        $ufdbguardd = $unix->find_program("ufdbguardd");
        if (!is_file($ufdbguardd)) {
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Fatal ufdbguardd no such binary!!!\n";
            }
            return false;
        }
        @unlink($Masterbin);
        @copy($ufdbguardd, $Masterbin);
    }
    if (!$isRemoteSockets) {
        if (is_file("{$Masterbin}.sock")) {
            @copy("{$Masterbin}.sock", $Masterbin);
            @unlink("{$Masterbin}.sock");
        }
    }
    @unlink($GLOBALS["PID_PATH"]);
    @chmod($Masterbin, 0755);
    $cmd = "{$Masterbin} -c /etc/ufdbcat/ufdbGuard.conf -U root -w {$Threads} -N >/dev/null 2>&1 &";
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service\n";
    }
    build_progress("{starting_service}", 96);
    squid_admin_mysql(2, "Starting Categories Service", "nothing", __FILE__, __LINE__);
    buildconfig();
    shell_exec($cmd);
    for ($i = 1; $i < 5; $i++) {
        build_progress("{starting_service} {$i}/5", 98);
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} waiting {$i}/5\n";
        }
        sleep(1);
        $pid = PID_NUM();
        if ($unix->process_exists($pid)) {
            break;
        }
    }
    $pid = PID_NUM();
    if ($unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Success PID {$pid}\n";
        }
        if (!$isRemoteSockets) {
            for ($i = 1; $i < 10; $i++) {
                if ($GLOBALS["OUTPUT"]) {
                    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Checking socket {$i}/5...\n";
                }
                sleep(1);
                if ($unix->is_socket("/var/run/ufdbcat-03977")) {
                    if ($GLOBALS["OUTPUT"]) {
                        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Checking socket success...\n";
                    }
                    @chmod("/var/run/ufdbcat-03977", 0777);
                    break;
                }
            }
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Success\n";
        }
        build_progress("{success}", 100);
        return true;
    }
    squid_admin_mysql(0, "Failed to start Categories Service", "nothing", __FILE__, __LINE__);
    build_progress("{failed}", 110);
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Failed\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} {$cmd}\n";
    }
}