From cd43ef62fee0d851ac84391ba2138d1b903a6fc3 Mon Sep 17 00:00:00 2001 From: TheRealNull Date: Fri, 17 Jan 2020 01:20:58 -0500 Subject: [PATCH] project: Add xtea base, Fix session base --- .../runelite/cache/util/XteaKeyManager.java | 19 ------- .../net/runelite/http/api/RuneLiteAPI.java | 8 ++- .../runelite/http/api/xtea/XteaClient.java | 50 +++++-------------- .../client/plugins/xtea/XteaPlugin.java | 42 +++++++--------- 4 files changed, 38 insertions(+), 81 deletions(-) diff --git a/cache/src/main/java/net/runelite/cache/util/XteaKeyManager.java b/cache/src/main/java/net/runelite/cache/util/XteaKeyManager.java index 80f8dbf981..468ab487f3 100644 --- a/cache/src/main/java/net/runelite/cache/util/XteaKeyManager.java +++ b/cache/src/main/java/net/runelite/cache/util/XteaKeyManager.java @@ -24,11 +24,8 @@ */ package net.runelite.cache.util; -import java.io.IOException; import java.util.HashMap; import java.util.Map; -import net.runelite.http.api.xtea.XteaClient; -import net.runelite.http.api.xtea.XteaKey; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -40,23 +37,7 @@ public class XteaKeyManager public void loadKeys() { - XteaClient xteaClient = new XteaClient(); - try - { - for (XteaKey key : xteaClient.get()) - { - keys.put(key.getRegion(), key.getKeys()); - } - } - catch (IOException ex) - { - // happens on release when it is not deployed yet - logger.debug("unable to load xtea keys", ex); - return; - } - - logger.info("Loaded {} keys", keys.size()); } public int[] getKeys(int region) diff --git a/http-api/src/main/java/net/runelite/http/api/RuneLiteAPI.java b/http-api/src/main/java/net/runelite/http/api/RuneLiteAPI.java index f90eebd72f..f141d7da2f 100644 --- a/http-api/src/main/java/net/runelite/http/api/RuneLiteAPI.java +++ b/http-api/src/main/java/net/runelite/http/api/RuneLiteAPI.java @@ -65,7 +65,8 @@ public class RuneLiteAPI private static final String STATICBASE = "https://static.runelite.net"; private static final String OPENOSRS_BASE = /*"https://api.openosrs.com*/ "https://api.runelitepl.us"; - private static final String OPENOSRS_SESSION = "http://www.openosrs.dev/session"; + private static final String OPENOSRS_SESSION = "http://session.openosrs.dev"; + private static final String OPENOSRS_XTEA = "http://xtea.openosrs.dev"; private static final String MAVEN_METADATA = "http://repo.runelite.net/net/runelite/runelite-parent/maven-metadata.xml"; private static final Properties properties = new Properties(); @@ -121,6 +122,11 @@ public class RuneLiteAPI return HttpUrl.parse(OPENOSRS_SESSION); } + public static HttpUrl getXteaBase() + { + return HttpUrl.parse(OPENOSRS_XTEA); + } + public static HttpUrl getApiBase() { final String prop = System.getProperty("runelite.http-service.url"); diff --git a/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java b/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java index a0c38c99b2..548c209c1d 100644 --- a/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java +++ b/http-api/src/main/java/net/runelite/http/api/xtea/XteaClient.java @@ -29,14 +29,12 @@ import com.google.gson.reflect.TypeToken; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.List; +import java.util.HashMap; import net.runelite.http.api.RuneLiteAPI; -import static net.runelite.http.api.RuneLiteAPI.JSON; import okhttp3.Call; import okhttp3.Callback; import okhttp3.HttpUrl; import okhttp3.Request; -import okhttp3.RequestBody; import okhttp3.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,19 +43,19 @@ public class XteaClient { private static final Logger logger = LoggerFactory.getLogger(XteaClient.class); - public void submit(XteaRequest xteaRequest) + public void submit(int region, int[] keys) { - String json = RuneLiteAPI.GSON.toJson(xteaRequest); - HttpUrl url = RuneLiteAPI.getOpenOSRSApiBase().newBuilder() - .addPathSegment("xtea") + HttpUrl url = RuneLiteAPI.getXteaBase().newBuilder() + .addPathSegment("submit") + .addQueryParameter("region", String.valueOf(region)) + .addQueryParameter("key1", String.valueOf(keys[0])) + .addQueryParameter("key2", String.valueOf(keys[1])) + .addQueryParameter("key3", String.valueOf(keys[2])) + .addQueryParameter("key4", String.valueOf(keys[3])) .build(); - logger.debug("Built URI: {}", url); - - RequestBody body = RequestBody.Companion.create(json, JSON); Request request = new Request.Builder() - .post(body) .url(url) .build(); @@ -87,10 +85,10 @@ public class XteaClient }); } - public List get() throws IOException + public HashMap get() throws IOException { - HttpUrl url = RuneLiteAPI.getOpenOSRSApiBase().newBuilder() - .addPathSegment("xtea") + HttpUrl url = RuneLiteAPI.getXteaBase().newBuilder() + .addPathSegment("get") .build(); Request request = new Request.Builder() @@ -101,7 +99,7 @@ public class XteaClient { InputStream in = response.body().byteStream(); // CHECKSTYLE:OFF - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken>() {}.getType()); + return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken>() {}.getType()); // CHECKSTYLE:ON } catch (JsonParseException ex) @@ -109,26 +107,4 @@ public class XteaClient throw new IOException(ex); } } - - public XteaKey get(int region) throws IOException - { - HttpUrl url = RuneLiteAPI.getOpenOSRSApiBase().newBuilder() - .addPathSegment("xtea") - .addPathSegment(Integer.toString(region)) - .build(); - - Request request = new Request.Builder() - .url(url) - .build(); - - try (Response response = RuneLiteAPI.CLIENT.newCall(request).execute()) - { - InputStream in = response.body().byteStream(); - return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), XteaKey.class); - } - catch (JsonParseException ex) - { - throw new IOException(ex); - } - } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xtea/XteaPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xtea/XteaPlugin.java index ed4fb9725d..a9e04be440 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/xtea/XteaPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/xtea/XteaPlugin.java @@ -24,18 +24,17 @@ */ package net.runelite.client.plugins.xtea; -import java.util.HashSet; -import java.util.Set; +import java.io.IOException; +import java.util.HashMap; import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.events.GameStateChanged; +import net.runelite.client.eventbus.Subscribe; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.http.api.xtea.XteaClient; -import net.runelite.http.api.xtea.XteaKey; -import net.runelite.http.api.xtea.XteaRequest; @PluginDescriptor( name = "Xtea", @@ -46,13 +45,22 @@ public class XteaPlugin extends Plugin { private final XteaClient xteaClient = new XteaClient(); - private final Set sentRegions = new HashSet<>(); + private HashMap xteas; + { + try + { + xteas = xteaClient.get(); + } + catch (IOException e) + { + e.printStackTrace(); + } + } @Inject private Client client; - // todo re-enable when we have our server back up. - // @Subscribe + @Subscribe private void onGameStateChanged(GameStateChanged gameStateChanged) { if (gameStateChanged.getGameState() != GameState.LOGGED_IN) @@ -60,24 +68,20 @@ public class XteaPlugin extends Plugin return; } - int revision = client.getRevision(); int[] regions = client.getMapRegions(); int[][] xteaKeys = client.getXteaKeys(); - XteaRequest xteaRequest = new XteaRequest(); - xteaRequest.setRevision(revision); - for (int idx = 0; idx < regions.length; ++idx) { int region = regions[idx]; int[] keys = xteaKeys[idx]; - if (sentRegions.contains(region)) + if (xteas.get(region) != null) { continue; } - sentRegions.add(region); + xteas.put(region, keys); log.debug("Region {} keys {}, {}, {}, {}", region, keys[0], keys[1], keys[2], keys[3]); @@ -87,17 +91,7 @@ public class XteaPlugin extends Plugin continue; } - XteaKey xteaKey = new XteaKey(); - xteaKey.setRegion(region); - xteaKey.setKeys(keys); - xteaRequest.addKey(xteaKey); + xteaClient.submit(region, keys); } - - if (xteaRequest.getKeys().isEmpty()) - { - return; - } - - xteaClient.submit(xteaRequest); } }