/// <summary> /// Bans the user. /// </summary> /// <param name="client">The client.</param> /// <param name="moderator">The moderator.</param> /// <param name="lengthSeconds">The length seconds.</param> /// <param name="reason">The reason.</param> /// <param name="ipBan">if set to <c>true</c> [ip ban].</param> /// <param name="machine">if set to <c>true</c> [machine].</param> internal void BanUser(GameClient client, string moderator, double lengthSeconds, string reason, bool ipBan, bool machine) { var type = ModerationBanType.UserName; var text = client.GetHabbo().UserName; var typeStr = "user"; var num = Azure.GetUnixTimeStamp() + lengthSeconds; if (ipBan) { type = ModerationBanType.Ip; using (var queryReactor = Azure.GetDatabaseManager().GetQueryReactor()) { queryReactor.SetQuery("SELECT ip_last FROM users WHERE username = @name LIMIT 1"); queryReactor.AddParameter("name", text); text = queryReactor.GetString(); } typeStr = "ip"; } if (machine) { type = ModerationBanType.Machine; typeStr = "machine"; text = client.MachineId; } var moderationBan = new ModerationBan(type, text, reason, num); switch (moderationBan.Type) { case ModerationBanType.Ip: if (_bannedIPs.Contains(text)) _bannedIPs[text] = moderationBan; else _bannedIPs.Add(text, moderationBan); break; case ModerationBanType.Machine: if (_bannedMachines.ContainsKey(text)) _bannedMachines[text] = moderationBan; else _bannedMachines.Add(text, moderationBan); break; default: if (_bannedUsernames.Contains(text)) _bannedUsernames[text] = moderationBan; else _bannedUsernames.Add(text, moderationBan); break; } using (var queryreactor2 = Azure.GetDatabaseManager().GetQueryReactor()) { queryreactor2.SetQuery( "INSERT INTO users_bans (bantype,value,reason,expire,added_by,added_date) VALUES (@rawvar,@var,@reason,@num,@mod,@time)"); queryreactor2.AddParameter("rawvar", typeStr); queryreactor2.AddParameter("var", text); queryreactor2.AddParameter("reason", reason); queryreactor2.AddParameter("num", num); queryreactor2.AddParameter("mod", moderator); queryreactor2.AddParameter("time", DateTime.Now.ToLongDateString()); queryreactor2.RunQuery(); } if (ipBan) { DataTable dataTable; using (var queryreactor3 = Azure.GetDatabaseManager().GetQueryReactor()) { queryreactor3.SetQuery("SELECT id FROM users WHERE ip_last = @var"); queryreactor3.AddParameter("var", text); dataTable = queryreactor3.GetTable(); } if (dataTable != null) { using (var queryreactor4 = Azure.GetDatabaseManager().GetQueryReactor()) { foreach (DataRow dataRow in dataTable.Rows) queryreactor4.RunFastQuery( $"UPDATE users_info SET bans = bans + 1 WHERE user_id = {Convert.ToUInt32(dataRow["id"])}"); } } BanUser(client, moderator, lengthSeconds, reason, false, false); return; } using (var queryreactor5 = Azure.GetDatabaseManager().GetQueryReactor()) queryreactor5.RunFastQuery( $"UPDATE users_info SET bans = bans + 1 WHERE user_id = {client.GetHabbo().Id}"); client.Disconnect("banned"); }