|
Server : Apache/2.2.2 (Fedora) System : Linux App1.pathumtani.go.th 2.6.20-1.2320.fc5smp #1 SMP Tue Jun 12 19:40:16 EDT 2007 i686 User : apache ( 48) PHP Version : 5.2.9 Disable Function : NONE Directory : /var/www/html/pathumthani_integration/pathumthani_drug/libraries/ |
Upload File : |
<?php
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);
if (!function_exists('curl_init')) {
throw new Exception('SEOstats requires the PHP CURL extension.');
exit();
}
if (1 == ini_get('safe_mode') || 'on' === strtolower(ini_get('safe_mode'))) {
throw new Exception('Because some SEOstats functions require the CURLOPT_FOLLOWLOCATION flag, you must not run PHP in safe mode! (This flag can not be set in safe mode.)');
exit();
}
interface pref { const PREFERED_TLD = "com"; }
interface tbr {
const SERVER_HOSTS = '["toolbarqueries.google.","alt1.toolbarqueries.google."]';
const SERVER_TLDS = '["com","ae","com.af","com.ag","com.ai","am","com.ar","as","at","com.au","az","ba","com.bd","be","bg","com.bh","bi","com.bo","com.br","bs","co.bw","com.bz","ca","cd","cg","ch","ci","co.ck","cl","com.co","co.cr","com.cu","cz","de","dj","dk","dm","com.do","com.ec","ee","com.eg","es","com.et","fi","com.fj","fm","fr","co.uk","gg","com.gi","gl","gm","gr","com.gt","com.hk","hn","hr","ht","hu","co.id","ie","co.il","co.im","co.in","is","it","co.je","com.jm","jo","co.jp","co.ke","kg","co.kr","kz","li","lk","co.ls","lt","lu","lv","com.ly","co.ma","mn","ms","com.mt","mu","mw","com.mx","com.my","com.na","com.nf","com.ni","nl","no","com.np","co.nz","com.om","com.pa","com.pe","com.ph","com.pk","pl","pn","com.pr","pt","com.py","com.qa","ro","ru","rw","com.sa","sc","se","com.sg","sh","si","sk","sm","sn","com.sv","co.th","com.tj","tm","to","com.tr","tt","com.tw","com.ua","co.ug","com.uy","co.uz","com.vc","co.ve","vg","co.vi","com.vn","co.za","co.zm"]';
const SERVER_PATH = "/tbr";
const QUERY_STRING = "?features=Rank&client=navclient-auto&ch=%s&q=info:%s";
const SUGGEST_TLD_URL = "https://www.google.com/searchdomaincheck?format=domain&sourceid=navclient-ff";
}
class GTB_PageRank implements tbr, pref {
public $QUERY_URL, $URL_HASHES, $PREFERED_TLD, $GTB_SUGESSTED_TLD, $GTB_QUERY_STRINGS;
private $GTB_SERVER;
public static function getUrl($url = false) {
$url = false !== $url ? $url : self::$_url;
return $url;
}
public function __construct($a=NULL) {
if(NULL===$a) {
GTB_Exception::noUrl();
}
$this->GTB_SERVER = array(
"host" => GTB_HELPER::_json_decode(tbr::SERVER_HOSTS),
"tld" => GTB_HELPER::_json_decode(tbr::SERVER_TLDS),
"path" => tbr::SERVER_PATH
);
if (!in_array(self::getPref('tld'), self::getTbrTlds() )) {
GTB_Exception::invalidPref('PREFERED_TLD');
} else {
$this->PREFERED_TLD = pref::PREFERED_TLD;
$this->GTB_SUGESSTED_TLD = self::getTbrTldSuggestion();
}
$init = self::setQueryURL($a);
if (TRUE !== $init) {
GTB_Exception::tryAgain();
}
}
public function getPageRank() {
$host = $this->GTB_SERVER['host'][0];
$tld = (strlen($this->GTB_SUGESSTED_TLD) > 0) ? $this->GTB_SUGESSTED_TLD : $this->PREFERED_TLD;
$path = $this->GTB_SERVER['path'];
$tbUrl = 'http://' . $host . $tld . $path;
$qStrings = self::getQueryStrings();
if(isset($qStrings[0])) {
$PR = self::getToolbarPageRank($tbUrl . $qStrings[0]);
if ($PR !== FALSE) {
return $PR;
} else {
if (isset($qStrings[1])) {
$PR = self::getToolbarPageRank($tbUrl . $qStrings[1]);
if ($PR !== FALSE) {
return $PR;
} else {
if (isset($qStrings[2])) {
$PR = self::getToolbarPageRank($tbUrl . $qStrings[2]);
if ($PR !== FALSE) {
return $PR;
} else {
if (isset($qStrings[3])) {
$PR = self::getToolbarPageRank($tbUrl . $qStrings[3]);
if ($PR !== FALSE) {
return $PR;
} else {
return 'Failed to generate a valid hash for PR check.';
}
}
}
}
}
}
}
} else {
return 'Failed to generate a valid hash for PR check.';
}
}
public function getToolbarPageRank($toolbarUrl) {
$ret = GTB_Request::_get($toolbarUrl);
$pagerank = trim(substr($ret, 9));
return (!preg_match('/^[0-9]/',$pagerank)) ? FALSE : $pagerank;
}
public function getQueryURL() {
return $this->QUERY_URL;
}
public function getHash($k) {
$array = $this->URL_HASHES;
return $array[$k];
}
public function getHashes() {
return $this->URL_HASHES;
}
public function getQueryStrings() {
return $this->GTB_QUERY_STRINGS;
}
public function getQueryUrls($limit=NULL) {
$a = self::getQueryUrl();
$b = self::getHashes();
$QueryUrls = array();
$limit = (NULL!==$limit && is_numeric($limit)) ? (int)$limit : 0;
$c = 0;
foreach ( $b as $k => $v ) {
if ( is_string($v) AND strlen($v) > 0 ) {
$rs = sprintf(tbr::QUERY_STRING, $v, $a);
foreach ( $this->GTB_SERVER['host'] as $host ) {
foreach ($this->GTB_SERVER['tld'] as $tld) {
$tbUri = 'http://'. $host . $tld . tbr::SERVER_PATH . $rs;
if ( $c < $limit || $limit == 0 ) {
$QueryUrls[] = $tbUri;
}
$c++;
}
}
}
}
return (sizeof($QueryUrls)>0) ? $QueryUrls : FALSE;
}
public function getTbrServer() {
return $this->GTB_SERVER;
}
public function getTbrHosts() {
return $this->GTB_SERVER['host'];
}
public function getTbrTlds() {
return $this->GTB_SERVER['tld'];
}
public function getTbrTldSuggestion() {
$tmp = explode(".google.", GTB_Request::_get(tbr::SUGGEST_TLD_URL));
return trim($tmp[1]);
}
public function getTbrPath() {
return $this->GTB_SERVER['path'];
}
public function getPref($k) {
if ($k == 'tld') {
return pref::PREFERED_TLD;
}
}
public function GPR_awesomeHash() {
$a = self::getQueryURL();
if (NULL!==$a) {
return GTB_awesomeHash::awesomeHash($a); }
else { GTB_Exception::noUrl(); }
}
public function GPR_jenkinsHash() {
$a = self::getQueryURL();
if (NULL!==$a) {
return GTB_jenkinsHash::jenkinsHash($a); }
else { GTB_Exception::noUrl(); }
}
public function GPR_jenkinsHash2() {
$a = self::getQueryURL();
if (NULL!==$a) {
return GTB_jenkinsHash::jenkinsHash2($a); }
else { GTB_Exception::noUrl(); }
}
public function GPR_ieHash() {
$a = self::getQueryURL();
if (NULL!==$a) {
return GTB_ieHash::ieHash($a); }
else { GTB_Exception::noUrl(); }
}
private function setQueryURL($a) {
$this->QUERY_URL = $a;
$b = array(
'jenkins' => self::GPR_jenkinsHash(),
'jenkins2'=> self::GPR_jenkinsHash2(),
'ie' => self::GPR_ieHash(),
'awesome' => self::GPR_awesomeHash() );
$this->URL_HASHES = $b;
return (bool) self::setQueryStrings($a, $b);
}
private function setQueryStrings($a,$b) {
$qs = array();
foreach ($b as $k => $v) {
if(is_string($v) && strlen($v) > 0) {
$qs[] = sprintf(tbr::QUERY_STRING, $v, $a);
}
}
if (sizeof($qs) > 0) {
$this->GTB_QUERY_STRINGS = $qs;
return TRUE;
}
return FALSE;
}
}
class GTB_awesomeHash extends GTB_PageRank {
const HASH_SEED = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer.";
public static function awesomeHash($a) {
return self::_awesomeHash($a);
}
public static function _awesomeHash($a) {
$b = 16909125; for ($c=0; $c<strlen($a); $c++) {
$b ^= (GTB_Helper::charCodeAt(self::HASH_SEED, ($c%87))) ^ (GTB_Helper::charCodeAt($a, $c));
$b = GTB_Helper::unsignedRightShift($b, 23) | $b << 9;
}
return '8'. GTB_Helper::hexEncodeU32($b);
}
}
class GTB_jenkinsHash extends GTB_PageRank {
public static function jenkinsHash($a) {
$b = GTB_Helper::strOrds("info:".$a);
return self::_jenkinsHash ($b);
}
public static function jenkinsHash2($a) {
$ch = sprintf("%u", self::_jenkinsHash($a, FALSE));
$ch = ((GTB_Helper::leftShift32(($ch/7), 2)) | ((GTB_Helper::_fmod($ch, 13)) & 7));
$buf = array($ch);
for($i=1; $i<20; $i++) { $buf[$i] = $buf[$i-1]-9; }
return sprintf("6%u", self::_jenkinsHash(GTB_Helper::c32to8bit($buf), FALSE));
}
public static function _jenkinsHash($key, $encode=TRUE) {
$url = $key;
$length = sizeof($url);
$a = $b = 0x000000009E3779B9;
$c = 0x00000000E6359A60;
$k = 0; $len = $length;
while($len >= 12) {
$a += $url[$k+0];
$a += GTB_Helper::leftShift32($url[$k+1], 8);
$a += GTB_Helper::leftShift32($url[$k+2], 16);
$a += GTB_Helper::leftShift32($url[$k+3], 24);
$b += $url[$k+4];
$b += GTB_Helper::leftShift32($url[$k+5], 8);
$b += GTB_Helper::leftShift32($url[$k+6], 16);
$b += GTB_Helper::leftShift32($url[$k+7], 24);
$c += $url[$k+8];
$c += GTB_Helper::leftShift32($url[$k+9], 8);
$c += GTB_Helper::leftShift32($url[$k+10],16);
$c += GTB_Helper::leftShift32($url[$k+11],24);
$mix = self::hashmixJenkins2($a, $b, $c);
$a = $mix[0]; $b = $mix[1]; $c = $mix[2];
$len -= 12; $k += 12;
} $c += $length;
switch($len) {
case 11: $c += GTB_Helper::leftShift32($url[$k+10],24);
case 10: $c += GTB_Helper::leftShift32($url[$k+9], 16);
case 9 : $c += GTB_Helper::leftShift32($url[$k+8], 8);
case 8 : $b += GTB_Helper::leftShift32($url[$k+7], 24);
case 7 : $b += GTB_Helper::leftShift32($url[$k+6], 16);
case 6 : $b += GTB_Helper::leftShift32($url[$k+5], 8);
case 5 : $b += $url[$k+4];
case 4 : $a += GTB_Helper::leftShift32($url[$k+3], 24);
case 3 : $a += GTB_Helper::leftShift32($url[$k+2], 16);
case 2 : $a += GTB_Helper::leftShift32($url[$k+1], 8);
case 1 : $a += $url[$k+0];
}
$mix = self::hashmixJenkins2($a, $b, $c);
$ch = GTB_Helper::mask32($mix[2]);
$ch = ($encode!==TRUE) ? $ch : sprintf("6%u", $ch);
return $ch;
}
private static function hashmixJenkins2($a, $b, $c) {
$a -= $b; $a -= $c; $a ^= GTB_Helper::unsignedRightShift($c, 13);
$b -= $c; $b -= $a; $b ^= GTB_Helper::leftShift32($a, 8);
$c -= $a; $c -= $b; $c ^= GTB_Helper::unsignedRightShift(($b & 0x00000000FFFFFFFF), 13);
$a -= $b; $a -= $c; $a ^= GTB_Helper::unsignedRightShift(($c & 0x00000000FFFFFFFF), 12);
$b -= $c; $b -= $a; $b = ($b ^ (GTB_Helper::leftShift32($a, 16))) & 0x00000000FFFFFFFF;
$c -= $a; $c -= $b; $c = ($c ^ (GTB_Helper::unsignedRightShift($b, 5))) & 0x00000000FFFFFFFF;
$a -= $b; $a -= $c; $a = ($a ^ (GTB_Helper::unsignedRightShift($c, 3))) & 0x00000000FFFFFFFF;
$b -= $c; $b -= $a; $b = ($b ^ (GTB_Helper::leftShift32($a, 10))) & 0x00000000FFFFFFFF;
$c -= $a; $c -= $b; $c = ($c ^ (GTB_Helper::unsignedRightShift($b, 15))) & 0x00000000FFFFFFFF;
return array($a, $b, $c);
}
}
class GTB_ieHash extends GTB_PageRank {
public static function ieHash ($a) {
return self::_ieHash($a);
}
public static function _ieHash ($a) {
$NumHashString = sprintf('%u', self::hashmixIE($a));
$NumHashLength = strlen($NumHashString);
$CheckByte = 0;
for ($i=($NumHashLength-1); $i>=0; $i--) {
$Num = $NumHashString{$i};
$CheckByte += (1===($i % 2)) ? (int)((($Num*2)/10)+(($Num*2)%10)) : $Num;
} $CheckByte %= 10;
if ($CheckByte !== 0) {
$CheckByte = 10-$CheckByte;
if (($NumHashLength % 2) === 1) {
if (($CheckByte % 2) === 1) {
$CheckByte += 9; }
$CheckByte >>= 1; }
}
return '7'.$CheckByte.$NumHashString;
}
public static function hashmixIE ($url) {
$c1 = GTB_Helper::strToNum($url, 0x1505, 0x21);
$c2 = GTB_Helper::strToNum($url, 0, 0x1003f);
$c1 = GTB_Helper::unsignedRightShift($c1, 2);
$c1 = (GTB_Helper::unsignedRightShift($c1, 4) & 0x3ffffc0) | ($c1 & 0x3f);
$c1 = (GTB_Helper::unsignedRightShift($c1, 4) & 0x3ffc00) | ($c1 & 0x3ff);
$c1 = (GTB_Helper::unsignedRightShift($c1, 4) & 0x3c000) | ($c1 & 0x3fff);
$t1 = (GTB_Helper::leftShift32( ( GTB_Helper::leftShift32( ($c1 & 0x3c0), 4) | ($c1 & 0x3c)), 2)) | ($c2 & 0xf0f);
$t2 = (GTB_Helper::leftShift32( ( GTB_Helper::leftShift32( ($c1 & 0xffffc000), 4) | ($c1 & 0x3c00)), 0xa)) | ($c2 & 0xf0f0000);
return GTB_Helper::mask32(($t1 | $t2));
}
}
class GTB_Helper extends GTB_PageRank {
public static function leftShift32($x, $y) {
$n = $x << $y;
if (PHP_INT_MAX != 0x80000000) {
$n = -(~($n & 0x00000000FFFFFFFF) + 1);
} return (int)$n;
}
public static function unsignedRightShift($x, $y) {
if (0xffffffff < $x || -0xffffffff > $x) {
$x = GTB_Helper::_fmod($x, 0xffffffff + 1);
}
if (0x7fffffff < $x) {
$x -= 0xffffffff + 1.0;
} elseif (-0x80000000 > $x) {
$x += 0xffffffff + 1.0;
}
if (0 > $x) {
$x &= 0x7fffffff;
$x >>= $y;
$x |= 1 << (31 - $y);
} else {
$x >>= $y;
}
return (int)$x;
}
public static function mask32($a) {
if (PHP_INT_MAX != 0x0000000080000000) {
$a = -(~($a & 0x00000000FFFFFFFF) + 1);
} return (int)$a;
}
public static function hexEncodeU32 ($a) {
$b = self::toHex8(self::unsignedRightShift($a, 24));
$b .= self::toHex8(self::unsignedRightShift($a, 16) & 255);
$b .= self::toHex8(self::unsignedRightShift($a, 8) & 255);
return $b . self::toHex8($a & 255);
}
public static function toHex8 ($a) {
return ($a < 16 ? "0" : "") . dechex($a);
}
public static function charCodeAt($a, $b) {
$a = mb_convert_encoding($a,"UCS-4BE","UTF-8");
$c = unpack("N", mb_substr($a,$b,1,"UCS-4BE"));
return $c[1];
}
public static function strOrds($a) {
$b = array();
$a = mb_convert_encoding($a,"UCS-4BE","UTF-8");
for ($i=0; $i<mb_strlen($a,"UCS-4BE"); $i++) {
$c = unpack("N", mb_substr($a,$i,1,"UCS-4BE"));
$b[] = $c[1]; }
return $b;
}
public static function c32to8bit($arr32) {
for($i=0; $i<sizeof($arr32); $i++) {
for ($bitOrder=$i*4; $bitOrder<=$i*4+3; $bitOrder++) {
$arr8[$bitOrder] = $arr32[$i] & 255;
$arr32[$i] = self::unsignedRightShift($arr32[$i], 8); }
} return $arr8;
}
public static function strToNum ($str, $c, $k) {
$int32unit = 4294967296;
for ($i=0; $i<strlen($str); $i++) {
$c *= $k;
if ($c >= $int32unit) {
$c = ($c - $int32unit * (int)($c / $int32unit));
$c = ($c < 0x0000000080000000) ? ($c + $int32unit) : $c;
}
$c += GTB_Helper::charCodeAt($str, $i);
} return $c;
}
public static function _fmod($x, $y) {
$i = floor( $x / $y );
return (int)( $x - $i * $y );
}
public static function array_rand_val($a, $n=1) {
shuffle($a);
$b = array();
for ($i=0; $i<$n; $i++) {
$b[] = $a[$i]; }
return $n==1 ? $b[0] : $b;
}
public static function array_rand_val_assoc($a, $n=1) {
$k = array_keys($a);
shuffle($k);
$b = array();
for ($i=0; $i<$n; $i++) {
$b[$k[$i]] = $a[$k[$i]]; }
return $b;
}
public static function _json_decode($a) {
if (TRUE !== function_exists('json_decode')) {
$m = array();
preg_match_all('#"(.*?)"#si', $a, $m);
return (isset($m[1]) && sizeof($m[1])>0) ? $m[1] : FALSE;
} else {
return json_decode($a);
}
}
}
class GTB_Request extends GTB_PageRank {
public static function _get($url) {
if (!function_exists('curl_init')) {
return self::GetWithoutCurl($url); }
else {
return self::GetWithCurl($url); }
}
private static function GetWithCurl($url) {
$ch = curl_init($url);
curl_setopt($ch,CURLOPT_USERAGENT,'' );
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,5);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_MAXREDIRS,2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$str = curl_exec($ch);
curl_close($ch);
return $str;
}
}
class GTB_Exception extends Exception {
static function noUrl() {
header("Content-Type: text/plain;");
throw new GTB_Exception("No Query URL defined! Use `new GTB_PageRank('http://www.domain.tld')` to create a new GTB_PageRank object.");
exit(0);
}
static function tryAgain() {
header("Content-Type: text/plain;");
throw new GTB_Exception("Error. Please try again!");
exit(0);
}
}
if (!isset($_REQUEST['d'])) die("ERR_NO_DOM\n");
try {
$url = $_REQUEST['d'];
$gtb = new GTB_PageRank(GTB_PageRank::getUrl($url));
$pagerank = $gtb->getPageRank();
echo "The current Google PageRank for {$url} is {$pagerank}.\n";
} catch (Exception $e) {
echo 'Caught SEOstatsException: ' . $e->getMessage();
}
?>