using System; using System.Linq; using Filter.Networking.Instances; using Filter.Networking.Zone; using System.Threading; namespace Filter.Handlers.Zone { internal class Zone6Handle { [ZonePacketHandler(6, 10)] public static void HandleZoneIP(ZoneServer ServerSocket, Packet ServerPacket) { if (ServerSocket.IsConnected == 0) { Byte[] Unk00 = new Byte[10]; String IPAddress = ""; Int16 Port = 0; Byte[] Unk01 = new Byte[3]; ServerPacket.ReadBytes(Unk00); ServerPacket.ReadString(out IPAddress, 16); ServerPacket.ReadInt16(out Port); ServerPacket.ReadBytes(Unk01); ServerPacket.Dispose(); ServerPacket = new Packet(6, 10); ServerPacket.WriteBytes(Unk00); ServerPacket.WriteString("164.132.202.69", 16); ServerPacket.WriteInt16(Port); ServerPacket.WriteBytes(Unk01); ServerSocket.Client.SendPacket(ServerPacket); } ServerPacket.Dispose(); } [ZonePacketHandler(Zone6TypeClient.SHNHashes)] public static void HandleSHNHashes(ZoneClient ClientSocket, Packet ClientPacket) { if (ClientSocket.IsConnected != 0) { ClientPacket.Dispose(); return; } Byte[] Unwanted = new Byte[2]; if (!ClientPacket.ReadBytes(Unwanted, 2)) { ClientSocket.Disconnect(); } else { String CharacterName; if (!ClientPacket.ReadString(out CharacterName, 16)) { ClientSocket.Disconnect(); } else if ((ClientSocket.Manager = Program.ManagerLoggedIn.Values.Where(Character => Character.CharacterName != String.Empty).Where(CharacterN => CharacterN.CharacterName == CharacterName).FirstOrDefault()) == null) { ClientSocket.Disconnect(); } else { ClientSocket.Server.SendPacket(ClientPacket); } } ClientPacket.Dispose(); } } }