mirror of
https://github.com/darverdevs/Uranium.git
synced 2024-11-21 23:06:04 -08:00
feat(ipcheck): implement webhook reporting functionality
This commit is contained in:
parent
80f7df8eb4
commit
c5ebf307d9
|
@ -7,6 +7,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import org.bukkit.plugin.messaging.PluginMessageListener;
|
import org.bukkit.plugin.messaging.PluginMessageListener;
|
||||||
|
|
||||||
import uranium.listeners.*;
|
import uranium.listeners.*;
|
||||||
|
import uranium.tasks.IPCheck;
|
||||||
import uranium.user.*;
|
import uranium.user.*;
|
||||||
|
|
||||||
public class Main extends JavaPlugin implements PluginMessageListener {
|
public class Main extends JavaPlugin implements PluginMessageListener {
|
||||||
|
@ -38,7 +39,8 @@ public class Main extends JavaPlugin implements PluginMessageListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupTasks() {
|
private void setupTasks() {
|
||||||
|
getLogger().info("Initializing tasks...");
|
||||||
|
getServer().getScheduler().scheduleSyncRepeatingTask(this, new IPCheck(this), 30, 30); // 1.5 seconds
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupPluginChannels() {
|
private void setupPluginChannels() {
|
||||||
|
|
|
@ -4,6 +4,7 @@ import org.bukkit.entity.Player;
|
||||||
import uranium.Main;
|
import uranium.Main;
|
||||||
import uranium.user.UserManager;
|
import uranium.user.UserManager;
|
||||||
import uranium.util.Util;
|
import uranium.util.Util;
|
||||||
|
import uranium.util.WebhookUtil;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -37,6 +38,14 @@ public class IPCheck implements Runnable {
|
||||||
Util.sendStaff(prefix + "&c" + user.getName() + "&7 joined using the debug runtime.");
|
Util.sendStaff(prefix + "&c" + user.getName() + "&7 joined using the debug runtime.");
|
||||||
else
|
else
|
||||||
Util.sendStaff(prefix + "&c" + user.getName() + "&7 joined using a strange domain: &c" + user.getDomain());
|
Util.sendStaff(prefix + "&c" + user.getName() + "&7 joined using a strange domain: &c" + user.getDomain());
|
||||||
|
|
||||||
|
if (plugin.getConfig().getBoolean("suspicious-domains.enable-webhook"))
|
||||||
|
WebhookUtil.sendSusDomain(user.getName(),
|
||||||
|
user.getDomain().equalsIgnoreCase("null")
|
||||||
|
? "Offline Download"
|
||||||
|
: user.getDomain().equalsIgnoreCase("")
|
||||||
|
? "Debug Runtime"
|
||||||
|
: user.getDomain());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
60
src/main/java/uranium/util/WebhookUtil.java
Normal file
60
src/main/java/uranium/util/WebhookUtil.java
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
package uranium.util;
|
||||||
|
|
||||||
|
import club.minnced.discord.webhook.WebhookClient;
|
||||||
|
import club.minnced.discord.webhook.WebhookClientBuilder;
|
||||||
|
import club.minnced.discord.webhook.send.WebhookEmbed;
|
||||||
|
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import uranium.Main;
|
||||||
|
|
||||||
|
public class WebhookUtil {
|
||||||
|
|
||||||
|
private static final Main plugin;
|
||||||
|
|
||||||
|
static {
|
||||||
|
plugin = JavaPlugin.getPlugin(Main.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String filterForDiscord(String message) {
|
||||||
|
return message
|
||||||
|
.replace("_", "\\_")
|
||||||
|
.replace("*", "\\*")
|
||||||
|
.replace("~", "\\~")
|
||||||
|
.replace("`", "\\`")
|
||||||
|
.replace("|", "\\|")
|
||||||
|
.replace("> ", "\\> ")
|
||||||
|
.replace("@everyone", "")
|
||||||
|
.replace("@here", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void sendSusDomain(String username, String domain) {
|
||||||
|
String webhookURI = plugin.getConfig().getString("suspicious-domains.webhook-url");
|
||||||
|
if (webhookURI.equalsIgnoreCase("")) {
|
||||||
|
plugin.getLogger().warning("The webhook URL for suspicious domains has been incorrectly configured.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
WebhookClientBuilder builder = new WebhookClientBuilder(webhookURI);
|
||||||
|
builder.setThreadFactory((job) -> {
|
||||||
|
Thread thread = new Thread(job);
|
||||||
|
thread.setName("Webhook");
|
||||||
|
thread.setDaemon(true);
|
||||||
|
return thread;
|
||||||
|
});
|
||||||
|
builder.setWait(true);
|
||||||
|
try (WebhookClient client = builder.build()) {
|
||||||
|
WebhookEmbed embed = new WebhookEmbedBuilder()
|
||||||
|
.setColor(0xFF0000)
|
||||||
|
.setDescription("A user has logged onto the server using a suspicious domain.")
|
||||||
|
.addField(new WebhookEmbed.EmbedField(true, "Username", filterForDiscord(username)))
|
||||||
|
.addField(new WebhookEmbed.EmbedField(true, "Domain", "http://" + filterForDiscord(domain)))
|
||||||
|
.build();
|
||||||
|
|
||||||
|
client.send(embed);
|
||||||
|
} catch(Exception ex) {
|
||||||
|
plugin.getLogger().severe("An error occurred while attempting to deliver the webhook. Please report the following stacktrace to Cold.");
|
||||||
|
plugin.getLogger().severe("Webhook URL: " + webhookURI);
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user