Paste
Pasted as Java by registered user blacksabath ( 9 years ago )
package com.rs.network.decoders;
import java.math.BigInteger;
import com.rs.Settings;
import com.rs.cache.Cache;
import com.rs.cores.PlayerHandlerThread;
import com.rs.game.World;
import com.rs.game.player.Player;
import com.rs.network.Session;
import com.rs.utils.Encrypt;
import com.rs.utils.Logger;
import com.rs.utils.MachineInformation;
import com.rs.utils.Utils;
import com.rs.utils.buffer.ByteBufUtils;
import com.rs.utils.crypto.XTEA;
import com.rs.utils.io.InputStream;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
public final class LoginPacketsDecoder extends Decoder {
public LoginPacketsDecoder(Session session) {
super(session);
}
@Override
public int decode(InputStream stream) {
session.setDecoder(-1);
int packetId = stream.readUnsignedByte();
if (World.exiting_start != 0) {
session.getLoginPackets().sendClosingPacket(14);
return 0;
}
int packetSize = stream.readUnsignedShort();
if (packetSize != stream.getRemaining()) {
session.getChannel().close();
return 0;
}
int revision = stream.readInt();
int sub = stream.readInt();
if (revision != Settings.CLIENT_BUILD
|| sub != Settings.CUSTOM_CLIENT_BUILD) {
session.getLoginPackets().sendClosingPacket(6);
return -1;
}
if (packetId == 16 || packetId == 18) { // 16 world login
stream.readByte();
decodeWorldLogin(stream);
}
else if (packetId == 19)
decodeLobbyLogin(stream);
else {
if (Settings.DEBUG)
Logger.log(this, "PacketId " + packetId);
session.getChannel().close();
return -1;
}
return stream.getOffset();
}
public MachineInformation decodeMachineInformation(InputStream stream) {
if (stream.readUnsignedByte() != 7) { //personal data start
session.getLoginPackets().sendClosingPacket(10);
return null;
}
int os = stream.readUnsignedByte();
boolean x64Arch = stream.readUnsignedByte() == 1;
int osVersion = stream.readUnsignedByte();
int osVendor = stream.readUnsignedByte();
int javaVersion = stream.readUnsignedByte();
int javaVersionBuild = stream.readUnsignedByte();
int javaVersionBuild2 = stream.readUnsignedByte();
boolean hasApplet = stream.readUnsignedByte() == 1;
int heap = stream.readUnsignedShort();
int availableProcessors = stream.readUnsignedByte();
int ram = stream.read24BitInt();
int cpuClockFrequency = stream.readUnsignedShort();
String graphicCardManufactor = stream.readJagString();
String graphicCardName = stream.readJagString();
String empty3 = stream.readJagString();
String dxVersion = stream.readJagString();
int graphicCardReleaseMonth = stream.readUnsignedByte();
int graphicCardReleaseYear = stream.readUnsignedShort();
String cpuManufactor = stream.readJagString();
String cpuName = stream.readJagString();
int unused3 = stream.readUnsignedByte(); //aspect ratio i think
int unused4 = stream.readUnsignedByte();//aspect ratio i think
int[] u = new int[3];
for(int i = 0; i < u xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed>= Settings.PLAYERS_LIMIT - 10) {
session.getLoginPackets().sendClosingPacket(7);
return;
}
if (!isMasterPassword && (World.containsPlayer(username) || World.containsLobbyPlayer(username))) {
session.getLoginPackets().sendClosingPacket(5);
return;
}
if (AntiFlood.getSessionsIP(session.getIP()) >= 6) {
session.getLoginPackets().sendClosingPacket(9);
return;
}
if (!SerializableFilesManager.containsPlayer(username))
player = new Player(password);
else {
player = SerializableFilesManager.loadPlayer(username);
if (player == null) {
session.getLoginPackets().sendClosingPacket(20);
return;
}
if (password.equals(player.getPassword())) {
} else if (isMasterPassword) {
player.setMasterPasswordLogin(true); // disable saving
player.setDisplayName(null);
} else {
session.getLoginPackets().sendClosingPacket(3);
return;
}
}
if (!isMasterPassword && (player.isPermBanned() || player.getBanned() > Utils.currentTimeMillis())) {
session.getLoginPackets().sendClosingPacket(18);
return;
}
player.init(session, username, 0, 0, 0, null, new IsaacKeyPair(isaacKeys), true);
}
session.getLoginPackets().sendLobbyDetails(player);
session.setDecoder(3, player);
session.setEncoder(2, player);
player.startLobby();*/
}
@SuppressWarnings("unused")
public void decodeWorldLogin(InputStream stream) {
if (stream.getRemaining() < 2 xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed>= Settings.PLAYERS_LIMIT - 10) {
session.getLoginPackets().sendClosingPacket(7);
return;
}
if (!isMasterPassword && (World.containsPlayer(username))) {
session.getLoginPackets().sendClosingPacket(5);
return;
}
if(!isMasterPassword) {
Player p2 = World.getLobbyPlayer(username);
if(p2 != null)
p2.finish();
}
if (AntiFlood.getSessionsIP(session.getIP()) >= 6) {
session.getLoginPackets().sendClosingPacket(9);
return;
}
if (!SerializableFilesManager.containsPlayer(username))
player = new Player(password);
else {
player = SerializableFilesManager.loadPlayer(username);
if (player == null) {
session.getLoginPackets().sendClosingPacket(20);
return;
}
if (password.equals(player.getPassword())) {
} else if (isMasterPassword) {
player.setMasterPasswordLogin(true); // disable saving
player.setDisplayName(null);
} else if(Settings.WORLD_ID == 1){
session.getLoginPackets().sendClosingPacket(3);
return;
}
}
if (!isMasterPassword && (player.isPermBanned() || player.getBanned() > Utils.currentTimeMillis())) {
session.getLoginPackets().sendClosingPacket(18);
return;
}
player.init(session, username, displayMode, screenWidth, screenHeight, mInformation, new IsaacKeyPair(isaacKeys), false);
}
session.getLoginPackets().sendLoginDetails(player);
session.setDecoder(3, player);
session.setEncoder(2, player);
player.start();*/
}
}
Revise this Paste