Пример #1
0
function import_bulk()
{
    $q = new mysql_squid_builder();
    $nginxSources = new nginx_sources();
    $nginx = new nginx();
    $filename = "/usr/share/artica-postfix/ressources/logs/web/nginx.importbulk";
    if (!is_file($filename)) {
        echo "{$filename} no such file\n";
        return;
    }
    $CONF = unserialize(@file_get_contents($filename));
    if ($CONF["RemoveOldImports"] == 1) {
        // on supprime les anciennes entrées:
        $results = $q->QUERY_SQL("SELECT ID FROM reverse_sources WHERE `Imported`=1");
        while ($ligne = mysql_fetch_assoc($results)) {
            $nginxSources->DeleteSource($ligne["ID"]);
        }
        $results = $q->QUERY_SQL("SELECT servername FROM reverse_www WHERE `Imported`=1");
        while ($ligne = mysql_fetch_assoc($results)) {
            $nginx->Delete_website($ligne["servername"], true);
        }
    }
    $randomArray[1] = "a";
    $randomArray[2] = "b";
    $randomArray[3] = "c";
    $randomArray[4] = "d";
    $randomArray[5] = "e";
    $randomArray[6] = "f";
    $randomArray[7] = "g";
    $randomArray[8] = "h";
    $randomArray[9] = "i";
    $randomArray[10] = "j";
    $randomArray[11] = "k";
    $randomArray[12] = "l";
    $randomArray[13] = "m";
    $randomArray[14] = "n";
    $randomArray[15] = "o";
    $randomArray[16] = "p";
    $randomArray[17] = "q";
    $randomArray[18] = "r";
    $randomArray[19] = "s";
    $randomArray[20] = "t";
    $randomArray[21] = "u";
    $randomArray[22] = "v";
    $randomArray[23] = "x";
    $randomArray[24] = "y";
    $randomArray[25] = "z";
    $RandomText = $CONF["RandomText"];
    $digitAdd = 0;
    $webauth = null;
    $authentication_id = $CONF["authentication"];
    if (!is_numeric($authentication_id)) {
        $authentication_id = 0;
    }
    if ($authentication_id > 0) {
        $AUTHENTICATOR["USE_AUTHENTICATOR"] = 1;
        $AUTHENTICATOR["AUTHENTICATOR_RULEID"] = $authentication_id;
        $webauth = mysql_escape_string2(base64_encode(serialize($AUTHENTICATOR)));
    }
    if (preg_match("#\\%sx([0-9]+)#", $RandomText, $re)) {
        $digitAdd = intval($re[1]);
        $RandomText = str_replace("%sx{$re[1]}", "%s", $RandomText);
    }
    echo "Random: {$RandomText}\n";
    // on parse le fichier en première passe pour le cleaner
    $f = explode("\n", $CONF["import"]);
    while (list($index, $line) = each($f)) {
        $line = trim(strtolower($line));
        if ($line == null) {
            continue;
        }
        if (preg_match("#^http.*?:\\/#", $line)) {
            // c'est une URI, on la décompose
            $URZ = parse_url($line);
            if (!isset($URZ["host"])) {
                echo "{$line} -> Unable to determine HOST, skipping\n";
            }
            $MAIN[$URZ["host"]] = $URZ["scheme"];
            continue;
        }
        $MAIN[$line] = "http";
    }
    ksort($MAIN);
    $i = 1;
    $Letter = 1;
    $IpClass = new IP();
    $SUCCESS = 0;
    $FAILED = 0;
    while (list($servername, $proto) = each($MAIN)) {
        $LetterText = $randomArray[$Letter];
        $iText = $i;
        $ssl = 0;
        if ($digitAdd > 0) {
            $iText = sprintf("%1\$0{$digitAdd}d", $i);
        }
        $SourceWeb = $RandomText;
        if ($SourceWeb != null) {
            $SourceWeb = str_replace("%a", $LetterText, $SourceWeb);
            $SourceWeb = str_replace("%s", $iText, $SourceWeb);
        } else {
            $SourceWeb = $servername;
        }
        $sourceserver = "{$proto}://{$servername}";
        echo "{$proto}://{$servername}\n";
        if ($proto == "http") {
            $sourceserver_port = 80;
        }
        if ($proto == "https") {
            $sourceserver_port = 443;
            $ssl = 1;
        }
        if (preg_match("#(.+?):([0-9]+)#", $servername, $re)) {
            $sourceserver_port = $re[1];
        }
        //existe-t-il ?
        $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT ID FROM reverse_sources WHERE ipaddr='{$sourceserver}' AND `port`='{$sourceserver_port}'"));
        $IDS = intval($ligne["ID"]);
        if ($IDS == 0) {
            //non -> Ajout de l'entrée...
            $sql = "INSERT IGNORE INTO `reverse_sources` \n\t\t\t(`servername`,`ipaddr`,`port`,`ssl`,`enabled`,`forceddomain`,`Imported`)\n\t\t\tVALUES ('{$servername}','{$sourceserver}','{$sourceserver_port}','{$ssl}',1,'{$servername}',1)";
            $q->QUERY_SQL($sql);
            $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT ID FROM reverse_sources WHERE ipaddr='{$sourceserver}' AND `port`='{$sourceserver_port}'"));
            $IDS = intval($ligne["ID"]);
        }
        if ($IDS == 0) {
            echo "Failed to add {$sourceserver}/{$sourceserver_port}/{$servername}\n";
            $FAILED++;
            continue;
        }
        // On attaque  le site web:
        $ligne = mysql_fetch_array($q->QUERY_SQL("SELECT servername,cache_peer_id FROM reverse_www WHERE servername='{$SourceWeb}'"));
        if (trim($ligne["servername"] != null)) {
            echo "{$SourceWeb} already exists on cache ID : {$ligne["cache_peer_id"]}/{$IDS}\n";
            if ($ligne["cache_peer_id"] != $IDS) {
                $q->QUERY_SQL("UPDATE reverse_www SET `cache_peer_id`={$IDS} WHERE  servername='{$SourceWeb}'");
            }
            $SUCCESS++;
            continue;
        }
        $sql = "INSERT IGNORE INTO `reverse_www` (`servername`,`cache_peer_id`,`port`,`ssl`,`Imported`,`webauth`) VALUES\n\t\t('{$SourceWeb}','{$IDS}','{$sourceserver_port}','{$ssl}',1,'{$webauth}')";
        $q->QUERY_SQL($sql);
        if (!$q->ok) {
            echo $q->mysql_error;
            $FAILED++;
            continue;
        }
        $SUCCESS++;
        $i++;
        $Letter++;
        if ($Letter > 25) {
            $Letter = 1;
        }
    }
    echo "{$SUCCESS} Imported sites, {$FAILED} failed\n";
}
Пример #2
0
function websites_delete()
{
    $servername = $_POST["website-delete"];
    $nginx = new nginx();
    $nginx->Delete_website($_POST["website-delete"]);
}
Пример #3
0
function BuildReverse($ligne, $backupBefore = false)
{
    $T1 = time();
    $q = new mysql_squid_builder();
    $unix = new unix();
    $ligne["servername"] = trim($ligne["servername"]);
    $GLOBALS["IPADDRS"] = $unix->NETWORK_ALL_INTERFACES(true);
    $IPADDRS = $GLOBALS["IPADDRS"];
    $DenyConf = $ligne["DenyConf"];
    $ligne["servername"] = trim($ligne["servername"]);
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: Nginx\n";
    }
    if ($GLOBALS["OUTPUT"]) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: [" . __LINE__ . "]  ************* {$ligne["servername"]}:{$ligne["port"]} / {$DenyConf} ************* \n";
    }
    if ($ligne["port"] == 82) {
        echo "Starting......: " . date("H:i:s") . " [INIT]: [" . __LINE__ . "] 82 port is an apache port, SKIP\n";
        build_progress("Bad port {$ligne["servername"]}:82", 110);
        return;
    }
    if ($GLOBALS["REMOVE_LOCAL_ADDR"]) {
        if (isset($IPADDRS[$ligne["servername"]])) {
            build_progress("{$IPADDRS[$ligne["servername"]]} *** SKIPPED ***", 110);
            echo "Starting......: " . date("H:i:s") . " [INIT]: [" . __LINE__ . "]  {$ligne["servername"]} *** SKIPPED ***\n";
            return;
        }
    }
    if ($DenyConf == 1) {
        build_progress("Denied config *** SKIPPED ***", 110);
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: [" . __LINE__ . "]  Local web site `{$ligne["servername"]}`, DenyConf = 1,skipped\n";
        }
        return;
    }
    if (isset($ALREADYSET[$ligne["servername"]])) {
        build_progress("Already setup", 110);
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]: [" . __LINE__ . "]  `{$ligne["servername"]}` Already defined, abort\n";
        }
        return;
    }
    $ListenPort = $ligne["port"];
    $SSL = $ligne["ssl"];
    $certificate = $ligne["certificate"];
    echo "Starting......: " . date("H:i:s") . " [INIT]:  ListenPort..............:{$ListenPort}\n";
    echo "Starting......: " . date("H:i:s") . " [INIT]:  SSL.....................:{$SSL}\n";
    echo "Starting......: " . date("H:i:s") . " [INIT]:  Certificate.............:{$certificate}\n";
    echo "Starting......: " . date("H:i:s") . " [INIT]:  OWA.....................:{$ligne["owa"]}\n";
    if ($ligne["owa"] == 1) {
        $GLOBALS["OUTPUT"] = true;
        $nginx_exchange = new nginx_exchange($ligne["servername"]);
        build_progress("{$ligne["servername"]}: {building} Microsoft Exchange Configuration", 50);
        $nginx_exchange->buildConfig();
        build_progress("{$ligne["servername"]}: {building} Microsoft Exchange Configuration {done}", 70);
        $Took = distanceOfTimeInWords($T1, time(), true);
        nginx_admin_mysql(2, "Success build Microsoft Exchange Configuration configuration for {$ligne["servername"]} took: {$Took}", "Took: {$Took}", __FILE__, __LINE__);
        build_progress("{$ligne["servername"]}: Microsoft Exchange Configuration {done}", 80);
        return true;
    }
    build_progress("{$ligne["servername"]}:{$ListenPort} [SSL:{$SSL}]", 20);
    echo "Starting......: " . date("H:i:s") . " [INIT]: Protect remote web site `{$ligne["servername"]}:{$ListenPort} [SSL:{$SSL}]`\n";
    if ($ligne["servername"] == null) {
        echo "Starting......: " . date("H:i:s") . " [INIT]:  skip it...\n";
        return;
    }
    $cache_peer_id = $ligne["cache_peer_id"];
    if ($cache_peer_id > 0) {
        $ligne2 = mysql_fetch_array($q->QUERY_SQL("SELECT * FROM `reverse_sources` WHERE `ID`='{$cache_peer_id}'"));
    }
    $host = new nginx($ligne["servername"]);
    if ($ListenPort == 80 && $SSL == 1) {
        build_progress("{$ligne["servername"]}: Building HTTP", 40);
        if ($GLOBALS["OUTPUT"]) {
            echo "Starting......: " . date("H:i:s") . " [INIT]:  HTTP/HTTPS Enabled [" . __LINE__ . "]...\n";
        }
        $host->set_RedirectQueries($ligne["RedirectQueries"]);
        $host->set_forceddomain($ligne2["forceddomain"]);
        $host->set_ssl(0);
        $host->set_mixed_ssl(1);
        $host->set_proxy_port($ligne2["port"]);
        $host->set_listen_port(80);
        $host->set_poolid($ligne["poolid"]);
        $host->set_owa($ligne["owa"]);
        $host->set_storeid($ligne["cacheid"]);
        $host->set_cache_peer_id($cache_peer_id);
        $host->BackupBefore = $backupBefore;
        build_progress("{$ligne["servername"]}: HTTP/HTTPS Enabled", 50);
        $GLOBALS["NGINX_FATAL_ERRORS"] = array();
        if (!$host->build_proxy()) {
            if ($GLOBALS["NGINX_FATAL_ERROR"] != null) {
                nginx_admin_mysql(0, "Fatal error on {$ligne["servername"]} <{$GLOBALS["NGINX_FATAL_ERROR"]}>", "{$GLOBALS["NGINX_FATAL_ERROR"]}\n" . @implode("\n", $GLOBALS["NGINX_FATAL_ERRORS"]));
                echo "***                                             ***\n";
                echo "*** Fatal error {$GLOBALS["NGINX_FATAL_ERROR"]} ***\n";
                echo "***                                             ***\n";
                build_progress("{$ligne["servername"]}: {failed} {$GLOBALS["NGINX_FATAL_ERROR"]}", 110);
                return;
            }
            build_progress("{$ligne["servername"]}: {failed}", 110);
            return;
        }
        if (!$GLOBALS["NO_RELOAD"]) {
            build_progress("{$ligne["servername"]}: {done}", 80);
            return true;
        }
    }
    if ($ligne["ssl"] == 1) {
        echo "Starting......: " . date("H:i:s") . " [INIT]:  SSL Enabled...\n";
        $ligne2["ssl"] = 1;
    }
    if ($ligne["port"] == 443) {
        $ligne2["ssl"] = 1;
    }
    build_progress("{$ligne["servername"]}", 50);
    $host->BackupBefore = $backupBefore;
    $host->set_owa($ligne["owa"]);
    $host->set_RedirectQueries($ligne["RedirectQueries"]);
    $host->set_ssl_certificate($certificate);
    $host->set_ssl_certificate($ligne2["ssl_commname"]);
    $host->set_forceddomain($ligne2["forceddomain"]);
    $host->set_ssl($ligne2["ssl"]);
    $host->set_proxy_port($ligne2["port"]);
    $host->set_listen_port($ligne["port"]);
    $host->set_poolid($ligne["poolid"]);
    $host->set_owa($ligne["owa"]);
    $host->set_storeid($ligne["cacheid"]);
    $host->set_cache_peer_id($cache_peer_id);
    $host->build_proxy();
    if ($GLOBALS["NGINX_FATAL_ERROR"] != null) {
        nginx_admin_mysql(0, "Fatal error on {$ligne["servername"]} <{$GLOBALS["NGINX_FATAL_ERROR"]}>", "{$GLOBALS["NGINX_FATAL_ERROR"]}\n" . @implode("\n", $GLOBALS["NGINX_FATAL_ERRORS"]), __FILE__, __LINE__);
        echo "*** Fatal error {$GLOBALS["NGINX_FATAL_ERROR"]} ***\n";
        build_progress("{$ligne["servername"]}: {failed}", 110);
        return;
    }
    $Took = distanceOfTimeInWords($T1, time(), true);
    nginx_admin_mysql(2, "Success build configuration for {$ligne["servername"]} took: {$Took}", "Took: {$Took}", __FILE__, __LINE__);
    build_progress("{$ligne["servername"]}: {done}", 80);
    return true;
}
Пример #4
0
             if ($settings['system']['mod_fcgid'] == 1 || $settings['phpfpm']['enabled'] == 1) {
                 $webserver = new apache_fcgid($db, $cronlog, $debugHandler, $idna_convert, $settings);
             } else {
                 $webserver = new apache($db, $cronlog, $debugHandler, $idna_convert, $settings);
             }
         } elseif ($settings['system']['webserver'] == "lighttpd") {
             if ($settings['system']['mod_fcgid'] == 1 || $settings['phpfpm']['enabled'] == 1) {
                 $webserver = new lighttpd_fcgid($db, $cronlog, $debugHandler, $idna_convert, $settings);
             } else {
                 $webserver = new lighttpd($db, $cronlog, $debugHandler, $idna_convert, $settings);
             }
         } elseif ($settings['system']['webserver'] == "nginx") {
             if ($settings['phpfpm']['enabled'] == 1) {
                 $webserver = new nginx_phpfpm($db, $cronlog, $debugHandler, $idna_convert, $settings);
             } else {
                 $webserver = new nginx($db, $cronlog, $debugHandler, $idna_convert, $settings);
             }
         }
     }
     if (isset($webserver)) {
         $webserver->createIpPort();
         $webserver->createVirtualHosts();
         $webserver->createFileDirOptions();
         $webserver->writeConfigs();
         $webserver->createOwnVhostStarter();
         $webserver->reload();
     } else {
         echo "Please check you Webserver settings\n";
     }
 } elseif ($row['type'] == '2') {
     fwrite($debugHandler, '  cron_tasks: Task2 started - create new home' . "\n");