Ejemplo n.º 1
0
        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}");
        }
Ejemplo n.º 2
0
        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);
            }
        }