public static void HandleLogin(Client client, Message message) { if (message.BytesAvaible >= 38) { var username = message.GetString(17); var unk = message.GetShort(); var password = message.GetString(17); var account = Account.getAccount(username, password); if (account != null) { if (!account.isInGame && !account.isInLobby && !account.isInLobbyRoom) { var sessionKey = Functions.Random(17, false); AccountTransition.addAccount(account, sessionKey); client.account = account; if (client.account.first_login == 1) { Log.WriteLog(Log.Type.Info, "{0} logged in with session key '{1}'", client.account.char_name, sessionKey); } if (client.account.char_rank == "Banned") { client.Send(new TM_SC_RESULT((byte)AuthenticationEnums.ResultId.msg_server_denied)); } else { client.Send(new TS_SC_WE_LOGIN(sessionKey)); HandleServerList(client, message); HandleSelectServer(client, message); } } else { var thisMmoClient = mmo.Server.clients.FirstOrDefault(x => x.account.char_name == client.account.char_name); var thisLobbyClient = lobby.Server.clients.FirstOrDefault(x => x.account.char_name == client.account.char_name); client.Disconnect(); thisMmoClient.Disconnect(); thisLobbyClient.Disconnect(); client.Send(new TM_SC_RESULT((byte)AuthenticationEnums.ResultId.msg_server_already_exist)); Log.WriteLog(Log.Type.Info, "'{0}:{1}' tried to connect on connected account '{2}:{3}'", client.Ip, client.Port, username.Replace("\0", string.Empty), password.Replace("\0", string.Empty)); } } else { client.Send(new TM_SC_RESULT((byte)AuthenticationEnums.ResultId.msg_server_not_exist)); Log.WriteLog(Log.Type.Info, "'{0}:{1}' failed to connect with creds '{2}:{3}'", client.Ip, client.Port, username.Replace("\0", string.Empty), password.Replace("\0", string.Empty)); } } }
public static void HandleLogin(Client client, Message message) { if (message.BytesAvaible >= 17) { var sessionKey = message.GetString(17); var account = AccountTransition.getAccount(sessionKey); if (account != null) { client.account = account; client.sessionKey = sessionKey; client.Send(new BM_SC_LOGIN()); client.Send(new BM_SC_PLAYER_CHARACTER_LIST(client.account.char_name, (short)client.account.first_login, client.account.char_type)); Log.WriteLog(Log.Type.Info, "Loaded account Id:'{0}', Name:'{1}', SessionKey:'{2}'", client.account.char_id, client.account.char_name, client.sessionKey); } else { Log.WriteLog(Log.Type.Info, "Account for session key '{0}' cannot be found", sessionKey); } } }