using Filter; using Filter.Networking.Instances; using Filter.Networking.IRC; using System; using System.Collections.Generic; namespace Filter.Handlers.IRC { internal class IRC1Handle { public IRC1Handle() { } [IRCPacketHandler(IRC1TypeServer.CheckString)] public static void HandleCheckString(IRCClient ClientSocket, Packet ClientPacket) { string str; if (ClientSocket.IsConnected != 0) { return; } if (ClientPacket.ReadString(out str)) { ClientSocket.Disconnect(); return; } int num = 1; while (num < Convert.ToInt32(Program.ConfigValues["IRC_Count"]) + 1) { if (Program.ConfigValues["IRC{0}_CheckString"] != str) { if (num == Convert.ToInt32(Program.ConfigValues["IRC_Count"]) + 1) { ClientSocket.Disconnect(); return; } num++; } else { ClientSocket.IRCID = num; break; } } if (Program.IRCConnections.ContainsKey(ClientSocket.IRCID)) { ClientSocket.Disconnect(); return; } Program.IRCConnections.Add(ClientSocket.IRCID, ClientSocket); } [IRCPacketHandler(IRC1TypeServer.Ping)] public static void HandlePing(IRCServer ServerSocket, Packet ServerPacket) { ServerSocket.SendPacket(new Packet(IRC1TypeServer.Pong)); } [IRCPacketHandler(IRC1TypeServer.Pong)] public static void HandlePong(IRCClient ClientSocket, Packet ClientPacket) { } [IRCPacketHandler(IRC1TypeServer.SetXor)] public static void HandleSetXor(IRCServer ServerSocket, Packet ServerPacket) { short num; if (ServerSocket.IsConnected != 0) { return; } if (!ServerPacket.ReadInt16(out num)) { ServerSocket.Disconnect(); return; } ServerSocket.Crypto = new FiestaCrypto(num); Packet packet = new Packet(IRC1TypeServer.CheckString); int num1 = 1; while (num1 < Convert.ToInt32(Program.ConfigValues["IRC_Count"]) + 1) { if (!Convert.ToBoolean(Program.ConfigValues[string.Format("IRC{0}_ThisServer", num1)])) { if (num1 == Convert.ToInt32(Program.ConfigValues["IRC_Count"])) { ServerSocket.Disconnect(); return; } num1++; } else { packet.WriteString(Program.ConfigValues["IRC{0}_CheckString"], true); break; } } ServerSocket.SendPacket(packet); } } }