mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-05-20 08:26:59 -04:00
Reorganized the packets to follow the format the map server follows.
This commit is contained in:
1 parent
8c73f6e926
commit
23dcc1dafe
14 files changed
+141
-103
No files matched your search
@@ -71,17 +71,19 @@
|
||||
<Compile Include="dataobjects\World.cs" />
|
||||
<Compile Include="PacketProcessor.cs" />
|
||||
<Compile Include="packets\BasePacket.cs" />
|
||||
<Compile Include="packets\CharaCreatorPacket.cs" />
|
||||
<Compile Include="packets\RetainerListPacket.cs" />
|
||||
<Compile Include="packets\ErrorPacket.cs" />
|
||||
<Compile Include="packets\receive\CharacterModifyPacket.cs" />
|
||||
<Compile Include="packets\receive\SelectCharacterPacket.cs" />
|
||||
<Compile Include="packets\receive\SessionPacket.cs" />
|
||||
<Compile Include="packets\send\CharaCreatorPacket.cs" />
|
||||
<Compile Include="packets\send\RetainerListPacket.cs" />
|
||||
<Compile Include="packets\send\ErrorPacket.cs" />
|
||||
<Compile Include="packets\HardCoded_Packets.cs" />
|
||||
<Compile Include="packets\PacketStructs.cs" />
|
||||
<Compile Include="packets\SelectCharacterConfirmPacket.cs" />
|
||||
<Compile Include="packets\send\SelectCharacterConfirmPacket.cs" />
|
||||
<Compile Include="packets\SubPacket.cs" />
|
||||
<Compile Include="packets\CharacterListPacket.cs" />
|
||||
<Compile Include="packets\ImportListPacket.cs" />
|
||||
<Compile Include="packets\AccountListPacket.cs" />
|
||||
<Compile Include="packets\WorldListPacket.cs" />
|
||||
<Compile Include="packets\send\CharacterListPacket.cs" />
|
||||
<Compile Include="packets\send\ImportListPacket.cs" />
|
||||
<Compile Include="packets\send\AccountListPacket.cs" />
|
||||
<Compile Include="packets\send\WorldListPacket.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Server.cs" />
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using FFXIVClassic_Lobby_Server.common;
|
||||
using FFXIVClassic_Lobby_Server.dataobjects;
|
||||
using FFXIVClassic_Lobby_Server.packets;
|
||||
using FFXIVClassic_Lobby_Server.packets.receive;
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -79,7 +80,7 @@ namespace FFXIVClassic_Lobby_Server
|
||||
|
||||
private void ProcessSessionAcknowledgement(ClientConnection client, SubPacket packet)
|
||||
{
|
||||
PacketStructs.SessionPacket sessionPacket = PacketStructs.toSessionStruct(packet.data);
|
||||
SessionPacket sessionPacket = new SessionPacket(packet.data);
|
||||
String clientVersion = sessionPacket.version;
|
||||
|
||||
Log.info(String.Format("Got acknowledgment for secure session."));
|
||||
@@ -127,7 +128,7 @@ namespace FFXIVClassic_Lobby_Server
|
||||
|
||||
private void ProcessSelectCharacter(ClientConnection client, SubPacket packet)
|
||||
{
|
||||
FFXIVClassic_Lobby_Server.packets.PacketStructs.SelectCharRequestPacket selectCharRequest = PacketStructs.toSelectCharRequestStruct(packet.data);
|
||||
SelectCharacterPacket selectCharRequest = new SelectCharacterPacket(packet.data);
|
||||
|
||||
Log.info(String.Format("{0} => Select character id {1}", client.currentUserId == 0 ? client.getAddress() : "User " + client.currentUserId, selectCharRequest.characterId));
|
||||
|
||||
@@ -156,8 +157,7 @@ namespace FFXIVClassic_Lobby_Server
|
||||
|
||||
private void ProcessModifyCharacter(ClientConnection client, SubPacket packet)
|
||||
{
|
||||
|
||||
PacketStructs.CharacterRequestPacket charaReq = PacketStructs.toCharacterRequestStruct(packet.data);
|
||||
CharacterModifyPacket charaReq = new CharacterModifyPacket(packet.data);
|
||||
var slot = charaReq.slot;
|
||||
var code = charaReq.command;
|
||||
var name = charaReq.characterName;
|
||||
|
||||
@@ -1,90 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFXIVClassic_Lobby_Server.packets
|
||||
{
|
||||
class PacketStructs
|
||||
{
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
public unsafe struct SessionPacket
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
public UInt64 sequence;
|
||||
[FieldOffset(0x10)]
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x40)]
|
||||
public String session;
|
||||
[FieldOffset(0x50)]
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
|
||||
public String version;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public unsafe struct CharacterRequestPacket
|
||||
{
|
||||
public UInt64 sequence;
|
||||
public uint characterId;
|
||||
public uint personType;
|
||||
public byte slot;
|
||||
public byte command;
|
||||
public ushort worldId;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x20)]
|
||||
public String characterName;
|
||||
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 0x190)]
|
||||
public String characterInfoEncoded;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public unsafe struct SelectCharRequestPacket
|
||||
{
|
||||
public UInt64 sequence;
|
||||
public uint characterId;
|
||||
public uint unknownId;
|
||||
public UInt64 ticket;
|
||||
}
|
||||
|
||||
public static unsafe CharacterRequestPacket toCharacterRequestStruct(byte[] bytes)
|
||||
{
|
||||
fixed (byte* pdata = &bytes[0])
|
||||
{
|
||||
return (CharacterRequestPacket)Marshal.PtrToStructure(new IntPtr(pdata), typeof(CharacterRequestPacket));
|
||||
}
|
||||
}
|
||||
|
||||
public static unsafe SessionPacket toSessionStruct(byte[] bytes)
|
||||
{
|
||||
fixed (byte* pdata = &bytes[0])
|
||||
{
|
||||
return (SessionPacket)Marshal.PtrToStructure(new IntPtr(pdata), typeof(SessionPacket));
|
||||
}
|
||||
}
|
||||
|
||||
public static unsafe SelectCharRequestPacket toSelectCharRequestStruct(byte[] bytes)
|
||||
{
|
||||
fixed (byte* pdata = &bytes[0])
|
||||
{
|
||||
return (SelectCharRequestPacket)Marshal.PtrToStructure(new IntPtr(pdata), typeof(SelectCharRequestPacket));
|
||||
}
|
||||
}
|
||||
|
||||
public static byte[] StructureToByteArray(object obj)
|
||||
{
|
||||
int len = Marshal.SizeOf(obj);
|
||||
|
||||
byte[] arr = new byte[len];
|
||||
|
||||
IntPtr ptr = Marshal.AllocHGlobal(len);
|
||||
|
||||
Marshal.StructureToPtr(obj, ptr, true);
|
||||
|
||||
Marshal.Copy(ptr, arr, 0, len);
|
||||
|
||||
Marshal.FreeHGlobal(ptr);
|
||||
|
||||
return arr;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFXIVClassic_Lobby_Server.packets.receive
|
||||
{
|
||||
class CharacterModifyPacket
|
||||
{
|
||||
public UInt64 sequence;
|
||||
public uint characterId;
|
||||
public uint personType;
|
||||
public byte slot;
|
||||
public byte command;
|
||||
public ushort worldId;
|
||||
public String characterName;
|
||||
public String characterInfoEncoded;
|
||||
|
||||
public bool invalidPacket = false;
|
||||
|
||||
public CharacterModifyPacket(byte[] data)
|
||||
{
|
||||
using (MemoryStream mem = new MemoryStream(data))
|
||||
{
|
||||
using (BinaryReader binReader = new BinaryReader(mem))
|
||||
{
|
||||
try
|
||||
{
|
||||
sequence = binReader.ReadUInt64();
|
||||
characterId = binReader.ReadUInt32();
|
||||
personType = binReader.ReadUInt32();
|
||||
slot = binReader.ReadByte();
|
||||
command = binReader.ReadByte();
|
||||
worldId = binReader.ReadUInt16();
|
||||
|
||||
characterName = Encoding.ASCII.GetString(binReader.ReadBytes(0x20)).Trim(new[] { '\0' });
|
||||
characterInfoEncoded = Encoding.ASCII.GetString(binReader.ReadBytes(0x190)).Trim(new[] { '\0' });
|
||||
}
|
||||
catch (Exception){
|
||||
invalidPacket = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFXIVClassic_Lobby_Server.packets.receive
|
||||
{
|
||||
class SelectCharacterPacket
|
||||
{
|
||||
public UInt64 sequence;
|
||||
public uint characterId;
|
||||
public uint unknownId;
|
||||
public UInt64 ticket;
|
||||
|
||||
public bool invalidPacket = false;
|
||||
|
||||
public SelectCharacterPacket(byte[] data)
|
||||
{
|
||||
using (MemoryStream mem = new MemoryStream(data))
|
||||
{
|
||||
using (BinaryReader binReader = new BinaryReader(mem))
|
||||
{
|
||||
try
|
||||
{
|
||||
sequence = binReader.ReadUInt64();
|
||||
characterId = binReader.ReadUInt32();
|
||||
unknownId = binReader.ReadUInt32();
|
||||
ticket = binReader.ReadUInt64();
|
||||
}
|
||||
catch (Exception){
|
||||
invalidPacket = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFXIVClassic_Lobby_Server.packets.receive
|
||||
{
|
||||
class SessionPacket
|
||||
{
|
||||
public bool invalidPacket = false;
|
||||
public UInt64 sequence;
|
||||
public String session;
|
||||
public String version;
|
||||
|
||||
public SessionPacket(byte[] data)
|
||||
{
|
||||
using (MemoryStream mem = new MemoryStream(data))
|
||||
{
|
||||
using (BinaryReader binReader = new BinaryReader(mem))
|
||||
{
|
||||
try
|
||||
{
|
||||
sequence = binReader.ReadUInt64();
|
||||
binReader.ReadUInt32();
|
||||
binReader.ReadUInt32();
|
||||
session = Encoding.ASCII.GetString(binReader.ReadBytes(0x40)).Trim(new[] { '\0' });
|
||||
version = Encoding.ASCII.GetString(binReader.ReadBytes(0x20)).Trim(new[] { '\0' });
|
||||
}
|
||||
catch (Exception){
|
||||
invalidPacket = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Reference in new issue
Block a user