mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-03 00:25:04 +00:00
New packet
This commit is contained in:
@ -79,7 +79,8 @@ class MinecraftInterface{
|
||||
}*/
|
||||
$struct = $this->getStruct($pid);
|
||||
if($struct === false){
|
||||
$p = "[".microtime(true)."] [SERVER->CLIENT]: Error, bad packet id 0x".Utils::strToHex(chr($pid)).PHP_EOL;
|
||||
console("[ERROR] Bad packet id 0x".Utils::strTohex(chr($pid)), true, true, 0);
|
||||
$p = "[".microtime(true)."] [".((($origin === "client" and $this->client === true) or ($origin === "server" and $this->client === false)) ? "CLIENT->SERVER":"SERVER->CLIENT")." ".$ip.":".$port."]: Error, bad packet id 0x".Utils::strTohex(chr($pid))." [lenght ".strlen($raw)."]".PHP_EOL;
|
||||
$p .= Utils::hexdump($data[0]);
|
||||
$p .= PHP_EOL;
|
||||
logg($p, "packets", true, 2);
|
||||
|
@ -27,7 +27,7 @@ the Free Software Foundation, either version 3 of the License, or
|
||||
|
||||
|
||||
class Session{
|
||||
protected $server, $serverID;
|
||||
protected $server, $serverID, $timeout, $eventID, $connected;
|
||||
var $clientID, $ip, $port;
|
||||
function __construct($server, $clientID, $ip, $port){
|
||||
$this->server = $server;
|
||||
@ -35,26 +35,46 @@ class Session{
|
||||
$this->ip = $ip;
|
||||
$this->port = $port;
|
||||
$this->serverID =& $this->server->serverID;
|
||||
$this->eventID = $this->server->event("onTick", array($this, "checkTimeout"));
|
||||
console("[DEBUG] New Session started with ".$ip.":".$port, true, true, 2);
|
||||
$this->connected = true;
|
||||
}
|
||||
|
||||
public function checkTimeout($time){
|
||||
if($time > $this->timeout){
|
||||
$this->close();
|
||||
}
|
||||
}
|
||||
|
||||
public function close(){
|
||||
$this->server->deleteEvent("onTick", $this->eventID);
|
||||
$this->connected = false;
|
||||
console("[DEBUG] Session with ".$this->ip.":".$this->port." closed due to timeout", true, true, 2);
|
||||
}
|
||||
|
||||
public function handle($pid, &$data){
|
||||
switch($pid){
|
||||
case 0x07:
|
||||
$this->send(0x08, array(
|
||||
MAGIC,
|
||||
$this->serverID,
|
||||
$this->port,
|
||||
$data[3],
|
||||
0,
|
||||
));
|
||||
break;
|
||||
case 0x84:
|
||||
$counter = $data[0];
|
||||
$this->send(0xc0, array(
|
||||
"\x00\x01\x01\x00\x00\x00",
|
||||
));
|
||||
break;
|
||||
if($this->connected === true){
|
||||
$this->timeout = microtime(true) + 25;
|
||||
switch($pid){
|
||||
case 0x07:
|
||||
$this->send(0x08, array(
|
||||
MAGIC,
|
||||
$this->serverID,
|
||||
$this->port,
|
||||
$data[3],
|
||||
0,
|
||||
));
|
||||
break;
|
||||
case 0x84:
|
||||
$counter = $data[0];
|
||||
/*$this->send(0xc0, array(
|
||||
"\x00\x01\x01\x00\x00\x00",
|
||||
));*/
|
||||
break;
|
||||
case 0x8c:
|
||||
$counter = $data[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,7 @@ class Utils{
|
||||
$c = (string) $c;
|
||||
for($i = 0; $i < 4; ++$i){
|
||||
$value ^= md5($i . $c . microtime(true), true);
|
||||
$value ^= substr(sha1($i . $c . microtime(true), true),$i,16);
|
||||
$value ^= substr(sha1($i . $c . microtime(true), true), $i,16);
|
||||
}
|
||||
}
|
||||
return $value;
|
||||
|
Reference in New Issue
Block a user