1
Fork 0
mirror of https://bitbucket.org/Ioncannon/project-meteor-server.git synced 2025-04-24 05:37:46 +00:00

Added all Console writes to the log. Put in "Max chars" for character list.

This commit is contained in:
Filip Maj 2015-09-11 18:57:22 -04:00
parent e90a25d0ab
commit d6ec5e7240
3 changed files with 71 additions and 21 deletions

View file

@ -103,7 +103,7 @@ namespace FFXIVClassic_Lobby_Server
case 0x0F:
//Mod Retainers
default:
Debug.WriteLine("Unknown command 0x{0:X} received.", subpacket.header.opcode);
Log.debug(String.Format("Unknown command 0x{0:X} received.", subpacket.header.opcode));
break;
}
}
@ -117,7 +117,7 @@ namespace FFXIVClassic_Lobby_Server
byte[] blowfishKey = { 0xB4, 0xEE, 0x3F, 0x6C, 0x01, 0x6F, 0x5B, 0xD9, 0x71, 0x50, 0x0D, 0xB1, 0x85, 0xA2, 0xAB, 0x43};
client.blowfish = new Blowfish(blowfishKey);
Console.WriteLine("Received encryption key: 0x{0:X}", clientTime);
Log.info(String.Format("Received encryption key: 0x{0:X}", clientTime));
//Respond with acknowledgment
BasePacket outgoingPacket = new BasePacket(HardCoded_Packets.g_secureConnectionAcknowledgment);
@ -131,9 +131,9 @@ namespace FFXIVClassic_Lobby_Server
String sessionId = sessionPacket.session;
String clientVersion = sessionPacket.version;
Console.WriteLine("Got acknowledgment for secure session.");
Console.WriteLine("SESSION ID: {0}", sessionId);
Console.WriteLine("CLIENT VERSION: {0}", clientVersion);
Log.info(String.Format("Got acknowledgment for secure session."));
Log.info(String.Format("SESSION ID: {0}", sessionId));
Log.info(String.Format("CLIENT VERSION: {0}", clientVersion));
uint userId = Database.getUserIdFromSession(sessionId);
client.currentUserId = userId;
@ -141,10 +141,10 @@ namespace FFXIVClassic_Lobby_Server
if (userId == 0)
{
//client.disconnect();
Console.WriteLine("Invalid session, kicking...");
Log.info(String.Format("Invalid session, kicking..."));
}
Console.WriteLine("USER ID: {0}", userId);
Log.info(String.Format("USER ID: {0}", userId));
BasePacket outgoingPacket = new BasePacket("./packets/loginAck.bin");
BasePacket.encryptPacket(client.blowfish, outgoingPacket);
client.queuePacket(outgoingPacket);
@ -152,12 +152,18 @@ namespace FFXIVClassic_Lobby_Server
private void ProcessGetCharacters(ClientConnection client, SubPacket packet)
{
Console.WriteLine("{0} => Get characters", client.currentUserId == 0 ? client.getAddress() : "User " + client.currentUserId);
Log.info(String.Format("{0} => Get characters", client.currentUserId == 0 ? client.getAddress() : "User " + client.currentUserId));
sendWorldList(client, packet);
sendImportList(client, packet);
sendRetainerList(client, packet);
sendCharacterList(client, packet);
//sendCharacterList(client, packet);
//BasePacket outgoingPacket = new BasePacket("./packets/getCharsPacket.bin");
BasePacket outgoingPacket = new BasePacket("./packets/getChars_GOOD.bin");
BasePacket.encryptPacket(client.blowfish, outgoingPacket);
client.queuePacket(outgoingPacket);
}
@ -171,7 +177,7 @@ namespace FFXIVClassic_Lobby_Server
binReader.Close();
}
Console.WriteLine("{0} => Select character id {1}", client.currentUserId == 0 ? client.getAddress() : "User " + client.currentUserId, characterId);
Log.info(String.Format("{0} => Select character id {1}", client.currentUserId == 0 ? client.getAddress() : "User " + client.currentUserId, characterId));
String serverIp = "141.117.162.99";
ushort port = 54992;
@ -221,7 +227,7 @@ namespace FFXIVClassic_Lobby_Server
BasePacket.encryptPacket(client.blowfish, basePacket);
client.queuePacket(basePacket);
Console.WriteLine("User {0} => Error; invalid server id: \"{1}\"", client.currentUserId, worldId);
Log.info(String.Format("User {0} => Error; invalid server id: \"{1}\"", client.currentUserId, worldId));
return;
}
@ -325,9 +331,8 @@ namespace FFXIVClassic_Lobby_Server
{
List<Character> characterList = Database.getCharacters(client.currentUserId);
CharacterListPacket characterlistPacket = new CharacterListPacket(2, characterList);
CharacterListPacket characterlistPacket = new CharacterListPacket(2, characterList, 2);
List<SubPacket> subPackets = characterlistPacket.buildPackets();
subPackets[0].debugPrintSubPacket();
BasePacket basePacket = BasePacket.createPacket(subPackets, true, false);
BasePacket.encryptPacket(client.blowfish, basePacket);
client.queuePacket(basePacket);

View file

@ -47,7 +47,7 @@ namespace FFXIVClassic_Lobby_Server.common
public static void conn(String message)
{
Console.Write("[{0}]", DateTime.Now.ToString("dd/MMM HH:mm"));
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("[CONN] ");
Console.ForegroundColor = ConsoleColor.Gray;
Console.WriteLine(message);

View file

@ -14,12 +14,14 @@ namespace FFXIVClassic_Lobby_Server.packets
public const ushort MAXPERPACKET = 2;
private ulong sequence;
private ushort maxChars;
private List<Character> characterList;
public CharacterListPacket(ulong sequence, List<Character> characterList)
public CharacterListPacket(ulong sequence, List<Character> characterList, ushort maxChars)
{
this.sequence = sequence;
this.characterList = characterList;
this.maxChars = maxChars;
}
public List<SubPacket> buildPackets()
@ -36,14 +38,14 @@ namespace FFXIVClassic_Lobby_Server.packets
{
if (totalCount == 0 || characterCount % MAXPERPACKET == 0)
{
memStream = new MemoryStream(0x3D0);
memStream = new MemoryStream(0x3B0);
binWriter = new BinaryWriter(memStream);
//Write List Info
binWriter.Write((UInt64)sequence);
binWriter.Write(characterList.Count - totalCount <= MAXPERPACKET ? (byte)(characterList.Count) : (byte)0);
binWriter.Write(maxChars - totalCount <= MAXPERPACKET ? (byte)(maxChars + 1) : (byte)0);
//binWriter.Write((byte)1);
binWriter.Write(characterList.Count - totalCount <= MAXPERPACKET ? (UInt32)(characterList.Count - totalCount) : (UInt32)MAXPERPACKET);
binWriter.Write(maxChars - totalCount <= MAXPERPACKET ? (UInt32)(maxChars - totalCount) : (UInt32)MAXPERPACKET);
binWriter.Write((byte)0);
binWriter.Write((UInt16)0);
}
@ -89,10 +91,53 @@ namespace FFXIVClassic_Lobby_Server.packets
}
//If there is anything left that was missed or the list is empty
if (characterCount > 0 || characterList.Count == 0)
//Keep creating empty slots until done max characters
while (maxChars - totalCount > 0)
{
if (characterList.Count == 0)
if (characterCount % MAXPERPACKET == 0)
{
memStream = new MemoryStream(0x3D0);
binWriter = new BinaryWriter(memStream);
//Write List Info
binWriter.Write((UInt64)sequence);
binWriter.Write(maxChars - totalCount <= MAXPERPACKET ? (byte)(maxChars + 1) : (byte)0);
//binWriter.Write((byte)1);
binWriter.Write(maxChars - totalCount <= MAXPERPACKET ? (UInt32)(maxChars - totalCount) : (UInt32)MAXPERPACKET);
binWriter.Write((byte)0);
binWriter.Write((UInt16)0);
}
binWriter.Seek(0x10 + (0x1D0 * characterCount), SeekOrigin.Begin);
//Write Entries
binWriter.Write((uint)0); //???
binWriter.Write((uint)0); //Character Id
binWriter.Write((byte)(totalCount)); //Slot
binWriter.Write((byte)0); //Options (0x01: Service Account not active, 0x72: Change Chara Name)
binWriter.Write((ushort)0);
binWriter.Write((uint)0); //Logged out zone
characterCount++;
totalCount++;
//Send this chunk of character list
if (characterCount >= MAXPERPACKET)
{
byte[] data = memStream.GetBuffer();
binWriter.Dispose();
memStream.Dispose();
SubPacket subpacket = new SubPacket(OPCODE, 0xe0006868, 0xe0006868, data);
subPackets.Add(subpacket);
characterCount = 0;
}
}
//If there is anything left that was missed or the list is empty
if (characterCount > 0 || maxChars == 0)
{
if (maxChars == 0)
{
memStream = new MemoryStream(0x3D0);
binWriter = new BinaryWriter(memStream);