예제 #1
0
 private void Validate(LoginRequestDataPacket packet)
 {
     Internet.Get("http://localhost:3000/", $"user/{packet.Username}", result =>
     {
         UserData data = JsonConvert.DeserializeObject <UserData>(result);
         if (data != null)
         {
             bool exists        = data.Status != (int)HttpStatusCode.NotFound;
             bool connected     = false;
             bool validPassword = data.User.Verify(packet.Password);
             if (exists && validPassword && !connected)
             {
                 Authenticate(ErrorsType.NoError, packet);
                 _user            = data.User;
                 _user.Identifier = id;
             }
             else if (validPassword)
             {
                 Authenticate(ErrorsType.PlayerAlreadyLoggedIn, packet);
             }
             else
             {
                 Authenticate(ErrorsType.UnknownUsernameOrPassword, packet);
             }
         }
     }, error => Authenticate(ErrorsType.UnknownError, packet));
 }
 public void HandlePacket(DataPacket packet)
 {
     switch (packet.Pid())
     {
     case LoginRequestDataPacket.NetworkId:
         LoginRequestDataPacket loginRequestDataPacket = (LoginRequestDataPacket)packet;
         Validate(loginRequestDataPacket);
         break;
     }
 }
 public void Authenticate(LoginErrorsType type, LoginRequestDataPacket request)
 {
     if (type == LoginErrorsType.NoError)
     {
         server.Log($"[SESSION] [AUTHENTICATE STATUS: {type.ToString()}].");
     }
     else
     {
         LoginErrorResponsePacket packet = new LoginErrorResponsePacket {
             Identifier = 0, Error = type
         };
         SendPacket(packet);
         server.Log($"[SESSION] [AUTHENTICATE STATUS: {type.ToString()}].");
     }
 }
예제 #4
0
 private void Authenticate(ErrorsType type, LoginRequestDataPacket request)
 {
     if (type == ErrorsType.NoError)
     {
         Id = request.Identifier;
         LoginResponsePacket packet = new LoginResponsePacket();
         SendPacket(packet);
         LogFactory.GetLog(server.Name).LogInfo($"[SESSION] [AUTHENTICATE STATUS: {type.ToString()}].");
     }
     else
     {
         LoginErrorResponsePacket packet = new LoginErrorResponsePacket {
             Identifier = 0, Error = type
         };
         SendPacket(packet);
         LogFactory.GetLog(server.Name).LogInfo($"[SESSION] [AUTHENTICATE STATUS: {type.ToString()}].");
     }
 }
        public void Validate(LoginRequestDataPacket packet)
        {
            Random random    = new Random();
            int    connected = 1;

            if (TestUser.exists && TestUser.username == packet.Username && TestUser.password == packet.Password && connected == 0)
            {
                Authenticate(LoginErrorsType.NoError, packet);
            }
            else if (TestUser.exists && TestUser.username == packet.Username && TestUser.password == packet.Password)
            {
                Authenticate(LoginErrorsType.PlayerAlreadyLoggedIn, packet);
            }
            else
            {
                Authenticate(LoginErrorsType.UnknownUsernameOrPassword, packet);
            }
        }
예제 #6
0
        protected override void HandlePacket(DataPacket packet)
        {
            switch (packet.Pid())
            {
            case LoginRequestDataPacket.NetworkId:
                LoginRequestDataPacket loginRequestDataPacket = (LoginRequestDataPacket)packet;
                Validate(loginRequestDataPacket);
                break;

            case LoginExitRequestPacket.NetworkId:
                SendPacket(packet);
                break;

            case LoginToGameServerRequestStep1Packet.NetworkId:
                LoginToGameServerRequestStep1Packet response = (LoginToGameServerRequestStep1Packet)packet;
                response.User = _user;
                SendPacket(response);
                break;

            case CreateAccountPacket.NetworkId:
                if (User.IsFirstTimeJoined())
                {
                    CreateAccountPacket createAccountPacket = (CreateAccountPacket)packet;
                    if (createAccountPacket.Confirmed)
                    {
                        Internet.Get("http://localhost:3000/", $"user/nickname/change/{User.Id}/{createAccountPacket.Nickname}", result =>
                        {
                            VerifyResult data = JsonConvert.DeserializeObject <VerifyResult>(result);
                            if (data == null || !data.Result)
                            {
                                SendPacket(new LoginErrorResponsePacket {
                                    Error = ErrorsType.UnknownError
                                });
                            }
                        }, error =>
                        {
                            SendPacket(new LoginErrorResponsePacket {
                                Error = ErrorsType.CouldNotConnectToTheServer
                            });
                        });
                    }
                    SendPacket(createAccountPacket);
                }
                break;

            case CheckNameExistencePacket.NetworkId:
                CheckNameExistencePacket p = (CheckNameExistencePacket)packet;
                Internet.Get("http://localhost:3000/", $"user/nickname/exists/{p.Nickname}", result =>
                {
                    VerifyResult data = JsonConvert.DeserializeObject <VerifyResult>(result);
                    if (data != null)
                    {
                        SendPacket(p);
                    }
                    else
                    {
                        SendPacket(new LoginErrorResponsePacket {
                            Error = ErrorsType.CouldNotConnectToTheServer
                        });
                    }
                }, error =>
                {
                    SendPacket(new LoginErrorResponsePacket {
                        Error = ErrorsType.CouldNotConnectToTheServer
                    });
                });
                break;
            }
            base.HandlePacket(packet);
        }