using System; using System.Net; using System.Threading; using System.Reflection; using System.Net.Sockets; using FilterAPI.Networking; namespace FilterBot.LoginNetworking { internal class LoginServer : Client, IDisposable { public Int32 nUserNo; public String sID; public String sToken; public FiestaCrypto Crypto; public LoginServer(Int32 NUN, String SID, String ST) : base(IPAddress.Parse(Program.Auth.ConfigValues["LoginBindIP"]), Convert.ToInt32(Program.Auth.ConfigValues["LoginConnectPort"]), false) { nUserNo = NUN; sID = SID; sToken = ST; } public override void Connected() { } public void SendPacket(Packet ClientPacket) { Byte[] PacketBuffer; ClientPacket.ToArray(Crypto, out PacketBuffer); Send(PacketBuffer); } public override void Received(Byte[] Buffer) { using (var ServerPacket = new Packet(Buffer)) { if (!ServerPacket.SetHeaderAndType()) { } else if (Program.LoginHandlers.HasHandler(ServerPacket.Header, ServerPacket.Type)) { try { MethodInfo PacketMethod = Program.LoginHandlers.GetHandler(ServerPacket.Header, ServerPacket.Type); Action PacketAction = Program.LoginHandlers.GetAction(PacketMethod, this, ServerPacket); PacketAction(); } catch (Exception Error) { Program.SendConsoleText(ConsoleColor.Red, Error.ToString()); } } } } public override void Disconnected() { } } }