Open-source multiplayer game server compatible with the RuneScape client
https://www.openrs2.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.2 KiB
85 lines
2.2 KiB
package org.openrs2.xtea;
|
|
|
|
import java.io.IOException;
|
|
import javax.inject.Inject;
|
|
|
|
import com.google.inject.Provides;
|
|
import net.runelite.api.Client;
|
|
import net.runelite.api.GameState;
|
|
import net.runelite.api.events.GameStateChanged;
|
|
import net.runelite.client.config.ConfigManager;
|
|
import net.runelite.client.eventbus.Subscribe;
|
|
import net.runelite.client.plugins.Plugin;
|
|
import net.runelite.client.plugins.PluginDescriptor;
|
|
import net.runelite.http.api.RuneLiteAPI;
|
|
import okhttp3.Call;
|
|
import okhttp3.Callback;
|
|
import okhttp3.OkHttpClient;
|
|
import okhttp3.Request;
|
|
import okhttp3.RequestBody;
|
|
import okhttp3.Response;
|
|
import okhttp3.internal.annotations.EverythingIsNonNull;
|
|
import org.pf4j.Extension;
|
|
import org.pf4j.ExtensionPoint;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
@Extension
|
|
@PluginDescriptor(
|
|
name = "OpenRS2 XTEA",
|
|
description = "Collects XTEA keys and submits them to the OpenRS2 Archive"
|
|
)
|
|
public final class XteaPlugin extends Plugin implements ExtensionPoint {
|
|
private static final Logger log = LoggerFactory.getLogger(XteaPlugin.class);
|
|
|
|
@Inject
|
|
private XteaConfig config;
|
|
|
|
@Inject
|
|
private Client client;
|
|
|
|
@Inject
|
|
private OkHttpClient httpClient;
|
|
|
|
@Provides
|
|
public XteaConfig provideConfig(ConfigManager configManager) {
|
|
return configManager.getConfig(XteaConfig.class);
|
|
}
|
|
|
|
@Subscribe
|
|
public void onGameStateChanged(GameStateChanged event) {
|
|
if (event.getGameState() != GameState.LOGGED_IN) {
|
|
return;
|
|
}
|
|
|
|
int[][] keys = client.getXteaKeys();
|
|
String url = config.endpoint();
|
|
|
|
log.debug("Submitting {} XTEA keys to {}", keys.length, url);
|
|
|
|
Request request = new Request.Builder()
|
|
.post(RequestBody.create(RuneLiteAPI.JSON, RuneLiteAPI.GSON.toJson(keys)))
|
|
.url(url)
|
|
.build();
|
|
|
|
httpClient.newCall(request).enqueue(new Callback() {
|
|
@EverythingIsNonNull
|
|
@Override
|
|
public void onFailure(Call call, IOException ex) {
|
|
log.error("XTEA key submission failed", ex);
|
|
}
|
|
|
|
@EverythingIsNonNull
|
|
@Override
|
|
public void onResponse(Call call, Response response) {
|
|
try (response) {
|
|
if (response.isSuccessful()) {
|
|
log.debug("XTEA key submission successful");
|
|
} else {
|
|
log.error("XTEA key submission failed with status code {}", response.code());
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|