Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.fml.scape.net.codec;
- import java.security.SecureRandom;
- import org.fml.scape.util.Message;
- import org.fml.scape.util.Message.PacketType;
- import org.fml.scape.util.MessageBuilder;
- import org.jboss.netty.buffer.ChannelBuffer;
- import org.jboss.netty.channel.Channel;
- import org.jboss.netty.channel.ChannelHandlerContext;
- import org.jboss.netty.handler.codec.frame.FrameDecoder;
- public class RS2Decoder extends FrameDecoder {
- MessageBuilder response = new MessageBuilder();
- @Override
- protected Object decode(ChannelHandlerContext ctx, Channel channel, ChannelBuffer cb) throws Exception {
- int opcode = cb.readByte() & 0xFF;
- Message message = new Message(opcode, PacketType.STANDARD, cb);
- switch(opcode) {
- case 14:
- case 15:
- if(1 <= cb.readableBytes()) {
- for(int i = 0; i < 9; i++) {
- response.writeByte(0);
- }
- response.writeLong(new SecureRandom().nextLong());
- message.readUnsignedByte();
- int loginPacketSize = message.readUnsignedByte();
- int loginEncryptPacketSize = loginPacketSize - (36 + 1 + 1 + 2);
- response.writeInt(loginEncryptPacketSize);
- message.readUnsignedByte();
- message.readUnsignedByte();
- message.readUnsignedByte();
- for (int i = 0; i < 9; i++) {
- message.readInt();
- }
- loginEncryptPacketSize--;
- message.readUnsignedByte(); // temp
- message.readUnsignedByte(); // temp
- message.readLong(); // client session
- message.readLong(); // server session
- message.readLong(); // user id
- String username = message.readRS2String(); // name
- String pass = message.readRS2String(); // password
- pass = pass.toLowerCase(); // low case password
- username = username.trim(); // returns a copy of the string
- System.out.println("newPlayer [" + username + ":" + pass + "]");
- response.writeByte(ReturnCode.LOGIN_OK.value); // return code
- response.writeByte(2); // rights
- response.writeByte(0); // might be player index?
- }
- break;
- }
- return null;
- }
- /**
- * All of the return codes for login.
- *
- * @author Sir Tom
- *
- */
- public enum ReturnCode {
- LOGIN_OK(2), WORLD_FULL(7);
- private int value;
- ReturnCode(int value) {
- this.value = value;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement