From 1c636c3b6f1fc68c89414cedc27f69aa3a6dbd08 Mon Sep 17 00:00:00 2001 From: Dawson Hessler Date: Fri, 18 Jun 2021 11:26:57 -0400 Subject: [PATCH] Implementing prefix exemptions --- .../dev/brighten/antivpn/bukkit/BukkitConfig.java | 12 ++++++++++++ .../dev/brighten/antivpn/bukkit/BukkitListener.java | 5 ++++- .../dev/brighten/antivpn/bungee/BungeeConfig.java | 12 ++++++++++++ .../dev/brighten/antivpn/bungee/BungeeListener.java | 6 +++++- .../java/dev/brighten/antivpn/api/VPNConfig.java | 4 ++++ 5 files changed, 37 insertions(+), 2 deletions(-) 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 44a5511..b342bb2 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java +++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitConfig.java @@ -3,6 +3,9 @@ package dev.brighten.antivpn.bukkit; import dev.brighten.antivpn.api.VPNConfig; import dev.brighten.antivpn.bukkit.util.ConfigDefault; +import java.util.ArrayList; +import java.util.List; + public class BukkitConfig implements VPNConfig { private final ConfigDefault licenseDefault = new ConfigDefault<>("", "license", BukkitPlugin.pluginInstance), kickStringDefault = @@ -10,8 +13,11 @@ public class BukkitConfig implements VPNConfig { "kickMessage", BukkitPlugin.pluginInstance); private final ConfigDefault cacheResultsDefault = new ConfigDefault<>(true, "cachedResults", BukkitPlugin.pluginInstance); + private final ConfigDefault> prefixWhitelistsDefault = new ConfigDefault<>(new ArrayList<>(), + "prefixWhitelists", BukkitPlugin.pluginInstance); private String license, kickMessage; + private List prefixWhitelists; private boolean cacheResults; @Override @@ -29,9 +35,15 @@ public class BukkitConfig implements VPNConfig { return kickMessage; } + @Override + public List getPrefixWhitelists() { + return prefixWhitelists; + } + public void update() { license = licenseDefault.get(); kickMessage = kickStringDefault.get(); cacheResults = cacheResultsDefault.get(); + prefixWhitelists = prefixWhitelistsDefault.get(); } } 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 4511d75..743a62e 100644 --- a/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java +++ b/Bukkit/src/main/java/dev/brighten/antivpn/bukkit/BukkitListener.java @@ -51,7 +51,10 @@ public class BukkitListener extends VPNExecutor implements Listener { Optional.ofNullable(Bukkit.getPlayer(event.getUniqueId())).ifPresent(player -> { new BukkitRunnable() { public void run() { - if(!player.hasPermission("antivpn.bypass")) + if(!player.hasPermission("antivpn.bypass") //Has bypass permission + //Or has a name that starts with a certain prefix. This is for Bedrock exempting. + || AntiVPN.getInstance().getConfig().getPrefixWhitelists().stream() + .anyMatch(prefix -> player.getName().startsWith(prefix))) player.kickPlayer(ChatColor.translateAlternateColorCodes('&', AntiVPN.getInstance().getConfig().getKickString())); System.out.println(player.getPlayer().getName() 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 3891454..adb00b6 100644 --- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java +++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeConfig.java @@ -3,6 +3,9 @@ package dev.brighten.antivpn.bungee; import dev.brighten.antivpn.api.VPNConfig; import dev.brighten.antivpn.bungee.util.ConfigDefault; +import java.util.ArrayList; +import java.util.List; + public class BungeeConfig implements VPNConfig { ; private final ConfigDefault licenseDefault = new ConfigDefault<>("", "license", BungeePlugin.pluginInstance), kickStringDefault = @@ -10,8 +13,11 @@ public class BungeeConfig implements VPNConfig { ; "kickMessage", BungeePlugin.pluginInstance); private final ConfigDefault cacheResultsDefault = new ConfigDefault<>(true, "cachedResults", BungeePlugin.pluginInstance); + private final ConfigDefault> prefixWhitelistsDefault = new ConfigDefault<>(new ArrayList<>(), + "prefixWhitelists", BungeePlugin.pluginInstance); private String license, kickMessage; + private List prefixWhitelists; private boolean cacheResults; @Override @@ -29,9 +35,15 @@ public class BungeeConfig implements VPNConfig { ; return kickMessage; } + @Override + public List getPrefixWhitelists() { + return prefixWhitelists; + } + public void update() { license = licenseDefault.get(); kickMessage = kickStringDefault.get(); cacheResults = cacheResultsDefault.get(); + prefixWhitelists = prefixWhitelistsDefault.get(); } } 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 ce051c1..3a8641f 100644 --- a/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java +++ b/Bungee/src/main/java/dev/brighten/antivpn/bungee/BungeeListener.java @@ -42,7 +42,11 @@ public class BungeeListener extends VPNExecutor implements Listener { @EventHandler public void onListener(final PostLoginEvent event) { - if(event.getPlayer().hasPermission("antivpn.bypass")) return; + if(event.getPlayer().hasPermission("antivpn.bypass") //Has bypass permission + //Or has a name that starts with a certain prefix. This is for Bedrock exempting. + || AntiVPN.getInstance().getConfig().getPrefixWhitelists().stream() + .anyMatch(prefix -> event.getPlayer().getName().startsWith(prefix))) return; + checkIp(event.getPlayer().getAddress().getAddress().getHostAddress(), AntiVPN.getInstance().getConfig().cachedResults(), result -> { if(result.isSuccess() && result.isProxy()) { diff --git a/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java b/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java index 2a550d9..c6c6932 100644 --- a/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java +++ b/Common/src/main/java/dev/brighten/antivpn/api/VPNConfig.java @@ -1,5 +1,7 @@ package dev.brighten.antivpn.api; +import java.util.List; + public interface VPNConfig { String getLicense(); @@ -8,6 +10,8 @@ public interface VPNConfig { String getKickString(); + List getPrefixWhitelists(); + void update(); }