Exemplo n.º 1
0
function start($aspid = false)
{
    $unix = new unix();
    $sock = new sockets();
    $users = new usersMenus();
    $Masterbin = "/usr/local/ArticaStats/bin/postgres";
    if (!is_file($Masterbin)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, arpd 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->MEM_TOTAL_INSTALLEE() < 624288) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} not enough memory\n";
        }
        if ($unix->process_exists($pid)) {
            stop();
        }
        build_progress_restart("{starting} {failed} no memory", 110);
        return;
    }
    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";
        }
        build_progress_restart("{starting} {success}", 30);
        return true;
    }
    $php5 = $unix->LOCATE_PHP5_BIN();
    $sysctl = $unix->find_program("sysctl");
    $echo = $unix->find_program("echo");
    $nohup = $unix->find_program("nohup");
    $su = $unix->find_program("su");
    $rm = $unix->find_program("rm");
    $SquidPerformance = intval($sock->GET_INFO("SquidPerformance"));
    $EnableInfluxDB = intval($sock->GET_INFO("EnableInfluxDB"));
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableInfluxDB: {$EnableInfluxDB}\n";
    }
    $InfluxUseRemote = intval($sock->GET_INFO("InfluxUseRemote"));
    if ($users->POSTFIX_INSTALLED) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Postfix installed: True\n";
        }
    }
    if ($InfluxUseRemote == 1) {
        $EnableInfluxDB = 0;
    }
    $FreeZePostGres = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/FreeZePostGres"));
    if ($FreeZePostGres == 1) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Freeze !!! Aborting...\n";
        }
        return;
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Remote statistics.: {$InfluxUseRemote}\n";
    }
    if (!$users->POSTFIX_INSTALLED) {
        $EnableIntelCeleron = intval(@file_get_contents("/etc/artica-postfix/settings/Daemons/EnableIntelCeleron"));
        if ($EnableIntelCeleron == 1) {
            $EnableInfluxDB = 0;
        }
    }
    if (is_file("/etc/artica-postfix/STATS_APPLIANCE")) {
        $EnableInfluxDB = 1;
        $SquidPerformance = 0;
        $EnableIntelCeleron = 0;
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Statistics DB.....: {$EnableInfluxDB}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Intel Celeron mode: {$EnableIntelCeleron}\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Use Performance.......: {$SquidPerformance}\n";
    }
    if ($EnableInfluxDB == 0) {
        build_progress_restart("{starting} {failed} {disabled}", 110);
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see EnableInflux)\n";
        }
        return;
    }
    if (!function_exists("pg_connect")) {
        build_progress_restart("{starting} installing php5-pgsql", 35);
        $unix->DEBIAN_INSTALL_PACKAGE("php5-pgsql");
        system("/usr/share/artica-postfix/exec.php.ini.php");
        if (!function_exists("pg_connect")) {
            build_progress_restart("{starting} installing php5-pgsql {failed}", 110);
            if ($GLOBALS["OUTPUT"]) {
                echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} pg_connect no such function\n";
            }
            return;
        }
        system("/etc/init.d/artica-webconsole restart");
    }
    build_progress_restart("{starting}", 40);
    if (!$unix->UnixUserExists("ArticaStats")) {
        $unix->CreateUnixUser("ArticaStats", "ArticaStats");
    }
    @mkdir("/var/run/ArticaStats", 0755, true);
    @mkdir("/home/ArticaStatsDB", 0700, true);
    @mkdir("/var/log/ArticaStatsDB", 0755, true);
    @chown("/home/ArticaStatsDB", "ArticaStats");
    @chgrp("/home/ArticaStatsDB", "ArticaStats");
    @chown("/var/run/ArticaStats", "ArticaStats");
    @chgrp("/var/run/ArticaStats", "ArticaStats");
    @chown("/var/log/ArticaStatsDB", "ArticaStats");
    @chgrp("/var/log/ArticaStatsDB", "ArticaStats");
    if (is_file("/var/log/ArticaStatsDB/ArticaStatsDB.log")) {
        @unlink("/var/log/ArticaStatsDB/ArticaStatsDB.log");
        @touch("/var/log/ArticaStatsDB/ArticaStatsDB.log");
    }
    @chown("/var/log/ArticaStatsDB/ArticaStatsDB.log", "ArticaStats");
    @chgrp("/var/log/ArticaStatsDB/ArticaStatsDB.log", "ArticaStats");
    if (is_file("/var/run/ArticaStats/.s.PGSQL.8086")) {
        @unlink("/var/run/ArticaStats/.s.PGSQL.8086");
    }
    $php = $unix->LOCATE_PHP5_BIN();
    if (!is_file("/etc/artica-postfix/locales.gen")) {
        squid_admin_mysql(1, "Generating languages for the PostGreSQL compatibility", null, __FILE__, __LINE__);
        build_progress_restart("{generating_langs}", 42);
        system("{$php} /usr/share/artica-postfix/exec.locale.gen.php");
    }
    if (!is_dir("/home/ArticaStatsDB/base/1")) {
        squid_admin_mysql(0, "Creating a new PostgreSQL database in ArticaStatsDB", null, __FILE__, __LINE__);
        build_progress_restart("{starting}", 45);
        $rm = $unix->find_program("rm");
        shell_exec("{$rm} -rf /home/ArticaStatsDB/*");
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} initialize database...\n";
        }
        system("{$su} -c \"/usr/local/ArticaStats/bin/initdb --username=ArticaStats /home/ArticaStatsDB --no-locale -E UTF8\" ArticaStats");
    }
    if (!is_dir("/home/ArticaStatsDB/base/1")) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} initialize database failed...\n";
        }
        $rm = $unix->find_program("rm");
        shell_exec("{$rm} -rf /home/ArticaStatsDB/*");
        return;
    }
    build_progress_restart("{starting}", 50);
    xbuild();
    fuser_port();
    build_progress_restart("{starting} {permissions}", 55);
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Apply permissions on /home/ArticaStatsDB\n";
    }
    $chown = $unix->find_program("chown");
    $chmod = $unix->find_program("chmod");
    shell_exec("{$chown} -R ArticaStats:ArticaStats /home/ArticaStatsDB");
    shell_exec("{$chmod} 0700 /home/ArticaStatsDB");
    if (is_file("/home/ArticaStatsDB/postmaster.pid")) {
        @unlink("/home/ArticaStatsDB/postmaster.pid");
    }
    $f[] = "su -l ArticaStats -c '";
    $f[] = "/usr/local/ArticaStats/bin/pg_ctl -o \"-k /tmp,/var/run/ArticaStats\"  -D /home/ArticaStatsDB -l /var/log/ArticaStatsDB/ArticaStatsDB.log start'";
    $cmd = @implode(" ", $f) . " >/dev/null 2>&1 &";
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service\n";
    }
    shell_exec($cmd);
    for ($i = 1; $i < 5; $i++) {
        build_progress_restart("{starting} {wait} {$i}/5", 70);
        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)) {
        build_progress_restart("{starting} {success}", 75);
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Success PID {$pid}\n";
        }
        $pg = new postgres_sql();
        $pg->CREATE_TABLES();
        return true;
    } else {
        build_progress_restart("{starting} {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";
        }
    }
}
Exemplo n.º 2
0
function apache_stop()
{
    $unix = new unix();
    $pid = apache_pid();
    $sock = new sockets();
    $EnableArticaHotSpot = $sock->GET_INFO("EnableArticaHotSpot");
    $SquidHotSpotPort = $sock->GET_INFO("SquidHotSpotPort");
    $ArticaHotSpotPort = $sock->GET_INFO("ArticaHotSpotPort");
    $ArticaSSLHotSpotPort = $sock->GET_INFO("ArticaSSLHotSpotPort");
    $ArticaSplashHotSpotPort = $sock->GET_INFO("ArticaSplashHotSpotPort");
    $ArticaSplashHotSpotPortSSL = $sock->GET_INFO("ArticaSplashHotSpotPortSSL");
    if (!is_numeric($ArticaHotSpotPort)) {
        $ArticaHotSpotPort = 0;
    }
    if (!is_numeric($ArticaSplashHotSpotPort)) {
        $ArticaSplashHotSpotPort = 16080;
    }
    if (!is_numeric($ArticaSplashHotSpotPortSSL)) {
        $ArticaSplashHotSpotPortSSL = 16443;
    }
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} already stopped...\n";
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} testing {$ArticaSplashHotSpotPortSSL} port...\n";
        }
        fuser_port($ArticaSplashHotSpotPort);
        fuser_port($ArticaSplashHotSpotPortSSL);
        return;
    }
    $nohup = $unix->find_program("nohup");
    $php5 = $unix->LOCATE_PHP5_BIN();
    $kill = $unix->find_program("kill");
    $apache2ctl = $unix->LOCATE_APACHE_CTL();
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Shutdown pid {$pid}...\n";
    }
    shell_exec("{$apache2ctl} -f /etc/artica-postfix/hotspot-httpd.conf -k stop");
    for ($i = 0; $i < 5; $i++) {
        $pid = apache_pid();
        if (!$unix->process_exists($pid)) {
            break;
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} waiting pid:{$pid} {$i}/5...\n";
        }
        sleep(1);
    }
    $pid = apache_pid();
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} success...\n";
        }
        return;
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} shutdown - force - pid {$pid}...\n";
    }
    unix_system_kill_force($pid);
    for ($i = 0; $i < 5; $i++) {
        $pid = apache_pid();
        if (!$unix->process_exists($pid)) {
            break;
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} waiting pid:{$pid} {$i}/5...\n";
        }
        sleep(1);
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} testing {$ArticaSplashHotSpotPortSSL} port...\n";
    }
    fuser_port($ArticaSplashHotSpotPortSSL);
    fuser_port($ArticaSplashHotSpotPort);
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} success...\n";
        }
        return;
    } else {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} failed...\n";
        }
    }
}
Exemplo n.º 3
0
function apache_stop()
{
    $unix = new unix();
    $pid = apache_pid();
    $sock = new sockets();
    $SquidEnforceRules = intval($sock->GET_INFO("SquidEnforceRules"));
    $HyperCacheHTTPListenPort = $sock->GET_INFO("HyperCacheHTTPListenPort");
    $HyperCacheHTTPListenPortSSL = $sock->GET_INFO("HyperCacheHTTPListenPortSSL");
    if (!is_numeric($HyperCacheHTTPListenPort)) {
        $HyperCacheHTTPListenPort = 8700;
    }
    if (!is_numeric($HyperCacheHTTPListenPortSSL)) {
        $HyperCacheHTTPListenPortSSL = 8900;
    }
    if ($HyperCacheHTTPListenPort == 0) {
        $HyperCacheHTTPListenPort = 8700;
    }
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} already stopped...\n";
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} testing {$HyperCacheHTTPListenPort}/{$HyperCacheHTTPListenPortSSL} port...\n";
        }
        fuser_port($HyperCacheHTTPListenPort);
        fuser_port($HyperCacheHTTPListenPortSSL);
        return;
    }
    $nohup = $unix->find_program("nohup");
    $php5 = $unix->LOCATE_PHP5_BIN();
    $kill = $unix->find_program("kill");
    $apache2ctl = $unix->LOCATE_APACHE_CTL();
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Shutdown pid {$pid}...\n";
    }
    shell_exec("{$apache2ctl} -f /etc/artica-postfix/HyperCacheHTTPD.conf -k stop");
    for ($i = 0; $i < 5; $i++) {
        $pid = apache_pid();
        if (!$unix->process_exists($pid)) {
            break;
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} waiting pid:{$pid} {$i}/5...\n";
        }
        sleep(1);
    }
    $pid = apache_pid();
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} success...\n";
        }
        return;
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} shutdown - force - pid {$pid}...\n";
    }
    unix_system_kill_force($pid);
    for ($i = 0; $i < 5; $i++) {
        $pid = apache_pid();
        if (!$unix->process_exists($pid)) {
            break;
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} waiting pid:{$pid} {$i}/5...\n";
        }
        sleep(1);
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} testing {$HyperCacheHTTPListenPort}/{$HyperCacheHTTPListenPortSSL} port...\n";
    }
    fuser_port($HyperCacheHTTPListenPort);
    fuser_port($HyperCacheHTTPListenPortSSL);
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} success...\n";
        }
        return;
    } else {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} failed...\n";
        }
    }
}
Exemplo n.º 4
0
function apache_stop()
{
    $GLOBALS["SERVICE_NAME"] = "Artica Apache service";
    $unix = new unix();
    $pid = apache_pid();
    $sock = new sockets();
    $ArticaHttpsPort = $sock->GET_INFO("ArticaHttpsPort");
    if (!is_numeric($ArticaHttpsPort)) {
        $ArticaHttpsPort = "9000";
    }
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} already stopped...\n";
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} testing {$ArticaHttpsPort} port...\n";
        }
        fuser_port($ArticaHttpsPort);
        apache_kill_ipcs();
        return;
    }
    $nohup = $unix->find_program("nohup");
    $php5 = $unix->LOCATE_PHP5_BIN();
    $lighttpd_bin = $unix->find_program("lighttpd");
    $kill = $unix->find_program("kill");
    $apache2ctl = $unix->LOCATE_APACHE_CTL();
    ToSyslog("ARTICA_STOP:: {$GLOBALS["SERVICE_NAME"]} Shutdown pid {$pid}");
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} Shutdown pid {$pid}...\n";
    }
    shell_exec("{$apache2ctl} -f /etc/artica-postfix/httpd.conf -k stop");
    for ($i = 0; $i < 5; $i++) {
        $pid = apache_pid();
        if (!$unix->process_exists($pid)) {
            break;
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} waiting pid:{$pid} {$i}/5...\n";
        }
        sleep(1);
    }
    $pid = apache_pid();
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} success...\n";
        }
        return;
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} shutdown - force - pid {$pid}...\n";
    }
    unix_system_kill_force($pid);
    for ($i = 0; $i < 5; $i++) {
        $pid = apache_pid();
        if (!$unix->process_exists($pid)) {
            break;
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} waiting pid:{$pid} {$i}/5...\n";
        }
        sleep(1);
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} testing {$ArticaHttpsPort} port...\n";
    }
    fuser_port($ArticaHttpsPort);
    apache_kill_ipcs();
    if (!$unix->process_exists($pid)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} success...\n";
        }
        return;
    } else {
        if ($GLOBALS["OUTPUT"]) {
            echo "Stopping......: " . date("H:i:s") . " [INIT]: {$GLOBALS["SERVICE_NAME"]} failed...\n";
        }
    }
}
Exemplo n.º 5
0
function start($aspid = false)
{
    $unix = new unix();
    $sock = new sockets();
    $Masterbin = $unix->find_program("dnsmasq");
    $ipClass = new IP();
    if (!is_file($Masterbin)) {
        $unix->DEBIAN_INSTALL_PACKAGE("dnmasq");
    }
    if (!is_file($Masterbin)) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]}, dnsmasq 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";
        }
        return;
    }
    $sock = new sockets();
    $EnableLocalDNSMASQ = $sock->GET_INFO('EnableLocalDNSMASQ');
    $EnableDNSMASQ = intval($sock->GET_INFO("EnableDNSMASQ"));
    $EnableLocalDNSMASQ = $sock->GET_INFO("EnableLocalDNSMASQ");
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableDNSMASQ={$EnableDNSMASQ}\n";
    }
    if ($EnableLocalDNSMASQ == 1) {
        $EnableDNSMASQ = 1;
    }
    $EnableDNSMASQ = $sock->dnsmasq_enabled();
    if ($EnableDNSMASQ == 0) {
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableLocalDNSMASQ ({$EnableLocalDNSMASQ})\n";
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} EnableDNSMASQ ({$EnableDNSMASQ})\n";
        }
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service disabled (see EnableDNSMASQ)\n";
        }
        return;
    }
    $php5 = $unix->LOCATE_PHP5_BIN();
    $echo = $unix->find_program("echo");
    $nohup = $unix->find_program("nohup");
    if (!is_file("/etc/dnsmasq.cmdlines.array")) {
        build(true);
    }
    $G = unserialize(@file_get_contents("/etc/dnsmasq.cmdlines.array"));
    $cmdline = @implode(" ", $G);
    echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} " . count($G) . " token(s)\n";
    while (list($num, $val) = each($G)) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} token: {$val}\n";
    }
    if (!is_file("/etc/dnsmasq.conf.empty")) {
        @file_put_contents("/etc/dnsmasq.conf.empty", "\n");
    }
    fuser_port();
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} service {" . __LINE__ . "}\n";
    }
    shell_exec($cmdline);
    for ($i = 1; $i < 5; $i++) {
        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)) {
        shell_exec("{$nohup} /etc/init.d/monit reconfigure >/dev/null 2>&1 &");
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: {$GLOBALS["TITLENAME"]} Success PID {$pid}\n";
        }
    } else {
        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"]} {$cmdline}\n";
        }
    }
}