From 40308869c06230d2378e8936615c0aaf0525bfdf Mon Sep 17 00:00:00 2001 From: Dawson Hessler Date: Tue, 23 May 2023 08:09:41 -0400 Subject: [PATCH] 1.8.4 Added cache for logins for faster response --- Assembly/dependency-reduced-pom.xml | 14 ++++++- Assembly/pom.xml | 14 ++++++- Bukkit/dependency-reduced-pom.xml | 38 ++++++++++--------- Bukkit/pom.xml | 33 ++++++++++------ .../antivpn/bukkit/BukkitListener.java | 22 +++++++++++ Bungee/dependency-reduced-pom.xml | 16 +++++++- Bungee/pom.xml | 12 +++++- .../antivpn/bungee/BungeeListener.java | 27 +++++++++++++ Common/pom.xml | 11 +++++- Sponge/pom.xml | 2 +- Velocity/pom.xml | 12 +++++- .../antivpn/velocity/VelocityListener.java | 22 +++++++++++ pom.xml | 2 +- 13 files changed, 184 insertions(+), 41 deletions(-) diff --git a/Assembly/dependency-reduced-pom.xml b/Assembly/dependency-reduced-pom.xml index 74bd73e..3ab4d03 100644 --- a/Assembly/dependency-reduced-pom.xml +++ b/Assembly/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 Assembly @@ -18,6 +18,18 @@ shade + + + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + com.google + dev.brighten.antivpn.shaded.com.google + + + diff --git a/Assembly/pom.xml b/Assembly/pom.xml index 3aa8cf0..06393c9 100644 --- a/Assembly/pom.xml +++ b/Assembly/pom.xml @@ -5,7 +5,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 @@ -28,6 +28,18 @@ shade + + + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + com.google + dev.brighten.antivpn.shaded.com.google + + + diff --git a/Bukkit/dependency-reduced-pom.xml b/Bukkit/dependency-reduced-pom.xml index 6eba22e..15afef9 100644 --- a/Bukkit/dependency-reduced-pom.xml +++ b/Bukkit/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 Bukkit @@ -26,23 +26,32 @@ maven-shade-plugin - 3.1.0 + 3.2.4 package shade + + true + + + org.bstats + dev.brighten.antivpn.bukkit.org.bstats + + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + com.google + dev.brighten.antivpn.shaded.com.google + + + - - - - org.bstats - dev.brighten.antivpn.bukkit.org.bstats - - - @@ -56,14 +65,8 @@ dev.brighten.antivpn Common - 1.8.3.1 + 1.8.4 provided - - - snakeyaml - org.yaml - - cc.funkemunky.utils @@ -77,4 +80,3 @@ 8 - diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index dd2e7e8..ddfe573 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -5,7 +5,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 @@ -26,22 +26,31 @@ org.apache.maven.plugins maven-shade-plugin - 3.1.0 - - - - org.bstats - - dev.brighten.antivpn.bukkit.org.bstats - - - + 3.2.4 package shade + + true + + + org.bstats + + dev.brighten.antivpn.bukkit.org.bstats + + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + com.google + dev.brighten.antivpn.shaded.com.google + + + @@ -69,7 +78,7 @@ dev.brighten.antivpn Common - 1.8.3.1 + 1.8.4 provided diff --git a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java index 2c4f997..ace877e 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java +++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java @@ -1,9 +1,12 @@ package dev.brighten.antivpn.bukkit; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import dev.brighten.antivpn.AntiVPN; import dev.brighten.antivpn.api.APIPlayer; import dev.brighten.antivpn.api.VPNExecutor; import dev.brighten.antivpn.message.VpnString; +import dev.brighten.antivpn.web.objects.VPNResponse; import net.md_5.bungee.api.ChatColor; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -16,11 +19,18 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; +import java.util.UUID; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; public class BukkitListener extends VPNExecutor implements Listener { private BukkitTask cacheResetTask; + private final Cache responseCache = CacheBuilder.newBuilder() + .expireAfterWrite(5, TimeUnit.MINUTES) + .maximumSize(10000) + .build(); + @Override public void registerListeners() { BukkitPlugin.pluginInstance.getServer().getPluginManager() @@ -75,6 +85,18 @@ public class BukkitListener extends VPNExecutor implements Listener { || AntiVPN.getInstance().getVpnConfig().getPrefixWhitelists().stream() .anyMatch(prefix -> event.getPlayer().getName().startsWith(prefix))) return; + + if(responseCache.asMap().containsKey(event.getPlayer().getUniqueId())) { + VPNResponse cached = responseCache.getIfPresent(event.getPlayer().getUniqueId()); + + if (cached != null && cached.isProxy()) { + event.setResult(PlayerLoginEvent.Result.KICK_BANNED); + event.setKickMessage(org.bukkit.ChatColor.translateAlternateColorCodes('&', + AntiVPN.getInstance().getVpnConfig().getKickString())); + return; + } + } + final Player player = event.getPlayer(); checkIp(event.getAddress().getHostAddress(), AntiVPN.getInstance().getVpnConfig().cachedResults(), result -> { diff --git a/Bungee/dependency-reduced-pom.xml b/Bungee/dependency-reduced-pom.xml index b0ee7b9..3c8512d 100644 --- a/Bungee/dependency-reduced-pom.xml +++ b/Bungee/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 Bungee @@ -41,6 +41,14 @@ org.bstats dev.brighten.antivpn.bungee.org.bstats + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + com.google + dev.brighten.antivpn.shaded.com.google + @@ -50,13 +58,17 @@ dev.brighten.antivpn Common - 1.8.3.1 + 1.8.4 provided snakeyaml org.yaml + + guava + com.google.guava + diff --git a/Bungee/pom.xml b/Bungee/pom.xml index 9534a17..2edad4b 100644 --- a/Bungee/pom.xml +++ b/Bungee/pom.xml @@ -5,7 +5,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 @@ -34,6 +34,14 @@ dev.brighten.antivpn.bungee.org.bstats + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + com.google + dev.brighten.antivpn.shaded.com.google + @@ -63,7 +71,7 @@ dev.brighten.antivpn Common - 1.8.3.1 + 1.8.4 provided diff --git a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java index 4f05cc9..99520bf 100644 --- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java +++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java @@ -1,17 +1,22 @@ package dev.brighten.antivpn.bungee; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; import dev.brighten.antivpn.AntiVPN; import dev.brighten.antivpn.api.APIPlayer; import dev.brighten.antivpn.api.VPNExecutor; +import dev.brighten.antivpn.web.objects.VPNResponse; import net.md_5.bungee.BungeeCord; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.event.PlayerDisconnectEvent; import net.md_5.bungee.api.event.PostLoginEvent; +import net.md_5.bungee.api.event.PreLoginEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.scheduler.ScheduledTask; import net.md_5.bungee.event.EventHandler; +import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.logging.Level; @@ -19,6 +24,11 @@ public class BungeeListener extends VPNExecutor implements Listener { private ScheduledTask cacheResetTask; + private final Cache responseCache = CacheBuilder.newBuilder() + .expireAfterWrite(5, TimeUnit.MINUTES) + .maximumSize(10000) + .build(); + @Override public void registerListeners() { BungeePlugin.pluginInstance.getProxy().getPluginManager() @@ -46,6 +56,21 @@ public class BungeeListener extends VPNExecutor implements Listener { BungeeCord.getInstance().getLogger().log(Level.INFO, String.format(log, objects)); } + @EventHandler + public void onListener(final PreLoginEvent event) { + if(!responseCache.asMap().containsKey(event.getConnection().getUniqueId())) return; + + VPNResponse cached = responseCache.getIfPresent(event.getConnection().getUniqueId()); + + if(cached != null && cached.isProxy()) { + event.setCancelled(true); + event.setCancelReason(TextComponent.fromLegacyText(ChatColor + .translateAlternateColorCodes('&', + AntiVPN.getInstance().getVpnConfig().getKickString()))); + System.out.println("Cancelled because of cache"); + } + } + @EventHandler public void onListener(final PostLoginEvent event) { if(event.getPlayer().hasPermission("antivpn.bypass") //Has bypass permission @@ -70,6 +95,8 @@ public class BungeeListener extends VPNExecutor implements Listener { return; } + responseCache.put(event.getPlayer().getUniqueId(), result); + if(AntiVPN.getInstance().getVpnConfig().countryList().size() > 0 // This bit of code will decide whether or not to kick the player // If it contains the code and it is set to whitelist, it will not kick as they are equal diff --git a/Common/pom.xml b/Common/pom.xml index c147c0f..64ef932 100644 --- a/Common/pom.xml +++ b/Common/pom.xml @@ -5,7 +5,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 @@ -45,6 +45,10 @@ org.yaml.snakeyaml dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + com.google + dev.brighten.antivpn.shaded.com.google + @@ -86,6 +90,11 @@ 1.30 compile + + com.google.guava + guava + 31.1-jre + org.mongodb mongo-java-driver diff --git a/Sponge/pom.xml b/Sponge/pom.xml index d331c9a..36e6545 100644 --- a/Sponge/pom.xml +++ b/Sponge/pom.xml @@ -5,7 +5,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 diff --git a/Velocity/pom.xml b/Velocity/pom.xml index 64ea3c0..1c73c52 100644 --- a/Velocity/pom.xml +++ b/Velocity/pom.xml @@ -5,7 +5,7 @@ AntiVPN dev.brighten.antivpn - 1.8.3.1 + 1.8.4 4.0.0 @@ -33,7 +33,7 @@ dev.brighten.antivpn Common - 1.8.3.1 + 1.8.4 provided @@ -67,6 +67,14 @@ dev.brighten.antivpn.velocity.org.bstats + + org.yaml.snakeyaml + dev.brighten.antivpn.shaded.org.yaml.snakeyaml + + + com.google + dev.brighten.antivpn.shaded.com.google + diff --git a/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityListener.java b/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityListener.java index eb76e25..632f75e 100644 --- a/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityListener.java +++ b/Velocity/src/main/java/dev/brighten/antivpn/velocity/VelocityListener.java @@ -1,5 +1,8 @@ package dev.brighten.antivpn.velocity; +import com.google.common.cache.Cache; +import com.google.common.cache.CacheBuilder; +import com.velocitypowered.api.event.ResultedEvent; import com.velocitypowered.api.event.connection.DisconnectEvent; import com.velocitypowered.api.event.connection.LoginEvent; import com.velocitypowered.api.scheduler.ScheduledTask; @@ -7,14 +10,21 @@ import dev.brighten.antivpn.AntiVPN; import dev.brighten.antivpn.api.APIPlayer; import dev.brighten.antivpn.api.VPNExecutor; import dev.brighten.antivpn.velocity.util.StringUtils; +import dev.brighten.antivpn.web.objects.VPNResponse; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import java.util.UUID; import java.util.concurrent.TimeUnit; import java.util.logging.Level; public class VelocityListener extends VPNExecutor { private ScheduledTask cacheResetTask; + private final Cache responseCache = CacheBuilder.newBuilder() + .expireAfterWrite(5, TimeUnit.MINUTES) + .maximumSize(10000) + .build(); + @Override public void registerListeners() { @@ -36,6 +46,18 @@ public class VelocityListener extends VPNExecutor { || AntiVPN.getInstance().getVpnConfig().getPrefixWhitelists().stream() .anyMatch(prefix -> event.getPlayer().getUsername().startsWith(prefix))) return; + if(responseCache.asMap().containsKey(event.getPlayer().getUniqueId())) { + VPNResponse cached = responseCache.getIfPresent(event.getPlayer().getUniqueId()); + + if (cached != null && cached.isProxy()) { + event.setResult(ResultedEvent.ComponentResult.denied(LegacyComponentSerializer.builder() + .character('&') + .build().deserialize(AntiVPN.getInstance().getVpnConfig() + .getKickString()))); + return; + } + } + checkIp(event.getPlayer().getRemoteAddress().getAddress().getHostAddress(), AntiVPN.getInstance().getVpnConfig().cachedResults(), result -> { if (result.isSuccess()) { diff --git a/pom.xml b/pom.xml index f72b7a3..e1343a6 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ dev.brighten.antivpn AntiVPN pom - 1.8.3.1 + 1.8.4 Common