fix rsps stuff

This commit is contained in:
zeruth
2019-06-25 00:32:15 -04:00
parent 135f536f9b
commit 572d590586
5 changed files with 191 additions and 43 deletions

24
params.txt Normal file
View File

@@ -0,0 +1,24 @@
Created at Thu Jun 20 05:35:31 CDT 2019
codebase=http://oldschool6b.runescape.com/
mainclass=client.class
param=1=1
param=2=https://payments.jagex.com/operator/v1/
param=3=true
param=4=761
param=5=1
param=6=0
param=7=0
param=8=true
param=9=ElZAIrq5NpKN6D3mDdihco3oPeYN2KFy2DCquj7JMmECPmLrDP3Bnw
param=10=5
param=11=https://auth.jagex.com/
param=12=306
param=13=.runescape.com
param=14=0
param=15=0
param=16=false
param=17=http://www.runescape.com/g=oldscape/slr.ws?order=LPWM
param=18=
param=19=196515767263-1oo20deqm6edn7ujlihl6rpadk9drhva.apps.googleusercontent.com

View File

@@ -108,7 +108,7 @@ public class ClientLoader
private static Applet loadFromClass(final RSConfig config, final Class<?> clientClass) throws IllegalAccessException, InstantiationException private static Applet loadFromClass(final RSConfig config, final Class<?> clientClass) throws IllegalAccessException, InstantiationException
{ {
final Applet rs = (Applet) clientClass.newInstance(); final Applet rs = (Applet) clientClass.newInstance();
rs.setStub(new RSAppletStub(config)); rs.setStub(new RSAppletStub());
return rs; return rs;
} }
} }

View File

@@ -1,70 +1,133 @@
/*
* Copyright (c) 2016-2017, Adam <Adam@sigterm.info>
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.rs; package net.runelite.client.rs;
import java.applet.AppletContext; import java.applet.AppletContext;
import java.applet.AppletStub; import java.applet.AppletStub;
import java.net.MalformedURLException; import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL; import java.net.URL;
import lombok.RequiredArgsConstructor; import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
@RequiredArgsConstructor public class RSAppletStub implements AppletStub
class RSAppletStub implements AppletStub
{ {
private final RSConfig config;
public static final Logger logger = Logger.getLogger(RSAppletStub.class.getSimpleName());
private static final HashMap<String, String> params = new HashMap<String, String>();
private static final HashMap<String, String> cfg = new HashMap<String, String>();
private static URL codebase;
static
{
cfg.put("privacyurl", "http://www.jagex.com/g=oldscape/privacy/privacy.ws");
cfg.put("window_preferredheight", "600");
cfg.put("msg", "new_version_link=http://oldschool.runescape.com/");
cfg.put("applet_minwidth", "765");
cfg.put("adverturl", "http://www.runescape.com/g=oldscape/bare_advert.ws");
cfg.put("cachedir", "oldschool");
cfg.put("window_preferredwidth", "800");
cfg.put("applet_maxheight", "2160");
cfg.put("win_sub_version", "1");
cfg.put("browsercontrol_win_x86_jar", "browsercontrol_0_-1928975093.jar");
cfg.put("other_sub_version", "2");
cfg.put("initial_jar", "gamepack_4840368.jar");
cfg.put("advert_height", "96");
cfg.put("title", "Old School RuneScape");
cfg.put("storebase", "0");
cfg.put("initial_class", "client.class");
cfg.put("applet_maxwidth", "5760");
cfg.put("download", "1230228");
cfg.put("termsurl", "http://www.jagex.com/g=oldscape/terms/terms.ws");
cfg.put("codebase", "http://oldschool1.runescape.com/");
cfg.put("mac_sub_version", "2");
cfg.put("browsercontrol_win_amd64_jar", "browsercontrol_1_1674545273.jar");
cfg.put("applet_minheight", "503");
cfg.put("viewerversion", "124");
}
public RSAppletStub()
{
try
{
parseParams(new FileInputStream(new File("./params.txt")));
String worldListKey = null;
for (Map.Entry<String, String> paramEntry : params.entrySet())
{
String key = paramEntry.getKey();
String value = paramEntry.getValue();
if (value.contains("slr.ws"))
{
worldListKey = key;
break;
}
}
codebase = new URL("http://runeliteplus-ps.ddns.net"); //host
params.put(worldListKey, "http://" + codebase.getHost());
}
catch (IOException e)
{
e.printStackTrace();
}
}
private static void parseParams(InputStream stream) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
String line;
while ((line = br.readLine()) != null)
{
int idx = line.indexOf('=');
if (idx != -1)
{
String key = line.substring(0, idx);
String val = line.substring(idx + 1);
if (key.equals("param"))
{
idx = val.indexOf('=');
key = val.substring(0, idx);
val = val.substring(idx + 1);
params.put(key, val);
}
else
{
cfg.put(key, val);
}
}
}
}
public static void log(String format, Object... params)
{
System.out.printf(format + "\n", params);
}
@Override @Override
public boolean isActive() public boolean isActive()
{ {
return true; return false;
} }
@Override @Override
public URL getDocumentBase() public URL getDocumentBase()
{ {
return getCodeBase(); return codebase;
} }
@Override @Override
public URL getCodeBase() public URL getCodeBase()
{ {
try return codebase;
{
return new URL(config.getCodeBase());
}
catch (MalformedURLException ex)
{
return null;
}
} }
@Override @Override
public String getParameter(String name) public String getParameter(String name)
{ {
return config.getAppletProperties().get(name); return params.get(name);
} }
@Override @Override
@@ -77,4 +140,4 @@ class RSAppletStub implements AppletStub
public void appletResize(int width, int height) public void appletResize(int width, int height)
{ {
} }
} }

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2019, Null (zeruth)
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.mixins;
import java.math.BigInteger;
import net.runelite.api.mixins.Copy;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.rs.api.RSBuffer;
@Mixin(RSBuffer.class)
public abstract class RSBufferMixin implements RSBuffer
{
@Inject
private static BigInteger modulus = new BigInteger("10001", 16);
@Inject
private static BigInteger exponent = new BigInteger("bb5d826b249905895f4e463422dd339f8375ed5b212ac8890a97e4ab7dba0c5fe8188f44c00f8106e5721f615a8bcee2da7316ff1572cad5fbfd33f30985f0ae855cfd498483ecc0c3a01c8630f90cff1f54e75a44d58482c371e203e6eb7ba879fd65949aeef827a5e550429bd857d712f64351bc1162e1615ca6622a3bc9b8e31a96000fb0a01a12a51ca3e89918c06759d1db65c33dc6a074abec02f94466886d1a52e7d084aa88338aab1f25d58f9e03ed0a308c6c4eed139c1c1c818cd2370d8cd28ec34bce18360d1756e202eb733f998200242d71ce19548f23b03c1eac4d6e9892616ade1c66d2ce3ab69744e27d7099f3574bcd3d3e95e7a52180d9", 16);
@Copy("encryptRsa")
public void rs$encryptRsa(BigInteger var1, BigInteger var2)
{
}
@Replace("encryptRsa")
public void rl$encryptRsa(BigInteger var1, BigInteger var2)
{
rs$encryptRsa(modulus, exponent);
}
}

View File

@@ -31,6 +31,7 @@ import net.runelite.api.mixins.FieldHook;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.MethodHook; import net.runelite.api.mixins.MethodHook;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow; import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSGameShell; import net.runelite.rs.api.RSGameShell;
@@ -97,4 +98,11 @@ public abstract class RSGameShellMixin implements RSGameShell
setResizeCanvasNextFrame(true); setResizeCanvasNextFrame(true);
} }
} }
@Replace("checkHost")
protected final boolean checkHost()
{
//Always allow host.
return true;
}
} }