Exemple #1
0
        public async Task <IEnumerable <Session> > Lookup(SessionLookup lookup)
        {
            var db     = sessionCache.GetDatabase();
            var result = db.HashGet(lookup.sessionKey.ToString(), "guid");
            var ret    = new List <Session>();

            if (!result.HasValue)
            {
                return(ret);
            }
            var session = new Session();

            session.sessionKey = result.ToString();
            var profileId = db.HashGet(lookup.sessionKey.ToString(), "profileid");
            var userId    = db.HashGet(lookup.sessionKey.ToString(), "userid");

            var profileLookup = new ProfileLookup();

            profileLookup.id = int.Parse(profileId.ToString());
            session.profile  = (await profileRepository.Lookup(profileLookup)).FirstOrDefault();

            var userLookup = new UserLookup();

            userLookup.id = int.Parse(userId.ToString());
            session.user  = (await userRepository.Lookup(userLookup)).FirstOrDefault();

            session.appName = db.HashGet(lookup.sessionKey.ToString(), "appName");


            ret.Add(session);

            return(ret);
        }
        public void TournamentRecordsCompactGetsNullIfUserHasNeverEntered()
        {
            var command = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentRecords")).FirstOrDefault();
            var results = command.CompactExecutor("", UserLookup.GetId("Buzz"));

            Assert.IsNull(results);
        }
Exemple #3
0
        public async Task <AuthResponse> ProfileFromCDKey([FromBody] AuthRequest request)
        {
            var response    = new AuthResponse();
            var cdKeyLookup = new CdKeyLookup();

            cdKeyLookup.CdkeyHash = request.cdkey;
            if (request.gameLookup == null)
            {
                throw new BadCdKeyException();
            }
            cdKeyLookup.Gameid = request.gameLookup.id;
            var profile = await cdkeyRepository.LookupProfileFromCDKey(cdKeyLookup);

            if (profile == null || request.profileLookup == null || profile.Nick.CompareTo(request.profileLookup.nick) != 0)
            {
                throw new BadCdKeyException();
            }
            response.profile = profile;
            var userLookup = new UserLookup();

            userLookup.id = profile.Userid;
            var user = (await userRepository.Lookup(userLookup)).FirstOrDefault();

            response.user = user;
            return(response);
        }
        public async Task <Session> GenerateSession([FromBody] AuthRequest request)
        {
            Profile profile = null;

            if (request.profileLookup != null)
            {
                profile = (await profileRepository.Lookup(request.profileLookup)).FirstOrDefault();
                if (profile == null)
                {
                    throw new NoSuchUserException();
                }
            }

            var userLookup = new UserLookup();

            userLookup.id = profile.Userid;
            User user = (await userRepository.Lookup(userLookup)).FirstOrDefault();

            if (user == null)
            {
                throw new NoSuchUserException();
            }


            Session sessionModel = new Session();

            sessionModel.profile = profile;
            sessionModel.user    = user;
            if (request.expiresIn.HasValue)
            {
                sessionModel.expiresIn = request.expiresIn.Value;
            }
            return(await this.sessionRepository.Create(sessionModel));
        }
        internal async Task <Boolean> CheckShouldBanAsync(ModeratableThing thing, IEnumerable <String> bannedGroups)
        {
            if (IsUnbannable(thing))
            {
                return(false);
            }

            // flair bypass only applies to authors that can have flair
            if (thing is VotableThing votableThing)
            {
                if (!String.IsNullOrWhiteSpace(votableThing.AuthorFlairCssClass) &&
                    ignoreAuthorCssClasses.Any(cssClass => votableThing.AuthorFlairCssClass.Contains(cssClass)))
                {
                    return(false);
                }
            }
            if (UserLookup is CacheableBackedBotDatabase cacheable)
            {
                if (cacheable.IsStale)
                {
                    IncrementStatisticIfExists("requestRate");
                }
            }
            IEnumerable <String> groupNames = (await UserLookup.GetGroupsForUserAsync(thing.AuthorName)).Select(group => group.Name);

            return(groupNames.Any(groupName => bannedGroups.Contains(groupName)));
        }
Exemple #6
0
        public IActionResult OnPost()
        {
            UserLookup lookup = new UserLookup();
            UserInfo   info   = new UserInfo();

            if (ModelState.IsValid == true)
            {
                info = lookup.GetUserInfo(NameProperty.Name);
                NameProperty.District     = info.District;
                NameProperty.Fact         = info.Fact;
                NameProperty.ErrorMessage = info.ErrorMessage;
                return(Page());//new RedirectToPageResult("/Input/UserInput");
            }
            else
            {
                //NameProperty.ErrorMessage = info.ErrorMessage;
                return(Page());
            }



            // if (ModelState.IsValid == true)
            //  {
            //return Model
            //  }
            // if ()
        }
Exemple #7
0
        public async Task <ValueTuple <bool, int, int> > CheckUniqueNickInUse(string uniquenick, int?namespaceid, int?partnercode)
        {
            ValueTuple <bool, int, int> ret = new ValueTuple <bool, int, int>(false, 0, 0);

            if (!namespaceid.HasValue || namespaceid.Value == 0)
            {
                return(ret);
            }

            ProfileLookup profileLookup = new ProfileLookup();

            profileLookup.uniquenick  = uniquenick;
            profileLookup.namespaceid = namespaceid;
            profileLookup.partnercode = partnercode;
            var profile = (await Lookup(profileLookup)).FirstOrDefault();

            if (profile != null)
            {
                UserLookup userLookup = new UserLookup();
                ret.Item1 = true;
                ret.Item2 = profile.Id;
                ret.Item3 = profile.Userid;
            }
            return(ret);
        }
Exemple #8
0
        public async Task <AuthResponse> PreAuth([FromBody] AuthRequest request)
        {
            Dictionary <string, string> dict = await sessionRepository.decodeAuthToken(request.auth_token);

            if (dict == null)
            {
                throw new AuthInvalidCredentialsException();
            }
            var           response      = new AuthResponse();
            ProfileLookup profileLookup = new ProfileLookup();
            UserLookup    userLookup    = new UserLookup();
            int           profileId;

            int.TryParse(dict["profileId"], out profileId);
            profileLookup.id = profileId;


            User user = null;

            if (dict.ContainsKey("userId"))
            {
                int.TryParse(dict["userId"], out profileId);
                userLookup.id = profileId;
                user          = (await userRepository.Lookup(userLookup)).First();
            }

            response.profile = (await profileRepository.Lookup(profileLookup)).First();

            if (user == null)
            {
                userLookup.id = response.profile.Userid;
                user          = (await userRepository.Lookup(userLookup)).First();
            }

            response.user = user;


            var sesskey = gs_sesskey(request.session_key);

            string challenge = dict["true_signature"] + sesskey.ToString();

            using (MD5 md5 = MD5.Create())
            {
                StringBuilder sBuilder = new StringBuilder();
                byte[]        data     = md5.ComputeHash(Encoding.UTF8.GetBytes(challenge));
                for (int i = 0; i < data.Length; i++)
                {
                    sBuilder.Append(data[i].ToString("x2"));
                }
                challenge = sBuilder.ToString().ToLower();
            }

            if (!challenge.Equals(request.client_response.ToLower()))
            {
                throw new AuthInvalidCredentialsException();
            }

            return(response);
        }
Exemple #9
0
        public ApplicationLogicRoot(IPersistence persistence)
        {
            var                   noSqlPersistence = persistence;
            IUserLookup           lookup           = new UserLookup(noSqlPersistence);
            IConnectorDestination destination      = new UserDestination(noSqlPersistence);

            _userUseCaseFactory = new UserUseCaseFactory(destination, lookup);
        }
        public void TournamentRecordsGetsErrorWhenUserHasNotCompetedInAnyTournaments()
        {
            var command = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentRecords")).FirstOrDefault();
            var results = command.Executor("", UserLookup.GetId("Buzz"));

            Assert.IsNotNull(results.Responses);
            Assert.AreEqual(1, results.Responses.Count);
        }
        public void TournamentResultsCompactReturnsNullIfNoTournamentsHaveTakenPlace()
        {
            TournamentResultsData.Clear();
            var command = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentResults")).FirstOrDefault();
            var results = command.CompactExecutor("", UserLookup.GetId("Buzz"));

            Assert.IsNull(results);
        }
 public void HandleTeamJoin(TeamJoin newuser)
 {
     try
     {
         UserLookup.Add(newuser.user.id, newuser.user);
     }
     catch { }
 }
Exemple #13
0
        public async Task <AuthResponse> CDKeyAuth([FromBody] AuthRequest request)
        {
            var response = new AuthResponse();

            try {
                var cdKeyLookup = new CdKeyLookup();
                cdKeyLookup.CdkeyHash = request.cdkey;
                if (request.gameLookup == null)
                {
                    throw new AuthInvalidCredentialsException();
                }
                cdKeyLookup.Gameid        = request.gameLookup.id;
                cdKeyLookup.profileLookup = request.profileLookup;
                var profile = await cdkeyRepository.LookupProfileFromCDKey(cdKeyLookup);

                if (profile == null || request.profileLookup == null || profile.Nick.CompareTo(request.profileLookup.nick) != 0)
                {
                    throw new AuthInvalidCredentialsException();
                }
                response.profile = profile;
                var userLookup = new UserLookup();
                userLookup.id = profile.Userid;
                var user = (await userRepository.Lookup(userLookup)).FirstOrDefault();
                response.user = user;

                var sesskey = gs_sesskey(request.session_key);

                var    cdkey     = (await cdkeyRepository.Lookup(cdKeyLookup)).FirstOrDefault();
                string challenge = cdkey.Cdkey + sesskey.ToString();
                using (MD5 md5 = MD5.Create())
                {
                    StringBuilder sBuilder = new StringBuilder();
                    byte[]        data     = md5.ComputeHash(Encoding.UTF8.GetBytes(challenge));
                    for (int i = 0; i < data.Length; i++)
                    {
                        sBuilder.Append(data[i].ToString("x2"));
                    }
                    challenge = sBuilder.ToString().ToLower();
                }

                if (!challenge.Equals(request.client_response.ToLower()))
                {
                    throw new AuthInvalidCredentialsException();
                }
                return(response);
            } catch (AuthInvalidCredentialsException e) {
                var profile = (await profileRepository.Lookup(new ProfileLookup {
                    id = configuration.GetValue <int>("PersistCdKeyAuthFallbackProfile")
                })).FirstOrDefault();
                response.profile = profile;
                var userLookup = new UserLookup();
                userLookup.id = profile.Userid;
                var user = (await userRepository.Lookup(userLookup)).FirstOrDefault();
                response.user = user;
                return(response);
            }
        }
        public void TournamentResultsGetsErrorMessageWhenNoTournamentHasCompleted()
        {
            TournamentResultsData.Clear();
            var command = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentResults")).FirstOrDefault();
            var results = command.Executor("", UserLookup.GetId("Foo"));

            Assert.IsNotNull(results.Responses);
            Assert.AreEqual(1, results.Responses.Count);
        }
        public void TournamentRecordsGetsUsersRecords()
        {
            var command = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentRecords")).FirstOrDefault();
            var results = command.Executor("", UserLookup.GetId("Foo"));

            Assert.IsNotNull(results.Responses);
            Assert.AreEqual(2, results.Responses.Count);
            Assert.IsTrue(results.Responses.Any(x => x.Contains("1st") && x.Contains("35 points")));
            Assert.IsTrue(results.Responses.Any(x => x.Contains("2nd") && x.Contains("40 points")));
        }
        public void TournamentResultsGetsLatestTournamentWithoutParticipation()
        {
            var command = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentResults")).FirstOrDefault();
            var results = command.Executor("", UserLookup.GetId("Buzz"));

            Assert.IsNotNull(results.Responses);
            Assert.AreEqual(2, results.Responses.Count);
            Assert.IsTrue(results.Responses.Any(x => x.Contains("30 seconds")));
            Assert.IsTrue(results.Responses.Any(x => x.Contains("02") && x.Contains("30")));
        }
        private async Task <AuthResponse> handleAuthRequest(AuthRequest authRequest, ProofType type)
        {
            AuthResponse response = new AuthResponse();

            if (authRequest.user != null)
            {
                var user = (await userRepository.Lookup(authRequest.user)).FirstOrDefault();
                if (user == null)
                {
                    throw new NoSuchUserException();
                }
                if (authRequest.profile != null)
                {
                    var userLookup = new UserLookup();
                    userLookup.id            = user.Id;
                    authRequest.profile.user = userLookup;
                }
            }
            var profile = (await profileRepository.Lookup(authRequest.profile)).FirstOrDefault();

            if (profile == null)
            {
                switch (type)
                {
                case ProofType.ProofType_NickEmail:
                    throw new NickInvalidException();

                case ProofType.ProofType_Unique:
                    throw new UniqueNickInvalidException();

                default:
                    throw new AuthInvalidCredentialsException();
                }
            }

            UserLookup lookup = new UserLookup();

            lookup.id    = profile.Userid;
            profile.User = profile.User ?? (await userRepository.Lookup(lookup)).FirstOrDefault();

            String client_proof = GetPasswordProof(profile, authRequest, type, true);

            if (!client_proof.Equals(authRequest.client_response))
            {
                throw new AuthInvalidCredentialsException();
            }

            response.server_response = GetPasswordProof(profile, authRequest, type, false);
            response.profile         = profile;
            response.user            = profile.User;
            response.session         = await generateSessionKey(profile);

            response.success = true;
            return(response);
        }
Exemple #18
0
            public List <User> LookupUser(string partName)
            {
                List <User> user  = new List <User>();
                UserLookup  users = JsonConvert.DeserializeObject <UserLookup>(Get("users/lookup?name=" + partName));

                foreach (User u in users.users)
                {
                    user.Add(u);
                }
                return(user);
            }
Exemple #19
0
 public void InitUserLookup()
 {
     using (var scope = serviceProvider.CreateScope())
     {
         var db = scope.ServiceProvider.GetRequiredService <NervboxDBContext>();
         db.Users.ToList().ForEach(user =>
         {
             UserLookup.AddOrUpdate(user.Id, user, (id, newUser) => { return(newUser); });
         });
     }
 }
        public void TournamentRecordsCompactGetsUserRecords()
        {
            var command      = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentRecords")).FirstOrDefault();
            var results      = command.CompactExecutor("", UserLookup.GetId("Foo"));
            var resultObject = RecordsFromCompact(results.ToCompact().First());

            Assert.IsNotNull(resultObject);
            Assert.AreEqual(1, resultObject.TopRank);
            Assert.AreEqual(35, resultObject.TopRankScore);
            Assert.AreEqual(40, resultObject.TopScore);
            Assert.AreEqual(2, resultObject.TopScoreRank);
        }
        internal async Task <IReadOnlyCollection <Models.Group> > GetBannedGroupsAsync(AbstractSubredditOptionSet options)
        {
            if (UserLookup is CacheableBackedBotDatabase cacheable)
            {
                if (cacheable.IsStale)
                {
                    IncrementStatisticIfExists("requestRate");
                }
            }
            IReadOnlyCollection <String> actioned = options.ActionedUserTypes.ToHashSet();

            return(actioned.Count == 0 ? await UserLookup.GetDefaultBannedGroupsAsync() : (await UserLookup.GetAllGroupsAsync()).Values.Where(group => actioned.Contains(group.Name)).ToArray());
        }
        public void TournamentResultsCompactIncludesUserData()
        {
            var command      = TournamentModule.Commands.Where(x => x.Name.Equals("TournamentResults")).FirstOrDefault();
            var results      = command.CompactExecutor("", UserLookup.GetId("Foo"));
            var resultObject = ResultsFromCompact(results.ToCompact().First());

            Assert.IsNotNull(resultObject);
            Assert.AreEqual(UserLookup.GetId("Fizz"), resultObject.Winner);
            Assert.AreEqual(3, resultObject.Participants);
            Assert.AreEqual(30, resultObject.WinnerPoints);
            Assert.AreEqual(3, resultObject.Rank);
            Assert.AreEqual(10, resultObject.UserPoints);
        }
Exemple #23
0
 public TournamentModule(TournamentSystem system, IRepository <TournamentResult> repository, UserLookup userLookup)
 {
     TournamentSystem          = system;
     system.TournamentStarted += System_TournamentStarted;
     system.TournamentEnded   += System_TournamentEnded;
     Repository = repository;
     UserLookup = userLookup;
     Commands   = new CommandHandler[]
     {
         new CommandHandler("TournamentResults", TournamentResults, TournamentResultsCompact, "TournamentResults", "tournament-results"),
         new CommandHandler("TournamentRecords", TournamentRecords, TournamentRecordsCompact, "TournamentRecords", "tournament-records"),
         new CommandHandler("NextTournament", NextTournament, NextTournamentCompact, "NextTournament", "next-tournament")
     };
 }
Exemple #24
0
        public void PlaySound(string soundId, int userId)
        {
            new Task(() =>
            {
                var path = SoundDirectory.FullName;
                if (Environment.EnvironmentName == "Development")
                {
                    path = SoundDirectoryDebugPlay;
                }

                var sound = this.Sounds[soundId];
                //this.SshService.SendCmd($"omxplayer -o local --no-keys {Path.Combine(path, sound.FileName.Replace("!", "\\!").Replace(" ", "\\ "))} &");
                this.SshService.SendCmd($"omxplayer -o local --no-keys {path}/{sound.FileName.Replace("!", "\\!").Replace(" ", "\\ ")} &");

                //try
                //{
                //  IPHostEntry e = Dns.GetHostEntry(initiator);
                //  if (e != null)
                //  {
                //    initiator = $"{e.HostName} ({initiator})";
                //  }
                //}
                //catch { }

                var usage = new SoundUsage()
                {
                    PlayedByUserId = userId,
                    Time           = DateTime.UtcNow,
                    SoundHash      = sound.Hash
                };

                this.Usages.Enqueue(usage);

                if (!UserLookup.ContainsKey(userId))
                {
                    InitUserLookup();
                }

                User initiator = UserLookup[userId];

                this.SoundHub.Clients.All.SendAsync("soundPlayed", new
                {
                    Initiator = new { Name = initiator.FirstName + " " + initiator.LastName, Id = initiator.Id },
                    Time      = DateTime.UtcNow,
                    SoundHash = sound.Hash,
                    FileName  = sound.FileName
                });
            }).Start();
        }
Exemple #25
0
        public void ShouldCreateNoConnecteeWhenUserWithGivenIdDoesNotExist()
        {
            //GIVEN
            var persistence = Substitute.For <IPersistence>();
            var lookup      = new UserLookup(persistence);
            var id          = Any.String();

            persistence.ReadById <UserDto>("Users", id).Returns(Maybe <UserDto> .Nothing);

            //WHEN
            var connectee = lookup.LookupConnectee(id);

            //THEN
            connectee.Should().BeOfType <NoConnectee>();
        }
Exemple #26
0
        public void ShouldThrowInvalidConnectorIdExceptionWhenReadingConnectorRaisesException()
        {
            //GIVEN
            var persistence          = Substitute.For <IPersistence>();
            var lookup               = new UserLookup(persistence);
            var persistenceException = Any.Exception();
            var id = Any.String();

            persistence.ReadById <UserDto>("Users", id).Throws(persistenceException);

            //WHEN - THEN
            new Action(() => lookup.LookupConnector(id)).Should().Throw <InvalidConnectorIdException>()
            .Where(e => e.InnerException == persistenceException)
            .Where(e => e.Message.Contains(id));
        }
Exemple #27
0
        static void Main(string[] args)
        {
            Console.WriteLine("Enter player name or word");
            string name = Console.ReadLine();

            do
            {
                UserLookup lookup = new UserLookup();
                UserInfo   info   = new UserInfo();

                info = lookup.GetUserInfo(name);
                Console.WriteLine(info.Fact);
                Console.WriteLine(info.District);
                Console.WriteLine(info.ErrorMessage);
                name = Console.ReadLine();
            } while (name != "q");
        }
Exemple #28
0
        public void ShouldCreateConnecteeWithReadUser()
        {
            //GIVEN
            var persistence = Substitute.For <IPersistence>();
            var lookup      = new UserLookup(persistence);
            var userDto     = Any.Instance <UserDto>().ToMaybe();
            var id          = Any.String();

            persistence.ReadById <UserDto>("Users", id).Returns(userDto);

            //WHEN
            var connector = lookup.LookupConnectee(id);

            //THEN
            connector.Should().BeOfType <Connectee>()
            .And.DependOn(userDto.Value);
        }
Exemple #29
0
        public void Gloats()
        {
            var fisher    = FisherData.FirstOrDefault(x => x.UserId == "00");
            var response  = Module.Gloat("1", fisher.UserId);
            var responses = response.Responses;
            var messages  = response.Messages;

            Assert.IsTrue(response.Processed);
            Assert.IsNull(response.Errors);
            Assert.AreEqual(1, responses.Count);
            Assert.AreEqual(1, messages.Count);
            Assert.IsTrue(responses[0].Contains(System.GloatCost.ToString()));
            Assert.IsTrue(responses[0].Contains(fisher.Records[0].Fish.Name));
            Assert.IsTrue(messages[0].Contains(UserLookup.GetUsername(fisher.UserId)));
            Assert.IsTrue(messages[0].Contains(fisher.Records[0].Fish.Name));
            Assert.IsTrue(messages[0].Contains(fisher.Records[0].Length.ToString()));
            Assert.IsTrue(messages[0].Contains(fisher.Records[0].Weight.ToString()));
        }
Exemple #30
0
        public void RespondsWithCompactGlobalLeaderboard()
        {
            var responses   = Module.GlobalLeaderboardCompact("", "00");
            var compact     = responses.ToCompact();
            var leaderboard = LeaderboardMock.Read();

            foreach (var entry in leaderboard)
            {
                Assert.IsTrue(
                    compact.Any(
                        x => x.Contains(entry.Fish.Name) &&
                        x.Contains(entry.Length.ToString()) &&
                        x.Contains(entry.Weight.ToString()) &&
                        x.Contains(UserLookup.GetUsername(entry.UserId))
                        )
                    );
            }
        }
Exemple #31
0
 protected bool Equals(UserLookup other)
 {
     return ID == other.ID;
 }