internal void AddBan(List <string> identifiers, string bannedBy = "", string reason = "", DateTime?expires = null) { var expiry = expires ?? DateTime.MaxValue; var ban = new BanModel { BannedBy = string.IsNullOrEmpty(bannedBy) ? "System" : bannedBy, BanReason = string.IsNullOrEmpty(reason) ? Server.Config.DefaultBanReason : reason, Expires = expiry, Identifiers = identifiers }; if (expiry > DateTime.UtcNow) { ActiveBans.Add(ban); } AllBans.Add(ban); Log.Warn($"{ban.BannedBy} Added ban {ban.BanLength} to identifiers ({string.Join( ", ", identifiers )}). Reason: {ban.BanReason}"); SaveBanList(); var target = new PlayerList().FirstOrDefault(p => p.Identifiers.Any(identifiers.Contains)); var id = target != null ? target.Name : identifiers.FirstOrDefault(); target?.Drop($"You are banned {ban.BanLength}. Reason: {ban.BanReason}"); Server.TriggerEventForAce(Constants.AceAdmin, "UI.ShowNotification", $"~r~{id}~s~ has been banned {ban.BanLength} by ~g~{ban.BannedBy}~s~.~n~~y~Reason~s~: {ban.BanReason}"); }
private void OnLookup([FromSource] Player source, string identifier) { try { if (!API.IsPlayerAceAllowed(source.Handle, Constants.AceAdminBan)) { Log.Warn($"Player {source.Name} (net:{source.Handle}) tried to illegally lookup bans tied to {identifier}"); return; } var ban = ActiveBans.FirstOrDefault(b => b.Identifiers.Any(i => i.Contains(identifier))); if (ban == null) { source.TriggerEvent("UI.ShowNotification", "~r~Error~s~: No active bans are tied to that identifier."); return; } var id = Server.GetPrimaryIdentifier(ban.Identifiers); if (string.IsNullOrEmpty(id)) { id = identifier; } var bannedBy = ban.BannedBy.Substring(0, ban.BannedBy.Contains("(") ? ban.BannedBy.LastIndexOf("(", StringComparison.InvariantCultureIgnoreCase) : ban.BannedBy.Length) .Trim(); var model = new BanLookupModel { Identifier = id, BannedBy = bannedBy, Reason = ban.BanReason, ExpiryTicks = ban.Expires.Ticks, Timestamp = ban.Timestamp.Ticks }; source.TriggerEvent("HyperAdmin.LookupBan", JsonConvert.SerializeObject(model)); } catch (Exception ex) { Log.Error(ex); } }