Completed new antivpn plugin

This commit is contained in:
Dawson Hessler
2021-06-15 13:48:39 -04:00
parent 9039a97894
commit e1abdb7bf6
23 changed files with 792 additions and 3 deletions
@@ -0,0 +1,37 @@
package dev.brighten.antivpn.bukkit;
import dev.brighten.antivpn.api.VPNConfig;
import dev.brighten.antivpn.bukkit.util.ConfigDefault;
public class BukkitConfig implements VPNConfig {
private final ConfigDefault<String> licenseDefault = new ConfigDefault<>("",
"license", BukkitPlugin.pluginInstance), kickStringDefault =
new ConfigDefault<>("Proxies are not allowed on our server",
"kickMessage", BukkitPlugin.pluginInstance);
private final ConfigDefault<Boolean> cacheResultsDefault = new ConfigDefault<>(true,
"cachedResults", BukkitPlugin.pluginInstance);
private String license, kickMessage;
private boolean cacheResults;
@Override
public String getLicense() {
return license;
}
@Override
public boolean cachedResults() {
return cacheResults;
}
@Override
public String getKickString() {
return kickMessage;
}
public void update() {
license = licenseDefault.get();
kickMessage = kickStringDefault.get();
cacheResults = cacheResultsDefault.get();
}
}
@@ -0,0 +1,61 @@
package dev.brighten.antivpn.bukkit;
import dev.brighten.antivpn.AntiVPN;
import dev.brighten.antivpn.api.VPNExecutor;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
import java.util.Optional;
public class BukkitListener extends VPNExecutor implements Listener {
private BukkitTask cacheResetTask;
@Override
public void registerListeners() {
BukkitPlugin.pluginInstance.getServer().getPluginManager()
.registerEvents(this, BukkitPlugin.pluginInstance);
}
@Override
public void runCacheReset() {
cacheResetTask = new BukkitRunnable() {
public void run() {
resetCache();
}
}.runTaskTimerAsynchronously(BukkitPlugin.pluginInstance, 24000, 24000); //Reset cache every 20 minutes
HandlerList.unregisterAll(this);
threadExecutor.shutdown();
}
@Override
public void shutdown() {
if(cacheResetTask != null && !cacheResetTask.isCancelled()) cacheResetTask.cancel();
}
@EventHandler
public void onListener(final AsyncPlayerPreLoginEvent event) {
checkIp(event.getAddress().getHostAddress(), AntiVPN.getInstance().getConfig().cachedResults(), result -> {
if(result.isSuccess() && result.isProxy()) {
event.setLoginResult(AsyncPlayerPreLoginEvent.Result.KICK_OTHER);
event.setKickMessage(ChatColor.translateAlternateColorCodes('&',
AntiVPN.getInstance().getConfig().getKickString()));
Optional.ofNullable(Bukkit.getPlayer(event.getUniqueId())).ifPresent(player -> {
new BukkitRunnable() {
public void run() {
player.kickPlayer(ChatColor.translateAlternateColorCodes('&',
AntiVPN.getInstance().getConfig().getKickString()));
}
}.runTask(BukkitPlugin.pluginInstance);
});
}
});
}
}
@@ -0,0 +1,23 @@
package dev.brighten.antivpn.bukkit;
import dev.brighten.antivpn.AntiVPN;
import org.bukkit.plugin.java.JavaPlugin;
public class BukkitPlugin extends JavaPlugin {
public static BukkitPlugin pluginInstance;
public void onEnable() {
pluginInstance = this;
//Loading config
saveDefaultConfig();
AntiVPN.start(new BukkitConfig(), new BukkitListener());
}
@Override
public void onDisable() {
AntiVPN.getInstance().stop();
}
}
@@ -0,0 +1,28 @@
package dev.brighten.antivpn.bukkit.util;
import lombok.AllArgsConstructor;
import org.bukkit.plugin.Plugin;
@AllArgsConstructor
public class ConfigDefault<A> {
private final A defaultValue;
private final String path;
private final Plugin plugin;
public A get() {
if(plugin.getConfig().get(path) != null)
return (A) plugin.getConfig().get(path);
else {
plugin.getConfig().set(path, defaultValue);
plugin.saveConfig();
return defaultValue;
}
}
public A set(A value) {
plugin.getConfig().set(path, value);
return value;
}
}