mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-21 16:24:05 +00:00
New packet
This commit is contained in:
parent
60c80110d3
commit
14e6fcb24e
@ -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;
|
||||
|
@ -81,19 +81,21 @@ $pstruct = array(
|
||||
),
|
||||
|
||||
0x84 => array(
|
||||
"ubyte",
|
||||
"ubyte",
|
||||
"special1",
|
||||
/*10,
|
||||
8,
|
||||
"double",
|
||||
"byte", */
|
||||
),
|
||||
|
||||
0x8c => array(
|
||||
"ubyte",
|
||||
"ubyte",
|
||||
"special1",
|
||||
),
|
||||
|
||||
0xa0 => array(
|
||||
6,
|
||||
),
|
||||
|
||||
0xc0 => array(
|
||||
6,
|
||||
),
|
||||
|
@ -36,5 +36,6 @@ $packetName = array(
|
||||
0x1d => "ID_ADVERTISE_SYSTEM", //RakNet
|
||||
0x84 => "ID_RESERVED_7", //Minecraft Implementation
|
||||
0x8c => "Unknown", //Minecraft Implementation
|
||||
0xa0 => "Unknown", //Minecraft Implementation
|
||||
0xc0 => "Unknown", //Minecraft Implementation
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user