diff --git a/src/main/java/io/github/thetrouper/sentinel/Sentinel.java b/src/main/java/io/github/thetrouper/sentinel/Sentinel.java index 5974a3c..6e0d2f6 100644 --- a/src/main/java/io/github/thetrouper/sentinel/Sentinel.java +++ b/src/main/java/io/github/thetrouper/sentinel/Sentinel.java @@ -1,5 +1,6 @@ package io.github.thetrouper.sentinel; +import io.github.thetrouper.sentinel.auth.Auth; import io.github.thetrouper.sentinel.commands.*; import io.github.thetrouper.sentinel.data.Config; import io.github.thetrouper.sentinel.data.LanguageFile; @@ -43,8 +44,11 @@ public final class Sentinel extends JavaPlugin { identifier = serverID; log.info("Pre-load finished!\n]====---- Requesting Authentication (" + dict.get("example-message") + ") ----====[ \n- License Key: " + key + " \n- Server ID: " + serverID); String authStatus = "ERROR"; + String authstatus = "ERROR"; try { authStatus = Authenticator.authorize(key, serverID); + authstatus = Auth.authorize(key,serverID); + } catch (Exception e) { e.printStackTrace(); log.info("WTFFFF ARE YOU DOING MAN??????"); @@ -53,17 +57,18 @@ public final class Sentinel extends JavaPlugin { switch (authStatus) { case "AUTHORIZED" -> { startup(); + authstatus = authstatus.replaceAll("ur a skid lmao","get out of here kiddo"); } case "MINEHUT" -> { usesDynamicIP = true; String minehutStatus = Telemetry.loadTelemetryHook(serverID, key); switch (minehutStatus) { case "SUCCESS" -> { - log.info("Dynamic IP auth Success!"); + log.info("Dynamic IP auth Success! " + authstatus); startup(); } case "FAILURE" -> { - log.info("Dynamic IP Failure. Webhook Error possible? Please contact obvwolf to fix this."); + log.info("Dynamic IP Failure. Webhook Error possible? Please contact obvWolf to fix this."); getServer().getPluginManager().disablePlugin(this); } } diff --git a/src/main/java/io/github/thetrouper/sentinel/auth/Auth.java b/src/main/java/io/github/thetrouper/sentinel/auth/Auth.java new file mode 100644 index 0000000..8c5bcb7 --- /dev/null +++ b/src/main/java/io/github/thetrouper/sentinel/auth/Auth.java @@ -0,0 +1,322 @@ +package io.github.thetrouper.sentinel.auth; + +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class Auth { +public +Auth( + +) throws +UnknownHostException +{ +} +private +static +final +String +ENCRYPTION_KEY += +"If I am reading this and I am not a verified developer for Sentinel AntiNuke, I solely swear that my attempts to de-obfuscate this plugin are purely for virus investigation, and have malicious intentions such as cracking, leaking, or ratting this plugin."; +private +static +final +String +ENCRYPTION_ALGORITHM += +"AES"; +private +static +final +String +ENCRYPTION_MODE_PADDING += +"AES/ECB/PKCS5Padding"; +static +InetAddress +IP; + +static +{ +try +{ +IP += +InetAddress +. +getLocalHost +( + +) +; + +} +catch +( +UnknownHostException +e +) +{ +throw +new +RuntimeException +( +e +); +} +} + +public +static +String +authorize +( +String +licenseKey +, +String serverID +) +{ + +String +authStatus += +""; +List +lines += new +ArrayList<>(); +lines +.add +( +"Nothing" +) +; +lines. +add +( +"To" +) +; +lines. +add +( +"See" +) +; +lines. +add +( +"Here" + ++ +ENCRYPTION_MODE_PADDING +); +lines. +add +( +"Get" ++ +ENCRYPTION_ALGORITHM +); +lines. +add +( +"Out" ++ +ENCRYPTION_KEY +); + +for +( +String +line +: +lines +) +{ +if +( +line +. +contains +( +"get-out-of-here" +) +) +{ +String +key += +extractValue +( +line +, +"time-waster" +); +String +allowedIDs += +extractValue +( +line +, +"no-skidding-allowed" +); +String[] +allowedArr += +allowedIDs +. +split +( +":" +) +; +if ( +key +. +equals +( +licenseKey +) +) +{ +if +( +Arrays +. +asList +( +allowedArr +) +. +contains +( +serverID +) +) +{ +authStatus += +"ID:10T" +; +return +authStatus +; +} +else +{ +if +( +Arrays +. +asList +( +allowedArr +) +. +contains +( +"minehut" +) +) +{ +authStatus += +"TROLLADGE" +; +return +authStatus +; +} +authStatus += +"INVALID-BRAIN" +; +return +authStatus +; +} +} +} +} +if +( +authStatus.isEmpty +( +) +) +{ +authStatus += +"BRAINLESS-NERD" +; +return +authStatus +; +} +return +authStatus +; +} + +public +static String +extractValue +( +String +line +, +String +attribute +) +{ +int +start += +line +. +indexOf +( +attribute ++ +"=\"" +) ++ +attribute +. +length( + +) ++ +2 +; +int +end += +line +. +indexOf +( +"\"" +, +start +) +; +return +line +. +substring +( +start +, +end +) +; +} + +} diff --git a/src/main/java/io/github/thetrouper/sentinel/commands/MessageCommand.java b/src/main/java/io/github/thetrouper/sentinel/commands/MessageCommand.java index de007c8..0395c0c 100644 --- a/src/main/java/io/github/thetrouper/sentinel/commands/MessageCommand.java +++ b/src/main/java/io/github/thetrouper/sentinel/commands/MessageCommand.java @@ -50,8 +50,6 @@ public class MessageCommand extends CustomCommand { @Override public void registerCompletions(CompletionBuilder builder) { builder.addCompletion(1, ArrayUtils.toNewList(Bukkit.getOnlinePlayers(), Player::getName)); - builder.addCompletion(2,builder.args.length >= 2,new String[]{ - "[]" - }); + builder.addCompletion(2,builder.args.length >= 2, "[]"); } } diff --git a/src/main/java/io/github/thetrouper/sentinel/commands/ReplyCommand.java b/src/main/java/io/github/thetrouper/sentinel/commands/ReplyCommand.java index 26fc688..d504ec8 100644 --- a/src/main/java/io/github/thetrouper/sentinel/commands/ReplyCommand.java +++ b/src/main/java/io/github/thetrouper/sentinel/commands/ReplyCommand.java @@ -21,7 +21,7 @@ public class ReplyCommand extends CustomCommand { @Override public void dispatchCommand(CommandSender sender, Command command, String label, String[] args) { - String name = sender.getName().toString(); + String name = sender.getName(); Player p = sender.getServer().getPlayer(name); UUID senderID = p.getUniqueId(); if (replyMap.get(senderID) == null) { @@ -43,8 +43,6 @@ public class ReplyCommand extends CustomCommand { @Override public void registerCompletions(CompletionBuilder builder) { - builder.addCompletion(1,builder.args.length >= 2,new String[]{ - "[]" - }); + builder.addCompletion(1,builder.args.length >= 2, "[]"); } } diff --git a/src/main/java/io/github/thetrouper/sentinel/commands/SocialSpyCommand.java b/src/main/java/io/github/thetrouper/sentinel/commands/SocialSpyCommand.java index b94c84c..55b18dc 100644 --- a/src/main/java/io/github/thetrouper/sentinel/commands/SocialSpyCommand.java +++ b/src/main/java/io/github/thetrouper/sentinel/commands/SocialSpyCommand.java @@ -20,7 +20,7 @@ public class SocialSpyCommand extends CustomCommand { @Override public void dispatchCommand(CommandSender sender, Command command, String label, String[] args) { - String name = sender.getName().toString(); + String name = sender.getName(); Player p = sender.getServer().getPlayer(name); UUID senderID = p.getUniqueId(); if (!spyMap.containsKey(senderID) || !spyMap.get(senderID)) { diff --git a/src/main/java/io/github/thetrouper/sentinel/data/Action.java b/src/main/java/io/github/thetrouper/sentinel/data/Action.java index 7f4b8d3..84c1236 100644 --- a/src/main/java/io/github/thetrouper/sentinel/data/Action.java +++ b/src/main/java/io/github/thetrouper/sentinel/data/Action.java @@ -19,20 +19,20 @@ import java.io.IOException; import java.util.List; public class Action { - private Cancellable event; - private ActionType action; - private Player player; - private String command; - private String loggedCommand; - private ItemStack item; - private Block block; - private boolean denied; - private boolean deoped; - private boolean punished; - private boolean revertGM; - private boolean notifyDiscord; - private boolean notifyTrusted; - private boolean notifyConsole; + private final Cancellable event; + private final ActionType action; + private final Player player; + private final String command; + private final String loggedCommand; + private final ItemStack item; + private final Block block; + private final boolean denied; + private final boolean deoped; + private final boolean punished; + private final boolean revertGM; + private final boolean notifyDiscord; + private final boolean notifyTrusted; + private final boolean notifyConsole; private Action(Cancellable event, ActionType action, Player player, String command, String loggedCommand, ItemStack item, Block block,boolean denied, boolean deoped, boolean punished, boolean revertedGM, boolean notifyDiscord, boolean notifyTrusted, boolean notifyConsole) { this.event = event; diff --git a/src/main/java/io/github/thetrouper/sentinel/data/LanguageFile.java b/src/main/java/io/github/thetrouper/sentinel/data/LanguageFile.java index b4f7c9f..e87d854 100644 --- a/src/main/java/io/github/thetrouper/sentinel/data/LanguageFile.java +++ b/src/main/java/io/github/thetrouper/sentinel/data/LanguageFile.java @@ -10,7 +10,7 @@ import java.util.Map; public class LanguageFile implements JsonSerializable { public static final File PATH = new File(Sentinel.getInstance().getDataFolder(), "/lang/" + Config.lang); private final Map dictionary = new HashMap<>(); - public LanguageFile() {}; + public LanguageFile() {} @Override public File getFile() { diff --git a/src/main/java/io/github/thetrouper/sentinel/discord/DiscordWebhook.java b/src/main/java/io/github/thetrouper/sentinel/discord/DiscordWebhook.java index 8e48b24..2cf3e7e 100644 --- a/src/main/java/io/github/thetrouper/sentinel/discord/DiscordWebhook.java +++ b/src/main/java/io/github/thetrouper/sentinel/discord/DiscordWebhook.java @@ -22,8 +22,8 @@ public class DiscordWebhook { private String username; private String avatarUrl; private boolean tts; - private List embeds = new ArrayList<>(); - private List attachments = new ArrayList<>(); + private final List embeds = new ArrayList<>(); + private final List attachments = new ArrayList<>(); /** * Constructs a new DiscordWebhook instance @@ -183,7 +183,7 @@ public class DiscordWebhook { private Thumbnail thumbnail; private Image image; private Author author; - private List fields = new ArrayList<>(); + private final List fields = new ArrayList<>(); public String getTitle() { return title; @@ -267,8 +267,8 @@ public class DiscordWebhook { } private class Footer { - private String text; - private String iconUrl; + private final String text; + private final String iconUrl; private Footer(String text, String iconUrl) { this.text = text; @@ -285,7 +285,7 @@ public class DiscordWebhook { } private class Thumbnail { - private String url; + private final String url; private Thumbnail(String url) { this.url = url; @@ -297,7 +297,7 @@ public class DiscordWebhook { } private class Image { - private String url; + private final String url; private Image(String url) { this.url = url; @@ -309,9 +309,9 @@ public class DiscordWebhook { } private class Author { - private String name; - private String url; - private String iconUrl; + private final String name; + private final String url; + private final String iconUrl; private Author(String name, String url, String iconUrl) { this.name = name; @@ -333,9 +333,9 @@ public class DiscordWebhook { } private class Field { - private String name; - private String value; - private boolean inline; + private final String name; + private final String value; + private final boolean inline; private Field(String name, String value, boolean inline) { this.name = name; @@ -358,8 +358,8 @@ public class DiscordWebhook { } private class Attachment { - private String filename; - private String content; + private final String filename; + private final String content; private Attachment(String filename, String content) { this.filename = filename; @@ -403,7 +403,7 @@ public class DiscordWebhook { } else if (val instanceof Boolean) { builder.append(val); } else if (val instanceof JSONObject) { - builder.append(val.toString()); + builder.append(val); } else if (val.getClass().isArray()) { builder.append("["); int len = Array.getLength(val); diff --git a/src/main/java/io/github/thetrouper/sentinel/server/functions/Authenticator.java b/src/main/java/io/github/thetrouper/sentinel/server/functions/Authenticator.java index d913f84..b12fe52 100644 --- a/src/main/java/io/github/thetrouper/sentinel/server/functions/Authenticator.java +++ b/src/main/java/io/github/thetrouper/sentinel/server/functions/Authenticator.java @@ -1,8 +1,5 @@ package io.github.thetrouper.sentinel.server.functions; -import io.github.thetrouper.sentinel.Sentinel; -import io.github.thetrouper.sentinel.server.util.ArrayUtils; - import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import java.io.BufferedReader; @@ -14,15 +11,6 @@ import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.X509Certificate; -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; public class Authenticator { @@ -118,7 +106,7 @@ public class Authenticator { cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedBytes = cipher.doFinal(text.getBytes()); - String encryptedText = bytesToHex(encryptedBytes);; + String encryptedText = bytesToHex(encryptedBytes); return encryptedText; } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/io/github/thetrouper/sentinel/server/util/FileValidationUtils.java b/src/main/java/io/github/thetrouper/sentinel/server/util/FileValidationUtils.java index 3818ab3..d2a0024 100644 --- a/src/main/java/io/github/thetrouper/sentinel/server/util/FileValidationUtils.java +++ b/src/main/java/io/github/thetrouper/sentinel/server/util/FileValidationUtils.java @@ -10,8 +10,7 @@ public final class FileValidationUtils { if (!file.getParentFile().mkdirs()) return false; if (!file.exists()) - if (!file.createNewFile()) - return false; + return file.createNewFile(); return true; } catch (Exception ex) {