private async ValueTask HandleAddOfflineIp(string target, string name, WebApiUser user, string reason) { if (IsIpAInvalid(target)) { await user.WriteConsole($"Unable to comply: Invalid target address.", "ban system"); return; } var ban = new PlayerBan(target, new string[] { $"Dashboard: {user.Password.User} [ban offline]" }, DateTime.Now, new string[] { name }, reason); if (!await _database.Add(ban.IpAddress, ban)) { await user.WriteConsole($"Unable to comply: Ban already exists.", "ban handler"); } else { await user.WriteConsole($"Ban added.", "ban handler"); } }
public void InsertBan(PlayerBan ban) { string sql = "INSERT INTO prefix_bans " + "(player_id, admin_id, ban_reason, ban_duration, ban_type, ban_timestamp) VALUES " + "(@player_id, @admin_id, @ban_reason, @ban_duration, @ban_type, @ban_timestamp)"; NonQuery(sql, "@player_id", ban.PlayerDatabaseId.ToString(), "@admin_id", ban.AdminDatabaseId.ToString(), "@ban_reason", ban.Reason, "@ban_duration", ban.Duration.ToString(), "@ban_type", ban.TypeId.ToString(), "@ban_timestamp", GetTimestamp().ToString()); }
public void InsertBan(Player p, Player a, string reason, bool ip, int duration = -1) { PlayerBan b = null; BanType t = (ip ? BanType.IPAddress : BanType.Keyhash); if (duration < 0) { b = new PlayerBan(p.Name, p.KeyHash, p.RemoteAddressStr, a.Name, reason, t, p.DatabaseId, a.DatabaseId); } else { b = new PlayerBan(p.Name, p.KeyHash, p.RemoteAddressStr, a.Name, reason, new TimeSpan(0, 0, 0, duration), t, p.DatabaseId, a.DatabaseId); } core.Database.InsertBan(b); }
public override void Handle(string[] args) { var bans = Server.FindBansByName(PlayerName).ToList(); if (bans.Count == 0) { SendMessage("Could not find any bans starting with this name.", LogMessageType.Error); return; } if (bans.Count > 1) { SendMessage("Found multiple bans starting with this name, be more specific.", LogMessageType.Error); return; } PlayerBan ban = bans.First(); Server.RemoveBan(ban); SendMessage($"Unbanned {ban.ReferenceName} ({ban.GetIdentifier()}).", LogMessageType.Info); }
public static void InvokePlayerBan(ref ReferenceHub user, ref string userId, ref int duration, ref bool allow, ref string message, ref string reason) { PlayerBan playerBan = PlayerBanEvent; if (playerBan == null) { return; } // ev.Allow is already set to true in the constructor // Private field values set in the constructor to avoid triggering the logs PlayerBanEvent ev = new PlayerBanEvent(Plugin.Config.GetBool("exiled_log_ban_event", true), user, reason, userId, duration) { FullMessage = message, Reason = reason }; playerBan?.Invoke(ev); allow = ev.Allow; userId = ev.UserId; duration = ev.Duration; message = ev.FullMessage; reason = ev.Reason; user = ev.BannedPlayer; }
public static async void OnBanCommandAsync(Player sender, Player target, int days, string reason) { if (!target.IsLoggedIn) { sender.SendClientMessage(Color.Red, Messages.PlayerNotLoggedIn); return; } if (target.Account.AdminLevel > 0) { sender.SendClientMessage(Color.Red, "You can't use this command on admins."); return; } if (target == sender) { sender.SendClientMessage(Color.Red, Messages.CommandNotAllowedOnSelf); return; } if (days < 1) { sender.SendClientMessage(Color.Red, "You must enter at least one day."); return; } if (string.IsNullOrEmpty(reason)) { sender.SendClientMessage(Color.Red, "Reason can not be empty."); return; } var account = target.Account; account.Bans++; var playerBan = new PlayerBan { Reason = reason, AdminId = sender.Account.Id, OwnerId = target.Account.Id }; var totalBanTime = DateTime.Now + TimeSpan.FromDays(days); if (account.Bans >= Configuration.Instance.MaximumBans) { playerBan.Duration = DateTime.MaxValue; target.SendClientMessage(Color.Red, $"This was the {Configuration.Instance.MaximumBans}ith and last ban. You have been banned permanently by {AdminRanks.AdminLevelNames[sender.Account.AdminLevel]} {sender.Name}."); } else { playerBan.Duration = totalBanTime; target.SendClientMessage(Color.Red, $"You have been banned by {sender.Name} for {days} day/s."); target.SendClientMessage(Color.Red, $"Reason: {reason}."); } await new PlayerAccountRepository(ConnectionFactory.GetConnection).UpdateAsync(account); await new PlayerBanRepository(ConnectionFactory.GetConnection).AddAsync(playerBan); BasePlayer.SendClientMessageToAll(Color.LightGray, $"{AdminRanks.AdminLevelNames[sender.Account.AdminLevel]} {sender.Name} has banned {target.Name} for {days} day/s."); await Task.Delay(Configuration.Instance.KickDelay); target.Kick(); }
public override void HandlePost(HttpListenerContext ctx, WebUser user, string postData) { PlayerApiParams p = null; if ((p = TryJsonParse <PlayerApiParams>(ctx, postData)) == null) { return; } switch (p.Action) { case "players_update": WebAdmin.SendHtml(ctx, ToJson(Core.Players.GetPlayers_s())); break; case "players_swap": WebServer.LogAudit(user, "swapped slot #{0}", p.PlayerId.ToString()); WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Core.Scheduler.PushTask(() => Core.Players.Swap(new Player(p.PlayerId))); break; case "players_kick": WebServer.LogAudit(user, "kicked slot #{0}", p.PlayerId.ToString()); WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Core.Scheduler.PushTask(() => Core.Players.Kick(new Player(p.PlayerId))); break; case "players_ban": WebServer.LogAudit(user, "banned slot #{0}", p.PlayerId.ToString()); WebAdmin.SendHtml(ctx, ToJson(new QuickAdminResponse())); Player player; if ((player = Core.Players.GetPlayerBySlot(p.PlayerId)) != null) { PlayerBan ban; //TODO: figure something out for adminId string adminName = "WebAdmin"; string reason = "WebAdmin"; int adminDBId = 1; if (p.BanDuration < 0) { ban = new PlayerBan(player.Name, player.KeyHash, player.RemoteAddress.ToString(), adminName, reason, p.BanType, player.DatabaseId, adminDBId); } else { TimeSpan duration = new TimeSpan(0, 0, p.BanDuration); ban = new PlayerBan(player.Name, player.KeyHash, player.RemoteAddressStr, adminName, reason, duration, p.BanType, player.DatabaseId, adminDBId); } Core.Database.InsertBan(ban); Core.Scheduler.PushTask(() => Core.Players.Kick(player)); } break; } }
public override void BanPlayer(Player p, Player admin, TimeSpan duration, string reason = "") { PlayerBan b = new PlayerBan(p.Name, p.KeyHash, p.RemoteAddressStr, admin.Name, reason, duration, BanType.IPAddress, p.DatabaseId, admin.DatabaseId); Core.Database.InsertBan(b); }
public virtual void BanPlayer(Player p, Player admin, string reason = "") { PlayerBan b = new PlayerBan(p.Name, p.KeyHash, p.RemoteAddressStr, admin.Name, reason, BanType.Keyhash, p.DatabaseId, admin.DatabaseId); Core.Database.InsertBan(b); }
private bool UsernameValid(PlayerBan ban) { return(UsernameValid(ban.SteamID, ban.Username)); }