From d779bc4de00f962317ffe3369a5f524d82b57224 Mon Sep 17 00:00:00 2001 From: obvWolf Date: Wed, 21 Feb 2024 01:27:01 -0600 Subject: [PATCH] Patched command block place bypass --- build.sh | 0 gradlew | 0 obf.sh | 0 .../io/github/thetrouper/sentinel/Sentinel.java | 1 - .../thetrouper/sentinel/cmds/SentinelCommand.java | 14 ++------------ .../sentinel/data/config/AdvancedConfig.java | 2 +- .../sentinel/data/config/LanguageFile.java | 2 +- .../sentinel/data/config/MainConfig.java | 1 + .../thetrouper/sentinel/events/CMDBlockPlace.java | 4 +++- .../thetrouper/sentinel/server/FilterAction.java | 12 ++++++++---- 10 files changed, 16 insertions(+), 20 deletions(-) mode change 100644 => 100755 build.sh mode change 100644 => 100755 gradlew mode change 100644 => 100755 obf.sh diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/obf.sh b/obf.sh old mode 100644 new mode 100755 diff --git a/src/main/java/io/github/thetrouper/sentinel/Sentinel.java b/src/main/java/io/github/thetrouper/sentinel/Sentinel.java index 8bbe2e5..09dc6aa 100644 --- a/src/main/java/io/github/thetrouper/sentinel/Sentinel.java +++ b/src/main/java/io/github/thetrouper/sentinel/Sentinel.java @@ -92,7 +92,6 @@ public final class Sentinel extends JavaPlugin { log.info("WTFFFF ARE YOU DOING MAN??????"); manager.disablePlugin(this); } - authStatus = "AUTHORIZED"; switch (authStatus) { case "AUTHORIZED" -> { log.info("\n]======----- Auth Success! -----======["); diff --git a/src/main/java/io/github/thetrouper/sentinel/cmds/SentinelCommand.java b/src/main/java/io/github/thetrouper/sentinel/cmds/SentinelCommand.java index 1b3123a..3a3a76e 100644 --- a/src/main/java/io/github/thetrouper/sentinel/cmds/SentinelCommand.java +++ b/src/main/java/io/github/thetrouper/sentinel/cmds/SentinelCommand.java @@ -82,22 +82,12 @@ public class SentinelCommand implements CustomCommand { debugMode = !debugMode; p.sendMessage(Text.prefix((debugMode ? "Enabled" : "Disabled") + " debug mode.")); } - /*case "encrypt" -> { - final String enc = CipherUtils.encrypt(args.getAll(2).toString()); - final String check = CipherUtils.decrypt(enc); - final String main = Text.prefix("Successfully encrypted \"&e" + check + "&7\" using AES.\n &7> &b" + enc); - Sentinel.log.info(args.getAll(2).toString() + "\n" + enc + "\n" + check); - TextComponent message = new TextComponent(); - message.setText(main); - message.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new net.md_5.bungee.api.chat.hover.content.Text("&bClick to copy!"))); - message.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, enc)); - p.spigot().sendMessage(message); - }*/ case "chat" -> { - AsyncPlayerChatEvent message = new AsyncPlayerChatEvent(true,p,args.getAll(1).toString(), Set.of(p)); + AsyncPlayerChatEvent message = new AsyncPlayerChatEvent(true,p,args.getAll(2).toString(), Set.of(p)); AdvancedBlockers.handleAdvanced(message); AntiSpam.handleAntiSpam(message); ProfanityFilter.handleProfanityFilter(message); + if (!message.isCancelled()) p.sendMessage(Text.prefix("Message did not get flagged.")); } } } diff --git a/src/main/java/io/github/thetrouper/sentinel/data/config/AdvancedConfig.java b/src/main/java/io/github/thetrouper/sentinel/data/config/AdvancedConfig.java index 480c599..a66c1ae 100644 --- a/src/main/java/io/github/thetrouper/sentinel/data/config/AdvancedConfig.java +++ b/src/main/java/io/github/thetrouper/sentinel/data/config/AdvancedConfig.java @@ -59,5 +59,5 @@ public class AdvancedConfig implements JsonSerializable { public String falsePosRegex = ""; public String swearRegex = ""; public String strictRegex = ""; - public String urlRegex = "(?:https?://)?(?:www.)?(?:(?[a-z0-9-]+).)?(?[a-z0-9-]+).(?:(?[a-z]{1,63}))?(?::(?[0-9]{1,5}))?(?:[/#](?[A-Za-z0-9_/.~:/?#\\[\\]@!$&'()*+,;=.]*)?)?"; + public String urlRegex = "\\b(?:(?:https?|ftp):\\/\\/)?(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:com|org|net|int|edu|gov|mil|arpa|biz|info|mobi|app|name|aero|jobs|museum|travel|a[c-gil-oq-uwxz]|b[abd-jmnoq-tvwyz]|c[acdf-ik-orsu-z]|d[dejkmoz]|e[ceghr-u]|f[ijkmor]|g[abd-ilmnp-uwy]|h[kmnrtu]|i[delmnoq-t]|j[emop]|k[eghimnprwyz]|l[abcikr-vy]|m[acdeghk-z]|n[acefgilopruz]|om|p[ae-hk-nrstwy]|qa|r[eosuw]|s[a-eg-or-vxyz]|t[cdfghj-prtvwz]|u[agksyz]|v[aceginu]|w[fs]|y[etu]|z[amrw])))(?::\\d{2,5})?(?:\\/\\S*)?\\b"; } diff --git a/src/main/java/io/github/thetrouper/sentinel/data/config/LanguageFile.java b/src/main/java/io/github/thetrouper/sentinel/data/config/LanguageFile.java index d61b81a..56217cf 100644 --- a/src/main/java/io/github/thetrouper/sentinel/data/config/LanguageFile.java +++ b/src/main/java/io/github/thetrouper/sentinel/data/config/LanguageFile.java @@ -45,7 +45,7 @@ public class LanguageFile implements JsonSerializable { put("spam-mute-notification", "§b§n%1$s§7 has been auto-muted by the anti spam! §8(§c%2$s§7/§4%3$s§8)"); put("url-warn", "§cDo not send urls in chat!"); put("url-notification", "§b§n%1$s§7 has triggered the anti-URL."); - put("url-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bDetected: %1$s"); + put("url-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bDetected: §f%1$s"); put("unicode-warn", "§cDo not send non-standard unicode in chat!"); put("unicode-notification", "§b§n%1$s§7 has triggered the anti-unicode."); put("unicode-notification-hover", "§8]==-- §d§lSentinel §8--==[\n§bMessage: §f%1$s"); diff --git a/src/main/java/io/github/thetrouper/sentinel/data/config/MainConfig.java b/src/main/java/io/github/thetrouper/sentinel/data/config/MainConfig.java index 80f8c92..80b5f02 100644 --- a/src/main/java/io/github/thetrouper/sentinel/data/config/MainConfig.java +++ b/src/main/java/io/github/thetrouper/sentinel/data/config/MainConfig.java @@ -48,6 +48,7 @@ public class MainConfig implements JsonSerializable { add("setblock"); add("data"); add("whitelist"); + add("lp") }}; public boolean logDangerous = true; public boolean logCmdBlocks = true; diff --git a/src/main/java/io/github/thetrouper/sentinel/events/CMDBlockPlace.java b/src/main/java/io/github/thetrouper/sentinel/events/CMDBlockPlace.java index 26c0fe8..54e15c8 100644 --- a/src/main/java/io/github/thetrouper/sentinel/events/CMDBlockPlace.java +++ b/src/main/java/io/github/thetrouper/sentinel/events/CMDBlockPlace.java @@ -20,7 +20,9 @@ public class CMDBlockPlace implements CustomListener { if (Sentinel.mainConfig.plugin.cmdBlockOpCheck && !e.getPlayer().isOp()) return; ServerUtils.sendDebugMessage("CommandBlockPlace: Player is operator"); Block b = e.getBlockPlaced(); - if ((b.getType() == Material.COMMAND_BLOCK || b.getType() == Material.CHAIN_COMMAND_BLOCK || b.getType() == Material.REPEATING_COMMAND_BLOCK)) return; + if (!(b.getType().equals(Material.COMMAND_BLOCK) || + b.getType().equals(Material.REPEATING_COMMAND_BLOCK) || + b.getType().equals(Material.CHAIN_COMMAND_BLOCK))) return; ServerUtils.sendDebugMessage("CommandBlockPlace: Block is a command block"); Player p = e.getPlayer(); if (Sentinel.isTrusted(p)) return; diff --git a/src/main/java/io/github/thetrouper/sentinel/server/FilterAction.java b/src/main/java/io/github/thetrouper/sentinel/server/FilterAction.java index 823117d..3cea087 100644 --- a/src/main/java/io/github/thetrouper/sentinel/server/FilterAction.java +++ b/src/main/java/io/github/thetrouper/sentinel/server/FilterAction.java @@ -25,7 +25,7 @@ import static io.github.thetrouper.sentinel.server.functions.ProfanityFilter.*; public class FilterAction { public static void filterPunish(AsyncPlayerChatEvent e, FAT type, Double similarity, FilterSeverity severity) { - String report = ReportFalsePositives.generateReport(e); + String report = "This action is not reportable."; TextComponent staffNotif = Component.text(""); TextComponent playerWarning = Component.text(""); Player offender = e.getPlayer(); @@ -33,7 +33,7 @@ public class FilterAction { case BLOCK_UNICODE -> { staffNotif = Component .text(Text.prefix(Sentinel.language.get("unicode-notification") - .formatted(offender))) + .formatted(offender.getName()))) .hoverEvent(Component.text(Sentinel.language.get("unicode-notification-hover") .formatted(e.getMessage()))); playerWarning = Component @@ -42,9 +42,9 @@ public class FilterAction { case BLOCK_URL -> { staffNotif = Component .text(Text.prefix(Sentinel.language.get("url-notification") - .formatted(offender))) + .formatted(offender.getName()))) .hoverEvent(Component.text(Sentinel.language.get("url-notification-hover") - .formatted(Text.color(Text.regexHighlighter(e.getMessage(),Sentinel.advConfig.urlRegex," &e> &n"," &r&e<&f "))))); + .formatted(Text.color(Text.regexHighlighter(e.getMessage(),Sentinel.advConfig.urlRegex," &e> &n","&r &e<&f "))))); playerWarning = Component .text(Text.prefix(Sentinel.language.get("url-warn"))); } @@ -83,6 +83,7 @@ public class FilterAction { if (Sentinel.mainConfig.chat.antiSpam.logSpam) sendDiscordLog(offender,e,type); } case BLOCK_SWEAR -> { + report = ReportFalsePositives.generateReport(e); staffNotif = Component.text(Text.prefix(String.format(Sentinel.language.get("profanity-block-notification"), offender.getName(), scoreMap.get(offender), @@ -99,6 +100,7 @@ public class FilterAction { .clickEvent(ClickEvent.runCommand("sentinelcallback fpreport " + report)); } case SWEAR_PUNISH -> { + report = ReportFalsePositives.generateReport(e); staffNotif = Component.text(Text.prefix(String.format(Sentinel.language.get("profanity-mute-notification"), offender.getName(), scoreMap.get(offender), @@ -116,6 +118,7 @@ public class FilterAction { if (Sentinel.mainConfig.chat.antiSwear.logSwears) sendDiscordLog(offender,e,type); } case SLUR_PUNISH -> { + report = ReportFalsePositives.generateReport(e); staffNotif = Component.text(Text.prefix(String.format(Sentinel.language.get("slur-mute-notification"), offender.getName(), scoreMap.get(offender), @@ -137,6 +140,7 @@ public class FilterAction { ServerUtils.sendCommand(type.getExecutedCommand().replace("%player%", offender.getName())); } staffNotif = staffNotif.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, "/sentinelcallback fpreport " + report)); + playerWarning = playerWarning.clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, "/sentinelcallback fpreport " + report)); for (Player staff : ServerUtils.getStaff()) { staff.sendMessage(staffNotif);