private void TestClientConnections() { int millisecondsTimeout = int.Parse(PhoenixEnvironment.GetConfig().data["client.ping.interval"]); if (millisecondsTimeout <= 100) { throw new ArgumentException("Invalid configuration value for ping interval! Must be above 100 miliseconds."); } while (true) { try { ServerMessage Message = new ServerMessage(50); List <GameClient> SuccessTest = new List <GameClient>(); List <GameClient> FailTest = new List <GameClient>(); for (int i = 0; i < this.Session.Length; i++) { GameClient Session = this.Session[i]; if (Session != null) { if (Session.PongOK) { Session.PongOK = false; FailTest.Add(Session); } else { SuccessTest.Add(Session); } } } foreach (GameClient Session in SuccessTest) { try { Session.Disconnect(); } catch { } } byte[] bytes = Message.GetBytes(); foreach (GameClient Session in FailTest) { try { Session.GetConnection().SendData(bytes); } catch { } } } catch (Exception ex) { Logging.LogThreadException(ex.ToString(), "Connection checker task"); } Thread.Sleep(millisecondsTimeout); } }
public void LogClonesOut(uint UserID) { for (int i = 0; i < this.Session.Length; i++) { GameClient Session = this.Session[i]; if (Session != null && Session.GetHabbo() != null && Session.GetHabbo().Id == UserID) { Session.Disconnect(); } } }
public void BanUser(GameClient Client, string Moderator, double LengthSeconds, string Reason, bool IpBan) { if (!Client.GetHabbo().isAaron) { ModerationBanType uSERNAME = ModerationBanType.USERNAME; string username = Client.GetHabbo().Username; string val = "user"; double Expire = PhoenixEnvironment.GetUnixTimestamp() + LengthSeconds; if (IpBan) { uSERNAME = ModerationBanType.IP; if (!GlobalClass.UseIP_Last) { username = Client.GetConnection().ipAddress; } else { using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient()) { username = adapter.ReadString("SELECT ip_last FROM users WHERE Id = " + Client.GetHabbo().Id + " LIMIT 1;"); } } val = "ip"; } this.Bans.Add(new ModerationBan(uSERNAME, username, Reason, Expire)); using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient()) { adapter.AddParamWithValue("rawvar", val); adapter.AddParamWithValue("var", username); adapter.AddParamWithValue("reason", Reason); adapter.AddParamWithValue("mod", Moderator); adapter.ExecuteQuery("INSERT INTO bans (bantype,value,reason,expire,added_by,added_date,appeal_state) VALUES (@rawvar,@var,@reason,'" + Expire + "',@mod,'" + DateTime.Now.ToLongDateString() + "', '1')"); } if (IpBan) { DataTable table = null; using (DatabaseClient client3 = PhoenixEnvironment.GetDatabase().GetClient()) { client3.AddParamWithValue("var", username); table = client3.ReadDataTable("SELECT id FROM users WHERE ip_last = @var"); } if (table != null) { foreach (DataRow row in table.Rows) { using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient()) { adapter.ExecuteQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = '" + ((uint)row["id"]) + "' LIMIT 1"); } } } } else { using (DatabaseClient adapter = PhoenixEnvironment.GetDatabase().GetClient()) { adapter.ExecuteQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = '" + Client.GetHabbo().Id + "' LIMIT 1"); } } Client.SendBanMessage("You have been banned: " + Reason); Client.Disconnect(); } }