diff --git a/Bukkit/Loader/pom.xml b/Bukkit/Loader/pom.xml new file mode 100644 index 0000000..5f80b67 --- /dev/null +++ b/Bukkit/Loader/pom.xml @@ -0,0 +1,91 @@ + + + 4.0.0 + + dev.brighten.antivpn + Bukkit + 1.9.4 + + dev.brighten.antivpn.bukkit + Loader + + + 17 + 17 + UTF-8 + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 17 + 17 + -XDignore.symbol.file + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + true + + + antivpn-bukkit.jarinjar + ${project.parent.basedir}/Plugin/target/Plugin-${project.version}.jar + + + + + + + + + + src/main/resources + true + + + + + + + org.spigotmc + spigot-api + 1.20.2-R0.1-SNAPSHOT + provided + + + dev.brighten.antivpn + Plugin + ${project.version} + provided + + + dev.brighten.antivpn + loader-utils + 1.9.4 + compile + + + + \ No newline at end of file diff --git a/Bukkit/Loader/src/main/java/dev/brighten/antivpn/bukkit/loader/BukkitLoaderPlugin.java b/Bukkit/Loader/src/main/java/dev/brighten/antivpn/bukkit/loader/BukkitLoaderPlugin.java new file mode 100644 index 0000000..d953c38 --- /dev/null +++ b/Bukkit/Loader/src/main/java/dev/brighten/antivpn/bukkit/loader/BukkitLoaderPlugin.java @@ -0,0 +1,35 @@ +package dev.brighten.antivpn.bukkit.loader; + +import dev.brighten.antivpn.loader.JarInJarClassLoader; +import dev.brighten.antivpn.loader.LoaderBootstrap; +import org.bukkit.plugin.java.JavaPlugin; + +public class BukkitLoaderPlugin extends JavaPlugin { + + private static final String JAR_NAME = "antivpn-bukkit.jarinjar"; + private static final String BOOTSTRAP_CLASS = "me.lucko.luckperms.bukkit.LPBukkitBootstrap"; + + private final LoaderBootstrap plugin; + + public BukkitLoaderPlugin() { + JarInJarClassLoader loader = new JarInJarClassLoader(getClass().getClassLoader(), JAR_NAME); + this.plugin = loader.instantiatePlugin(BOOTSTRAP_CLASS, JavaPlugin.class, this); + } + + @Override + public void onLoad() { + this.plugin.onLoad(getDataFolder()); + } + + @Override + public void onEnable() { + this.plugin.onEnable(); + } + + @Override + public void onDisable() { + this.plugin.onDisable(); + } + + +} diff --git a/Bukkit/src/main/resources/plugin.yml b/Bukkit/Loader/src/main/resources/plugin.yml similarity index 100% rename from Bukkit/src/main/resources/plugin.yml rename to Bukkit/Loader/src/main/resources/plugin.yml diff --git a/Bukkit/Plugin/pom.xml b/Bukkit/Plugin/pom.xml new file mode 100644 index 0000000..cae0a10 --- /dev/null +++ b/Bukkit/Plugin/pom.xml @@ -0,0 +1,102 @@ + + + 4.0.0 + + dev.brighten.antivpn + Bukkit + 1.9.4 + + + Plugin + + + 17 + 17 + UTF-8 + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/repositories/snapshots/ + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 17 + 17 + -XDignore.symbol.file + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + true + + + org.bstats + + dev.brighten.antivpn.bukkit.org.bstats + + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + + + + + + + + src/main/resources + true + + + + + + + org.spigotmc + spigot-api + 1.20.2-R0.1-SNAPSHOT + provided + + + dev.brighten.antivpn + Source + 1.9.4 + compile + + + org.bstats + bstats-bukkit + 2.2.1 + compile + + + dev.brighten.antivpn + loader-utils + 1.9.4 + compile + + + + \ No newline at end of file diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java similarity index 100% rename from Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java rename to Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitCommandExecutor.java diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java similarity index 96% rename from Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java rename to Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java index 9c51ef6..d509b18 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java +++ b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java @@ -25,8 +25,8 @@ public class BukkitListener extends VPNExecutor implements Listener { @Override public void registerListeners() { - BukkitPlugin.pluginInstance.getServer().getPluginManager() - .registerEvents(this, BukkitPlugin.pluginInstance); + Bukkit.getPluginManager() + .registerEvents(this, BukkitPlugin.pluginInstance.getPlugin()); } @Override @@ -53,7 +53,7 @@ public class BukkitListener extends VPNExecutor implements Listener { @Override public void disablePlugin() { HandlerList.unregisterAll(this); - BukkitPlugin.pluginInstance.getServer().getPluginManager().disablePlugin(BukkitPlugin.pluginInstance); + Bukkit.getPluginManager().disablePlugin(BukkitPlugin.pluginInstance.getPlugin()); } @EventHandler(priority = EventPriority.HIGH) diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayer.java b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayer.java similarity index 94% rename from Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayer.java rename to Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayer.java index 660094b..5f8e6ac 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayer.java +++ b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayer.java @@ -27,7 +27,7 @@ public class BukkitPlayer extends APIPlayer { public void run() { player.kickPlayer(ChatColor.translateAlternateColorCodes('&', reason)); } - }.runTask(BukkitPlugin.pluginInstance); + }.runTask(BukkitPlugin.pluginInstance.getPlugin()); } else player.kickPlayer(ChatColor.translateAlternateColorCodes('&', reason)); } diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java similarity index 100% rename from Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java rename to Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlayerExecutor.java diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java similarity index 85% rename from Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java rename to Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java index fcd48a0..1153063 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java +++ b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/BukkitPlugin.java @@ -7,30 +7,42 @@ import dev.brighten.antivpn.database.VPNDatabase; import dev.brighten.antivpn.database.local.H2VPN; import dev.brighten.antivpn.database.mongo.MongoVPN; import dev.brighten.antivpn.database.sql.MySqlVPN; +import dev.brighten.antivpn.loader.LoaderBootstrap; import lombok.Getter; import org.bstats.bukkit.Metrics; import org.bstats.charts.SimplePie; import org.bukkit.Bukkit; import org.bukkit.command.SimpleCommandMap; import org.bukkit.event.HandlerList; +import org.bukkit.plugin.Plugin; import org.bukkit.plugin.SimplePluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitRunnable; +import java.io.File; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import java.util.Map; -public class BukkitPlugin extends JavaPlugin { +public class BukkitPlugin implements LoaderBootstrap { public static BukkitPlugin pluginInstance; private SimpleCommandMap commandMap; + @Getter + private File dataFolder; private final List registeredCommands = new ArrayList<>(); + @Getter + private Plugin plugin; @Getter private PlayerCommandRunner playerCommandRunner; + @Override + public void onLoad(File dataFolder) { + this.dataFolder = dataFolder; + } + public void onEnable() { pluginInstance = this; @@ -40,21 +52,23 @@ public class BukkitPlugin extends JavaPlugin { playerCommandRunner = new PlayerCommandRunner(); playerCommandRunner.start(); + plugin = Bukkit.getPluginManager().getPlugin("AntiVPN"); + // Loading our bStats metrics to be pushed to https://bstats.org if(AntiVPN.getInstance().getVpnConfig().metrics()) { Bukkit.getLogger().info("Starting bStats metrics..."); - Metrics metrics = new Metrics(this, 12615); + Metrics metrics = new Metrics((JavaPlugin) plugin, 12615); metrics.addCustomChart(new SimplePie("database_used", this::getDatabaseType)); new BukkitRunnable() { public void run() { AntiVPN.getInstance().checked = AntiVPN.getInstance().detections = 0; } - }.runTaskTimerAsynchronously(this, 12000, 12000); + }.runTaskTimerAsynchronously(plugin, 12000, 12000); } Bukkit.getLogger().info("Setting up and registering commands..."); // We need access to the commandMap to register our commands without using the "proper" method - if (pluginInstance.getServer().getPluginManager() instanceof SimplePluginManager manager) { + if (Bukkit.getServer().getPluginManager() instanceof SimplePluginManager manager) { try { Field field = SimplePluginManager.class.getDeclaredField("commandMap"); field.setAccessible(true); @@ -73,7 +87,7 @@ public class BukkitPlugin extends JavaPlugin { registeredCommands.add(newCommand); // This tells Bukkit to register our command for use. - commandMap.register(pluginInstance.getName(), newCommand); + commandMap.register(plugin.getName(), newCommand); } //TODO Finish system before implementing on startup @@ -83,7 +97,7 @@ public class BukkitPlugin extends JavaPlugin { .get()); AntiVPN.getInstance().getMessageHandler().reloadStrings();*/ - reloadConfig(); + plugin.reloadConfig(); } @Override @@ -109,10 +123,10 @@ public class BukkitPlugin extends JavaPlugin { } Bukkit.getLogger().info("Unregistering listeners..."); - HandlerList.unregisterAll(this); + HandlerList.unregisterAll(plugin); Bukkit.getLogger().info("Cancelling any running tasks..."); - Bukkit.getScheduler().cancelTasks(this); + Bukkit.getScheduler().cancelTasks(plugin); } private String getDatabaseType() { diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/PlayerCommandRunner.java b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/PlayerCommandRunner.java similarity index 96% rename from Bukkit/src/main/java/dev/brighten/antivpn/bukkit/PlayerCommandRunner.java rename to Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/PlayerCommandRunner.java index 3a285a8..8ac64a7 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/PlayerCommandRunner.java +++ b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/PlayerCommandRunner.java @@ -35,7 +35,7 @@ public class PlayerCommandRunner { public void run() { action.getAction().run(); } - }.runTask(BukkitPlugin.pluginInstance); + }.runTask(BukkitPlugin.pluginInstance.getPlugin()); playerActions.poll(); } diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/command/BukkitCommand.java b/Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/command/BukkitCommand.java similarity index 100% rename from Bukkit/src/main/java/dev/brighten/antivpn/bukkit/command/BukkitCommand.java rename to Bukkit/Plugin/src/main/java/dev/brighten/antivpn/bukkit/command/BukkitCommand.java diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index 724a62d..e44a743 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -7,89 +7,19 @@ dev.brighten.antivpn 1.9.4 + pom + + Plugin + Loader + + 4.0.0 Bukkit - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - 17 - 17 - -XDignore.symbol.file - - - - org.apache.maven.plugins - maven-shade-plugin - 3.6.0 - - - package - - shade - - - true - - - org.bstats - - dev.brighten.antivpn.bukkit.org.bstats - - - org.yaml.snakeyaml - dev.brighten.antivpn.shaded.org.yaml.snakeyaml - - - - - - - - - - src/main/resources - true - - - - 17 17 - - - spigot-repo - https://hub.spigotmc.org/nexus/content/repositories/snapshots/ - - - - - - org.spigotmc - spigot-api - 1.20.2-R0.1-SNAPSHOT - provided - - - dev.brighten.antivpn - Common - 1.9.4 - provided - - - org.bstats - bstats-bukkit - 2.2.1 - compile - - - \ No newline at end of file diff --git a/Bungee/pom.xml b/Bungee/pom.xml index 561d9ac..deba83b 100644 --- a/Bungee/pom.xml +++ b/Bungee/pom.xml @@ -66,7 +66,7 @@ dev.brighten.antivpn - Common + Source 1.9.4 provided diff --git a/Common/Source/pom.xml b/Common/Source/pom.xml new file mode 100644 index 0000000..44fe127 --- /dev/null +++ b/Common/Source/pom.xml @@ -0,0 +1,178 @@ + + + 4.0.0 + + dev.brighten.antivpn + Common + 1.9.4 + + + Source + + + 17 + 17 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 17 + 17 + -XDignore.symbol.file + + + org.projectlombok + lombok + 1.18.30 + + + + + + org.apache.maven.plugins + maven-shade-plugin + 3.6.0 + + + package + + shade + + + true + + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + dev.brighten.antivpn.depends.Relocate + dev.brighten.antivpn.depends.MavenLibraries + + + + com.github.benmanes.caffeine + dev.brighten.antivpn.shaded.com.github.benmanes.caffeine + + + org.h2 + dev.brighten.antivpn.shaded.org.h2 + + + dev.brighten.antivpn.depends.Relocate + dev.brighten.antivpn.depends.MavenLibraries + + + + org.bson + dev.brighten.antivpn.shaded.org.bson + + + dev.brighten.antivpn.depends.Relocate + dev.brighten.antivpn.depends.MavenLibraries + + + + com.mongodb + dev.brighten.antivpn.shaded.com.mongodb + + + dev.brighten.antivpn.depends.Relocate + dev.brighten.antivpn.depends.MavenLibraries + + + + com.mysql.cj + dev.brighten.antivpn.shaded.com.mysql.cj + + + dev.brighten.antivpn.depends.Relocate + dev.brighten.antivpn.depends.MavenLibraries + + + + com.mysql.jdbc + dev.brighten.antivpn.shaded.com.mysql.jdbc + + + dev.brighten.antivpn.depends.Relocate + dev.brighten.antivpn.depends.MavenLibraries + + + + + + + + + + + src/main/resources + true + + + + + + + funkemunky-releases + https://nexus.funkemunky.cc/content/repositories/releases/ + + + + + + com.mysql + mysql-connector-j + 9.1.0 + jar + provided + + + com.h2database + h2 + 2.2.220 + provided + + + org.ow2.asm + asm + 9.8 + compile + + + org.ow2.asm + asm-commons + 9.8 + compile + + + org.yaml + snakeyaml + 2.2 + compile + + + com.github.ben-manes.caffeine + caffeine + 3.1.8 + provided + + + + org.mongodb + mongo-java-driver + 3.12.14 + provided + + + + \ No newline at end of file diff --git a/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java b/Common/Source/src/main/java/dev/brighten/antivpn/AntiVPN.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/AntiVPN.java rename to Common/Source/src/main/java/dev/brighten/antivpn/AntiVPN.java diff --git a/Common/src/main/java/dev/brighten/antivpn/api/APIPlayer.java b/Common/Source/src/main/java/dev/brighten/antivpn/api/APIPlayer.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/api/APIPlayer.java rename to Common/Source/src/main/java/dev/brighten/antivpn/api/APIPlayer.java diff --git a/Common/src/main/java/dev/brighten/antivpn/api/CheckResult.java b/Common/Source/src/main/java/dev/brighten/antivpn/api/CheckResult.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/api/CheckResult.java rename to Common/Source/src/main/java/dev/brighten/antivpn/api/CheckResult.java diff --git a/Common/src/main/java/dev/brighten/antivpn/api/OfflinePlayer.java b/Common/Source/src/main/java/dev/brighten/antivpn/api/OfflinePlayer.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/api/OfflinePlayer.java rename to Common/Source/src/main/java/dev/brighten/antivpn/api/OfflinePlayer.java diff --git a/Common/src/main/java/dev/brighten/antivpn/api/PlayerExecutor.java b/Common/Source/src/main/java/dev/brighten/antivpn/api/PlayerExecutor.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/api/PlayerExecutor.java rename to Common/Source/src/main/java/dev/brighten/antivpn/api/PlayerExecutor.java diff --git a/Common/src/main/java/dev/brighten/antivpn/api/ResultType.java b/Common/Source/src/main/java/dev/brighten/antivpn/api/ResultType.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/api/ResultType.java rename to Common/Source/src/main/java/dev/brighten/antivpn/api/ResultType.java diff --git a/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java b/Common/Source/src/main/java/dev/brighten/antivpn/api/VPNConfig.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java rename to Common/Source/src/main/java/dev/brighten/antivpn/api/VPNConfig.java diff --git a/Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java b/Common/Source/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java rename to Common/Source/src/main/java/dev/brighten/antivpn/api/VPNExecutor.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/Command.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/Command.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/Command.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/Command.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/CommandExecutor.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/AlertsCommand.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/impl/AlertsCommand.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/impl/AlertsCommand.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/impl/AlertsCommand.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/impl/AntiVPNCommand.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/ClearCacheCommand.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/impl/ClearCacheCommand.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/impl/ClearCacheCommand.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/impl/ClearCacheCommand.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/impl/LookupCommand.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/PlanCommand.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/impl/PlanCommand.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/impl/PlanCommand.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/impl/PlanCommand.java diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/ReloadCommand.java b/Common/Source/src/main/java/dev/brighten/antivpn/command/impl/ReloadCommand.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/command/impl/ReloadCommand.java rename to Common/Source/src/main/java/dev/brighten/antivpn/command/impl/ReloadCommand.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/VPNDatabase.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/local/H2VPN.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/mongo/MongoVPN.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/ExecutableStatement.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/ExecutableStatement.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/sql/utils/ExecutableStatement.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/ExecutableStatement.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/NonClosableConnection.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/NonClosableConnection.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/sql/utils/NonClosableConnection.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/NonClosableConnection.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/Query.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/Query.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/sql/utils/Query.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/Query.java diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/ResultSetIterator.java b/Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/ResultSetIterator.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/database/sql/utils/ResultSetIterator.java rename to Common/Source/src/main/java/dev/brighten/antivpn/database/sql/utils/ResultSetIterator.java diff --git a/Common/src/main/java/dev/brighten/antivpn/depends/LibraryLoader.java b/Common/Source/src/main/java/dev/brighten/antivpn/depends/LibraryLoader.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/depends/LibraryLoader.java rename to Common/Source/src/main/java/dev/brighten/antivpn/depends/LibraryLoader.java diff --git a/Common/src/main/java/dev/brighten/antivpn/depends/MavenLibraries.java b/Common/Source/src/main/java/dev/brighten/antivpn/depends/MavenLibraries.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/depends/MavenLibraries.java rename to Common/Source/src/main/java/dev/brighten/antivpn/depends/MavenLibraries.java diff --git a/Common/src/main/java/dev/brighten/antivpn/depends/MavenLibrary.java b/Common/Source/src/main/java/dev/brighten/antivpn/depends/MavenLibrary.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/depends/MavenLibrary.java rename to Common/Source/src/main/java/dev/brighten/antivpn/depends/MavenLibrary.java diff --git a/Common/src/main/java/dev/brighten/antivpn/depends/Relocate.java b/Common/Source/src/main/java/dev/brighten/antivpn/depends/Relocate.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/depends/Relocate.java rename to Common/Source/src/main/java/dev/brighten/antivpn/depends/Relocate.java diff --git a/Common/src/main/java/dev/brighten/antivpn/depends/Repository.java b/Common/Source/src/main/java/dev/brighten/antivpn/depends/Repository.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/depends/Repository.java rename to Common/Source/src/main/java/dev/brighten/antivpn/depends/Repository.java diff --git a/Common/src/main/java/dev/brighten/antivpn/depends/URLClassLoaderAccess.java b/Common/Source/src/main/java/dev/brighten/antivpn/depends/URLClassLoaderAccess.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/depends/URLClassLoaderAccess.java rename to Common/Source/src/main/java/dev/brighten/antivpn/depends/URLClassLoaderAccess.java diff --git a/Common/src/main/java/dev/brighten/antivpn/message/MessageHandler.java b/Common/Source/src/main/java/dev/brighten/antivpn/message/MessageHandler.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/message/MessageHandler.java rename to Common/Source/src/main/java/dev/brighten/antivpn/message/MessageHandler.java diff --git a/Common/src/main/java/dev/brighten/antivpn/message/VpnString.java b/Common/Source/src/main/java/dev/brighten/antivpn/message/VpnString.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/message/VpnString.java rename to Common/Source/src/main/java/dev/brighten/antivpn/message/VpnString.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/ConfigDefault.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/ConfigDefault.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/ConfigDefault.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/ConfigDefault.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/EvictingMap.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/EvictingMap.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/EvictingMap.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/EvictingMap.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/ExtraObjectsMethodsForWeb.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/ExtraObjectsMethodsForWeb.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/ExtraObjectsMethodsForWeb.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/ExtraObjectsMethodsForWeb.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/NonnullByDefault.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/NonnullByDefault.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/NonnullByDefault.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/NonnullByDefault.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/NullnessCasts.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/NullnessCasts.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/NullnessCasts.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/NullnessCasts.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/Preconditions.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/Preconditions.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/Preconditions.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/Preconditions.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/StringUtil.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/StringUtil.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/StringUtil.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/StringUtil.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/Supplier.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/Supplier.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/Supplier.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/Supplier.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/Suppliers.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/Suppliers.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/Suppliers.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/Suppliers.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/Tuple.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/Tuple.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/Tuple.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/Tuple.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/config/Configuration.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/config/Configuration.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/config/Configuration.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/config/Configuration.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/config/ConfigurationProvider.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/config/ConfigurationProvider.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/config/ConfigurationProvider.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/config/ConfigurationProvider.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/config/YamlConfiguration.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/config/YamlConfiguration.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/config/YamlConfiguration.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/config/YamlConfiguration.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/CDL.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/CDL.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/CDL.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/CDL.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/Cookie.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/Cookie.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/Cookie.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/Cookie.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/CookieList.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/CookieList.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/CookieList.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/CookieList.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/HTTP.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/HTTP.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/HTTP.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/HTTP.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/HTTPTokener.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/HTTPTokener.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/HTTPTokener.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/HTTPTokener.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONArray.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONArray.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONArray.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONArray.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONException.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONException.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONException.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONException.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONML.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONML.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONML.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONML.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONObject.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONObject.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONObject.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONObject.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONString.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONString.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONString.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONString.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONStringer.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONStringer.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONStringer.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONStringer.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONTokener.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONTokener.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONTokener.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONTokener.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JSONWriter.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONWriter.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JSONWriter.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JSONWriter.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/JsonReader.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JsonReader.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/JsonReader.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/JsonReader.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/XML.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/XML.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/XML.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/XML.java diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/json/XMLTokener.java b/Common/Source/src/main/java/dev/brighten/antivpn/utils/json/XMLTokener.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/utils/json/XMLTokener.java rename to Common/Source/src/main/java/dev/brighten/antivpn/utils/json/XMLTokener.java diff --git a/Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java b/Common/Source/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java rename to Common/Source/src/main/java/dev/brighten/antivpn/web/FunkemunkyAPI.java diff --git a/Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java b/Common/Source/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java rename to Common/Source/src/main/java/dev/brighten/antivpn/web/objects/QueryResponse.java diff --git a/Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java b/Common/Source/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java similarity index 100% rename from Common/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java rename to Common/Source/src/main/java/dev/brighten/antivpn/web/objects/VPNResponse.java diff --git a/Common/src/main/resources/config.yml b/Common/Source/src/main/resources/config.yml similarity index 100% rename from Common/src/main/resources/config.yml rename to Common/Source/src/main/resources/config.yml diff --git a/Common/loader-utils/pom.xml b/Common/loader-utils/pom.xml new file mode 100644 index 0000000..9763696 --- /dev/null +++ b/Common/loader-utils/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + dev.brighten.antivpn + Common + 1.9.4 + + + loader-utils + + + 17 + 17 + UTF-8 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.13.0 + + 17 + 17 + -XDignore.symbol.file + + + org.projectlombok + lombok + 1.18.30 + + + + + + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/JarInJarClassLoader.java b/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/JarInJarClassLoader.java new file mode 100644 index 0000000..6488c0e --- /dev/null +++ b/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/JarInJarClassLoader.java @@ -0,0 +1,155 @@ +/* + * This file is part of LuckPerms, licensed under the MIT License. + * + * Copyright (c) lucko (Luck) + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.brighten.antivpn.loader; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Constructor; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +/** + * Classloader that can load a jar from within another jar file. + * + *

The "loader" jar contains the loading code & public API classes, + * and is class-loaded by the platform.

+ * + *

The inner "plugin" jar contains the plugin itself, and is class-loaded + * by the loading code & this classloader.

+ */ +public class JarInJarClassLoader extends URLClassLoader { + static { + ClassLoader.registerAsParallelCapable(); + } + + /** + * Creates a new jar-in-jar class loader. + * + * @param loaderClassLoader the loader plugin's classloader (setup and created by the platform) + * @param jarResourcePath the path to the jar-in-jar resource within the loader jar + * @throws LoadingException if something unexpectedly bad happens + */ + public JarInJarClassLoader(ClassLoader loaderClassLoader, String jarResourcePath) throws LoadingException { + super(new URL[]{extractJar(loaderClassLoader, jarResourcePath)}, loaderClassLoader); + } + + public void addJarToClasspath(URL url) { + addURL(url); + } + + public void deleteJarResource() { + URL[] urls = getURLs(); + if (urls.length == 0) { + return; + } + + try { + Path path = Paths.get(urls[0].toURI()); + Files.deleteIfExists(path); + } catch (Exception e) { + // ignore + } + } + + /** + * Creates a new plugin instance. + * + * @param bootstrapClass the name of the bootstrap plugin class + * @param loaderPluginType the type of the loader plugin, the only parameter of the bootstrap + * plugin constructor + * @param loaderPlugin the loader plugin instance + * @param the type of the loader plugin + * @return the instantiated bootstrap plugin + */ + public LoaderBootstrap instantiatePlugin(String bootstrapClass, Class loaderPluginType, T loaderPlugin) throws LoadingException { + Class plugin; + try { + plugin = loadClass(bootstrapClass).asSubclass(LoaderBootstrap.class); + } catch (ReflectiveOperationException e) { + throw new LoadingException("Unable to load bootstrap class", e); + } + + Constructor constructor; + try { + constructor = plugin.getConstructor(loaderPluginType); + } catch (ReflectiveOperationException e) { + throw new LoadingException("Unable to get bootstrap constructor", e); + } + + try { + return constructor.newInstance(loaderPlugin); + } catch (ReflectiveOperationException e) { + throw new LoadingException("Unable to create bootstrap plugin instance", e); + } + } + + /** + * Extracts the "jar-in-jar" from the loader plugin into a temporary file, + * then returns a URL that can be used by the {@link JarInJarClassLoader}. + * + * @param loaderClassLoader the classloader for the "host" loader plugin + * @param jarResourcePath the inner jar resource path + * @return a URL to the extracted file + */ + private static URL extractJar(ClassLoader loaderClassLoader, String jarResourcePath) throws LoadingException { + // get the jar-in-jar resource + URL jarInJar = loaderClassLoader.getResource(jarResourcePath); + if (jarInJar == null) { + throw new LoadingException("Could not locate jar-in-jar"); + } + + // create a temporary file + // on posix systems by default this is only read/writable by the process owner + Path path; + try { + path = Files.createTempFile("luckperms-jarinjar", ".jar.tmp"); + } catch (IOException e) { + throw new LoadingException("Unable to create a temporary file", e); + } + + // mark that the file should be deleted on exit + path.toFile().deleteOnExit(); + + // copy the jar-in-jar to the temporary file path + try (InputStream in = jarInJar.openStream()) { + Files.copy(in, path, StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + throw new LoadingException("Unable to copy jar-in-jar to temporary path", e); + } + + try { + return path.toUri().toURL(); + } catch (MalformedURLException e) { + throw new LoadingException("Unable to get URL from path", e); + } + } + +} diff --git a/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/LoaderBootstrap.java b/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/LoaderBootstrap.java new file mode 100644 index 0000000..38cbb29 --- /dev/null +++ b/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/LoaderBootstrap.java @@ -0,0 +1,41 @@ +/* + * This file is part of LuckPerms, licensed under the MIT License. + * + * Copyright (c) lucko (Luck) + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.brighten.antivpn.loader; + +import java.io.File; + +/** + * Minimal bootstrap plugin, called by the loader plugin. + */ +public interface LoaderBootstrap { + + void onLoad(File dataFolder); + + default void onEnable() {} + + default void onDisable() {} + +} diff --git a/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/LoadingException.java b/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/LoadingException.java new file mode 100644 index 0000000..191ae03 --- /dev/null +++ b/Common/loader-utils/src/main/java/dev/brighten/antivpn/loader/LoadingException.java @@ -0,0 +1,41 @@ +/* + * This file is part of LuckPerms, licensed under the MIT License. + * + * Copyright (c) lucko (Luck) + * Copyright (c) contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package dev.brighten.antivpn.loader; + +/** + * Runtime exception used if there is a problem during loading + */ +public class LoadingException extends RuntimeException { + + public LoadingException(String message) { + super(message); + } + + public LoadingException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/Common/pom.xml b/Common/pom.xml index 7926c16..dff27de 100644 --- a/Common/pom.xml +++ b/Common/pom.xml @@ -7,6 +7,11 @@ dev.brighten.antivpn 1.9.4 + pom + + loader-utils + Source + 4.0.0 Common @@ -16,162 +21,4 @@ 17 - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.13.0 - - 17 - 17 - -XDignore.symbol.file - - - org.projectlombok - lombok - 1.18.30 - - - - - - org.apache.maven.plugins - maven-shade-plugin - 3.6.0 - - - package - - shade - - - true - - - org.yaml.snakeyaml - dev.brighten.antivpn.shaded.org.yaml.snakeyaml - - - dev.brighten.antivpn.depends.Relocate - dev.brighten.antivpn.depends.MavenLibraries - - - - com.github.benmanes.caffeine - dev.brighten.antivpn.shaded.com.github.benmanes.caffeine - - - org.h2 - dev.brighten.antivpn.shaded.org.h2 - - - dev.brighten.antivpn.depends.Relocate - dev.brighten.antivpn.depends.MavenLibraries - - - - org.bson - dev.brighten.antivpn.shaded.org.bson - - - dev.brighten.antivpn.depends.Relocate - dev.brighten.antivpn.depends.MavenLibraries - - - - com.mongodb - dev.brighten.antivpn.shaded.com.mongodb - - - dev.brighten.antivpn.depends.Relocate - dev.brighten.antivpn.depends.MavenLibraries - - - - com.mysql.cj - dev.brighten.antivpn.shaded.com.mysql.cj - - - dev.brighten.antivpn.depends.Relocate - dev.brighten.antivpn.depends.MavenLibraries - - - - com.mysql.jdbc - dev.brighten.antivpn.shaded.com.mysql.jdbc - - - dev.brighten.antivpn.depends.Relocate - dev.brighten.antivpn.depends.MavenLibraries - - - - - - - - - - - src/main/resources - true - - - - - - - funkemunky-releases - https://nexus.funkemunky.cc/content/repositories/releases/ - - - - - - com.mysql - mysql-connector-j - 9.1.0 - jar - provided - - - com.h2database - h2 - 2.2.220 - provided - - - org.ow2.asm - asm - 9.8 - compile - - - org.ow2.asm - asm-commons - 9.8 - compile - - - org.yaml - snakeyaml - 2.2 - compile - - - com.github.ben-manes.caffeine - caffeine - 3.1.8 - provided - - - - org.mongodb - mongo-java-driver - 3.12.14 - provided - - - \ No newline at end of file diff --git a/Sponge/pom.xml b/Sponge/pom.xml index 188a5f3..c9ce89b 100644 --- a/Sponge/pom.xml +++ b/Sponge/pom.xml @@ -31,7 +31,7 @@ dev.brighten.antivpn - Common + Source 1.9.4 compile @@ -63,8 +63,8 @@
- 21 - 21 + 17 + 17 @@ -74,8 +74,8 @@ maven-compiler-plugin 3.13.0 - 21 - 21 + 17 + 17 -XDignore.symbol.file diff --git a/Universal/pom.xml b/Universal/pom.xml index dfbec0e..260300c 100644 --- a/Universal/pom.xml +++ b/Universal/pom.xml @@ -25,8 +25,8 @@ compile - dev.brighten.antivpn - Bukkit + dev.brighten.antivpn.bukkit + Loader ${project.version} compile diff --git a/Velocity/pom.xml b/Velocity/pom.xml index 8d2db5a..a8c9a4c 100644 --- a/Velocity/pom.xml +++ b/Velocity/pom.xml @@ -16,23 +16,17 @@ 17 - - - velocity - https://nexus.velocitypowered.com/repository/maven-public/ - - - - com.velocitypowered + com.velocitypowered.local velocity-api 3.4.0-SNAPSHOT - provided + C:/Users/647519/IdeaProjects/AntiVPN/Velocity/velocity-proxy-3.0.1.jar + system dev.brighten.antivpn - Common + Source 1.9.4 provided