Ejemplo n.º 1
0
        private void OnClientRead(byte[] e)
        {
            if (ClientRead != null)
            {
                try
                {
                    _parentServer.BytesReceived += e.LongLength;

                    if (compressionEnabled)
                    {
                        e = new LZ4.LZ4Decompressor32().Decompress(e);
                    }

                    if (encryptionEnabled)
                    {
                        e = RC4.Decrypt(e, XMLSettings.Password);
                    }

                    using (MemoryStream deserialized = new MemoryStream(e))
                    {
                        IPacket packet = Serializer.DeserializeWithLengthPrefix <IPacket>(deserialized, PrefixStyle.Fixed32);

                        if (packet.GetType() == typeof(KeepAliveResponse))
                        {
                            _parentServer.HandleKeepAlivePacket((KeepAliveResponse)packet, this);
                        }

                        else if (packet.GetType() == typeof(KeepAlive))
                        {
                            new KeepAliveResponse()
                            {
                                TimeSent = ((KeepAlive)packet).TimeSent
                            }
                        }
                        .Execute(this);

                        else
                        {
                            ClientRead(this, packet);
                        }
                    }
Ejemplo n.º 2
0
        private void OnClientRead(byte[] e)
        {
            if (ClientRead != null)
            {
                try
                {
                    if (compressionEnabled)
                    {
                        e = new LZ4.LZ4Decompressor32().Decompress(e);
                    }

                    if (encryptionEnabled)
                    {
                        e = AES.Decrypt(e, Encoding.UTF8.GetBytes(Settings.PASSWORD));
                    }

                    using (MemoryStream deserialized = new MemoryStream(e))
                    {
                        IPacket packet = Serializer.DeserializeWithLengthPrefix <IPacket>(deserialized, PrefixStyle.Fixed32);

                        if (packet.GetType() == typeof(KeepAlive))
                        {
                            new KeepAliveResponse()
                            {
                                TimeSent = ((KeepAlive)packet).TimeSent
                            }
                        }
                        .Execute(this);
                        else if (packet.GetType() == typeof(KeepAliveResponse))
                        {
                            HandleKeepAlivePacket((KeepAliveResponse)packet, this);
                        }
                        else
                        {
                            ClientRead(this, packet);
                        }
                    }