Server/Client/src/main/java/org/runite/client/LoginHandler.java
2021-03-23 04:17:16 -04:00

354 lines
18 KiB
Java

package org.runite.client;
import org.rs09.client.config.GameConfig;
import org.rs09.client.net.Connection;
import java.io.IOException;
import java.net.Socket;
import java.util.Objects;
class LoginHandler {
static CacheIndex aClass153_1680;
static boolean dynamic;
static int loginStage = 0;
static long isaacServerKey = 0L;
static void handleLogin() {
try {
if(0 != loginStage && 5 != loginStage) {
try {
if(++Class50.anInt820 > 2000) {
if(Class3_Sub15.activeConnection != null) {
Class3_Sub15.activeConnection.close();
Class3_Sub15.activeConnection = null;
}
if(Class166.anInt2079 >= 1) {
Class158.anInt2005 = -5;
loginStage = 0;
return;
}
Class50.anInt820 = 0;
if(Class140_Sub6.accRegistryPort == Class162.anInt2036) {
Class140_Sub6.accRegistryPort = Client.currentPort;
} else {
Class140_Sub6.accRegistryPort = Class162.anInt2036;
}
loginStage = 1;
++Class166.anInt2079;
}
if(loginStage == 1) {
Class3_Sub9.aClass64_2318 = Class38.signlink.method1441((byte)8, Class38_Sub1.accRegistryIp, GameConfig.SERVER_PORT + GameConfig.WORLD);//Class140_Sub6.accRegistryPort);
loginStage = 2;
}
if(loginStage == 2) {
if(Objects.requireNonNull(Class3_Sub9.aClass64_2318).anInt978 == 2) {
throw new IOException();
}
if(1 != Class3_Sub9.aClass64_2318.anInt978) {
return;
}
Class3_Sub15.activeConnection = new Connection((Socket)Class3_Sub9.aClass64_2318.anObject974, Class38.signlink);
Class3_Sub9.aClass64_2318 = null;
long var1 = PacketParser.aLong3202 = Class131.username.toLong();
Class3_Sub13_Sub1.outgoingBuffer.index = 0;
Class3_Sub13_Sub1.outgoingBuffer.writeByte(14);
int nameHash = (int)(var1 >> 16 & 31L);
Class3_Sub13_Sub1.outgoingBuffer.writeByte(nameHash);
Class3_Sub15.activeConnection.sendBytes(Class3_Sub13_Sub1.outgoingBuffer.buffer, 2);
if(WorldListEntry.aClass155_2627 != null) {
WorldListEntry.aClass155_2627.method2159(106);
}
if(Class3_Sub21.aClass155_2491 != null) {
Class3_Sub21.aClass155_2491.method2159(79);
}
int var4 = Class3_Sub15.activeConnection.readByte();
if(WorldListEntry.aClass155_2627 != null) {
WorldListEntry.aClass155_2627.method2159(68);
}
if(null != Class3_Sub21.aClass155_2491) {
Class3_Sub21.aClass155_2491.method2159(109);
}
if(var4 != 0) {
Class158.anInt2005 = var4;
loginStage = 0;
Class3_Sub15.activeConnection.close();
Class3_Sub15.activeConnection = null;
return;
}
loginStage = 3;
}
if(loginStage == 3) {
if(Class3_Sub15.activeConnection.availableBytes() < 8) {
return;
}
Class3_Sub15.activeConnection.readBytes(GraphicDefinition.incomingBuffer.buffer, 0, 8);
GraphicDefinition.incomingBuffer.index = 0;
isaacServerKey = GraphicDefinition.incomingBuffer.readLong();
int[] var9 = new int[4];
Class3_Sub13_Sub1.outgoingBuffer.index = 0;
var9[2] = (int)(isaacServerKey >> 32);
var9[3] = (int) isaacServerKey;
var9[1] = (int)(Math.random() * 9.9999999E7D);
var9[0] = (int)(Math.random() * 9.9999999E7D);
Class3_Sub13_Sub1.outgoingBuffer.writeByte(10);
Class3_Sub13_Sub1.outgoingBuffer.writeInt(var9[0]);
Class3_Sub13_Sub1.outgoingBuffer.writeInt(var9[1]);
Class3_Sub13_Sub1.outgoingBuffer.writeInt(var9[2]);
Class3_Sub13_Sub1.outgoingBuffer.writeInt(var9[3]);
Class3_Sub13_Sub1.outgoingBuffer.writeLong(Class131.username.toLong());
Class3_Sub13_Sub1.outgoingBuffer.writeString(Class131.password);
Class3_Sub13_Sub1.method229();
Class3_Sub13_Sub1.outgoingBuffer.rsaEncrypt(Class3_Sub13_Sub37.EXPONENT,Class3_Sub13_Sub14.MODULUS);
Unsorted.aClass3_Sub30_Sub1_2942.index = 0;
if(40 == Class143.loadingStage) {
Unsorted.aClass3_Sub30_Sub1_2942.writeByte(18);
} else {
Unsorted.aClass3_Sub30_Sub1_2942.writeByte(16);
}
Unsorted.aClass3_Sub30_Sub1_2942.writeShort(Class3_Sub13_Sub1.outgoingBuffer.index + 163 - -Class3_Sub13_Sub33.method326((byte)111, Class163_Sub2.paramSettings));
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(GameConfig.CLIENT_BUILD);
Unsorted.aClass3_Sub30_Sub1_2942.writeByte(Class7.anInt2161);
Unsorted.aClass3_Sub30_Sub1_2942.writeByte(!Client.paramAdvertisementSuppressed ?0:1);
Unsorted.aClass3_Sub30_Sub1_2942.writeByte(1);
Unsorted.aClass3_Sub30_Sub1_2942.writeByte(Class83.method1411(0));
Unsorted.aClass3_Sub30_Sub1_2942.writeShort(Class23.canvasWidth);
Unsorted.aClass3_Sub30_Sub1_2942.writeShort(Class140_Sub7.canvasHeight);
Unsorted.aClass3_Sub30_Sub1_2942.writeByte(Unsorted.anInt3671);
Class81.putRandomDataFile(Unsorted.aClass3_Sub30_Sub1_2942, true);
Unsorted.aClass3_Sub30_Sub1_2942.writeString(Class163_Sub2.paramSettings);
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(Class3_Sub26.paramAffid);
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(Class84.method1421());
CS2Script.aBoolean2705 = true;
Unsorted.aClass3_Sub30_Sub1_2942.writeShort(Class113.interfacePacketCounter);
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.skeletonsIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.skinsIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.configurationsIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.interfacesIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.soundFXIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.landscapesIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.musicIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.modelsIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.spritesIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.texturesIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.huffmanEncodingIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.music2Index.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.interfaceScriptsIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.fontsIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.soundFX2Index.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.soundFX3Index.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.objectConfigIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.clientscriptMaskIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.npcConfigIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.itemConfigIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.animationIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.graphicFXIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.clientScriptConfigIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.worldmapIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.quickchatMessagesIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.quickchatMenusIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.materialsIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.particlesConfigIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.writeInt(CacheIndex.libIndex.getReferenceTableCrc());
Unsorted.aClass3_Sub30_Sub1_2942.putBytes(Class3_Sub13_Sub1.outgoingBuffer.buffer, Class3_Sub13_Sub1.outgoingBuffer.index);
Class3_Sub15.activeConnection.sendBytes(Unsorted.aClass3_Sub30_Sub1_2942.buffer, Unsorted.aClass3_Sub30_Sub1_2942.index);
Class3_Sub13_Sub1.outgoingBuffer.method814(var9);
for(int var2 = 0; var2 < 4; ++var2) {
var9[var2] += 50;
}
GraphicDefinition.incomingBuffer.method814(var9);
loginStage = 4;
}
if(loginStage == 4) {
if(Class3_Sub15.activeConnection.availableBytes() < 1) {
return;
}
int opcode = Class3_Sub15.activeConnection.readByte();
if(opcode == 21) {
loginStage = 7;
} else if (opcode == 29) {
loginStage = 10;
} else {
if (opcode == 1) {
loginStage = 5;
Class158.anInt2005 = opcode;
return;
}
if (2 != opcode) {
if (opcode != 15) {
if (23 == opcode && Class166.anInt2079 < 1) {
loginStage = 1;
++Class166.anInt2079;
Class50.anInt820 = 0;
Class3_Sub15.activeConnection.close();
Class3_Sub15.activeConnection = null;
return;
}
Class158.anInt2005 = opcode;
loginStage = 0;
Class3_Sub15.activeConnection.close();
Class3_Sub15.activeConnection = null;
return;
}
loginStage = 0;
Class158.anInt2005 = opcode;
return;
}
loginStage = 8;
}
}
if(6 == loginStage) {
Class3_Sub13_Sub1.outgoingBuffer.index = 0;
Class3_Sub13_Sub1.outgoingBuffer.putOpcode(17);
Class3_Sub15.activeConnection.sendBytes(Class3_Sub13_Sub1.outgoingBuffer.buffer, Class3_Sub13_Sub1.outgoingBuffer.index);
loginStage = 4;
return;
}
if(loginStage == 7) {
if(Class3_Sub15.activeConnection.availableBytes() >= 1) {
Class3_Sub13_Sub34.anInt3413 = 60 * (3 + Class3_Sub15.activeConnection.readByte());
loginStage = 0;
Class158.anInt2005 = 21;
Class3_Sub15.activeConnection.close();
Class3_Sub15.activeConnection = null;
return;
}
return;
}
if(loginStage == 10) {
if(1 <= Class3_Sub15.activeConnection.availableBytes()) {
Class3_Sub26.anInt2561 = Class3_Sub15.activeConnection.readByte();
loginStage = 0;
Class158.anInt2005 = 29;
Class3_Sub15.activeConnection.close();
Class3_Sub15.activeConnection = null;
return;
}
return;
}
if(loginStage == 8) {
if(Class3_Sub15.activeConnection.availableBytes() < 14) {
return;
}
Class3_Sub15.activeConnection.readBytes(GraphicDefinition.incomingBuffer.buffer, 0, 14);
GraphicDefinition.incomingBuffer.index = 0;
Player.rights = GraphicDefinition.incomingBuffer.readUnsignedByte();
if(Player.rights == 2){
ClientLoader.setModPanelVisible(true);
} else {
ClientLoader.setModPanelVisible(false);
}
CS2Script.anInt3775 = GraphicDefinition.incomingBuffer.readUnsignedByte();
Class3_Sub15.aBoolean2433 = GraphicDefinition.incomingBuffer.readUnsignedByte() == 1;
Class121.aBoolean1641 = 1 == GraphicDefinition.incomingBuffer.readUnsignedByte();
Unsorted.aBoolean4063 = GraphicDefinition.incomingBuffer.readUnsignedByte() == 1;
Class3_Sub13_Sub14.aBoolean3166 = 1 == GraphicDefinition.incomingBuffer.readUnsignedByte();
Unsorted.aBoolean29 = GraphicDefinition.incomingBuffer.readUnsignedByte() == 1;
Class3_Sub1.localIndex = GraphicDefinition.incomingBuffer.readUnsignedShort();
Class3_Sub13_Sub29.disableGEBoxes = GraphicDefinition.incomingBuffer.readUnsignedByte() == 1;
Unsorted.isMember = GraphicDefinition.incomingBuffer.readUnsignedByte() == 1;
Class113.method1702(Unsorted.isMember);
Class8.method845(Unsorted.isMember);
if(!Client.paramAdvertisementSuppressed) {
if((!Class3_Sub15.aBoolean2433 || Unsorted.aBoolean4063) && !Class3_Sub13_Sub29.disableGEBoxes) {
try {
TextCore.aClass94_516.method1577(Class38.signlink.gameApplet);
} catch (Throwable var5) {
}
} else {
try {
Class97.aClass94_1374.method1577(Class38.signlink.gameApplet);
} catch (Throwable var6) {
}
}
}
Unsorted.incomingOpcode = GraphicDefinition.incomingBuffer.getOpcode();
dynamic = Unsorted.incomingOpcode == 214;
Unsorted.incomingPacketLength = GraphicDefinition.incomingBuffer.readUnsignedShort();
loginStage = 9;
}
if(loginStage == 9) {
if(Unsorted.incomingPacketLength > Class3_Sub15.activeConnection.availableBytes()) {
return;
}
GraphicDefinition.incomingBuffer.index = 0;
Class3_Sub15.activeConnection.readBytes(GraphicDefinition.incomingBuffer.buffer, 0, Unsorted.incomingPacketLength);
Class158.anInt2005 = 2;
loginStage = 0;
SequenceDefinition.resetAll();
Unsorted.anInt3606 = -1;
Class39.updateSceneGraph(dynamic);
Unsorted.incomingOpcode = -1;
return;
}
} catch (IOException var7) {
if(null != Class3_Sub15.activeConnection) {
Class3_Sub15.activeConnection.close();
Class3_Sub15.activeConnection = null;
}
if(Class166.anInt2079 >= 1) {
loginStage = 0;
Class158.anInt2005 = -4;
} else {
loginStage = 1;
Class50.anInt820 = 0;
++Class166.anInt2079;
if(Class140_Sub6.accRegistryPort == Class162.anInt2036) {
Class140_Sub6.accRegistryPort = Client.currentPort;
} else {
Class140_Sub6.accRegistryPort = Class162.anInt2036;
}
}
}
}
} catch (RuntimeException var8) {
throw ClientErrorException.clientError(var8, "ri.A(" + ')');
}
}
static int method1753(int var0, int var1) {
var1 = var1 * (var0 & 127) >> 7;
if(var1 < 2) {
var1 = 2;
} else if(var1 > 126) {
var1 = 126;
}
return (var0 & '\uff80') + var1;
}
}