private static void Handle_AccountInfoReceived(LoginConnection net, PacketReader reader) { //Set Account Info Account account = new Account(); account.AccountId = reader.ReadInt32(); account.AccessLevel = reader.ReadByte(); account.Membership = reader.ReadByte(); account.Name = reader.ReadDynamicString(); //account.Password = reader.ReadDynamicString(); account.Session = reader.ReadInt32(); account.LastEnteredTime = reader.ReadInt64(); account.LastIp = reader.ReadDynamicString(); Console.WriteLine(account.Session); if (ClientConnection.CurrentAccounts.ContainsKey(account.Session)) { //Already Account acc = ClientConnection.CurrentAccounts[account.Session]; if (acc.Connection != null) { acc.Connection.Dispose(); //Disconenct Logger.Trace("Account " + acc.Name + " Was Forcibly Disconnected"); } else { ClientConnection.CurrentAccounts.Remove(account.Session); } } else { Logger.Trace("Account {0}: Authorized", account.Name); ClientConnection.CurrentAccounts.Add(account.Session, account); } }
public override void HandleReceived(byte[] data) { PacketReader reader = new PacketReader(data, 0); short opcode = reader.ReadInt16(); PacketHandler<LoginConnection> handler = DelegateList.LHandlers[opcode]; if (handler != null) handler.OnReceive(this, reader); else Logger.Trace("Received Undefined Packet 0x{0:x2", opcode); }
private static void Handle_RegisterGameServer(GameConnection net, PacketReader reader) { byte id = reader.ReadByte(); short port = reader.ReadInt16(); string ip = reader.ReadDynamicString(); string password = reader.ReadDynamicString(); bool success = GameServerController.RegisterGameServer(id, password, net, port, ip); net.SendAsync(new NET_GameRegistrationResult(success)); }
public override void HandleReceived(byte[] data) { PacketReader reader = new PacketReader(data, 0); short opcode = reader.ReadInt16(); PacketHandler<GameConnection> handler = PacketList.GHandlers[opcode]; if (handler != null) { handler.OnReceive(this, reader); } else Logger.Trace("Received Undefined GameServer Packet 0x{0:X2}", opcode); reader = null; }
public static void OnPacketReceive_ClientAuthorized(ClientConnection net, PacketReader reader) { //B3 04 00 00 B3 04 00 00 8C 28 22 00 E7 F0 0C C6 FF FF FF FF 00 long protocol = reader.ReadLEInt64(); //Protocols? int sessionId = reader.ReadLEInt32(); //User Session Id int accountId = reader.ReadLEInt32(); //Account Id Account m_Authorized = ClientConnection.CurrentAccounts.FirstOrDefault(kv => kv.Value.Session == sessionId && kv.Value.AccountId == accountId).Value; if (m_Authorized == null) { net.Dispose(); Logger.Trace("Client {0} Disposed : Unable To Play.", net); } else { net.CurrentAccount = m_Authorized; net.SendAsync(new NP_ClientConnected()); } }
public override void HandleReceived(byte[] data) { PacketReader reader = new PacketReader(data, 0); reader.Offset += 1; //Undefined Random Byte byte level = reader.ReadByte(); //Packet Level short opcode = reader.ReadLEInt16(); //Packet Opcode if (!DelegateList.ClientHandlers.ContainsKey(level)) { Logger.Trace("Received Undefined Level {0} - Opcode 0x{1:X2}", level, opcode); return; } PacketHandler<ClientConnection> handler = DelegateList.ClientHandlers[level][opcode]; if (handler != null) handler.OnReceive(this, reader); else Logger.Trace("Received Undefined Packet Level - {0} Op - 0x{1:X2}", level, opcode); }
public override void HandleReceived(byte[] data) { PacketReader reader = new PacketReader(data, 0); short opcode = reader.ReadLEInt16(); if (opcode > PacketList.LHandlers.Length) { Logger.Trace("Not Enough Lenght For LHandlers, Disposing..."); Dispose(); return; } PacketHandler<ArcheAgeConnection> handler = PacketList.LHandlers[opcode]; if (handler != null) handler.OnReceive(this, reader); else Logger.Trace("Received Undefined Packet 0x{0:x2}", opcode); reader = null; }
private static void Handle_ServerSelected(ArcheAgeConnection net, PacketReader reader) { reader.Offset += 8; //00 00 00 00 00 00 00 00 Undefined Data byte serverId = reader.ReadByte(); GameServer server = GameServerController.CurrentGameServers.FirstOrDefault(n => n.Value.Id == serverId).Value; if (server.CurrentConnection != null) { if (GameServerController.AuthorizedAccounts.ContainsKey(net.CurrentAccount.AccountId)) { net.movedToGame = true; GameServerController.AuthorizedAccounts.Remove(net.CurrentAccount.AccountId); server.CurrentConnection.SendAsync(new NET_AccountInfo(net.CurrentAccount)); net.SendAsync(new NP_SendGameAuthorization(server, net.CurrentAccount.AccountId)); server.CurrentAuthorized.Add(net.CurrentAccount.AccountId); } } else net.Dispose(); }
private static void Handle_GameRegisterResult(LoginConnection con, PacketReader reader) { bool result = reader.ReadBoolean(); if (result) Logger.Trace("Login Server Successfully Installed"); else Logger.Trace("Some Problems are Appear while Installing Login Server"); if(result) m_CurrentLoginServer = con; }
/// <summary> /// Reading Length And Handles Data By [HandleReceived(byte[])] Without Length. /// </summary> /// <param name="e"></param> private void ProceedReceiving(SocketAsyncEventArgs e) { int transfered = e.BytesTransferred; if (e.SocketError != SocketError.Success || transfered <= 0) { if (DisconnectedEvent != null) DisconnectedEvent(this, EventArgs.Empty); return; } #if DEBUG //--- Console Hexadecimal StringBuilder builder = new StringBuilder(); builder.Append("\n"); for (int i = 0; i < transfered; i++) builder.AppendFormat("{0:x2} ".ToUpper(), m_RecvBuffer[i]); Logger.Trace(builder.ToString()); //--- Console Hexadecimal #endif PacketReader reader = new PacketReader(m_RecvBuffer, 0); short length = m_LittleEndian ? reader.ReadLEInt16() : reader.ReadInt16(); byte[] data = new byte[length]; Buffer.BlockCopy(m_RecvBuffer, 2, data, 0, length); HandleReceived(data); reader = null; }
private static void Handle_SignIn(ArcheAgeConnection net, PacketReader reader) { reader.Offset += 10; //Static Data - 0A 00 00 00 07 00 00 00 00 00 string m_RLogin = reader.ReadStringSafe(reader.ReadLEInt16()); //Reading Login Account n_Current = AccountHolder.AccountList.FirstOrDefault(n => n.Name == m_RLogin); if (n_Current == null) { //Make New Temporary if (Settings.Default.Account_AutoCreation) { Account m_New = new Account(); m_New.AccountId = AccountHolder.AccountList.Count + 1; m_New.LastEnteredTime = Utility.CurrentTimeMilliseconds(); m_New.AccessLevel = 0; m_New.LastIp = net.ToString(); m_New.Membership = 0; m_New.Name = m_RLogin; net.CurrentAccount = m_New; AccountHolder.AccountList.Add(m_New); } else net.CurrentAccount = null; } else { net.CurrentAccount = n_Current; } net.SendAsync(new NP_AcceptLogin()); net.SendAsync(new NP_AESKey()); }
private static void Handle_RequestServerList(ArcheAgeConnection net, PacketReader reader) { byte[] unknown = reader.ReadByteArray(8); //unk? net.SendAsync(new NP_ServerList()); }
private static void Handle_UpdateCharacters(GameConnection net, PacketReader reader) { int accountId = reader.ReadInt32(); int characters = reader.ReadInt32(); Account currentAc = AccountHolder.AccountList.FirstOrDefault(n => n.AccountId == accountId); currentAc.Characters = characters; }
private static void Handle_SignIn_Continue(ArcheAgeConnection net, PacketReader reader) { //HOW TO DECRYPT IT ???? string password = ""; if (net.CurrentAccount == null) { net.SendAsync(new NP_FailLogin()); return; } /* TODO if (net.CurrentAccount.Password == null) { //Means - New Account. net.CurrentAccount.Password = password; } else { //Checking Password if (net.CurrentAccount.Password != password) { net.SendAsync(new NP_FailLogin()); return; } } */ net.CurrentAccount.Session = net.GetHashCode(); net.SendAsync(new NP_PasswordCorrect(net.CurrentAccount.Session)); Logger.Trace("Account Logged In: " + net.CurrentAccount.Name); GameServerController.AuthorizedAccounts.Add(net.CurrentAccount.AccountId, net.CurrentAccount); }