Implementing prefix exemptions

This commit is contained in:
Dawson Hessler
2021-06-18 11:26:57 -04:00
parent 15a5d3ba4f
commit 1c636c3b6f
5 changed files with 37 additions and 2 deletions
@@ -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<String> licenseDefault = new ConfigDefault<>("",
"license", BukkitPlugin.pluginInstance), kickStringDefault =
@@ -10,8 +13,11 @@ public class BukkitConfig implements VPNConfig {
"kickMessage", BukkitPlugin.pluginInstance);
private final ConfigDefault<Boolean> cacheResultsDefault = new ConfigDefault<>(true,
"cachedResults", BukkitPlugin.pluginInstance);
private final ConfigDefault<List<String>> prefixWhitelistsDefault = new ConfigDefault<>(new ArrayList<>(),
"prefixWhitelists", BukkitPlugin.pluginInstance);
private String license, kickMessage;
private List<String> prefixWhitelists;
private boolean cacheResults;
@Override
@@ -29,9 +35,15 @@ public class BukkitConfig implements VPNConfig {
return kickMessage;
}
@Override
public List<String> getPrefixWhitelists() {
return prefixWhitelists;
}
public void update() {
license = licenseDefault.get();
kickMessage = kickStringDefault.get();
cacheResults = cacheResultsDefault.get();
prefixWhitelists = prefixWhitelistsDefault.get();
}
}
@@ -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()
@@ -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<String> licenseDefault = new ConfigDefault<>("",
"license", BungeePlugin.pluginInstance), kickStringDefault =
@@ -10,8 +13,11 @@ public class BungeeConfig implements VPNConfig { ;
"kickMessage", BungeePlugin.pluginInstance);
private final ConfigDefault<Boolean> cacheResultsDefault = new ConfigDefault<>(true,
"cachedResults", BungeePlugin.pluginInstance);
private final ConfigDefault<List<String>> prefixWhitelistsDefault = new ConfigDefault<>(new ArrayList<>(),
"prefixWhitelists", BungeePlugin.pluginInstance);
private String license, kickMessage;
private List<String> prefixWhitelists;
private boolean cacheResults;
@Override
@@ -29,9 +35,15 @@ public class BungeeConfig implements VPNConfig { ;
return kickMessage;
}
@Override
public List<String> getPrefixWhitelists() {
return prefixWhitelists;
}
public void update() {
license = licenseDefault.get();
kickMessage = kickStringDefault.get();
cacheResults = cacheResultsDefault.get();
prefixWhitelists = prefixWhitelistsDefault.get();
}
}
@@ -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()) {
@@ -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<String> getPrefixWhitelists();
void update();
}