Advertisement
Guest User

Untitled

a guest
Jul 30th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.26 KB | None | 0 0
  1. package org.fml.scape.net.codec;
  2.  
  3. import java.security.SecureRandom;
  4.  
  5. import org.fml.scape.util.Message;
  6. import org.fml.scape.util.Message.PacketType;
  7. import org.fml.scape.util.MessageBuilder;
  8. import org.jboss.netty.buffer.ChannelBuffer;
  9. import org.jboss.netty.channel.Channel;
  10. import org.jboss.netty.channel.ChannelHandlerContext;
  11. import org.jboss.netty.handler.codec.frame.FrameDecoder;
  12.  
  13. public class RS2Decoder extends FrameDecoder {
  14.        
  15.     MessageBuilder response = new MessageBuilder();
  16.    
  17.     @Override
  18.     protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer cb) throws Exception {
  19.         int opcode = cb.readByte() & 0xFF;
  20.         Message message = new Message(opcode, PacketType.STANDARD, cb);
  21.         switch(opcode) {
  22.             case 14:
  23.             case 15:
  24.                 if(1 <= cb.readableBytes()) {
  25.                     for(int i = 0; i < 9; i++) {
  26.                         response.writeByte(0);
  27.                     }
  28.                     response.writeLong(new SecureRandom().nextLong());
  29.                     message.readUnsignedByte();
  30.                     int loginPacketSize = message.readUnsignedByte();
  31.                     int loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2);
  32.                     response.writeInt(loginEncryptPacketSize);
  33.                     message.readUnsignedByte();
  34.                     message.readUnsignedByte();
  35.                     message.readUnsignedByte();
  36.                     for (int i = 0; i < 9; i++) {
  37.                         message.readInt();
  38.                     }
  39.                     loginEncryptPacketSize--;
  40.                     message.readUnsignedByte(); // temp
  41.                     message.readUnsignedByte(); // temp
  42.                     message.readLong(); // client session
  43.                     message.readLong(); // server session
  44.                     message.readLong(); // user id
  45.                     String username = message.readRS2String(); // name
  46.                     String pass = message.readRS2String(); // password
  47.                     pass = pass.toLowerCase(); // low case password
  48.                     username = username.trim(); // returns a copy of the string
  49.                     System.out.println("newPlayer [" + username + ":" + pass + "]");
  50.                     response.writeByte(ReturnCode.LOGIN_OK.value); // return code
  51.                     response.writeByte(2); // rights
  52.                     response.writeByte(0); // might be player index?
  53.                 }
  54.                 break;
  55.         }
  56.         return null;
  57.     }
  58.    
  59.     /**
  60.      * All of the return codes for login.
  61.      *
  62.      * @author Sir Tom
  63.      *
  64.      */
  65.     public enum ReturnCode {
  66.  
  67.         LOGIN_OK(2), WORLD_FULL(7);
  68.  
  69.         private int value;
  70.  
  71.         ReturnCode(int value) {
  72.             this.value = value;
  73.         }
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement