Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ml.neoforex.netty.codecs;
- import io.netty.buffer.ByteBuf;
- import io.netty.channel.*;
- import io.netty.handler.codec.ByteToMessageDecoder;
- import ml.neoforex.Main;
- import ml.neoforex.engine.cryptography.habbo.ClientMessage;
- import ml.neoforex.netty.handler.ConnectionHandler;
- import ml.neoforex.netty.session.Session;
- import java.util.List;
- import java.util.logging.Logger;
- /**
- * Created by forex on 21/02/2016.
- */
- public class ConnectionDecoder extends ByteToMessageDecoder {
- /**
- * Objects
- */
- private Logger logger = Logger.getLogger(ConnectionDecoder.class.getName());
- @Override
- protected void decode(ChannelHandlerContext channelHandlerContext,
- ByteBuf byteBuf, List<Object> list) throws Exception {
- // Get channel
- Channel ch = channelHandlerContext.channel();
- // These pachet don't have header or other(Disconnect for example)
- if (byteBuf.readableBytes() < 6)
- return;
- // Get session
- Session session = Main.getNexus().getConnectionManager().getSession(ch);
- // Check if is policy
- if (byteBuf.getByte(0) == 60) {
- // Send policy!
- ChannelFuture channelFuture = ch.writeAndFlush(Main.getNexus().getConnectionManager().getCrossDomain);
- channelFuture.addListener(ChannelFutureListener.CLOSE);
- // Clear buffer.
- byteBuf.clear();
- }
- // Get packet length
- byte[] lenght = new byte[4];
- byteBuf.readBytes(lenght);
- // Get lenght in int
- ClientMessage clientMessage = new ClientMessage(lenght);
- int packetLenght = clientMessage.readInt();
- // Checker
- if(packetLenght < 2 || packetLenght > byteBuf.readableBytes() || session == null) {
- this.logger.warning("Bad packet");
- ch.close();
- } else {
- // Get packet in byte[]
- byte[] packet = new byte[packetLenght];
- byteBuf.readBytes(packet);
- // DECRYPT
- if(session.getCryptoManager().isEnabled()) {
- // TO DO.
- }
- // Put in ClientMessage
- clientMessage = new ClientMessage(packetLenght, packet);
- // Invoke packet.
- session.invoke(clientMessage);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement