From 781026ddd0715c764c5a27899f0ed99cc68f3950 Mon Sep 17 00:00:00 2001 From: TheTrouper <93684527+thetrouper@users.noreply.github.com> Date: Thu, 1 Feb 2024 17:00:56 -0600 Subject: [PATCH] System check + webhook refactor --- build.gradle | 2 +- libs/JDWebHooks-1.0.1.jar | Bin 0 -> 31281 bytes libs/{PDK-1.3.3.jar => PDK-1.3.4.jar} | Bin .../github/thetrouper/sentinel/Sentinel.java | 1 - .../sentinel/cmds/SentinelCommand.java | 5 +- .../thetrouper/sentinel/server/Action.java | 4 +- .../server/functions/SystemCheck.java | 30 ++++++++ .../sentinel/server/functions/Telemetry.java | 68 ++++++++---------- 8 files changed, 67 insertions(+), 43 deletions(-) create mode 100644 libs/JDWebHooks-1.0.1.jar rename libs/{PDK-1.3.3.jar => PDK-1.3.4.jar} (100%) create mode 100644 src/main/java/io/github/thetrouper/sentinel/server/functions/SystemCheck.java diff --git a/build.gradle b/build.gradle index f966719..8c4c68e 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ dependencies { compileOnly 'org.spigotmc:spigot-api:1.20.4-R0.1-SNAPSHOT' implementation 'com.google.code.gson:gson:2.10.1' implementation 'club.minnced:discord-webhooks:0.8.4' - implementation files("libs/PDK-1.3.3.jar") + implementation files("libs/PDK-1.3.4.jar") } def targetJavaVersion = 16 diff --git a/libs/JDWebHooks-1.0.1.jar b/libs/JDWebHooks-1.0.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..b3a94cb19463410bc2326c32a28c8fbf4d63ad8a GIT binary patch literal 31281 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 { + } case "debug" -> { switch (args.get(1).toString()) { @@ -86,7 +89,7 @@ public class SentinelCommand implements CustomCommand { @Override public void dispatchCompletions(CompletionBuilder b) { - b.then(b.arg("reload","getheat")); + b.then(b.arg("reload","getheat","full-system-check")); b.then(b.arg("debug").then( b.arg("antiswear","antispam","lang","toggle"))); } diff --git a/src/main/java/io/github/thetrouper/sentinel/server/Action.java b/src/main/java/io/github/thetrouper/sentinel/server/Action.java index 4ee6931..961e3df 100644 --- a/src/main/java/io/github/thetrouper/sentinel/server/Action.java +++ b/src/main/java/io/github/thetrouper/sentinel/server/Action.java @@ -5,10 +5,11 @@ import club.minnced.discord.webhook.send.WebhookEmbed; import club.minnced.discord.webhook.send.WebhookEmbedBuilder; import club.minnced.discord.webhook.send.WebhookMessage; import club.minnced.discord.webhook.send.WebhookMessageBuilder; +import io.github.itzispyder.pdk.PDK; +import io.github.itzispyder.pdk.utils.discord.DiscordWebhook; import io.github.thetrouper.sentinel.Sentinel; import io.github.thetrouper.sentinel.data.ActionType; import io.github.thetrouper.sentinel.data.Emojis; -import io.github.thetrouper.sentinel.discord.DiscordWebhook; import io.github.thetrouper.sentinel.server.util.FileUtils; import io.github.thetrouper.sentinel.server.util.ServerUtils; import io.github.thetrouper.sentinel.server.util.Text; @@ -173,6 +174,7 @@ public class Action { actions += (revertGM) ? Emojis.rightSort + " **GM Reverted:** " + Emojis.success + "\n" : ""; actions += Emojis.rightSort + " **Logged:** " + Emojis.success; + Webhook WebhookMessage message = new WebhookMessageBuilder() .setUsername("Sentinel Anti-Nuke | Logs") .setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png"). diff --git a/src/main/java/io/github/thetrouper/sentinel/server/functions/SystemCheck.java b/src/main/java/io/github/thetrouper/sentinel/server/functions/SystemCheck.java new file mode 100644 index 0000000..c87f375 --- /dev/null +++ b/src/main/java/io/github/thetrouper/sentinel/server/functions/SystemCheck.java @@ -0,0 +1,30 @@ +package io.github.thetrouper.sentinel.server.functions; + +import io.github.itzispyder.pdk.utils.SchedulerUtils; +import io.github.itzispyder.pdk.utils.discord.DiscordWebhook; +import io.github.thetrouper.sentinel.cmds.SocialSpyCommand; +import org.bukkit.entity.Player; +import org.bukkit.event.player.AsyncPlayerChatEvent; + +import java.util.Set; + +public class SystemCheck { + public static void fullCheck(Player p) { + chatCheck(p); + + } + public static void chatCheck(Player p) { + SocialSpyCommand.spyMap.put(p.getUniqueId(),true); + AsyncPlayerChatEvent swear = new AsyncPlayerChatEvent(true,p,"Sentinel AntiSwear check > Fvck", Set.of(p)); + AsyncPlayerChatEvent spam = new AsyncPlayerChatEvent(true,p,"Sentinel AntiSpam Check", Set.of(p)); + ProfanityFilter.handleProfanityFilter(swear); + SchedulerUtils.loop(10,5, (loop)->{ + AntiSpam.lastMessageMap.put(p,"Sentinel AntiSpam Check"); + AntiSpam.handleAntiSpam(spam); + }); + + + Message.messagePlayer(p,p,"Sentinel Automatic System Check > Private Message"); + + } +} diff --git a/src/main/java/io/github/thetrouper/sentinel/server/functions/Telemetry.java b/src/main/java/io/github/thetrouper/sentinel/server/functions/Telemetry.java index 175b108..c04793b 100644 --- a/src/main/java/io/github/thetrouper/sentinel/server/functions/Telemetry.java +++ b/src/main/java/io/github/thetrouper/sentinel/server/functions/Telemetry.java @@ -6,6 +6,8 @@ import club.minnced.discord.webhook.send.WebhookEmbed; import club.minnced.discord.webhook.send.WebhookEmbedBuilder; import club.minnced.discord.webhook.send.WebhookMessage; import club.minnced.discord.webhook.send.WebhookMessageBuilder; +import io.github.itzispyder.pdk.utils.discord.DiscordEmbed; +import io.github.itzispyder.pdk.utils.discord.DiscordWebhook; import io.github.thetrouper.sentinel.Sentinel; import io.github.thetrouper.sentinel.data.Emojis; import io.github.thetrouper.sentinel.server.util.CipherUtils; @@ -20,34 +22,25 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; public class Telemetry { - public static WebhookClient telemetryHook; + public static String webhook; public static void initTelemetryHook() { - WebhookClientBuilder builder = new WebhookClientBuilder(fetchTelemetryHook()); - builder.setThreadFactory((job) -> { - Thread thread = new Thread(job); - thread.setName("WebhookThread"); - thread.setDaemon(true); - return thread; - }); - builder.setWait(true); - telemetryHook = builder.build(); + webhook = fetchTelemetryHook(); } public static boolean sendStartupLog() { - WebhookMessage embed = new WebhookMessageBuilder() - .setUsername("Sentinel Anti-Nuke | Telemetry") - .setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png"). - addEmbeds(new WebhookEmbedBuilder() - .setAuthor(new WebhookEmbed.EmbedAuthor("Server Startup Log",null,"https://builtbybit.com/resources/sentinel-anti-nuke.30130/")) - .setTitle(new WebhookEmbed.EmbedTitle("A server has started up successfully",null)) - .setDescription("Server " + Sentinel.serverID + "\n" + - Emojis.rightSort + " License: ||" + Sentinel.license + "||\n" + - Emojis.rightSort + " IP: ||" + Sentinel.IP + "||") - .setColor(Color.GREEN.getRGB()) - .build()) - .build(); try { - telemetryHook.send(embed); + DiscordWebhook.create() + .username("Sentinel Anti-Nuke | Telemetry") + .avatar("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png") + .addEmbed(DiscordEmbed.create() + .author(new DiscordEmbed.Author("Server Startup Log","https://builtbybit.com/resources/sentinel-anti-nuke.30130/",null)) + .title("A server has started up successfully") + .desc("Server " + Sentinel.serverID + "\n" + + Emojis.rightSort + " License: ||" + Sentinel.license + "||\n" + + Emojis.rightSort + " IP: ||" + Sentinel.IP + "||") + .color(0x44FF44) + .build() + ).send(webhook); return true; } catch (Exception ex) { Sentinel.log.info("Failed to initialize dynamic auth!"); @@ -55,25 +48,22 @@ public class Telemetry { } } - public static boolean sendShutdownLog() { - WebhookMessage embed = new WebhookMessageBuilder() - .setUsername("Sentinel Anti-Nuke | Telemetry") - .setAvatarUrl("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png"). - addEmbeds(new WebhookEmbedBuilder() - .setAuthor(new WebhookEmbed.EmbedAuthor("Server Shutdown Log",null,"https://builtbybit.com/resources/sentinel-anti-nuke.30130/")) - .setTitle(new WebhookEmbed.EmbedTitle("A server has shut down successfully",null)) - .setDescription("Server " + Sentinel.serverID + "\n" + - Emojis.rightSort + " License: ||" + Sentinel.license + "||\n" + - Emojis.rightSort + " IP: ||" + Sentinel.IP + "||") - .setColor(Color.RED.getRGB()) - .build()) - .build(); + public static void sendShutdownLog() { try { - telemetryHook.send(embed); - return true; + DiscordWebhook.create() + .username("Sentinel Anti-Nuke | Telemetry") + .avatar("https://r2.e-z.host/d440b58a-ba90-4839-8df6-8bba298cf817/3lwit5nt.png") + .addEmbed(DiscordEmbed.create() + .author(new DiscordEmbed.Author("Server Shutdown Log","https://builtbybit.com/resources/sentinel-anti-nuke.30130/",null)) + .title("A server has shut down") + .desc("Server " + Sentinel.serverID + "\n" + + Emojis.rightSort + " License: ||" + Sentinel.license + "||\n" + + Emojis.rightSort + " IP: ||" + Sentinel.IP + "||") + .color(0xFF0000) + .build() + ).send(webhook); } catch (Exception ex) { Sentinel.log.info("Failed to send dynamic shutdown!"); - return false; } }