コード例 #1
0
 public static void HandleIdentificationMessage(IdentificationMessage message, AuthClient client)
 {
     lock (LockObject)
     {
         Account account          = AccountsProvider.DecryptCredentialsFromClient(client, message.sessionOptionalSalt.ToString(), message.credentials);
         Account theoricalAccount = AccountsProvider.GetAccountFromDb(account.Username);
         if (theoricalAccount == null)
         {
             client.Send(new IdentificationFailedMessage((sbyte)IdentificationFailureReasonEnum.WRONG_CREDENTIALS));
             return;
         }
         if (theoricalAccount.Password == null || theoricalAccount.Password != account.Password)
         {
             client.Send(new IdentificationFailedMessage((sbyte)IdentificationFailureReasonEnum.WRONG_CREDENTIALS));
             return;
         }
         if (theoricalAccount.Banned || BanIpRecord.IsBanned(client.SSyncClient.Ip.Split(':')[0]))
         {
             client.Send(new IdentificationFailedMessage((sbyte)IdentificationFailureReasonEnum.BANNED));
             return;
         }
         client.Account = theoricalAccount;
         AccountInformationsRecord.CheckAccountInformations(client.Account.Id, ConfigurationManager.Instance.StartBankKamas);
         if (client.Account.Nickname == string.Empty || client.Account.Nickname == null)
         {
             client.Send(new NicknameRegistrationMessage());
             return;
         }
         Login(client, message.autoconnect);
     }
 }
コード例 #2
0
        public static void SelectedServer(ServerSelectionMessage message, AuthClient client)
        {
            string host      = ConfigurationManager.Instance.IsCustomHost == true ? ConfigurationManager.Instance.RealHost : ConfigurationManager.Instance.Host;
            var    encrypted = AccountsProvider.EncryptTicket(ServersManager.TransfertToGame(client.Account), client.AesKey);

            client.Send(new SelectedServerDataMessage((ushort)ConfigurationManager.Instance.ServerId, host, (ushort)ConfigurationManager.Instance.WorldPort, true, encrypted));
            client.Disconnect();
        }
コード例 #3
0
        public static void BanIpCommand(string value, WorldClient client)
        {
            var target = WorldServer.Instance.GetOnlineClient(value);

            if (target != null)
            {
                AccountsProvider.BanIp(target.SSyncClient.Ip.Split(':')[0]);
                target.Disconnect(0, "Vous avez été banni par " + client.Character.Record.Name);
            }
            else
            {
                client.Character.Reply("le joueur n'éxiste pas ou n'est pas connécté.");
            }
        }
コード例 #4
0
        public static void BanCommand(string value, WorldClient client)
        {
            var target = WorldServer.Instance.GetOnlineClient(value);

            if (target != null)
            {
                AccountsProvider.Ban(target.Account.Username);
                target.Disconnect(0, "Vous avez été banni par " + client.Character.Record.Name);
            }
            else
            {
                client.Character.Reply("Le client n'éxiste pas...");
            }
        }
コード例 #5
0
        public async Task GetAllUsers_ReturnsAllUsers()
        {
            //Arrange
            var context           = _fixture.ZipPayDbContext;
            var mockUsersProvider = new Mock <IUsersProvider>();

            mockUsersProvider.Setup(x => x.GetUser(It.IsAny <int>())).Returns(Task.FromResult(new UserModel()));

            var accountsProvider = new AccountsProvider(context, _logger.Object, _mapper, mockUsersProvider.Object);

            //Act
            var accounts = await accountsProvider.GetAllAccounts();

            //Assert
            Assert.True(accounts.Any());
        }
コード例 #6
0
        public async Task CreateAccount_UserDoesntExist()
        {
            //Arrange
            var context           = _fixture.ZipPayDbContext;
            var mockUsersProvider = new Mock <IUsersProvider>();
            var accountsProvider  = new AccountsProvider(context, _logger.Object, _mapper, mockUsersProvider.Object);

            //Act
            var accountCreationModel = new AccountCreationModel
            {
                UserId     = 1000,
                FirstName  = "Test",
                SecondName = "TestSecondName"
            };

            //Assert
            await Assert.ThrowsAsync <NotFoundException>(() =>
                                                         accountsProvider.CreateAccount(accountCreationModel));
        }
コード例 #7
0
        public async Task CreateAccount_AccountCreated()
        {
            //Arrange
            var context          = _fixture.ZipPayDbContext;
            var userProvider     = new UsersProvider(context, new Mock <ILogger <UsersProvider> >().Object, _mapper);
            var accountsProvider = new AccountsProvider(context, _logger.Object, _mapper, userProvider);

            //Act
            var accountCreationModel = new AccountCreationModel
            {
                UserId     = 8,
                FirstName  = "Test",
                SecondName = "TestSecondName"
            };
            var result = await accountsProvider.CreateAccount(accountCreationModel);

            //Assert
            Assert.Equal("TestSecondName", result.SecondName);
        }
コード例 #8
0
        public static void PointKamasCommand(string value, WorldClient client)
        {
            if (client.Account.PointsCount == 0)
            {
                client.Character.Reply("Vous ne possedez pas de points, votez sur " + ConstantsRepertory.VOTE_URL, Color.MediumPurple);
                return;
            }

            client.Character.Reply("Vous avez converti vos " + client.Account.PointsCount + " point(s) en kamas!", Color.MediumPurple, true);

            if (AccountsProvider.RemovePoints(client.Account))
            {
                client.Character.AddKamas(client.Account.PointsCount * 1000, true);
                client.Account.PointsCount = 0;
            }
            else
            {
                client.Character.NotificationError("Unable to remove points, unknow error");
            }
        }
コード例 #9
0
 public static void HandleNicknameChoice(NicknameChoiceRequestMessage message, AuthClient client)
 {
     if (client.Account.Username == message.nickname)
     {
         client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.SAME_AS_LOGIN));
         return;
     }
     if (message.nickname == string.Empty || message.nickname.Length >= 15 || message.nickname.Contains('\''))
     {
         client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.INVALID_NICK));
         return;
     }
     if (AccountsProvider.CheckAndApplyNickname(client, message.nickname))
     {
         client.Send(new NicknameAcceptedMessage());
         Login(client, false);
     }
     else
     {
         client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.ALREADY_USED));
     }
 }