From 24828aec5b0f2dc99932c11f55c197f52c02d31d Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 22 Dec 2021 22:54:03 +0100 Subject: [PATCH] init --- pom.xml | 90 +++++++++ .../java/net/krakatoa/proxy/ProxySystem.java | 99 ++++++++++ .../krakatoa/proxy/command/CodeCommand.java | 60 ++++++ .../krakatoa/proxy/config/ConfigHandler.java | 44 +++++ .../listener/PlayerDisconnectListener.java | 26 +++ .../proxy/listener/PostLoginListener.java | 184 ++++++++++++++++++ .../krakatoa/proxy/mongo/MongoManager.java | 39 ++++ .../krakatoa/proxy/protocol/KraProtocol.java | 119 +++++++++++ .../proxy/protocol/KraProtocolMessage.java | 24 +++ .../protocol/KraProtocolMessageHandler.java | 5 + .../proxy/protocol/KraProtocolStatus.java | 21 ++ .../krakatoa/proxy/socket/SocketClient.java | 121 ++++++++++++ .../net/krakatoa/proxy/util/Formatter.java | 18 ++ src/main/resources/plugin.yml | 6 + .../net/krakatoa/proxy/ProxySystem.class | Bin 0 -> 6642 bytes .../krakatoa/proxy/command/CodeCommand.class | Bin 0 -> 2920 bytes .../krakatoa/proxy/config/ConfigHandler.class | Bin 0 -> 2628 bytes .../listener/PlayerDisconnectListener.class | Bin 0 -> 882 bytes .../proxy/listener/PostLoginListener.class | Bin 0 -> 11609 bytes .../krakatoa/proxy/mongo/MongoManager.class | Bin 0 -> 2446 bytes .../krakatoa/proxy/protocol/KraProtocol.class | Bin 0 -> 4508 bytes .../proxy/protocol/KraProtocolMessage.class | Bin 0 -> 1225 bytes .../krakatoa/proxy/socket/SocketClient.class | Bin 0 -> 7643 bytes .../net/krakatoa/proxy/util/Formatter.class | Bin 0 -> 1003 bytes target/classes/plugin.yml | 6 + target/maven-archiver/pom.properties | 5 + .../compile/default-compile/createdFiles.lst | 10 + .../compile/default-compile/inputFiles.lst | 10 + .../default-testCompile/inputFiles.lst | 0 29 files changed, 887 insertions(+) create mode 100644 pom.xml create mode 100644 src/main/java/net/krakatoa/proxy/ProxySystem.java create mode 100644 src/main/java/net/krakatoa/proxy/command/CodeCommand.java create mode 100644 src/main/java/net/krakatoa/proxy/config/ConfigHandler.java create mode 100644 src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java create mode 100644 src/main/java/net/krakatoa/proxy/listener/PostLoginListener.java create mode 100644 src/main/java/net/krakatoa/proxy/mongo/MongoManager.java create mode 100644 src/main/java/net/krakatoa/proxy/protocol/KraProtocol.java create mode 100644 src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessage.java create mode 100644 src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessageHandler.java create mode 100644 src/main/java/net/krakatoa/proxy/protocol/KraProtocolStatus.java create mode 100644 src/main/java/net/krakatoa/proxy/socket/SocketClient.java create mode 100644 src/main/java/net/krakatoa/proxy/util/Formatter.java create mode 100644 src/main/resources/plugin.yml create mode 100644 target/classes/net/krakatoa/proxy/ProxySystem.class create mode 100644 target/classes/net/krakatoa/proxy/command/CodeCommand.class create mode 100644 target/classes/net/krakatoa/proxy/config/ConfigHandler.class create mode 100644 target/classes/net/krakatoa/proxy/listener/PlayerDisconnectListener.class create mode 100644 target/classes/net/krakatoa/proxy/listener/PostLoginListener.class create mode 100644 target/classes/net/krakatoa/proxy/mongo/MongoManager.class create mode 100644 target/classes/net/krakatoa/proxy/protocol/KraProtocol.class create mode 100644 target/classes/net/krakatoa/proxy/protocol/KraProtocolMessage.class create mode 100644 target/classes/net/krakatoa/proxy/socket/SocketClient.class create mode 100644 target/classes/net/krakatoa/proxy/util/Formatter.class create mode 100644 target/classes/plugin.yml create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..1b52ff8 --- /dev/null +++ b/pom.xml @@ -0,0 +1,90 @@ + + + 4.0.0 + + net.krakatoa.proxy + KrakatoaProxySystem + 1.0-SNAPSHOT + + + 14 + 14 + + + + clean install + + + maven-assembly-plugin + + + jar-with-dependencies + + + + + + single + + make-assembly + package + + + + + maven-compiler-plugin + + 9 + 9 + + org.apache.maven.plugins + + + + + + + net.md-5 + bungeecord-api + 1.17-R0.1-SNAPSHOT + jar + provided + + + lombok + org.projectlombok + provided + 1.18.22 + + + Java-WebSocket + org.java-websocket + 1.5.2 + + + mongodb-driver-async + org.mongodb + 3.12.10 + + + + + + bungeecord-repo + https://oss.sonatype.org/content/repositories/snapshots + + + + sonatype-nexus-snapshots + + false + + + true + + https://oss.sonatype.org/content/repositories/snapshots + + + \ No newline at end of file diff --git a/src/main/java/net/krakatoa/proxy/ProxySystem.java b/src/main/java/net/krakatoa/proxy/ProxySystem.java new file mode 100644 index 0000000..ec25a88 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/ProxySystem.java @@ -0,0 +1,99 @@ +package net.krakatoa.proxy; + +import com.mongodb.async.client.MongoCollection; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.Arrays; +import lombok.Getter; +import lombok.SneakyThrows; +import net.krakatoa.proxy.command.CodeCommand; +import net.krakatoa.proxy.config.ConfigHandler; +import net.krakatoa.proxy.listener.PlayerDisconnectListener; +import net.krakatoa.proxy.listener.PostLoginListener; +import net.krakatoa.proxy.mongo.MongoManager; +import net.krakatoa.proxy.protocol.KraProtocol; +import net.krakatoa.proxy.socket.SocketClient; +import net.krakatoa.proxy.util.Formatter; +import net.md_5.bungee.api.plugin.Plugin; +import net.md_5.bungee.api.plugin.PluginManager; +import org.bson.Document; + +@Getter +public class ProxySystem extends Plugin { + + @Getter + private static ProxySystem instance; + + private ConfigHandler configHandler; + private MongoManager mongoManager; + private SocketClient socketClient; + private KraProtocol kraProtocol; + private Formatter formatter; + + private MongoCollection players; + + @SneakyThrows + @Override + public void onEnable() { + instance = this; + + configHandler = new ConfigHandler(); + configHandler.load(); + + kraProtocol = new KraProtocol(); + formatter = new Formatter(); + + System.out.println( + "mongo cfg " + configHandler.getMongodbHost() + " " + configHandler.getMongodbUsername()); + + mongoManager = new MongoManager(configHandler.getMongodbHost(), + configHandler.getMongodbPort(), configHandler.getMongodbUsername(), + configHandler.getMongodbPassword()); + mongoManager.connect(configHandler.getMongodbDatabase()); + + try { + socketClient = new SocketClient( + new URI(configHandler.getWebSocketProtocol() + "://" + configHandler.getWebSocketHost() + + ":" + configHandler.getWebSocketPort() + "/ws?t=" + + configHandler.getWebSocketAccessKey() + "&s=proxy-1")); + } catch (URISyntaxException e) { + e.printStackTrace(); + } + + socketClient.connect(); + + players = mongoManager.getMongoDatabase().getCollection("players"); + + loadListeners(); + loadCommands(); + } + + @Override + public void onDisable() { + socketClient.getConnection().close(); + socketClient.getConnection().closeConnection(1, ""); + + instance = null; + } + + public void loadListeners() { + PluginManager pluginManager = getProxy().getPluginManager(); + Arrays.asList(new PostLoginListener(), new PlayerDisconnectListener()) + .forEach(listener -> { + pluginManager.registerListener(this, listener); + }); + } + + public void loadCommands() { + PluginManager pluginManager = getProxy().getPluginManager(); + Arrays.asList(new CodeCommand("code")).forEach(listener -> { + pluginManager.registerCommand(this, listener); + }); + } + + /* + TODO: proxy ping & join only accessible for 1.17.1 clients + + */ + +} diff --git a/src/main/java/net/krakatoa/proxy/command/CodeCommand.java b/src/main/java/net/krakatoa/proxy/command/CodeCommand.java new file mode 100644 index 0000000..fba75c4 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/command/CodeCommand.java @@ -0,0 +1,60 @@ +package net.krakatoa.proxy.command; + +import java.security.SecureRandom; +import net.md_5.bungee.api.CommandSender; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.plugin.Command; + +public class CodeCommand extends Command { + + public CodeCommand(String name) { + super(name); + } + + @Override + public void execute(CommandSender commandSender, String[] strings) { + if (commandSender instanceof ProxiedPlayer) { + ProxiedPlayer proxiedPlayer = (ProxiedPlayer) commandSender; + + /* + Document query = new Document().append("uuid", ProxySystem.getInstance().getFormatter() + .formatUuid(proxiedPlayer.getUniqueId().toString())); + + String voiceWebCode = generateVoiceWebCode(""); + + Bson updates = Updates.combine(Updates.set("voiceWebCode", voiceWebCode)); + + UpdateOptions options = new UpdateOptions().upsert(true); + + try { + ProxySystem.getInstance().getPlayerRegistrationProcess() + .updateOne(query, updates, (updateResult, throwable) -> { + System.out.println("Modified document count: " + updateResult.getModifiedCount()); + System.out.println("Upserted id: " + + updateResult.getUpsertedId()); // only contains a value when an upsert is performed + }); + } catch (MongoException exception) { + System.err.println("Unable to update due to an error: " + exception); + } */ + + // TODO: add url and copy text + //proxiedPlayer.sendMessage(new TextComponent("§eNeuer Code §c§l" + voiceWebCode)); + + } + } + + // TODO: use static method from other file + public String generateVoiceWebCode(String uuid) { + SecureRandom secureRandom = new SecureRandom(); + + String chrs = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + String customTag = secureRandom.ints(8, 0, chrs.length()).mapToObj(chrs::charAt) + .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append).toString(); + + System.out.println(customTag); + + return customTag; + } + +} diff --git a/src/main/java/net/krakatoa/proxy/config/ConfigHandler.java b/src/main/java/net/krakatoa/proxy/config/ConfigHandler.java new file mode 100644 index 0000000..1b889c0 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/config/ConfigHandler.java @@ -0,0 +1,44 @@ +package net.krakatoa.proxy.config; + +import java.io.File; +import java.io.IOException; +import lombok.Getter; +import net.md_5.bungee.config.Configuration; +import net.md_5.bungee.config.ConfigurationProvider; +import net.md_5.bungee.config.YamlConfiguration; + +@Getter +public class ConfigHandler { + + private String webSocketAccessKey; + private String webSocketProtocol; + private String webSocketHost; + private int webSocketPort; + + private String webVoiceAddress; + + private String mongodbHost; + private int mongodbPort; + private String mongodbDatabase; + private String mongodbUsername; + private String mongodbPassword; + + public void load() throws IOException { + // TODO change file to yaml + Configuration configuration = ConfigurationProvider.getProvider(YamlConfiguration.class) + .load(new File("/home/CloudNet/kraConfigs", "kraSettings.yaml")); + + webSocketAccessKey = configuration.getString("web_socket.access_key"); + webSocketProtocol = configuration.getString("web_socket.protocol"); + webSocketHost = configuration.getString("web_socket.host"); + webSocketPort = configuration.getInt("web_socket.port"); + + webVoiceAddress = configuration.getString("web.voice_address"); + + mongodbHost = configuration.getString("mongodb.host"); + mongodbPort = configuration.getInt("mongodb.port"); + mongodbDatabase = configuration.getString("mongodb.database"); + mongodbUsername = configuration.getString("mongodb.username"); + mongodbPassword = configuration.getString("mongodb.password"); + } +} diff --git a/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java b/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java new file mode 100644 index 0000000..05a8952 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java @@ -0,0 +1,26 @@ +package net.krakatoa.proxy.listener; + +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.PlayerDisconnectEvent; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.event.EventHandler; + +public class PlayerDisconnectListener implements Listener { + + @EventHandler + public void onDisconnect(PlayerDisconnectEvent event) { + ProxiedPlayer proxiedPlayer = event.getPlayer(); + + //String uuid = ProxySystem.getInstance().getFormatter() + // .formatUuid(proxiedPlayer.getUniqueId().toString()); + + /* + ProxySystem.getInstance().getPlayerRegistrationProcess() + .deleteOne(Filters.eq("uuid", uuid), + (deleteResult, throwable) -> { + + System.out.println("delete " + deleteResult.getDeletedCount()); + }); */ + } + +} diff --git a/src/main/java/net/krakatoa/proxy/listener/PostLoginListener.java b/src/main/java/net/krakatoa/proxy/listener/PostLoginListener.java new file mode 100644 index 0000000..2f9b7bf --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/listener/PostLoginListener.java @@ -0,0 +1,184 @@ +package net.krakatoa.proxy.listener; + +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.UpdateOptions; +import com.mongodb.client.model.Updates; +import java.security.SecureRandom; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; +import net.krakatoa.proxy.ProxySystem; +import net.krakatoa.proxy.protocol.KraProtocolMessage; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.chat.ClickEvent; +import net.md_5.bungee.api.chat.HoverEvent; +import net.md_5.bungee.api.chat.HoverEvent.Action; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.chat.hover.content.Text; +import net.md_5.bungee.api.config.ServerInfo; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import net.md_5.bungee.api.event.PostLoginEvent; +import net.md_5.bungee.api.event.ServerSwitchEvent; +import net.md_5.bungee.api.plugin.Listener; +import net.md_5.bungee.event.EventHandler; +import org.bson.Document; +import org.bson.conversions.Bson; + +public class PostLoginListener implements Listener { + + @EventHandler + public void onPostLogin(PostLoginEvent event) { + ProxiedPlayer proxiedPlayer = event.getPlayer(); + + String uuid = ProxySystem.getInstance().getFormatter() + .formatUuid(proxiedPlayer.getUniqueId().toString()); + + ProxySystem.getInstance().getPlayers() + .find(Filters.eq("uuid", uuid)) + .first((document, throwable) -> { + if (document == null) { + // create player in db and send voice url + System.out.println("create player in db"); + String voiceWebCode = generateVoiceWebCode(uuid); + + document = new Document("uuid", uuid).append("voiceWebCode", voiceWebCode); + + ProxySystem.getInstance().getPlayers().insertOne(document, (unused, throwable1) -> { + System.out.println("insertOne"); + }); + + sendVoiceWebCodeUrl(proxiedPlayer, voiceWebCode); + } else { + // check if both sockets connected + int cmdID = ProxySystem.getInstance().getKraProtocol().getCmdID(); + + ProxySystem.getInstance().getKraProtocol().SendMessage(11, cmdID, 1, uuid, 10, ""); + + Document finalDocument = document; + Consumer consumer = value -> { + if (value.getArgs().equals("1")) { + // connected! Send player to game server + System.out.println( + proxiedPlayer.getName() + " sockets connected! Send player to game server"); + proxiedPlayer.sendMessage( + new TextComponent("§bWillkommen zurück §6" + proxiedPlayer.getDisplayName())); + + ProxyServer.getInstance().getScheduler().schedule(ProxySystem.getInstance(), () -> { + ServerInfo serverInfos = ProxyServer.getInstance().getServerInfo("NewYork-1"); + proxiedPlayer.connect(serverInfos); + }, 2L, TimeUnit.SECONDS); + } else { + // not connected! Send voice url + System.out.println( + proxiedPlayer.getName() + " sockets not connected! Send voice url"); + + String voiceWebCode = generateVoiceWebCode(uuid); + + Bson updates = Updates.combine(Updates.set("voiceWebCode", voiceWebCode)); + + UpdateOptions options = new UpdateOptions().upsert(true); + + ProxySystem.getInstance().getPlayers() + .updateOne(finalDocument, updates, options, (updateResult, throwable1) -> { + }); + + System.out.println("voiceWebCode " + voiceWebCode); + + sendVoiceWebCodeUrl(proxiedPlayer, voiceWebCode); + } + + System.out.println( + "consumer response value " + value.getUuid() + " " + value.getCmdID()); + }; + ProxySystem.getInstance().getKraProtocol().getConsumerHashMap().put(cmdID, consumer); + } + }); + + + } + + public void sendVoiceWebCodeUrl(ProxiedPlayer proxiedPlayer, String voiceWebCode) { + String url = ProxySystem.getInstance().getConfigHandler() + .getWebVoiceAddress() + voiceWebCode; + + TextComponent textComponent = new TextComponent( + "Klicke auf den Link, um dich mit dem Voice Server zu verbinden"); + + TextComponent linkComponent = new TextComponent(url); + linkComponent.setHoverEvent(new HoverEvent(Action.SHOW_TEXT, + new Text(url))); + linkComponent.setClickEvent( + new ClickEvent(ClickEvent.Action.OPEN_URL, + url)); + + textComponent.addExtra("\n"); + textComponent.addExtra(linkComponent); + + proxiedPlayer.sendMessage(textComponent); + } + + public String generateVoiceWebCode(String uuid) { + SecureRandom secureRandom = new SecureRandom(); + + String chrs = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + + String customTag = secureRandom.ints(8, 0, chrs.length()).mapToObj(chrs::charAt) + .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append).toString(); + + System.out.println(customTag); + + + /* String chrs = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + SecureRandom secureRandom = SecureRandom.getInstanceStrong(); + + String customTag = secureRandom.ints(9, 0, chrs.length()).mapToObj(chrs::charAt) + .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append).toString(); + System.out.println(customTag); + + /*AtomicBoolean avail = new AtomicBoolean(false); + + while (!avail.get()) { + System.out.println("while"); + secureRandom.ints(8, 0, chrs.length()).mapToObj(chrs::charAt) + .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append).toString(); + System.out.println(customTag); + + ProxySystem.getInstance().getPlayerRegistrationProcess().find(Filters.eq("webCode", chrs)) + .first((document, throwable) -> { + if (document == null) { + avail.set(true); + } + }); + }*/ + + return customTag; + } + + @EventHandler + public void onServerSwitch(ServerSwitchEvent event) { + ProxiedPlayer player = event.getPlayer(); + + player.sendMessage( + new TextComponent("Switched server " + player.getServer().getInfo().getName())); + } + + /* + + @EventHandler + public void onServerConnect(ServerConnectEvent event) { + System.out.println( + "REASON " + event.getReason() + " " + event.getPlayer().getUniqueId().toString()); + + if (!event.getReason().equals(Reason.JOIN_PROXY)) { + System.out.println("return join proxy"); + return; + } + + // event.setTarget(ProxyServer.getInstance().getServerInfo("NewYork-1")); +/* + ProxySystem.getInstance().getKraProtocol() + .SendMessage(11, 10, 0, event.getPlayer().getUniqueId().toString().replaceAll("-", ""), 10, + ""); + + //event.setTarget(ProxyServer.getInstance().getServerInfo("NewYork-1")); + } */ +} diff --git a/src/main/java/net/krakatoa/proxy/mongo/MongoManager.java b/src/main/java/net/krakatoa/proxy/mongo/MongoManager.java new file mode 100644 index 0000000..b21425b --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/mongo/MongoManager.java @@ -0,0 +1,39 @@ +package net.krakatoa.proxy.mongo; + +import com.mongodb.async.client.MongoClient; +import com.mongodb.async.client.MongoClients; +import com.mongodb.async.client.MongoCollection; +import com.mongodb.async.client.MongoDatabase; +import lombok.Getter; +import org.bson.Document; + +public class MongoManager { + + private final String hostname; + private final int port; + private final String username; + private final String password; + + @Getter + private MongoDatabase mongoDatabase; + @Getter + private MongoClient mongoClient; + @Getter + private MongoCollection players; + + public MongoManager(String hostname, int port, String username, String password) { + this.hostname = hostname; + this.port = port; + this.username = username; + this.password = password; + } + + public void connect(String database) { + mongoClient = MongoClients.create( + "mongodb://" + username + ":" + password + "@" + hostname + ":" + port + "/?authSource=" + + database); + + mongoDatabase = mongoClient.getDatabase(database); + players = mongoDatabase.getCollection("players"); + } +} diff --git a/src/main/java/net/krakatoa/proxy/protocol/KraProtocol.java b/src/main/java/net/krakatoa/proxy/protocol/KraProtocol.java new file mode 100644 index 0000000..b54844d --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/protocol/KraProtocol.java @@ -0,0 +1,119 @@ +package net.krakatoa.proxy.protocol; + +import com.google.common.collect.Lists; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.function.Consumer; +import lombok.Getter; +import net.krakatoa.proxy.ProxySystem; + +public class KraProtocol { + + @Getter + ArrayList cmdIDs = Lists.newArrayList(); + + @Getter + HashMap> consumerHashMap = new HashMap<>(); + + public int getCmdID() { + if (cmdIDs.isEmpty()) { + cmdIDs.add(10); + return 10; + } + + int cmdID = cmdIDs.get(cmdIDs.size() - 1) + 1; + + cmdIDs.add(cmdID); + + // TODO: check max int value 2^32 + + return cmdID; + } + + public void SendMessage(KraProtocolMessage kraProtocolMessage) { + SendMessage(kraProtocolMessage.getStatus(), kraProtocolMessage.getCmdID(), + kraProtocolMessage.getDest(), kraProtocolMessage.getUuid(), + kraProtocolMessage.getCmdNumber(), kraProtocolMessage.getArgs()); + } + + public void SendMessage(int status, int cmdID, int dest, String uuid, int cmdNumber, + String args) { + System.out.println("sendMessage: " + status + " " + cmdID + " " + dest + " " + cmdNumber); + + int argLen = args.length(); + + byte[] raw = new byte[40 + argLen]; + + raw[0] = (byte) status; + + raw[1] = (byte) cmdID; + raw[2] = (byte) (cmdID >> 8); + raw[3] = (byte) (cmdID >> 16); + raw[4] = (byte) (cmdID >> 24); + + raw[5] = (byte) dest; + + byte[] uuidBytes = uuid.getBytes(); + + /* for (int i = 0; i < 32; i++) { + raw[6 + i] = uuidBytes[i]; + }*/ + + System.arraycopy(uuidBytes, 0, raw, 6, 32); + + raw[38] = (byte) cmdNumber; + raw[39] = (byte) (cmdNumber >> 8); + + if (argLen > 0) { + for (int i = 0; i < argLen; i++) { + raw[40 + i] = (byte) args.charAt(i); + } + } + + ProxySystem.getInstance().getSocketClient().SendMessage(raw); + } + + public KraProtocolMessage DecodeMessage(byte[] data) { + System.out.println("start decode"); + + byte status = data[0]; + + int cmdID = Byte.toUnsignedInt(data[1]); + + cmdID += Byte.toUnsignedInt(data[2]) * 256; + cmdID += Byte.toUnsignedInt(data[3]) * 256 * 256; + cmdID += Byte.toUnsignedInt(data[4]) * 256 * 256 * 256; + + int dest = Byte.toUnsignedInt(data[5]); + + byte[] playerUuidBytes = new byte[32]; + + System.arraycopy(data, 6, playerUuidBytes, 0, 32); + + /* for (int i = 0; i < 32; i++) { + playerUuidBytes[i] = data[6 + i]; + } */ + + String playerUuid = new String(playerUuidBytes, StandardCharsets.UTF_8); + + short cmdNumber = (short) (Byte.toUnsignedInt(data[38]) + (Byte.toUnsignedInt(data[39]) * 256)); + + int argLen = data.length - 40; + byte[] argsBytes = new byte[argLen]; + + /* for (int i = 0; i < argLen; i++) { + argsBytes[i] = data[40 + i]; + } */ + + System.arraycopy(data, 40, argsBytes, 0, argLen); + + String args = new String(argsBytes, StandardCharsets.UTF_8); + + System.out.println( + "decoded message " + status + " " + cmdID + " " + dest + " " + playerUuid + " " + + cmdNumber + " " + args + " "); + + return new KraProtocolMessage(status, cmdID, dest, playerUuid, cmdNumber, args); + } +} diff --git a/src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessage.java b/src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessage.java new file mode 100644 index 0000000..7a46101 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessage.java @@ -0,0 +1,24 @@ +package net.krakatoa.proxy.protocol; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@AllArgsConstructor +@Getter +public class KraProtocolMessage { + + private final byte status; + private final int cmdID; // long + private final int dest; + private final String uuid; + private final short cmdNumber; + private final String args; + + public int getStatus() { + return Byte.toUnsignedInt(status); + } + + public int getCmdNumber() { + return Short.toUnsignedInt(cmdNumber); + } +} diff --git a/src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessageHandler.java b/src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessageHandler.java new file mode 100644 index 0000000..ad1a724 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessageHandler.java @@ -0,0 +1,5 @@ +package net.krakatoa.proxy.protocol; + +public class KraProtocolMessageHandler { + +} diff --git a/src/main/java/net/krakatoa/proxy/protocol/KraProtocolStatus.java b/src/main/java/net/krakatoa/proxy/protocol/KraProtocolStatus.java new file mode 100644 index 0000000..b7c928d --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/protocol/KraProtocolStatus.java @@ -0,0 +1,21 @@ +package net.krakatoa.proxy.protocol; + +import lombok.Getter; + +public enum KraProtocolStatus { + + SEND(10), + GET(11), + MESSAGE_ALREADY_IN_QUEUE(12), + ERROR_NO_PERMS(13), + ERROR_TRY_AGAIN(14), + ERROR_ARG_LEN_TOO_BIG(15), + REPLY(16); + + @Getter + private final int status; + + KraProtocolStatus(int status) { + this.status = status; + } +} diff --git a/src/main/java/net/krakatoa/proxy/socket/SocketClient.java b/src/main/java/net/krakatoa/proxy/socket/SocketClient.java new file mode 100644 index 0000000..26c9625 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/socket/SocketClient.java @@ -0,0 +1,121 @@ +package net.krakatoa.proxy.socket; + +import java.net.URI; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.concurrent.TimeUnit; +import net.krakatoa.proxy.ProxySystem; +import net.krakatoa.proxy.protocol.KraProtocolMessage; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.chat.TextComponent; +import net.md_5.bungee.api.connection.ProxiedPlayer; +import org.java_websocket.client.WebSocketClient; +import org.java_websocket.handshake.ServerHandshake; + +public class SocketClient extends WebSocketClient { + + public SocketClient(URI uri) { + super(uri); + } + + public void SendMessage(byte[] message) { + if (isOpen()) { + send(message); + } + } + + @Override + public void onOpen(ServerHandshake serverHandshake) { + System.out.println("Socket connection opened!"); + + //ProxySystem.getInstance().getKraProtocol() + // .SendMessage(1, 126375, 248, "myuui123asdrsdasadsdasdadsadsdsa", 65017, "player joined"); + + for (ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers()) { + proxiedPlayer.sendMessage(new TextComponent("§cSocket §8» §aConnected")); + } + } + + @Override + public void onMessage(String s) { + System.out.println("recv s: " + s); + } + + @Override + public void onMessage(ByteBuffer byteBuffer) { + System.out.println("recv b: " + Arrays.toString(byteBuffer.array())); + + KraProtocolMessage kraProtocolMessage = ProxySystem.getInstance().getKraProtocol() + .DecodeMessage(byteBuffer.array()); + + System.out.println( + "kraProtocolMessage " + kraProtocolMessage.getCmdID() + " " + kraProtocolMessage.getArgs()); + + // remove cmdID from cmdID list + ProxySystem.getInstance().getKraProtocol().getCmdIDs() + .removeIf(cmdID -> cmdID == kraProtocolMessage.getCmdID()); + + System.out.println( + "consumer ids " + ProxySystem.getInstance().getKraProtocol().getConsumerHashMap().keySet()); + + // test - mobile or voice socket connected + if (kraProtocolMessage.getCmdNumber() == 15) { + ProxyServer.getInstance().getScheduler().runAsync(ProxySystem.getInstance(), () -> { + System.out.println(ProxySystem.getInstance().getFormatter() + .stringToUuid(kraProtocolMessage.getUuid())); + + ProxiedPlayer proxiedPlayer = ProxySystem.getInstance().getProxy() + .getPlayer(ProxySystem.getInstance().getFormatter() + .stringToUuid(kraProtocolMessage.getUuid())); + + if (proxiedPlayer != null) { + if (kraProtocolMessage.getArgs().equals("1")) { + proxiedPlayer.sendMessage(new TextComponent("§5Mobile §8» §cConnection lost!")); + } else { + proxiedPlayer.sendMessage( + new TextComponent("§bVoice §8» §cConnection lost!")); + } + } + }); + } + + ProxySystem.getInstance().getKraProtocol().getConsumerHashMap() + .forEach((cmdID, consumer) -> { + if (cmdID == kraProtocolMessage.getCmdID()) { + System.out.println("accept " + cmdID + " " + kraProtocolMessage.getCmdID()); + consumer.accept(kraProtocolMessage); + } + }); + } + + @Override + public void onClose(int code, String reason, boolean remote) { + System.out.println( + "Connection! closed by " + (remote ? "remote peer" : "us") + " Code: " + code + " Reason: " + + reason); + + for (ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers()) { + proxiedPlayer.sendMessage( + new TextComponent( + "§cSocket §8» §c" + (remote ? "Connection! Closed by remote peer" : reason))); + } + + /* 1 called on plugin disable */ + if (code != 1) { + ProxyServer.getInstance().getScheduler().schedule(ProxySystem.getInstance(), () -> { + for (ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers()) { + proxiedPlayer.sendMessage(new TextComponent("§cSocket §8» §7Reconnecting...")); + } + + System.out.println("try reconnect"); + reconnect(); + }, 3L, TimeUnit.SECONDS); + } + } + + @Override + public void onError(Exception e) { + System.out.println("Error: " + e); + //e.printStackTrace(); + } +} diff --git a/src/main/java/net/krakatoa/proxy/util/Formatter.java b/src/main/java/net/krakatoa/proxy/util/Formatter.java new file mode 100644 index 0000000..bfbb671 --- /dev/null +++ b/src/main/java/net/krakatoa/proxy/util/Formatter.java @@ -0,0 +1,18 @@ +package net.krakatoa.proxy.util; + +import java.math.BigInteger; +import java.util.UUID; + +public class Formatter { + + public String formatUuid(String uuid) { + return uuid.replaceAll("-", ""); + } + + public UUID stringToUuid(String s) { + BigInteger bigInteger = new BigInteger(s.substring(0, 16), 16); + BigInteger bigInteger1 = new BigInteger(s.substring(16, 32), 16); + + return new UUID(bigInteger.longValue(), bigInteger1.longValue()); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..6de8bf6 --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,6 @@ +name: KrakatoaProxySystem +author: AlexanderRoese +version: 1.0 +main: net.krakatoa.proxy.ProxySystem +commands: + code: \ No newline at end of file diff --git a/target/classes/net/krakatoa/proxy/ProxySystem.class b/target/classes/net/krakatoa/proxy/ProxySystem.class new file mode 100644 index 0000000000000000000000000000000000000000..9e4cabf866c5346e51c6fd8c81a8b3212d04b5be GIT binary patch literal 6642 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 VxcV5M<4e*{Qtn^j8+?cEe*vO7ESmrT literal 0 HcmV?d00001 diff --git a/target/classes/net/krakatoa/proxy/config/ConfigHandler.class b/target/classes/net/krakatoa/proxy/config/ConfigHandler.class new file mode 100644 index 0000000000000000000000000000000000000000..7b730126117d94ac7a86d69d403507f766e119db GIT binary patch literal 2628 zcmb7FZCBhx6n=(MHZ0+#%R*c28;ZQUu~ksJ*cK@W?G{idmHL9&WV!^h8BDSi{*xc{ z97{cVjz7Tv;9v20XOe}m9nZlJ$-TMvK6jqEbMNG@e}4ZHz%=4K+HfI}2Q_Q8y33uIp<~tyy!al&g|YF?91MoBfX7zd-JZ6pjiAQ4<%r;gSF^V4x<9Yf zMrg;L2=d6ID+kj=H+mSR{sVUgvlfa2&*dRQSB=M~Uvp!XQ*QIV9Yy8w%Ku4N&Y_RN zR7pHxEqXpTP++)f?T9+J=6%s{S7>82v%^u5mG*b8b=>4UJcYJsy{A$Kg@5 zy~mI8xQSai44HTb?=lRZr#K9qRON&x!-!@(<8SV#6YpUphfxz_7^fo0g{VqY&5lS4xnu{fFHf{Uyw?@&ImP-hKO*Cs3mBMW=+A7DlE%UjzFhfz6D7IqrITdT zB+6^x1BTuVY)3?~gxoRlp@ejwK$gg3VESzMz6fa^ZsKDTpWsvKd@9XyKqD}qtIM*? zTsAR_&$5}wPU+#M_fj)nfOw%NSzN;pMmuZ zq7m^huVLRYTw+{8Co#9Hd3DVP^7rxH}WfUh*_RUU5G zRi7+{ig0Xy(+)lPof_NY9WP=?2L2qaR;CkivNsX+_PH(#0_GPE9lkHGuP6s1)Ze@@ zmRC{lvU)+`UU#gsG?UA%PMg(NoHFbq9pe3CRw0?!x{ zu!N-%%@a;?rN-tVo-v-DQ+{1ELWj%Sk|NH`b4eBkLv+k-^e>S=61omZYm@V-Bn_RC zG$Kk;*DFc=tR!`-lGKMvQga)mTsU6-_u(H zC;;2|fh42rwu8t>@ZV&WB##QY-_ZF7dbbLf3jMD!aEvRJiOIsXW88R!VbUg)Hbt7H zwA-Y8bc~r-xJ%kSWqUx{ywVm(TTSb%6F9`A+TdWaiFAWSaM-BQMjgu7PSU041#0v@ zTd`j;{4<5L;k07i+KTOH!Bef^9xd3@f^WBid$r(Q>}hD<{i%g^pBC(ESANjCazP8O zYrzYx;Gz~BXlXxcr9Gep3+>9Qtt$^|!TVb9Ml1NT7W|_YywwW6q6LTQOrn1Q`Ta)v literal 0 HcmV?d00001 diff --git a/target/classes/net/krakatoa/proxy/listener/PlayerDisconnectListener.class b/target/classes/net/krakatoa/proxy/listener/PlayerDisconnectListener.class new file mode 100644 index 0000000000000000000000000000000000000000..f822cc11bb0285715390e815215e3636bd5c764b GIT binary patch literal 882 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 F{vXL+l6L?A literal 0 HcmV?d00001 diff --git a/target/classes/net/krakatoa/proxy/mongo/MongoManager.class b/target/classes/net/krakatoa/proxy/mongo/MongoManager.class new file mode 100644 index 0000000000000000000000000000000000000000..bee298d765c5c3ea79ad624cb29d9c9c67b6c104 GIT binary patch literal 2446 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 literal 0 HcmV?d00001 diff --git a/target/classes/net/krakatoa/proxy/socket/SocketClient.class b/target/classes/net/krakatoa/proxy/socket/SocketClient.class new file mode 100644 index 0000000000000000000000000000000000000000..13c9bf56b9582065135e73f136f8e83b6b82c6b1 GIT binary patch literal 7643 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 literal 0 HcmV?d00001 diff --git a/target/classes/net/krakatoa/proxy/util/Formatter.class b/target/classes/net/krakatoa/proxy/util/Formatter.class new file mode 100644 index 0000000000000000000000000000000000000000..6a02038b7ab001487aa3d60cdf000b97d9ed6dac GIT binary patch literal 1003 zcmaiy+iuf95QhJ44o+M*bwUYHPEA`%4oyu7MMwoC4yu$Wl#4czdbvrL)U9h*j*Z}& z7lNBaq7o0lLm_6@ApsIZq>R1eneU(dcfbGm`VGJi9_yGxOhep20!aq*l)vYe!`+_s zwsR`F0Ymbs?b^X}hFG!GP9ep>swwCU&|zRfL&m@&%s+Y$0^fFf47x8a9NrZ#9Eaga zu{ohf6}!`!(sW8gj$ujlp7Y?udTICSZXkNXmlG@*xQaYOx*vA>Bi($lUY`Ndk;Qen z(;E!=8Pn8DZ4EaWGD<59Y{zP~>aS(nZ3B03msA|j?X|fR3S~$`$1(~Mxyq0zHX4$! z&QNegV4eB=j0YaKE`0C9M@#YcJfHRu2%jPT$~z{?V$*iTet6yy{vq!;l*u){E_d48 zx8-`2j0Y!npJA=}U-B;b{!YoXLi?CuW5!Nrm_q}Fsy;V;0t`lE?V%Sj*Z<8N+eULR znpp3QkBeN7*nb@(RnAYUwyEd93;nLxv!xxGv1eQITu{IoU0V5zflNn|;yqef^rTyf zM0p7IgS}~MSp(vZ55llkUm7JDK4>13k7QX}13XqSAMgS_u zCaQ#B*i!lu^@+sd^sHSXdsK;;<^WerbBJqiRKhgPm0y|tODrF44sfeV{~=Z;q8XY8 mSfHDiq3xPVyc}W2;x#-_;#sU>8xLtTSy`huY0M+Fft{b!|J-u` literal 0 HcmV?d00001 diff --git a/target/classes/plugin.yml b/target/classes/plugin.yml new file mode 100644 index 0000000..6de8bf6 --- /dev/null +++ b/target/classes/plugin.yml @@ -0,0 +1,6 @@ +name: KrakatoaProxySystem +author: AlexanderRoese +version: 1.0 +main: net.krakatoa.proxy.ProxySystem +commands: + code: \ No newline at end of file diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..2349549 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Oct 20 21:02:03 CEST 2021 +groupId=net.krakatoa.proxy +artifactId=KrakatoaProxySystem +version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..4eecb6d --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,10 @@ +net/krakatoa/proxy/command/CodeCommand.class +net/krakatoa/proxy/mongo/MongoManager.class +net/krakatoa/proxy/socket/SocketClient.class +net/krakatoa/proxy/listener/PostLoginListener.class +net/krakatoa/proxy/ProxySystem.class +net/krakatoa/proxy/protocol/KraProtocol.class +net/krakatoa/proxy/util/Formatter.class +net/krakatoa/proxy/config/ConfigHandler.class +net/krakatoa/proxy/listener/PlayerDisconnectListener.class +net/krakatoa/proxy/protocol/KraProtocolMessage.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..4e204b6 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,10 @@ +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/config/ConfigHandler.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/protocol/KraProtocolMessage.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/command/CodeCommand.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/mongo/MongoManager.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/listener/PlayerDisconnectListener.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/listener/PostLoginListener.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/util/Formatter.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/ProxySystem.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/protocol/KraProtocol.java +/home/alex/IdeaProjects/KrakatoaProxySystem/src/main/java/net/krakatoa/proxy/socket/SocketClient.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29