private void HandlePlayerLogin(Packet ClientPacket) { string Nickname, Auth1, Auth2; Byte Code, Banned, FirstSet; int UID; USP_LOGIN_SERVER_Result UspLoginServer = null; if (Program.Server.IsUnderMaintenance) { Send(new byte[] { 0x01, 0x00, 0xE3, 0x48, 0xD2, 0x4D, 0x00 }); Disconnect(); return; } if (!ClientPacket.ReadPStr(out string User)) { return; } if (!ClientPacket.ReadPStr(out string Pwd)) { return; } try { Auth1 = RandomAuth(7); Auth2 = RandomAuth(7); if (Pwd.Length == 32) { var result = _db.USP_LOGIN_SERVER_US(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault(); UspLoginServer = new USP_LOGIN_SERVER_Result { CODE = result.CODE, FirstSet = result.FirstSet, Nickname = result.Nickname, IDState = result.IDState, Logon = result.Logon, UID = result.UID }; } if (Pwd.Length <= 32) { UspLoginServer = _db.USP_LOGIN_SERVER(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault(); } Code = (byte)UspLoginServer.CODE; // {-- USER NOT FOUND --} var OUTCODE = (Code == 0) && (UspLoginServer.FirstSet == null); if (OUTCODE || Code == 5) { Send(new byte[] { 0x01, 0x00, 0xE3, 0x6F, 0xD2, 0x4D, 0x00, }); Disconnect(); return; } // {-- PASSWORD ERROR --} if (Code == 6) { Response.Clear(); Response.Write(new byte[] { 0x01, 0x00, 0xE3, 0x5B, 0xD2, 0x4D, 0x00, }); Send(Response.GetBytes()); Disconnect(); return; } Banned = (byte)UspLoginServer.IDState; if (Banned > 0) { Response.Clear(); Response.Write(new byte[] { 0x01, 0x00, 0xE3, 0xF4, 0xD1, 0x4D, 0x00, }); Send(Response.GetBytes()); Disconnect(); return; } FirstSet = (byte)UspLoginServer.FirstSet; UID = UspLoginServer.UID; Nickname = UspLoginServer.Nickname; this.SetLogin(User); this.SetUID(UID); this.SetNickname(Nickname); this.SetAUTH_KEY_1(Auth1); this.SetAUTH_KEY_2(Auth2); this.SetFirstLogin(FirstSet); // Server.AuthServer.Send(new PangyaAPI.Auth.AuthPacket() { ServerType = PangyaAPI.Auth.AuthClientTypeEnum.LoginServer,ID = PangyaAPI.Auth.AuthPacketEnum.RECEIVES_USER_UID, Message = new { ID = UID} }) ; if (UspLoginServer.Logon == 1) { Send(new byte[] { 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 }); return; } if (string.IsNullOrEmpty(Nickname)) { Send(new byte[] { 0x01, 0x00, 0x0D8, 0x00, 0x00, 0x00, 0x00 }); return; } if (FirstSet == 0) { Response.Clear(); Response.Write(new byte[] { 0x0F, 0x00, 0x00 }); Response.WritePStr(User); Send(Response.GetBytes()); Response.Clear(); Response.Write(new byte[] { 0x01, 0x00 }); Response.WriteByte(0xD9); Response.WriteUInt32(uint.MaxValue); Send(Response.GetBytes()); return; } } catch { Send(new byte[] { 0x01, 0x00, 0xE3, 0x6F, 0xD2, 0x4D, 0x00, }); Disconnect(); return; } //new login if (GetFirstLogin == 1) { this.SendPlayerLoggedOnData(); } }
private void HandlePlayerLogin(Packet ClientPacket) { string Nickname, Auth1, Auth2; Byte Code, Banned, FirstSet; int UID; USP_LOGIN_SERVER_Result UspLoginServer = null; if (Program.Server.OpenServer == false) { HandleLoginMessage(LoginMessageEnum.ServerInMaintenance); WriteConsole.WriteLine("[LOGIN_SERVER]: Server is down for Maintenance"); Disconnect(); return; } if (!ClientPacket.ReadPStr(out string User)) { return; } if (!ClientPacket.ReadPStr(out string Pwd)) { return; } try { Auth1 = RandomAuth(7); Auth2 = RandomAuth(7); if (Pwd.Length == 32) { var result = _db.USP_LOGIN_SERVER_US(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault(); UspLoginServer = new USP_LOGIN_SERVER_Result { CODE = result.CODE, FirstSet = result.FirstSet, Nickname = result.Nickname, IDState = result.IDState, Logon = result.Logon, UID = result.UID }; } if (Pwd.Length < 32) { UspLoginServer = _db.USP_LOGIN_SERVER(User, Pwd, GetAddress, Auth1, Auth2).FirstOrDefault(); } Code = (byte)UspLoginServer.CODE; // {-- USER NOT FOUND --} var OUTCODE = (Code == 0) && (UspLoginServer.FirstSet == null); if (OUTCODE || Code == 5) { HandleLoginMessage(LoginMessageEnum.InvalidoUsernameOuSenha); Disconnect(); return; } // {-- PASSWORD ERROR --} if (Code == 6) { HandleLoginMessage(LoginMessageEnum.InvalidoIdPw); Disconnect(); return; } Banned = (byte)UspLoginServer.IDState; if (Banned > 0) { HandleLoginMessage(LoginMessageEnum.Banido); Disconnect(); return; } FirstSet = (byte)UspLoginServer.FirstSet; UID = UspLoginServer.UID; Nickname = UspLoginServer.Nickname; this.SetLogin(User); this.SetUID(UID); this.SetNickname(Nickname); this.SetAUTH_KEY_1(Auth1); this.SetAUTH_KEY_2(Auth2); this.SetFirstLogin(FirstSet); if (UspLoginServer.Logon == 1) { HandleLoginMessage(LoginMessageEnum.UsuarioEmUso); return; } if (string.IsNullOrEmpty(Nickname)) { Send(new byte[] { 0x01, 0x00, 0x0D8, 0x00, 0x00, 0x00, 0x00 }); HandleLoginMessage(LoginMessageEnum.CreateNickName_US); return; } if (FirstSet == 0) { Response.Clear(); Response.Write(new byte[] { 0x0F, 0x00, 0x00 }); Response.WritePStr(User); Send(Response.GetBytes()); HandleLoginMessage(LoginMessageEnum.CreateNickName); return; } } catch { HandleLoginMessage(LoginMessageEnum.InvalidoIdPw); Disconnect(); return; } //new login if (GetFirstLogin == 1) { this.SendPlayerLoggedOnData(); } }