public static void Login_Req(InPacket lea, Client c) { string username = lea.ReadString(); string password = lea.ReadString(); short encryptKey = lea.ReadShort(); if (username.IsAlphaNumeric() == false) { LoginPacket.Login_Ack(c, ServerState.LoginState.NO_USERNAME); return; } c.SetAccount(new Account(c)); try { c.Account.Load(username); var pe = new PasswordEncrypt(encryptKey); string encryptPassword = ServerConstants.PASSWORD_DECODE ? pe.encrypt(c.Account.Password, c.RetryLoginCount > 0 ? password.ToCharArray() : null) : c.Account.Password; if (!password.Equals(encryptPassword)) { LoginPacket.Login_Ack(c, ServerState.LoginState.PASSWORD_ERROR); Log.Error("Login Fail!"); c.RetryLoginCount += 1; } else if (c.Account.Banned == 1) { LoginPacket.Login_Ack(c, ServerState.LoginState.USER_LOCK); } else { LoginPacket.Login_Ack(c, ServerState.LoginState.OK, encryptKey, c.Account.Master > 0 ? true : false); c.Account.LoggedIn = 1; Log.Success("Login Success!"); } Log.Inform("Password = {0}", password); //Log.Inform("encryptKey = {0}", encryptKey); //Log.Inform("encryptPassword = {0}", encryptPassword); } catch (NoAccountException) { if (ServerConstants.AUTO_REGISTRATION == true) { if (username.Length < 5 || password.Length < 5) { LoginPacket.Login_Ack(c, ServerState.LoginState.NO_USERNAME); } Account account = new Account(c); account.Username = username.ToLower(); account.Password = password; account.Creation = DateTime.Now; account.LoggedIn = 0; account.Banned = 0; account.Master = 0; account.GamePoints = 0; account.GiftPoints = 0; account.BonusPoints = 0; account.Save(); LoginPacket.Login_Ack(c, ServerState.LoginState.USER_LOCK); return; } LoginPacket.Login_Ack(c, ServerState.LoginState.NO_USERNAME); } }
public static void Login_Req(InPacket lea, Client c) { string username = lea.ReadString(); string password = lea.ReadString(); short passwordKey = lea.ReadShort(); if (username.IsAlphaNumeric() == false) { LoginPacket.Login_Ack(c, ServerState.LoginState.PASSWORD_ERROR); return; } c.SetAccount(new Account(c)); try { if (LoginServer.IsMaintenance) { LoginPacket.Login_Ack(c, ServerState.LoginState.LOGIN_SERVER_DEAD); } else { c.Account.Load(username); if (c.RetryLoginCount >= 3) { c.Dispose(); } if (password.IsAlphaNumeric() == false) { LoginPacket.Login_Ack(c, ServerState.LoginState.PASSWORD_ERROR); Log.Error("Login Fail!"); c.RetryLoginCount += 1; } if (!password.Equals(c.Account.Password)) { LoginPacket.Login_Ack(c, ServerState.LoginState.PASSWORD_ERROR); Log.Error("Login Fail!"); Log.Inform("Retry Count: {0}", c.RetryLoginCount); c.RetryLoginCount += 1; } else if (c.Account.Banned > 1) { int LoginErrorCode = c.Account.Banned; switch (LoginErrorCode) { case 1: LoginPacket.Login_Ack(c, ServerState.LoginState.LOGIN_FAILED); //Account Lock break; case 7: LoginPacket.Login_Ack(c, ServerState.LoginState.BUG_LOCK); // Hack Ban break; case 8: LoginPacket.Login_Ack(c, ServerState.LoginState.BILLING_LOCK); // Billing Lock break; case 10: LoginPacket.Login_Ack(c, ServerState.LoginState.SPAM_LOCK); //SPAM LOCK break; case 11: LoginPacket.Login_Ack(c, ServerState.LoginState.BUG_LOCK); //Temp Banned break; case 12: LoginPacket.Login_Ack(c, ServerState.LoginState.USER_LOCK); break; case 13: LoginPacket.Login_Ack(c, ServerState.LoginState.NO_USERNAME); break; case 16: LoginPacket.Login_Ack(c, ServerState.LoginState.UNKNOWN_LOGIN_ERROR); break; case 17: LoginPacket.Login_Ack(c, ServerState.LoginState.ID_BLOCK_BUGPLAY2); break; case 29: LoginPacket.Login_Ack(c, ServerState.LoginState.HACK_LOCK); break; case 31: LoginPacket.Login_Ack(c, ServerState.LoginState.ID_BLOCK_NONE_ACTIVATION); break; default: return; } } else { int isMaster = c.Account.Master; LoginPacket.Login_Ack(c, ServerState.LoginState.OK); c.Account.LoggedIn = 1; Log.Success("Login Success! Username: {0}", username); } Log.Debug("Password Key : {0}", passwordKey); Log.Debug("Password = {0}", password); } } catch (NoAccountException) { switch (1) { case 1: LoginPacket.Login_Ack(c, ServerState.LoginState.NO_USERNAME); break; case 2: LoginPacket.Login_Ack(c, ServerState.LoginState.PASSWORD_ERROR); break; } //if (ServerConstants.AUTO_REGISTRATION == true) //{ // if (username.Length < 5 || password.Length < 5) // LoginPacket.Login_Ack(c, ServerState.LoginState.NO_USERNAME); // //account.Username = username.ToLower(); // //account.Password = password; // //account.Creation = DateTime.Now; // //account.LoggedIn = 0; // //account.Banned = 0; // //account.Master = 0; // //account.GamePoints = 0; // //account.GiftPoints = 0; // //account.BonusPoints = 0; c.Account.Save(); // LoginPacket.Login_Ack(c, ServerState.LoginState.USER_LOCK); // return; //} } }