RakNetInfo

This commit is contained in:
Shoghi Cervantes 2014-02-06 15:19:15 +01:00
parent 5700235f80
commit 84cdc3bde1
2 changed files with 74 additions and 37 deletions

View File

@ -71,13 +71,16 @@ class MinecraftInterface{
}
private function parsePacket($buffer, $source, $port){
$pid = ord($buf{0});
$struct = $this->getStruct($pid);
if($struct === false){
$pid = ord($buffer{0});
if(RakNetInfo::isValid($pid)){
$packet = new RakNetParser($buffer);
@$packet->parse();
$this->data[] = array($pid, $packet->data, $buffer, $source, $port);
}else{
if(ServerAPI::request()->api->dhandle("server.unknownpacket", array(
"pid" => $pid,
"data" => array(),
"raw" => $buf,
"raw" => $buffer,
"ip" => $source,
"port" => $port
)) !== true){
@ -85,10 +88,6 @@ class MinecraftInterface{
}
return false;
}
$packet = new RakNetParser($buffer);
@$packet->parse();
$this->data[] = array($pid, $packet->data, $buffer, $source, $port);
return true;
}

View File

@ -19,41 +19,79 @@
*
*/
define("RAKNET_STRUCTURE", 5);
define("RAKNET_MAGIC", "\x00\xff\xff\x00\xfe\xfe\xfe\xfe\xfd\xfd\xfd\xfd\x12\x34\x56\x78");
class RakNetInfo{
const STRUCTURE = 5;
const MAGIC = "\x00\xff\xff\x00\xfe\xfe\xfe\xfe\xfd\xfd\xfd\xfd\x12\x34\x56\x78";
const UNCONNECTED_PING = 0x01;
const UNCONNECTED_PING_OPEN_CONNECTIONS = 0x02;
define("RAKNET_UNCONNECTED_PING", 0x01);
define("RAKNET_UNCONNECTED_PING_OPEN_CONNECTIONS", 0x02);
const OPEN_CONNECTION_REQUEST_1 = 0x05;
const OPEN_CONNECTION_REPLY_1 = 0x06;
const OPEN_CONNECTION_REQUEST_2 = 0x07;
const OPEN_CONNECTION_REPLY_2 = 0x08;
define("RAKNET_OPEN_CONNECTION_REQUEST_1", 0x05);
define("RAKNET_OPEN_CONNECTION_REPLY_1", 0x06);
define("RAKNET_OPEN_CONNECTION_REQUEST_2", 0x07);
define("RAKNET_OPEN_CONNECTION_REPLY_2", 0x08);
const INCOMPATIBLE_PROTOCOL_VERSION = 0x1a; //CHECK THIS
define("RAKNET_INCOMPATIBLE_PROTOCOL_VERSION", 0x1a); //CHECK THIS
const UNCONNECTED_PONG = 0x1c;
const ADVERTISE_SYSTEM = 0x1d;
define("RAKNET_UNCONNECTED_PONG", 0x1c);
define("RAKNET_ADVERTISE_SYSTEM", 0x1d);
const DATA_PACKET_0 = 0x80;
const DATA_PACKET_1 = 0x81;
const DATA_PACKET_2 = 0x82;
const DATA_PACKET_3 = 0x83;
const DATA_PACKET_4 = 0x84;
const DATA_PACKET_5 = 0x85;
const DATA_PACKET_6 = 0x86;
const DATA_PACKET_7 = 0x87;
const DATA_PACKET_8 = 0x88;
const DATA_PACKET_9 = 0x89;
const DATA_PACKET_A = 0x8a;
const DATA_PACKET_B = 0x8b;
const DATA_PACKET_C = 0x8c;
const DATA_PACKET_D = 0x8d;
const DATA_PACKET_E = 0x8e;
const DATA_PACKET_F = 0x8f;
define("RAKNET_DATA_PACKET_0", 0x80);
define("RAKNET_DATA_PACKET_1", 0x81);
define("RAKNET_DATA_PACKET_2", 0x82);
define("RAKNET_DATA_PACKET_3", 0x83);
define("RAKNET_DATA_PACKET_4", 0x84);
define("RAKNET_DATA_PACKET_5", 0x85);
define("RAKNET_DATA_PACKET_6", 0x86);
define("RAKNET_DATA_PACKET_7", 0x87);
define("RAKNET_DATA_PACKET_8", 0x88);
define("RAKNET_DATA_PACKET_9", 0x89);
define("RAKNET_DATA_PACKET_A", 0x8a);
define("RAKNET_DATA_PACKET_B", 0x8b);
define("RAKNET_DATA_PACKET_C", 0x8c);
define("RAKNET_DATA_PACKET_D", 0x8d);
define("RAKNET_DATA_PACKET_E", 0x8e);
define("RAKNET_DATA_PACKET_F", 0x8f);
const NACK = 0xa0;
const ACK = 0xc0;
define("RAKNET_NACK", 0xa0);
define("RAKNET_ACK", 0xc0);
public static function isRakNet($pid){
switch((int) $pid){
case UNCONNECTED_PING:
case UNCONNECTED_PING_OPEN_CONNECTIONS:
case OPEN_CONNECTION_REQUEST_1:
case OPEN_CONNECTION_REPLY_1:
case OPEN_CONNECTION_REQUEST_2:
case OPEN_CONNECTION_REPLY_2:
case INCOMPATIBLE_PROTOCOL_VERSION:
case UNCONNECTED_PONG:
case ADVERTISE_SYSTEM:
case DATA_PACKET_0:
case DATA_PACKET_1:
case DATA_PACKET_2:
case DATA_PACKET_3:
case DATA_PACKET_4:
case DATA_PACKET_5:
case DATA_PACKET_6:
case DATA_PACKET_7:
case DATA_PACKET_8:
case DATA_PACKET_9:
case DATA_PACKET_A:
case DATA_PACKET_B:
case DATA_PACKET_C:
case DATA_PACKET_D:
case DATA_PACKET_E:
case DATA_PACKET_F:
case NACK:
case ACK:
return true;
default:
return false;
}
}
}
class Protocol{
public static $raknet = array(