diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java index a7f35be..03e010d 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java +++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java @@ -14,7 +14,7 @@ public class BukkitConfig implements VPNConfig { "license", BukkitPlugin.pluginInstance), kickStringDefault = new ConfigDefault<>("Proxies are not allowed on our server", "kickMessage", BukkitPlugin.pluginInstance), - defaultDatabaseType = new ConfigDefault<>("MySQL", + defaultDatabaseType = new ConfigDefault<>("H2", "database.type", BukkitPlugin.pluginInstance), defaultDatabaseName = new ConfigDefault<>("kaurivpn", "database.database", BukkitPlugin.pluginInstance), diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java index 89f43b5..2d3f0a5 100644 --- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java +++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java @@ -12,7 +12,7 @@ public class BungeeConfig implements VPNConfig { "license", BungeePlugin.pluginInstance), kickStringDefault = new ConfigDefault<>("Proxies are not allowed on our server", "kickMessage", BungeePlugin.pluginInstance), - defaultDatabaseType = new ConfigDefault<>("MySQL", + defaultDatabaseType = new ConfigDefault<>("H2", "database.type", BungeePlugin.pluginInstance), defaultDatabaseName = new ConfigDefault<>("kaurivpn", "database.database", BungeePlugin.pluginInstance), diff --git a/Common/pom.xml b/Common/pom.xml index c1783a1..c543a95 100644 --- a/Common/pom.xml +++ b/Common/pom.xml @@ -61,7 +61,7 @@ com.h2database h2 - 1.4.200 + 2.1.210 compile diff --git a/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java b/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java index 53a0768..9a9aef4 100644 --- a/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java +++ b/Common/src/main/java/dev/brighten/antivpn/AntiVPN.java @@ -53,6 +53,7 @@ public class AntiVPN { switch(INSTANCE.config.getDatabaseType().toLowerCase()) { case "mysql": + case "h2": case "sql":{ AntiVPN.getInstance().getExecutor().log("Using databaseType MySQL..."); INSTANCE.database = new MySqlVPN(); diff --git a/Common/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java b/Common/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java index efe07c1..304b9e2 100644 --- a/Common/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java +++ b/Common/src/main/java/dev/brighten/antivpn/command/impl/AllowlistCommand.java @@ -65,13 +65,16 @@ public class AllowlistCommand extends Command { if(MiscUtils.isIpv4(args[1])) { if(!databaseEnabled) { switch(args[0].toLowerCase()) { - case "add": { + case "add": + case "insert": { AntiVPN.getInstance().getExecutor().getWhitelistedIps().add(args[1]); + AntiVPN.getInstance().getDatabase().setWhitelisted(args[1], true); return String.format("&aAdded &6%s &ato the exemption allowlist.", args[1]); } case "remove": case "delete": { AntiVPN.getInstance().getExecutor().getWhitelistedIps().remove(args[1]); + AntiVPN.getInstance().getDatabase().setWhitelisted(args[1], false); return String.format("&cRemoved &6%s &cfrom the exemption allowlist.", args[1]); } default: { @@ -80,7 +83,8 @@ public class AllowlistCommand extends Command { } } else { switch(args[0].toLowerCase()) { - case "add": { + case "add": + case "insert": { AntiVPN.getInstance().getDatabase().setWhitelisted(args[1], true); return String.format("&aAdded &6%s &a to the exemption allowlist.", args[1]); } diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java b/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java index af93dc8..e33fcfa 100644 --- a/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java +++ b/Common/src/main/java/dev/brighten/antivpn/database/sql/MySqlVPN.java @@ -237,7 +237,9 @@ public class MySqlVPN implements VPNDatabase { if (!AntiVPN.getInstance().getConfig().isDatabaseEnabled()) return; AntiVPN.getInstance().getExecutor().log("Initializing MySQL..."); - MySQL.init(); + if(AntiVPN.getInstance().getConfig().getDatabaseType().contains("sql")) { + MySQL.init(); + } else MySQL.initH2(); AntiVPN.getInstance().getExecutor().log("Creating tables..."); diff --git a/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java b/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java index b3dc612..bab0bc1 100644 --- a/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java +++ b/Common/src/main/java/dev/brighten/antivpn/database/sql/utils/MySQL.java @@ -1,10 +1,13 @@ package dev.brighten.antivpn.database.sql.utils; +import org.h2.jdbc.JdbcConnection; import dev.brighten.antivpn.AntiVPN; +import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; +import java.util.Properties; public class MySQL { private static Connection conn; @@ -35,12 +38,13 @@ public class MySQL { } } - /*public static void initH2() { + public static void initH2() { File dataFolder = new File(AntiVPN.getInstance().getPluginFolder(), "databases" + File.separator + "database"); try { Class.forName("org.h2.Driver"); - conn = new NonClosableConnection(new JdbcConnection("jdbc:h2:file:" + - dataFolder.getAbsolutePath(), new Properties())); + conn = new NonClosableConnection(DriverManager.getConnection ("jdbc:h2:file:" + + dataFolder.getAbsolutePath(), + AntiVPN.getInstance().getConfig().getUsername(),AntiVPN.getInstance().getConfig().getPassword())); conn.setAutoCommit(true); Query.use(conn); AntiVPN.getInstance().getExecutor().log("Connection to SQlLite has been established."); @@ -50,7 +54,7 @@ public class MySQL { } catch (ClassNotFoundException ex) { AntiVPN.getInstance().getExecutor().log("No H2 library found!"); } - }*/ + } public static void use() { try { diff --git a/Common/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java b/Common/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java index 6941b88..7e6bc9a 100644 --- a/Common/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java +++ b/Common/src/main/java/dev/brighten/antivpn/utils/MiscUtils.java @@ -11,9 +11,12 @@ import java.net.URL; import java.net.URLClassLoader; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; +import java.util.regex.Pattern; public class MiscUtils { + private static final Pattern ipv4 = Pattern.compile("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}"); + public static void close(Closeable... closeables) { try { for (Closeable closeable : closeables) if (closeable != null) closeable.close(); @@ -32,13 +35,6 @@ public class MiscUtils { public static boolean isIpv4(String ip) { - - try { - InetAddress address = InetAddress.getByName(ip); - - return address instanceof Inet4Address; - } catch(Exception e) { - return false; - } + return ipv4.matcher(ip).matches(); } } diff --git a/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityConfig.java b/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityConfig.java index 218d306..94fe0ea 100644 --- a/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityConfig.java +++ b/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityConfig.java @@ -12,7 +12,7 @@ public class VelocityConfig implements VPNConfig { "license", VelocityPlugin.INSTANCE), kickStringDefault = new ConfigDefault<>("Proxies are not allowed on our server", "kickMessage", VelocityPlugin.INSTANCE), - defaultDatabaseType = new ConfigDefault<>("MySQL", + defaultDatabaseType = new ConfigDefault<>("H2", "database.type", VelocityPlugin.INSTANCE), defaultDatabaseName = new ConfigDefault<>("kaurivpn", "database.database", VelocityPlugin.INSTANCE),