// PENDING REWRITE public void BanUser(GameClient Client, string Moderator, Double LengthSeconds, string Reason, Boolean IpBan) { ModerationBanType Type = ModerationBanType.USERNAME; string Var = Client.GetHabbo().Username; string RawVar = "user"; Double Expire = UberEnvironment.GetUnixTimestamp() + LengthSeconds; if (IpBan) { Type = ModerationBanType.IP; Var = Client.GetConnection().IPAddress; RawVar = "ip"; } Bans.Add(new ModerationBan(Type, Var, Reason, Expire)); using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("INSERT INTO bans (bantype,value,reason,expire,added_by,added_date) VALUES ('" + RawVar + "','" + Var + "','" + Reason + "','" + Expire + "','" + Moderator + "','" + DateTime.Now.ToLongDateString() + "')"); } if (IpBan) { DataTable UsersAffected = null; using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { UsersAffected = dbClient.ReadDataTable("SELECT id FROM users WHERE ip_last = '" + Var + "'"); } if (UsersAffected != null) { foreach (DataRow Row in UsersAffected.Rows) { using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.ExecuteQuery("UPDATE user_info SET bans = bans + 1 WHERE user_id = '" + (uint)Row["id"] + "' LIMIT 1"); } } } } else { using (DatabaseClient dbClient = UberEnvironment.GetDatabase().GetClient()) { dbClient.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(); }
public void CheckForBanConflicts(GameClient Client) { foreach (ModerationBan Ban in Bans) { if (Ban.Expired) { continue; } if (Ban.Type == ModerationBanType.IP && Client.GetConnection().IPAddress == Ban.Variable) { throw new ModerationBanException(Ban.ReasonMessage); } if (Client.GetHabbo() != null) { if (Ban.Type == ModerationBanType.USERNAME && Client.GetHabbo().Username.ToLower() == Ban.Variable.ToLower()) { throw new ModerationBanException(Ban.ReasonMessage); } } } }