Exemple #1
0
        protected override void ProcessMessage()
        {
            SecretNetworkPacketType packet = (SecretNetworkPacketType)InMessage.GetByte();

            if (!PacketHandlers.ContainsKey(packet))
            {
                Logger.Log(LogLevels.Warning, "SECRET: Unknown packet type arrived from game server: " + GetServerName());
                return;
            }
            Action <GameServerConnection> handler = PacketHandlers[packet];

            handler.Invoke(this);
        }
Exemple #2
0
        protected override void ProcessMessage()
        {
            SecretNetworkPacketType packet = (SecretNetworkPacketType)InMessage.GetByte();

            if (!PacketHandlers.ContainsKey(packet))
            {
                Logger.Log(LogLevels.Warning, "SECRET: Unknown packet type arrived from login server!");
                return;
            }
            Action handler = PacketHandlers[packet];

            handler.Invoke();
        }
        protected override void ProcessFirstMessage(bool isChecksummed)
        {
            if (!isChecksummed)
            {
                ProcessStatusMessage();
                return;
            }

            InMessage.GetByte();             //Protocol Id
            InMessage.GetUInt16();           //Client OS
            Version = InMessage.GetUInt16(); //Client Version

            if (Version < Constants.ClientVersionMin || Version > Constants.ClientVersionMax)
            {
                Disconnect("Only clients with protocol " + Constants.ClientVersionStr + " allowed!", Version);
                return;
            }

            //This is 10.76 server, only handling 10.76 client bytes
            InMessage.SkipBytes(17);

            /*
             * Skipped bytes:
             * 4 bytes: protocolVersion
             * 12 bytes: dat, spr, pic signatures (4 bytes each)
             * 1 byte: 0
             *
             */

            if (!InMessage.RsaDecrypt())
            {
                Logger.Log(LogLevels.Information, "LoginConnection: Message could not be decrypted");
                Disconnect();
                return;
            }

            XteaKey[0]          = InMessage.GetUInt32();
            XteaKey[1]          = InMessage.GetUInt32();
            XteaKey[2]          = InMessage.GetUInt32();
            XteaKey[3]          = InMessage.GetUInt32();
            IsEncryptionEnabled = true;

            string accountName = InMessage.GetString();

            byte[] password = InMessage.GetBytes(InMessage.GetUInt16());

            DispatcherManager.DatabaseDispatcher.AddTask(() => HandleLoginPacket(accountName, password));
        }