mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-25 22:17:45 +00:00
add packet hex dump, moved gm1handler to use struct inpacket
This commit is contained in:
parent
4897481309
commit
3e4582560d
5 changed files with 26 additions and 12 deletions
|
@ -137,10 +137,11 @@ struct FFXIVARR_PACKET_RAW
|
|||
*/
|
||||
enum FFXIVARR_SEGMENT_TYPE
|
||||
{
|
||||
SEGMENTTYPE_SESSIONINIT = 1,
|
||||
SEGMENTTYPE_IPC = 3,
|
||||
SEGMENTTYPE_RESPONSE = 7,
|
||||
SEGMENTTYPE_KEEPALIVE = 8,
|
||||
SEGMENTTYPE_ENCRYPTIONHANDSHAKE = 9,
|
||||
SEGMENTTYPE_KEEPALIVE = 7,
|
||||
//SEGMENTTYPE_RESPONSE = 8,
|
||||
SEGMENTTYPE_ENCRYPTIONINIT = 9,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,6 +14,12 @@
|
|||
#include "CommonNetwork.h"
|
||||
#include "PacketDef/Ipcs.h"
|
||||
|
||||
#include <Framework.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Util/Util.h>
|
||||
|
||||
extern Core::Framework g_fw;
|
||||
|
||||
namespace Core {
|
||||
namespace Network {
|
||||
namespace Packets {
|
||||
|
@ -186,6 +192,13 @@ public:
|
|||
memcpy( &m_segHdr, &rawPacket.segHdr, sizeof( FFXIVARR_PACKET_SEGMENT_HEADER ) );
|
||||
memcpy( &m_data, &rawPacket.data[0] + ipcHdrSize, copySize );
|
||||
|
||||
auto log = g_fw.get< Core::Logger >();
|
||||
if( log )
|
||||
{
|
||||
log->debug( "rawpacket size" + std::to_string( rawPacket.segHdr.size ) + "\n" + Util::binaryToHexDump( const_cast< uint8_t* >( &rawPacket.data[0] ), rawPacket.segHdr.size ) );
|
||||
log->debug( "T size " + std::to_string( sizeof( T ) ) + "\n" + Util::binaryToHexDump( reinterpret_cast< uint8_t* >( &m_data ), sizeof( T ) ) );
|
||||
}
|
||||
|
||||
memset( &m_ipcHdr, 0, ipcHdrSize );
|
||||
m_ipcHdr.type = static_cast< ServerZoneIpcType >( m_data._ServerIpcType );
|
||||
}
|
||||
|
|
|
@ -14,8 +14,8 @@ struct FFXIVIpcGmCommand1 : FFXIVIpcBasePacket< GMCommand1 >
|
|||
/* 0000 */ uint32_t commandId;
|
||||
/* 0004 */ uint32_t param1;
|
||||
/* 0008 */ uint32_t param2;
|
||||
/* 000C */ char unknown_C[28];
|
||||
/* 0028 */ uint32_t param3;
|
||||
/* 000C */ uint8_t unknown_C[0xC];
|
||||
/* 0018 */ uint32_t param3;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -483,7 +483,7 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets:
|
|||
|
||||
switch( inPacket.segHdr.type )
|
||||
{
|
||||
case 9: // Encryption init
|
||||
case SEGMENTTYPE_ENCRYPTIONINIT: // Encryption init
|
||||
{
|
||||
std::string key_phrase( reinterpret_cast< char* >( &inPacket.data[36] ) );
|
||||
generateEncryptionKey( *reinterpret_cast< uint32_t* >( &inPacket.data[100] ), key_phrase );
|
||||
|
@ -501,13 +501,13 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets:
|
|||
}
|
||||
|
||||
|
||||
case 3: // game packet
|
||||
case SEGMENTTYPE_IPC: // game packet
|
||||
{
|
||||
g_log.info( "GamePacket [" + std::to_string( inPacket.segHdr.type ) + "]" );
|
||||
handleGamePacket( inPacket );
|
||||
break;
|
||||
}
|
||||
case 7: // keep alive
|
||||
case SEGMENTTYPE_KEEPALIVE: // keep alive
|
||||
{
|
||||
uint32_t id = *reinterpret_cast< uint32_t* >( &inPacket.data[0] );
|
||||
uint32_t timeStamp = *reinterpret_cast< uint32_t* >( &inPacket.data[4] );
|
||||
|
|
|
@ -211,7 +211,7 @@ void Core::Network::GameConnection::handleZonePacket( Core::Network::Packets::FF
|
|||
pLog->debug( sessionStr + " Undefined Zone IPC : Unknown ( " +
|
||||
boost::str( boost::format( "%|04X|" ) %
|
||||
static_cast< uint32_t >( opcode ) ) + " )" );
|
||||
//pLog->debug( "\n" + pPacket.toString() );
|
||||
pLog->debug( "Dump:\n" + Util::binaryToHexDump( const_cast< uint8_t* >( &pPacket.data[0] ), pPacket.segHdr.size ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -381,7 +381,7 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets:
|
|||
{
|
||||
switch( inPacket.segHdr.type )
|
||||
{
|
||||
case 1:
|
||||
case SEGMENTTYPE_SESSIONINIT:
|
||||
{
|
||||
char* id = ( char* ) &( inPacket.data[4] );
|
||||
uint32_t playerId = boost::lexical_cast< uint32_t >( id );
|
||||
|
@ -445,12 +445,12 @@ void Core::Network::GameConnection::handlePackets( const Core::Network::Packets:
|
|||
break;
|
||||
|
||||
}
|
||||
case 3: // game packet
|
||||
case SEGMENTTYPE_IPC: // game packet
|
||||
{
|
||||
queueInPacket( inPacket );
|
||||
break;
|
||||
}
|
||||
case 7: // keep alive
|
||||
case SEGMENTTYPE_KEEPALIVE: // keep alive
|
||||
{
|
||||
uint32_t id = *( uint32_t* ) &inPacket.data[0];
|
||||
uint32_t timeStamp = *( uint32_t* ) &inPacket.data[4];
|
||||
|
|
Loading…
Add table
Reference in a new issue