예제 #1
0
        public static void HandleNicknameChoiceRequestMessage(NicknameChoiceRequestMessage message, AuthClient client)
        {
            if (client.Account == null)
            {
                return;
            }
            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 (AccountRecord.NicknameExist(message.nickname))
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.ALREADY_USED));
                return;
            }

            client.Account.Nickname = message.nickname;

            AccountRecord.UpdateAccount(client.Account);
            client.Send(new NicknameAcceptedMessage());

            Login(client, false);
        }
예제 #2
0
        private void NicknameRegistrationMessageHandler(DofusClient client, NicknameRegistrationMessage message)
        {
            client.Logger.Log("Vous devez choisir un pseudo pour pouvoir vous connecter.", LogMessageType.Public);
            var random          = new Random();
            var nickname        = random.RandomString(10);
            var nicknameMessage = new NicknameChoiceRequestMessage(nickname);

            client.Send(nicknameMessage);
            client.Account.Nickname = nickname;
        }
예제 #3
0
        public static void HandleNicknameChoiceRequest(BigEndianReader reader, AuthClient client, AuthServer server)
        {
            NicknameChoiceRequestMessage message = new NicknameChoiceRequestMessage();

            message.Unpack(reader);
            List <Account> accounts = AccountManager.GetAccounts();

            //TEST IF NICK == USERNAME
            if (message.nickname == client.account.Username)
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.SAME_AS_LOGIN));
                return;
            }

            if (message.nickname.ToLower() == client.account.Username.ToLower() || message.nickname.ToLower().Contains(client.account.Username.ToLower()))
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.TOO_SIMILAR_TO_LOGIN));
                return;
            }

            //TEST IF NAME ALREADY TAKEN
            foreach (Account a in accounts)
            {
                if (a.Pseudo == message.nickname)
                {
                    client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.ALREADY_USED));
                    return;
                }
            }

            //TEST IF NAME IS ALLOWED
            foreach (string s in invalidNickname)
            {
                if (message.nickname.Contains(s.ToLower()) || message.nickname.Contains(s.ToUpper()))
                {
                    client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.INVALID_NICK));
                    return;
                }
            }

            //VALID USERNAME
            if (!AccountManager.SetAccountNickname(client.account.Id, message.nickname))
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.UNKNOWN_NICK_ERROR));
                return;
            }
            client.Send(new NicknameAcceptedMessage());
            SendAccServer(client, server);
            Out.Info($"Welcome to a new player ! Be kind to {message.nickname} =D", ConsoleColor.Cyan);
        }
        public static void HandleNicknameChoiceRequestMessage(AuthClient client, NicknameChoiceRequestMessage message)
        {
            var nickname = message.nickname;

            if (client.Account.Nickname != string.Empty)
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.UNKNOWN_NICK_ERROR));
                return;
            }

            /* Check the Username */
            if (!CheckNickName(nickname))
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.INVALID_NICK));
                return;
            }

            /* Same as Login */
            if (nickname == client.Account.Login)
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.SAME_AS_LOGIN));
                return;
            }

            /* Look like Login */
            if (client.Account.Login.Contains(nickname))
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.TOO_SIMILAR_TO_LOGIN));
                return;
            }

            /* Already Used */
            if (AccountManager.Instance.NicknameExists(nickname))
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.ALREADY_USED));
                return;
            }

            /* Ok, it's good */
            client.Account.Nickname = nickname;
            client.Save();

            client.Send(new NicknameAcceptedMessage());
            SendIdentificationSuccessMessage(client, false);
            SendServersListMessage(client, 0, true);
        }
예제 #5
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));
     }
 }
예제 #6
0
        public static void HandleNicknameChoiceRequestMessage(AuthClient client, NicknameChoiceRequestMessage message)
        {
            string nickname = message.nickname;

            if (!ConnectionHandler.CheckNickName(nickname))
            {
                client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.INVALID_NICK));
            }
            else
            {
                if (nickname == client.Account.Login)
                {
                    client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.SAME_AS_LOGIN));
                }
                else
                {
                    if (client.Account.Login.Contains(nickname))
                    {
                        client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.TOO_SIMILAR_TO_LOGIN));
                    }
                    else
                    {
                        if (Singleton <AccountManager> .Instance.NicknameExists(nickname))
                        {
                            client.Send(new NicknameRefusedMessage((sbyte)NicknameErrorEnum.ALREADY_USED));
                        }
                        else
                        {
                            client.Account.Nickname = nickname;
                            client.Save();
                            client.Send(new NicknameAcceptedMessage());
                            ConnectionHandler.SendIdentificationSuccessMessage(client, false);
                            ConnectionHandler.SendServersListMessage(client);
                        }
                    }
                }
            }
        }