// ************************************************** // ***** zdroj pro vzdalene umisteni klonů webu ***** // ************************************************** // soubory bez pripony a bez iniciacnich a koncovych znacek php, ktere pak doplnuje az vzdaleny script pri ukladani aktualizovaneho souboru do souborove cashe // Tento soubor (index.php) v jednotlivem klonu webu dle nastavení viz nize jednou za týden, a nebo pri chybejicim jednom z aktualizovanych souboru vzdy, aktualizuje vzdalene soubory: sám sebe tj. index.php, dale image.php a .htaccess ze zdroju ulozenych v adresari napr. http://pipilotaxxx.pipilota.cz/vzdalene/ (zdrojove soubory index, image a htaccess) // popis vlastni funkce scriptu ve vzdalenem umisteni jednoho z klonu webu: prijme jmeno a typ souboru, pri aktualnim casu cashe jej rovnou zobrazi, jinak jej stahne z centraly a aktualizuje cashe $zdrojovy_adresar="http://pipilotaeu.pipilota.cz"; IF (!isset($ulozeny_datumcas_vynuceneho_obnoveni_html_cache)) $ulozeny_datumcas_vynuceneho_obnoveni_html_cache="2000-01-01 00:00:00"; // zobrazeni htm z cashe nebo nacteni htm ze zdroje a ulozeni do cashe $filename = @$_GET["filename"]; $filetype = @$_GET["filetype"]; IF (!isset($filetype)) $filetype="htm"; // home stranka IF (!isset($filename)) $filename=""; // home stranka IF ($filename == "" AND $filetype != "htm") DIE("WRONG FILENAME"); // projde pouze home stranka // presmerovani na bez www (protokol ponechavame jaky prijde, v tomto miste o nem nemame informaci) $_protokol="http"; IF(@$_SERVER['HTTPS'] == "on") $_protokol="https"; // na WZ.cz to hlasilo Undefined index: HTTPS $domain_names = explode(".", $_SERVER["SERVER_NAME"]); IF ($domain_names[0] =="www"): // www se tvari jakosubdomena // odstranime www IF (count($domain_names) == 3): $adresawebu = $domain_names[1].".".$domain_names[2]; ENDIF; // domena druheho radu IF (count($domain_names) == 4): $adresawebu = $domain_names[1].".".$domain_names[2].".".$domain_names[3]; ENDIF; //domena tretiho radu $_url = $_protokol."://".$adresawebu . $_SERVER['REQUEST_URI']; header("Location: ".$_url,TRUE,301); EXIT; ELSE: IF (count($domain_names) == 2): $adresawebu = $domain_names[0].".".$domain_names[1]; ENDIF; // domena druheho radu IF (count($domain_names) == 3): $adresawebu = $domain_names[0].".".$domain_names[1].".".$domain_names[2]; ENDIF; //domena tretiho radu // zde bychom zmenili protokol // $url = $_protokol."://". $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; // header("Location: ".$url,TRUE,301); // EXIT; ENDIF; SWITCH ($filetype) { CASE "htm": $stranka=$filename; $local_cache_expire = $stranka=="" ? 24 : 24*30; // nastavení v hodinách (home stranka má kratsi expiraci) IF (file_exists("./htmcache/".$stranka.".htm") AND filesize("./htmcache/".$stranka.".htm")>10000): // existujici a neposkozena cache $filetime=filemtime("./htmcache/".$stranka.".htm"); $cachetime=$filetime-time()+($local_cache_expire*60*60); //zápor: cache expirovala IF ($filetime < strtotime($ulozeny_datumcas_vynuceneho_obnoveni_html_cache)): $cachetime=0; ENDIF; // cache vznikla pred datem vynuceneho obnoveni ELSE: $cachetime=0; // soubor neexistuje nebo je poškozeny if (!is_dir("./htmcache")) MKDIR("./htmcache", 0755); // pripadne vytvoreni adresare (nekde nefunguje - mozna by stacilo 0666 ???) if (!is_dir("./imagecache")) MKDIR("./imagecache", 0755); // pripadne vytvoreni adresare if (!is_dir("./filecache")) MKDIR("./filecache", 0755); // pripadne vytvoreni adresare ENDIF; IF ($cachetime<1): // expirovana cache nebo chybne ulozena, budeme znovu nacitat a ukladat // dotaz na centralu a ulozeni aktualniho htm souboru $url_vo=$zdrojovy_adresar."/getpage.php?adresawebu=".$adresawebu."&stranka=".$stranka; IF (function_exists('curl_init')): $ch = curl_init($url_vo); curl_setopt($ch,CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // jinak by obsah šel rovnou do vystupu curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 10); $string=curl_exec($ch); // jinak by to bylo 1 (jako že OK) misto obsahu $http_code=curl_getinfo($ch,CURLINFO_HTTP_CODE); curl_close ($ch); $cachetime=$local_cache_expire*60*60; //cerstva cache $znacka="DATUMCAS VYNUCENEHO OBNOVENI HTML CACHE"; $uvodniznacka="<".$znacka.">"; $lenuvodniznacka=STRLEN($uvodniznacka); $poziceuvodniznacka=STRPOS($string,$uvodniznacka); $koncovaznacka=""; $lenkoncovaznacka=STRLEN($koncovaznacka); $pozicekoncovaznacka=STRPOS($string,$koncovaznacka); $prijaty_datumcas_vynuceneho_obnoveni_html_cache=TRIM(SUBSTR($string,$poziceuvodniznacka+$lenuvodniznacka,$pozicekoncovaznacka-$poziceuvodniznacka-$lenuvodniznacka)); $znacka="PAGENAME"; $uvodniznacka="<".$znacka.">"; $lenuvodniznacka=STRLEN($uvodniznacka); $poziceuvodniznacka=STRPOS($string,$uvodniznacka); IF($poziceuvodniznacka === false): IF (file_exists("./htmcache/".$stranka.".htm") AND filesize("./htmcache/".$stranka.".htm")>5000): // existujici a neposkozena cache include("./htmcache/".$stranka.".htm"); // nacteme z cashe (plati i pro nahodnou stranku pro home) ELSE: ECHO "EMPTY HTML CACHE AND WRONG SOURCE DATA TOO IN PAGE: ".$stranka.".htm
"; EXIT; ENDIF; //ECHO("WRONG DATA STRUCTURE:
".$string); ENDIF; $koncovaznacka=""; $lenkoncovaznacka=STRLEN($koncovaznacka); $pozicekoncovaznacka=STRPOS($string,$koncovaznacka); $stranka=TRIM(SUBSTR($string,$poziceuvodniznacka+$lenuvodniznacka,$pozicekoncovaznacka-$poziceuvodniznacka-$lenuvodniznacka)); // nahodna stranka pro home $string=SUBSTR($string,$pozicekoncovaznacka+$lenkoncovaznacka); IF ($stranka=="#301"): // zjisteno presmerovani (stranka patri jinemu klonu) $znacka="LOCATION"; $uvodniznacka="<".$znacka.">"; $lenuvodniznacka=STRLEN($uvodniznacka); $poziceuvodniznacka=STRPOS($string,$uvodniznacka); $koncovaznacka=""; $lenkoncovaznacka=STRLEN($koncovaznacka); $pozicekoncovaznacka=STRPOS($string,$koncovaznacka); $location=TRIM(SUBSTR($string,$poziceuvodniznacka+$lenuvodniznacka,$pozicekoncovaznacka-$poziceuvodniznacka-$lenuvodniznacka)); header("Location: $location",TRUE,301); EXIT; ELSEIF ($stranka=="#404"): // zjistena neexistujici stranka $znacka="LOCATION"; $uvodniznacka="<".$znacka.">"; $lenuvodniznacka=STRLEN($uvodniznacka); $poziceuvodniznacka=STRPOS($string,$uvodniznacka); $koncovaznacka=""; $lenkoncovaznacka=STRLEN($koncovaznacka); $pozicekoncovaznacka=STRPOS($string,$koncovaznacka); $location=TRIM(SUBSTR($string,$poziceuvodniznacka+$lenuvodniznacka,$pozicekoncovaznacka-$poziceuvodniznacka-$lenuvodniznacka)); header("HTTP/1.0 404 Not Found"); ECHO "404 NOT FOUND
"; ECHO "PAGE: ".$location." DOES NOT EXISTS"; EXIT; ELSE: // stranka neni chybova (301 ani 404) IF($http_code==200 AND strlen($string)>5000): // pokud funguje zdrojovy server ECHO $string; // vlastni obsah stranky ECHO $http_code,"
",strlen($string)."
"; $fp = fopen("./htmcache/