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"; }
function websites_delete() { $servername = $_POST["website-delete"]; $nginx = new nginx(); $nginx->Delete_website($_POST["website-delete"]); }
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; }
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");