Files
runelite/runescape-client/src/main/java/UrlRequester.java
2022-02-09 13:21:03 +01:00

253 lines
6.8 KiB
Java

import java.applet.Applet;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.LinkedList;
import java.util.Queue;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import netscape.javascript.JSObject;
@ObfuscatedName("cz")
@Implements("UrlRequester")
public class UrlRequester implements Runnable {
@ObfuscatedName("c")
@Export("thread")
final Thread thread;
@ObfuscatedName("l")
@Export("isClosed")
volatile boolean isClosed;
@ObfuscatedName("s")
@Export("requests")
Queue requests;
public UrlRequester() {
this.requests = new LinkedList(); // L: 15
this.thread = new Thread(this); // L: 18
this.thread.setPriority(1); // L: 19
this.thread.start(); // L: 20
}
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(Ljava/net/URL;I)Lcm;",
garbageValue = "-558103760"
)
@Export("request")
public UrlRequest request(URL var1) {
UrlRequest var2 = new UrlRequest(var1);
synchronized(this) {
this.requests.add(var2); // L: 74
this.notify(); // L: 75
return var2; // L: 77
}
}
@ObfuscatedName("l")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "-124"
)
@Export("close")
public void close() {
this.isClosed = true;
try {
synchronized(this) { // L: 83
this.notify(); // L: 84
}
this.thread.join(); // L: 86
} catch (InterruptedException var4) {
}
} // L: 89
public void run() {
while (!this.isClosed) {
try {
UrlRequest var1;
synchronized(this) {
var1 = (UrlRequest)this.requests.poll();
if (var1 == null) {
try {
this.wait(); // L: 32
} catch (InterruptedException var13) {
}
continue;
}
}
DataInputStream var2 = null;
URLConnection var3 = null; // L: 39
try {
var3 = var1.url.openConnection(); // L: 41
var3.setConnectTimeout(5000); // L: 42
var3.setReadTimeout(5000);
var3.setUseCaches(false);
var3.setRequestProperty("Connection", "close");
int var7 = var3.getContentLength();
if (var7 >= 0) {
byte[] var5 = new byte[var7];
var2 = new DataInputStream(var3.getInputStream());
var2.readFully(var5);
var1.response0 = var5;
}
var1.isDone0 = true;
} catch (IOException var14) {
var1.isDone0 = true;
} finally {
if (var2 != null) {
var2.close();
}
if (var3 != null && var3 instanceof HttpURLConnection) { // L: 60
((HttpURLConnection)var3).disconnect();
}
}
} catch (Exception var17) {
FloorDecoration.RunException_sendStackTrace((String)null, var17);
}
}
}
@ObfuscatedName("l")
@ObfuscatedSignature(
descriptor = "([BILjava/lang/CharSequence;I)I",
garbageValue = "-29911257"
)
public static int method2420(byte[] var0, int var1, CharSequence var2) {
int var3 = var2.length(); // L: 21
int var4 = var1; // L: 22
for (int var5 = 0; var5 < var3; ++var5) { // L: 23
char var6 = var2.charAt(var5); // L: 24
if (var6 <= 127) { // L: 25
var0[var4++] = (byte)var6; // L: 26
} else if (var6 <= 2047) { // L: 28
var0[var4++] = (byte)(192 | var6 >> 6); // L: 29
var0[var4++] = (byte)(128 | var6 & '?'); // L: 30
} else {
var0[var4++] = (byte)(224 | var6 >> '\f'); // L: 33
var0[var4++] = (byte)(128 | var6 >> 6 & 63); // L: 34
var0[var4++] = (byte)(128 | var6 & '?'); // L: 35
}
}
return var4 - var1; // L: 38
}
@ObfuscatedName("s")
@ObfuscatedSignature(
descriptor = "([Ljava/lang/String;[IIII)V",
garbageValue = "448998366"
)
public static void method2421(String[] var0, int[] var1, int var2, int var3) {
if (var2 < var3) { // L: 43
int var4 = (var3 + var2) / 2; // L: 44
int var5 = var2; // L: 45
String var6 = var0[var4]; // L: 46
var0[var4] = var0[var3]; // L: 47
var0[var3] = var6; // L: 48
int var7 = var1[var4]; // L: 49
var1[var4] = var1[var3]; // L: 50
var1[var3] = var7; // L: 51
for (int var8 = var2; var8 < var3; ++var8) { // L: 52
if (var6 == null || var0[var8] != null && var0[var8].compareTo(var6) < (var8 & 1)) { // L: 53
String var9 = var0[var8]; // L: 54
var0[var8] = var0[var5]; // L: 55
var0[var5] = var9; // L: 56
int var10 = var1[var8]; // L: 57
var1[var8] = var1[var5]; // L: 58
var1[var5++] = var10; // L: 59
}
}
var0[var3] = var0[var5];
var0[var5] = var6;
var1[var3] = var1[var5];
var1[var5] = var7;
method2421(var0, var1, var2, var5 - 1);
method2421(var0, var1, var5 + 1, var3); // L: 68
}
}
@ObfuscatedName("s")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;ILjava/lang/String;B)Z",
garbageValue = "72"
)
static boolean method2419(String var0, int var1, String var2) {
if (var1 == 0) { // L: 61
try {
if (!class29.field175.startsWith("win")) { // L: 63
throw new Exception();
} else if (!var0.startsWith("http://") && !var0.startsWith("https://")) { // L: 64
throw new Exception();
} else {
String var11 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789?&=,.%+-_#:/*"; // L: 65
for (int var4 = 0; var4 < var0.length(); ++var4) { // L: 66
if (var11.indexOf(var0.charAt(var4)) == -1) { // L: 67
throw new Exception();
}
}
Runtime.getRuntime().exec("cmd /c start \"j\" \"" + var0 + "\""); // L: 69
return true; // L: 70
}
} catch (Throwable var5) { // L: 72
return false; // L: 73
}
} else if (var1 == 1) { // L: 76
try {
Object var10 = class27.method396(class29.field177, var2, new Object[]{(new URL(class29.field177.getCodeBase(), var0)).toString()}); // L: 78
return var10 != null; // L: 79
} catch (Throwable var6) { // L: 81
return false; // L: 82
}
} else if (var1 == 2) { // L: 85
try {
class29.field177.getAppletContext().showDocument(new URL(class29.field177.getCodeBase(), var0), "_blank"); // L: 87
return true; // L: 88
} catch (Exception var7) { // L: 90
return false; // L: 91
}
} else if (var1 == 3) { // L: 94
try {
Applet var3 = class29.field177; // L: 96
JSObject.getWindow(var3).call("loggedout", (Object[])null); // L: 99
} catch (Throwable var9) { // L: 102
}
try {
class29.field177.getAppletContext().showDocument(new URL(class29.field177.getCodeBase(), var0), "_top"); // L: 104
return true; // L: 105
} catch (Exception var8) { // L: 107
return false; // L: 108
}
} else {
throw new IllegalArgumentException(); // L: 111
}
}
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "(I)[Ldi;",
garbageValue = "-862864907"
)
static class114[] method2418() {
return new class114[]{class114.field1408, class114.field1409, class114.field1410, class114.field1413, class114.field1412}; // L: 137
}
}