using System; using FilterAPI; using FilterAPI.Networking; using FilterCentralV2.LocalNetworking; namespace FilterCentralV2.LocalHandlers { internal class Local2Handle { [LocalPacketHandler(NETCMD.LOCAL_NAME)] public static void HandleName(LocalClient ClientSocket, Packet ClientPacket) { String FancyName = null; String Name = ClientPacket.PacketReader.ReadString(); if (Name.StartsWith("Filter")) { Name = Name.Substring(6); } else return; switch(Name) { case "Login": Program.LoginClient = ClientSocket; FancyName = Name; break; case "Manager": Program.ManagerClient = ClientSocket; FancyName = Name; break; case "Rest": Program.RestClient = ClientSocket; FancyName = Name; break; case "Launcher": Program.LauncherClient = ClientSocket; FancyName = Name; break; default: // fallback, and Zone (since Zone could be Zone00, 01, etc) if (Name.StartsWith("Zone")) { String ZoneID = Name.TrimStart("Zone".ToCharArray()); if (Program.ZoneClients.ContainsKey(ZoneID)) { Program.ZoneClients[ZoneID].Dispose(); Program.ZoneClients.Remove(ZoneID); } Program.ZoneClients.Add(ZoneID, ClientSocket); FancyName = $"Zone{ZoneID}"; } else Program.WriteLine(ConsoleColor.DarkRed, $"Unrecognized local client \"{Name}\" attempted connection from {ClientSocket.CEP}"); break; } Program.WriteLine(ConsoleColor.Magenta, $"[Central]: Assigned {Name} connection at {ClientSocket.CEP}"); using (var ClientPacketRewrite = new Packet(NETCMD.LOCAL_NAME_OK)) { ClientSocket.SendPacket(ClientPacketRewrite); } } [LocalPacketHandler(NETCMD.LOCAL_CONS_TEXT)] public static void HandleConsoleText(LocalClient ClientSocket, Packet ClientPacket) { Byte ConsoleColorID = ClientPacket.PacketReader.ReadByte(); String ServiceName = ClientPacket.PacketReader.ReadString(); String Text = ClientPacket.PacketReader.ReadString(); var cColor = ConsoleColorConverter.IDToConsoleColor(ConsoleColorID); Program.WriteLine(cColor, $"[{ServiceName}]: {Text}"); } } }