'.print_r($_SERVER, true).''; //echo '
'.print_r($uri, true).'
'; //echo '
'.print_r($reqURL->all, true).'
'; //echo 'idzie...'; if(SAVE2LOG){ saveLog('-----------------------------'); saveLog(date('Y-m-d H:i:s').' Tryb rejestrowania'); saveLog(' uri: '.print_r($uri, true)); saveLog(' uri: '.print_r($reqURL->all,true)); } /** * Laduje konfiguracje redirector'a * * Redirector rozwiazuje nam kwestie: * - recznie ustawionych przekierowan 301 na dowolny inny adres URL * - strony 404 dla nieistniejacych dokumentow */ if(@file_exists('wb-redirect.txt')){ $redir = file('wb-redirect.txt'); if(SAVE2LOG) saveLog('['.__LINE__.'] Wczytuje wb-redirect.txt'); if(count($redir)>0){ foreach($redir as $rule){ list($http_code, $source, $target) = explode(';',$rule); # pelen adres URL (wraz z domena serwisu) #$test = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; # tylko adres URL bez domeny (musi zawierać początkowego slasha) $test = $_SERVER['REQUEST_URI']; if($test==$source){ switch($http_code){ case '301': header("HTTP/1.1 301 Moved Permanently"); header("Location: ".$target); header("ErrorSyntax: condition 301 on redirect rule"); if(SAVE2LOG) saveLog('['.__LINE__.'] Redirect 301 (wb-redirect.txt) -> '.$target); die(); break; case '404': header("HTTP/1.1 404 Not Found"); header("ErrorSyntax: condition 404 on redirect rule"); if(SAVE2LOG) saveLog('['.__LINE__.'] Redirect 404 (wb-redirect.txt)'); die(); break; } } } } } /** * Funkcja rozwiązuje nam kwestie wyswietlania zawartosci dokumentow dla * takich adresow jak np. domena.pl/index gdzie "index" jest katalogiem * i nie moze byc jednoczesnie plikiem (ktory mozna wyswietlic) * * W takiej sytuacji aplikacja szuka pliku o nazwie "index.cache.html" * w katalogu "index": * - [1] domena.pl/index/index.cache.html * - [2] domena.pl/index */ if(is_dir($reqURL->uri_filename) && @file_exists($reqURL->uri_filename.'/index.cache.html')){ if(SAVE2LOG) saveLog('['.__LINE__.'] Wczytuje plik -> '.$reqURL->uri_filename.'/index.cache.html'); readfile($reqURL->uri_filename.'/index.cache.html'); exit(); } if(@file_exists($reqURL->uri_filename)){ if(SAVE2LOG) saveLog('['.__LINE__.'] Wczytuje plik -> '.$reqURL->uri_filename); readfile($reqURL->uri_filename); exit(); } /** * Jesli mamy Query Stringa wowczas robimy z niego hasha md5 i generujemy nowa nazwe pliku * */ if(isset($uri['query'])){ # hash dla QSA $hash = md5( $uri['query']); # skladamy nazwe pliku do kupy (pozbywamy sie przy okazji pierwszego slasha) $filename = substr($uri['path'].'.'.$hash,1); if(SAVE2LOG) saveLog('['.__LINE__.'] wyszukiwanie pliku (QSA) -> '.$filename); if(file_exists($filename)){ if(DEBUG) echo 'READ FILE ('.__LINE__.'):'.md5($_GET["qsa"]).''; if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.$filename); # czytamy zawartosc pliku readfile($filename); # koniec exit(); } elseif(file_exists(FILES_PATH.'index.html'.$filename)){ if(DEBUG) echo 'READ FILE ('.__LINE__.'): index.html.'.md5($_GET["qsa"]).''; if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.FILES_PATH.'index.html'.$filename); # czytamy zawartosc pliku readfile('index.html'.$filename); # koniec exit(); } else{ # nie ma pliku wiec walimy 404 lub 302 if(!headers_sent()) header("HTTP/1.1 301 Moved Permanently"); # przekierowanie if(SAVE2LOG) saveLog('['.__LINE__.'] -- przekierowanie 301 -> '.$_SERVER['HTTP_HOST']); if(DEBUG){ $msg = "
".__LINE__.' File '.$filename.' not found.'; $msg = "
".__LINE__.' File index.html'.$filename.' not found.'; die("HTTP/1.1 301 Moved Permanently".$msg); } if(!headers_sent()) header("Location: http://".$_SERVER['HTTP_HOST']); exit(); } # przekierowanie if(SAVE2LOG) saveLog('['.__LINE__.'] -- przekierowanie 301 -> '.$_SERVER['HTTP_HOST']); # jest QSA, ale nie ma pliku wiec walimy 301 na glowna header("HTTP/1.1 301 Moved Permanently"); header("Location: /"); die(); } if(isset($uri['path'])){ # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- wyszukiwanie po sciezce -> '.$uri['path']); # poprawka na sciezke $path = substr(trim($uri['path']), 1); if(@file_exists($path)){ # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.$path); # czytamy zawartosc pliku readfile($path); # koniec exit(); } $path = substr(trim($uri['path']), 1, -1); if(@file_exists($path) && !is_dir($path)){ # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.$path); # czytamy zawartosc pliku readfile($path); # koniec exit(); } elseif(@file_exists($path.'._html')){ # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.$path.'._html'); # czytamy zawartosc pliku readfile($path.'._html'); # koniec exit(); } elseif(@file_exists('_'.$reqURL->uri_filename)){ # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.'_'.$reqURL->uri_filename); # czytamy zawartosc pliku readfile('_'.$reqURL->uri_filename); # koniec exit(); } # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- przekierowanie 301'); # jest path, nie ma pliku wiec walimy 301 na glowna header("HTTP/1.1 301 Moved Permanently"); header("Location: /"); die(); } if(file_exists('index.php')){ # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.'index.php'); # czytamy zawartosc pliku readfile('index.php'); # koniec exit(); } elseif(file_exists('index.cache.html')){ # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- wczytywanie -> '.'index.cache.html'); # czytamy zawartosc pliku readfile('index.cache.html'); # koniec exit(); } /* if(isset($_GET["qsa"])) { if(DEBUG) echo 'READ FILE ('.__LINE__.'):'.md5($_GET["qsa"]).''; readfile(md5($_GET["qsa"])); //Outputs the file. Do not use echo file_get_contents. exit(); } */ if(DEBUG) echo 'NOT FOUND!'; # jest sciezka if(SAVE2LOG) saveLog('['.__LINE__.'] -- nie znaleziono 404'); if(!headers_sent()){ header("HTTP/1.1 404 Not Found"); header("ErrorSyntax: documents not found"); } exit(); /** * Funkcja zapisywania do loga * * Ze wzgledu, ze powinnismy miec tylko jeden wpis w ciagu dnia * to generujemy logi w plikach rocznych */ function saveLog( $message ){ if(!file_exists(ROOT_DIR.'/_log')) mkdir(ROOT_DIR.'/_log'); $filename = ROOT_DIR.'/_log/router.log.txt'; $fp = fopen($filename, 'a'); fwrite($fp, $message."\n"); fclose($fp); } ?>