From 80f7df8eb431c52f4ac727859f22a8985abdd89a Mon Sep 17 00:00:00 2001 From: ColdDev Date: Mon, 24 Oct 2022 16:37:59 +0100 Subject: [PATCH] feat: add IP/domain detection task --- src/main/java/uranium/tasks/IPCheck.java | 28 ++++++++++++++++++++++++ src/main/java/uranium/util/Util.java | 14 ++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/main/java/uranium/tasks/IPCheck.java b/src/main/java/uranium/tasks/IPCheck.java index 01b473c..bb7c9b3 100644 --- a/src/main/java/uranium/tasks/IPCheck.java +++ b/src/main/java/uranium/tasks/IPCheck.java @@ -1,6 +1,11 @@ package uranium.tasks; +import org.bukkit.entity.Player; import uranium.Main; +import uranium.user.UserManager; +import uranium.util.Util; + +import java.util.List; public class IPCheck implements Runnable { @@ -11,7 +16,30 @@ public class IPCheck implements Runnable { } public void run() { + UserManager.getUsers().forEach((user) -> { + if (user.getIP() == null || user.getDomain() == null) { + Player player = user.getPlayer(); + user.onJoin(); + plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { + if (UserManager.getUser(player) == null) return; + if (!plugin.getConfig().getBoolean("suspicious-domains.enabled")) return; + List trustedDomains = plugin.getConfig().getStringList("suspicious-domains.trusted-domains"); + String prefix = plugin.getConfig().getString("prefix"); + boolean offlineDownload = plugin.getConfig().getBoolean("suspicious-domains.offline-download"); + boolean debugRuntime = plugin.getConfig().getBoolean("suspicious-domains.debug-runtime"); + if (user.getDomain() == null) return; + if (trustedDomains.contains(user.getDomain())) return; + + if (offlineDownload && user.getDomain().equalsIgnoreCase("null")) + Util.sendStaff(prefix + "&c" + user.getName() + "&7 joined using an offline download."); + else if (debugRuntime && user.getDomain().equalsIgnoreCase("")) + Util.sendStaff(prefix + "&c" + user.getName() + "&7 joined using the debug runtime."); + else + Util.sendStaff(prefix + "&c" + user.getName() + "&7 joined using a strange domain: &c" + user.getDomain()); + }); + } + }); } } \ No newline at end of file diff --git a/src/main/java/uranium/util/Util.java b/src/main/java/uranium/util/Util.java index cd5cfcb..3f73301 100644 --- a/src/main/java/uranium/util/Util.java +++ b/src/main/java/uranium/util/Util.java @@ -20,4 +20,18 @@ public class Util { Bukkit.getConsoleSender().sendMessage(StringUtil.cc(message)); } + public static void sendStaff(String message) { + UserManager.getUsers().forEach((user) -> { + if (user.hasPermission("uranium.notify")) user.sendMessage(message); + }); + Bukkit.getConsoleSender().sendMessage(StringUtil.cc(message)); + } + + public static void sendStaff(String message, String permission) { + UserManager.getUsers().forEach((user) -> { + if (user.hasPermission(permission)) user.sendMessage(message); + }); + Bukkit.getConsoleSender().sendMessage(StringUtil.cc(message)); + } + } \ No newline at end of file