<?php
include 'YMSG.class.php';
$ymsg = new YMSG();
$uid = ""; // BOT ID
$pwd = ""; // BOT Password
$target = ""; // Target
if(isset($_GET['target']))
{
$target = $_GET['target'];
// Start time
$time_start = microtime();
$opi = file_get_contents('http://opi.yahoo.com/online?m&u='.$target);
$stat = substr($opi, strpos($opi, 'is') + 3);
if($stat == 'ONLINE')
{
// End time
$time_end = microtime();
$time = $ymsg->timeFormat($time_start, $time_end);
//print $target." is ONLINE";
print '{"status":"ONLINE","time":"'.$time.'","error":""}';
}
else
{
$server = file_get_contents('http://vcs1.msg.yahoo.com/capacity');
$server = substr($server, strpos($server, "CS_IP_ADDRESS=") + strlen("CS_IP_ADDRESS="));
$fp = fsockopen($server, 80, $errno, $errstr, 2) or die('Cannot connect!!!');
if ($fp != null)
{
stream_set_timeout($fp, 1);
}
else
{
// End time
$time_end = microtime();
$time = $ymsg->timeFormat($time_start, $time_end);
print '{"status":"ERROR","time":"'.$time.'","error":"Server is busy"}';
return false;
}
// Check status packet
$inviChk = $ymsg->normalCheck($uid, $target);
// Preconnect
$preChk = $ymsg->preCheck();
fwrite($fp, $preChk);
$chkStr = fread($fp, 20);
// Open connection success
if ($ymsg->getPacketType($chkStr) == 'L')
{
#print 'Precheck success!!!<br/>';
$chkStr = $ymsg->getChallenge($uid);
fwrite($fp, $chkStr);
$chlStr = fread($fp, 150);
}
// Request challenge success
if ($ymsg->getPacketType($chkStr) == 'W')
{
#print 'Challenge Succes!!!<br/>';
$challenge = $ymsg->parseToken($chlStr, "94".$ymsg->sepStr, chr(0xC0));
// Saving cookie to file
if (!file_exists('cookie.txt'))
{
$file = fopen('cookie.txt', 'w');
$time = time();
// Get and Parse Login Cookie Info
$info = $ymsg->getLoginInfo($uid, $pwd, $challenge);
$crumb = $ymsg->parseToken($info, "crumb=", chr(0xD));
$T = $ymsg->parseToken($info, "T=", chr(0xD));
$Y = $ymsg->parseToken($info, "Y=", chr(0xD));
$data = $time."#".trim($crumb)."#".trim($T)."#".trim($Y);
fwrite($file, $data);
fclose($file);
}
else
{
$filename = 'cookie.txt';
$now = time();
// Reading cookie file
$file = fopen('cookie.txt', 'r');
$info = fread($file, filesize($filename));
$info = split('#', $info);
$time = $info[0];
// Cookie is alive
if (($now - $time) < 86400)
{
$crumb = $info[1];
$T = $info[2];
$Y = $info[3];
}
else
{
$file = fopen('cookie.txt', 'w');
$time = time();
// Get and Parse Login Cookie Info
$info = $ymsg->getLoginInfo($uid, $pwd, $challenge);
$crumb = $ymsg->parseToken($info, "crumb=", chr(0xD));
$T = $ymsg->parseToken($info, "T=", chr(0xD));
$Y = $ymsg->parseToken($info, "Y=", chr(0xD));
$data = $time."#".trim($crumb)."#".trim($T)."#".trim($Y);
fwrite($file, $data);
fclose($file);
}
}
$loginStr = $ymsg->Login($uid, $challenge, $Y, $T, $crumb, false);
// Send Login Packet
fwrite($fp, $loginStr);
$loginRes = fread($fp, 1024);
}
// Load account info, friend list, deny list, etc...
if ($ymsg->getPacketType($loginRes) == 'U')
{
// Account info: Friend List, Ignore List, etc...
$nextData = '';
do {
$nextData = fread($fp, 500);
} while (strlen($nextData) > 0);
}
// Login complete
// Start checking status when login complete
fwrite($fp, $inviChk);
// End time
$time_end = microtime();
$time = $ymsg->timeFormat($time_start, $time_end);
$result = fread($fp, 1024);
// Return status
if (strlen($result) > 0)
{
if ($ymsg->getPacketType($result) == chr(0xBE))
{
//print $target." is INVISIBLE";
print '{"status":"INVISIBLE","time":"'.$time.'","error":""}';
}
else
{
print '{"status":"ERROR","time":"'.$time.'","error":"Server is busy"}';
}
}
else
{
//print $target." is OFFLINE";
print '{"status":"OFFLINE","time":"'.$time.'","error":""}';
}
}
}
else
{
// print "There's an error";
print '{"status":"error","ERROR":"The ID is not valid."}';
}
?>
|