using System; using System.Collections.Generic; using System.Linq; using System.Text; using Holo.Managers; using System.Collections; using Ion.Storage; using System.Threading; namespace Holo.Source.GameConnectionSystem { class connectionHelper { private static int BannedIPcount; private static Hashtable BannedIPs = new Hashtable(); private static Hashtable Connections = new Hashtable(); //private static Thread Checker = new Thread(new ThreadStart(CheckSockets)); internal static void Init() { //Checker.Start(); } public static bool IpIsBanned(string IP) { if (BannedIPs.ContainsKey(IP) == true) return true; else { string banReason = userManager.getBanReason(IP); if (banReason != "") { BannedIPs.Add(IP, BannedIPcount); BannedIPcount++; return true; } else { return false; } } } internal static void BanIP(string IP) { if (IpIsBanned(IP) == false) { using (DatabaseClient dbClient = Eucalypt.dbManager.GetClient()) { if (!dbClient.findsResult("SELECT date_expire FROM users_bans WHERE ipaddress = '" + IP + "'")) { dbClient.runQuery("INSERT INTO users_bans (ipaddress,date_expire,descr) VALUES ('" + IP + "','18-10-2020 15:43:22','Automaticly banned by system')"); BannedIPs.Add(IP, BannedIPcount); BannedIPcount++; } } } } //private static void CheckSockets() //{ // while (true) // { // Hashtable TMP = Connections; // foreach (gameConnection EndPoint in TMP.Values) // { // //Out.WriteLine("Checking connectionID [" + EndPoint.ConnectionID + "]"); // if (!EndPoint.IsActive) // EndPoint.Close(); // } // Thread.Sleep(10000); // 10 secconds // } //} //internal static void AddConnection(gameConnection Endpoint, int ConnectionID) //{ // if (Connections.ContainsValue(ConnectionID)) // Connections.Remove(ConnectionID); // Connections.Add(ConnectionID, Endpoint); //} //internal static void RemoveConnection(int ID) //{ // if (Connections.ContainsValue(ID)) // Connections.Remove(ID); //} } }