public void Test_StoreBan_WithSecondsToExpire_InsertsCorrectExpiresOn()
        {
            var repoMock     = new Mock <IBansRepository>();
            var time         = new DateTime(2020, 1, 1);
            var timeMock     = MockTime(time);
            var subject      = Subject(repoMock, timeMock);
            var secondsToAdd = 60;
            var ban          = new Bans
            {
                Id        = 1,
                Userid    = 1,
                Name      = "any",
                ByUserid  = 1,
                ByName    = "any",
                ExpiresOn = time.AddSeconds(secondsToAdd),
                Reason    = "any",
                BannedOn  = time
            };

            subject.StoreBan(ban.Userid, ban.Name, ban.ByUserid, ban.ByName, secondsToAdd, ban.Reason);

            repoMock.Verify(s => s.Create(
                                It.Is <Bans>(b => b.ExpiresOn == ban.ExpiresOn)
                                ), Times.Once);
        }
예제 #2
0
 public void AddBan(string mask)
 {
     if (!Bans.Contains(mask))
     {
         Bans.Add(mask);
     }
 }
예제 #3
0
 public ShikimoriClient(ILogger logger, ClientSettings settings)
 {
     Client       = new ApiClient(logger, settings);
     Achievements = new Achievements(Client);
     Animes       = new Animes(Client);
     Bans         = new Bans(Client);
     Calendars    = new Calendars(Client);
     Characters   = new Characters(Client);
     Clubs        = new Clubs(Client);
     Comments     = new Comments(Client);
     Constants    = new Constants(Client);
     Dialogs      = new Dialogs(Client);
     Favorites    = new Favorites(Client);
     Forums       = new Forums(Client);
     Friends      = new Friends(Client);
     Genres       = new Genres(Client);
     Mangas       = new Mangas(Client);
     Messages     = new Messages(Client);
     People       = new People(Client);
     Publishers   = new Publishers(Client);
     Ranobe       = new Ranobe(Client);
     Stats        = new Stats(Client);
     Studios      = new Studios(Client);
     Styles       = new Styles(Client);
     TopicIgnores = new TopicIgnores(Client);
     Topics       = new Topics(Client);
     UserImages   = new UserImages(Client);
     UserRates    = new UserRates(Client);
     Users        = new Users(Client);
     Videos       = new Videos(Client);
 }
예제 #4
0
        private void UnbanHero(Hero hero)
        {
            if (hero == null)
            {
                return;
            }
            bool removed = false;

            for (int i = 0; i < Bans.Count; i++)
            {
                if (Bans[i] == hero)
                {
                    Bans.RemoveAt(i);
                    removed = true;
                    break;
                }
            }
            if (!removed)
            {
                return;
            }
            AvailableAllies.Add(new HeroSelectionViewModel(hero));
            AvailableEnemies.Add(new HeroSelectionViewModel(hero));
            Refresh();
        }
예제 #5
0
 private void BanHero(Hero hero)
 {
     if (hero == null)
     {
         return;
     }
     if (PickedAllies.Any(h => h.Hero == hero) ||
         PickedEnemies.Any(h => h.Hero == hero) ||
         Bans.Any(h => h == hero))
     {
         return;
     }
     for (int i = 0; i < AvailableAllies.Count; i++)
     {
         if (AvailableAllies[i].Hero == hero)
         {
             AvailableAllies.RemoveAt(i);
             break;
         }
     }
     for (int i = 0; i < AvailableEnemies.Count; i++)
     {
         if (AvailableEnemies[i].Hero == hero)
         {
             AvailableEnemies.RemoveAt(i);
             break;
         }
     }
     Bans.Add(hero);
 }
예제 #6
0
        public virtual bool Unban(PlayerMobile user, bool message = true)
        {
            if (!Bans.Remove(user))
            {
                return(false);
            }

            if (message)
            {
                InternalMessage(user, "You are no longer banned from the channel '{0}'", Name);
            }

            OnUnbanned(user, message);
            return(true);
        }
예제 #7
0
 private void Blwvm_CloseView()
 {
     using (MyDBContext db = new MyDBContext())
     {
         var res = (from b in db.Bans
                    select new BanVM()
         {
             ban = b
         }).LastOrDefault();
         if (res != Bans.LastOrDefault())
         {
             Bans.Add(res);
         }
     }
 }
예제 #8
0
		private async Task BannedWordsDrop(SocketMessage msg)
		{
			var message = msg as SocketUserMessage;
			var author = msg.Author as SocketGuildUser;
			var user = author as SocketUser;
			string[] badWords = File.ReadAllLines(@"BannedWords.txt");
			if (badWords.Any(msg.Content.Contains))
			{
				//ban time constant represents 2 min, not 2 milliseconds. Make sure that the timer creation compensates
				ulong banTime = UserAccounts.GetAccountBanCount(user) * 2;
				var role = author.Guild.Roles.FirstOrDefault(x => x.Name.ToString() == "Being Dropped Out of a Helicopter");
				Bans.CreateUserBan(author.Id, banTime);
				Console.WriteLine("Banned word detected");
				await msg.Channel.SendMessageAsync("Dropped from the heli, f****t.");
			}
		}
예제 #9
0
        public override void Reset()
        {
            Name    = "Chat";
            Summary = "";
            Token   = UID.ToString(CultureInfo.InvariantCulture);

            Available = true;

            ProfanityAction = ProfanityAction.None;
            TextColor       = KnownColor.LawnGreen;
            TextHue         = 85;
            UserLimit       = 500;
            SpamDelay       = TimeSpan.FromSeconds(5.0);

            History.Clear();
            Bans.Clear();
        }
예제 #10
0
        public void StoreBan(ulong uid, string name, ulong byuid, string byname, int secondsadd, string reason)
        {
            var ban = new Bans
            {
                Userid    = uid,
                Name      = name,
                ByUserid  = byuid,
                ByName    = byname,
                ExpiresOn = _timeProvider.UtcNow.AddSeconds(secondsadd),
                Reason    = reason
            };

            if (secondsadd == 0)
            {
                ban.ExpiresOn = null; // because c# is was not happy
            }

            _bansRepository.Create(ban);
        }
예제 #11
0
        public void GeneratePicks()
        {
            PlayerOptions.Clear();
            for (int i = 0; i < Players.Count; i++)
            {
                Picks picks = new Picks(NumCivsPerPerson);
                for (int j = 0; j < NumCivsPerPerson; j++)
                {
                    Civilization civ;
                    do
                    {
                        civ = (Civilization)gen.Next(0, 43);
                    } while (Bans.Contains(civ) || duplicate(civ, picks) || otherCiv(civ));
                    picks.picks[j] = civ;
                }

                PlayerOptions.Add(picks);
            }
        }
예제 #12
0
 private void ReInit()
 {
     AvailableAllies.Clear();
     AvailableEnemies.Clear();
     PickedAllies.Clear();
     PickedEnemies.Clear();
     Bans.Clear();
     if (_stats == null)
     {
         AvailableMaps = Array.Empty <Map>();
         SelectedMap   = null;
         TheoWinRate   = null;
         return;
     }
     AvailableMaps = new [] { new Map(-1, "") }.Concat(_stats.Maps.Values).ToList();
     foreach (var hero in _stats.Heroes.Values)
     {
         AvailableAllies.Add(new HeroSelectionViewModel(hero));
         AvailableEnemies.Add(new HeroSelectionViewModel(hero));
     }
     Refresh();
 }
예제 #13
0
        public virtual bool Ban(PlayerMobile user, TimeSpan duration, bool kick = true, bool message = true)
        {
            if (kick)
            {
                Kick(user, false, message);
            }

            if (Bans.ContainsKey(user))
            {
                Bans[user] = duration <= TimeSpan.Zero ? DateTime.MaxValue : DateTime.Now + duration;
                return(false);
            }

            Bans.Add(user, duration <= TimeSpan.Zero ? DateTime.MaxValue : DateTime.Now + duration);

            if (message)
            {
                InternalMessage(user, "You have been banned from the channel '{0}' until {1}", Name, Bans[user].ToSimpleString());
            }

            OnBanned(user, message);
            return(true);
        }
예제 #14
0
 /// <summary>
 /// Bans the user with a specific ban object.
 /// </summary>
 public void Ban(ClientBan ban)
 {
     Bans.Add(ban);
 }
예제 #15
0
 private bool IsCommunityBanned(Bans b) => b.Players[0].CommunityBanned;
예제 #16
0
 private bool IsVacBanned(Bans b) => b.Players[0].VacBanned;
예제 #17
0
 public virtual bool IsBanned(PlayerMobile user)
 {
     return(user != null && Bans.ContainsKey(user) && Bans[user] > DateTime.Now);
 }
예제 #18
0
        public override Object onReceive()
        {
            byte[] assetDigest = stream.ReadStarByteArray();

            var claim = stream.ReadStarVariant();

            byte[] UUID    = stream.ReadStarUUID();
            string name    = stream.ReadStarString();
            string species = stream.ReadStarString();

            byte[] shipWorld = stream.ReadStarByteArray();
            string account   = stream.ReadStarString();

            // Identify player to server
            this.client.playerData.uuid    = Utils.ByteArrayToString(Utils.HashUUID(UUID)).ToLower();
            this.client.playerData.name    = name;
            this.client.playerData.account = account;

            User userPData = Users.GetUser(name, this.client.playerData.uuid, this.client.playerData.ip);

            if (StarryboundServer.config.maxClients <= StarryboundServer.clientCount)
            {
                if (!userPData.getGroup().hasPermission("admin.reservedlist") || StarryboundServer.clientCount == (StarryboundServer.serverConfig.maxPlayers - 1))
                {
                    this.client.rejectPreConnected("The server is full. Please try again later.");
                    return(false);
                }
            }

            string[] reasonExpiry = Bans.checkForBan(new string[] { name, this.client.playerData.uuid, this.client.playerData.ip });
            if (reasonExpiry.Length == 2 && !userPData.getGroup().hasPermission("admin.bypassban"))
            {
                this.client.rejectPreConnected("You are " + ((reasonExpiry[1] == "0") ? "permanently" : "temporarily") + " banned from this server.\nReason: " + reasonExpiry[0]);
                return(false);
            }

            string sAssetDigest = Utils.ByteArrayToString(assetDigest);

            StarryboundServer.logDebug("AssetDigest", "[" + this.client.playerData.client + "] [" + sAssetDigest + "]");
            if (!StarryboundServer.config.allowModdedClients)
            {
                if (sAssetDigest != StarryboundServer.unmoddedClientDigest)
                {
                    this.client.rejectPreConnected("Modded client detected: You cannot modify or add asset files or mods. Please delete your entire Starbound folder and reinstall Starbound to join.");
                    return(false);
                }
            }

            if (String.IsNullOrWhiteSpace(this.client.playerData.name))
            {
                this.client.rejectPreConnected("You may not have a blank name.");
                return(false);
            }

            if (!StarryboundServer.config.allowSpaces)
            {
                if (this.client.playerData.name.Contains(" "))
                {
                    this.client.rejectPreConnected("You may not have spaces in your name on this server.");
                    return(false);
                }
            }

            if (!StarryboundServer.config.allowSymbols)
            {
                Regex r = new Regex("^[a-zA-Z0-9_\\- ]*$");
                if (!r.IsMatch(this.client.playerData.name))
                {
                    this.client.rejectPreConnected("You may not have special characters in your name on this server.");
                    return(false);
                }
            }

            if (!userPData.getGroup().hasPermission("admin.bypassban"))
            {
                foreach (string bannedUnamePhrase in StarryboundServer.config.bannedUsernames)
                {
                    if (this.client.playerData.name.ToLower().Contains(bannedUnamePhrase.ToLower()))
                    {
                        this.client.rejectPreConnected("Your name contains a phrase that is banned on this server. (" + bannedUnamePhrase + ")");
                        return(false);
                    }
                }
            }

            if (!String.IsNullOrEmpty(account))
            {
                this.client.rejectPreConnected("You need clear the server account field of all text.");
                return(false);
            }

            try
            {
                PlayerData pData = this.client.playerData;

                pData.isMuted            = userPData.isMuted;
                pData.canBuild           = userPData.canBuild;
                pData.lastOnline         = userPData.lastOnline;
                pData.group              = userPData.getGroup();
                pData.freeFuel           = userPData.freeFuel;
                pData.receivedStarterKit = userPData.receivedStarterKit;
                pData.privateShip        = userPData.privateShip;
                pData.shipBlacklist      = userPData.shipBlacklist;
                pData.shipWhitelist      = userPData.shipWhitelist;

                if (userPData.uuid != pData.uuid && userPData.groupName != StarryboundServer.defaultGroup)
                {
                    this.client.rejectPreConnected("Connection Failed: You cannot use \"" + pData.name + "\" on this server.");
                    return(false);
                }
            }
            catch (Exception)
            {
                this.client.rejectPreConnected("Connection Failed: A internal server error occurred (2)");
                return(false);
            }

            foreach (Client checkClient in StarryboundServer.getClients())
            {
                if (checkClient.playerData.name.ToLower() == name.ToLower())
                {
                    if (userPData.groupName != StarryboundServer.defaultGroup)
                    {
                        checkClient.delayDisconnect("Someone else is attempting to connect with your name. Disconnecting.");
                        this.client.rejectPreConnected("We have disconnected the old player on the server. Please try again in 15 seconds.");
                    }
                    else
                    {
                        this.client.rejectPreConnected("Someone is already logged in with this name.");
                    }
                }
            }

            return(null);
        }
예제 #19
0
 public virtual bool IsBanned()
 {
     // TODO Implement IP & Machine ID Bans
     return(Bans.Any(x => x.ExpiresAt > DateTime.Now));
 }
예제 #20
0
 private int DaysSinceBan(Bans b) => b.Players[0].DaysSinceLastBan;
 public void Create(Bans ban)
 {
     _databaseContext.Bans.Add(ban);
     _databaseContext.SaveChanges();
     Logger.Write($"[Create - Bans] {ban.Userid} {ban.ByUserid}");
 }
예제 #22
0
        public override Task DivideLine(string line)
        {
            if (line.Contains(" CITC "))
            {
                CitC.Add(line);
            }

            else if (line.Contains(" LOGIN: "******" LOGIN MISC: "))
            {
                LoginMisc.Add(line);
            }
            else if (line.Contains(" QUIT MISC: "))
            {
                QuitMisc.Add(line);
            }

            else if (line.Contains(" (AA)(BAN) "))
            {
                Bans.Add(line);
            }
            else if (line.Contains(" (AA)(MUTE) "))
            {
                Mutes.Add(line);
            }
            else if (line.Contains(" (AA)(JAIL) "))
            {
                Jails.Add(line);
            }
            else if (line.Contains(" (AA)(CONTACTADMIN) "))
            {
                Cad.Add(line);
            }
            else if (line.Contains(" (AA)(SUPPORT) "))
            {
                Support.Add(line);
            }

            else if (line.Contains(" opened '") && line.Contains(" ms"))
            {
                LogsFetched.Add(line);
            }
            else if (line.Contains(" [CM] ") && line.Contains(" set "))
            {
                Reports.Add(line);
            }
            else if (line.Contains("[Complaint ID") && line.Contains(" replied with "))
            {
                Reports.Add(line);
            }
            else if (line.Contains(" warped to ") || line.Contains(" WL: "))
            {
                if (line.Contains("WL: 0") || line.Contains("with 0 stars Dim: 0"))
                {
                    PossibleAbuse.Add(line);
                }
                else
                {
                    RegisteredAbuse.Add(line);
                }
            }

            /*else if (line.Contains(" warped to ") && !line.Contains(" WL: 0") && !line.Contains(" (EM) "))
             *  RegisteredAbuse.Add(line);
             * else if (line.Contains(" warped to ") && line.Contains(" WL: 0") && !line.Contains(" (EM) "))
             *  PossibleAbuse.Add(line);
             * else if (line.Contains(" ST ") && (!line.Contains("from 0") && line.Contains("wanted points.")))
             *  RegisteredAbuse.Add(line);*/
            else if (line.Contains(" ST ") && line.Contains("from 0 wanted points."))
            {
                PossibleAbuse.Add(line);
            }
            else if (line.Contains("abuse") ||
                     line.Contains("recommendation") ||
                     line.Contains("leak") ||
                     line.Contains("bias") ||
                     line.Contains("accept") ||
                     line.Contains("jcm") ||
                     line.Contains("rcm") ||
                     line.Contains("scm")
                     )
            {
                PossibleAbuse.Add(line);
            }

            else if (line.Contains("object. ID:"))
            {
                DutyRelated.Add(line);
            }
            else if (line.Contains("changed account:"))
            {
                DutyRelated.Add(line);
            }
            else if (line.Contains("changed the password of account"))
            {
                DutyRelated.Add(line);
            }
            else if (line.Contains("checked the PIN code of account"))
            {
                DutyRelated.Add(line);
            }
            else if (line.Contains("zone 0 p"))
            {
                DutyRelated.Add(line);
            }

            else if (line.Contains(" (PP) "))
            {
                PendingPunishments.Add(line);
            }
            else
            {
                Other.Add(line);
            }
            return(Task.CompletedTask);
        }
예제 #23
0
 public void AddBan(Ban ban)
 {
     Bans.Add(ban);
 }
예제 #24
0
 private int GameBanCount(Bans b) => b.Players[0].NumberOfGameBans;
예제 #25
0
 public IQueryable <ChessBan> GetBansAgainst(int id)
 => Bans.AsQueryable().Where(x => x.TargetId == id);
예제 #26
0
 private void reloadBans()
 {
     Bans.allBans = new Dictionary <int, Ban>();
     Bans.ProcessBans();
     this.client.sendChatMessage(Bans.allBans.Count + " ban(s) have been loaded.");
 }
예제 #27
0
 public void RemoveBan(string mask)
 {
     Bans.Remove(mask);
 }
예제 #28
0
 private bool IsTradeBanned(Bans b) => b.Players[0].EconomyBan == "banned";
예제 #29
0
 public void Add(Ban item) => Bans.Add(item);
예제 #30
0
 private int VacBanCount(Bans b) => b.Players[0].NumberOfVacBans;