Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public enum LogType {

CHAT(EnumSet.of(LogAttribute.FILTER, LogAttribute.STRIKE, LogAttribute.MUTE, LogAttribute.WARN, LogAttribute.AUDIO)),
SIGN(EnumSet.of(LogAttribute.FILTER, LogAttribute.STRIKE, LogAttribute.WARN, LogAttribute.AUDIO)),
SIGN(EnumSet.of(LogAttribute.FILTER, LogAttribute.STRIKE, LogAttribute.MUTE, LogAttribute.WARN, LogAttribute.AUDIO)),
NAME(EnumSet.of(LogAttribute.FILTER)),
CAPTCHA(EnumSet.of(LogAttribute.AUDIO));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,11 @@
public final class ChatEmbed extends DiscordEmbed {

private final String trigger;
private final int severity;
private final boolean warned;

public ChatEmbed(JavaPlugin plugin, Player player, String content, String trigger, int severity, boolean warned) {
public ChatEmbed(JavaPlugin plugin, Player player, String content, String trigger, boolean warned) {
super(plugin, player, content);
this.trigger = trigger;
this.severity = severity;
this.warned = warned;
setupBaseEmbed();
}
Expand All @@ -27,20 +25,20 @@ protected void setupEmbedDetails() {
if(warned) {
embed.setDescription(String.format(
"Warning: %d",
PenaltyConfig.getPlayerWarnings(player) + 1
PenaltyConfig.getPlayerWarnings(player)
));
}
else {
embed.setDescription(String.format(
"Strike: %d - Mute Duration: %s",
PenaltyConfig.getPlayerStrikes(player) + severity,
PenaltyConfig.getPlayerStrikes(player),
PenaltyConfig.getAutoMuteDuration(player)
));
}

embed.setTitle("Chat Filter")
.addField("Content:", content, false)
.addField("Trigger:", String.format(DiscordConfig.getLogCensorEnabled() ? "||`%s`||" : "`%s`", trigger), true)
.addField("Trigger:", String.format("`%s`", trigger), true)
.setColor(Color.decode(DiscordConfig.getEmbedColor(LogType.CHAT)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,17 @@
public final class NameEmbed extends DiscordEmbed {

private final String trigger;
private final int severity;

public NameEmbed(JavaPlugin plugin, Player player, String content, String trigger, int severity) {
public NameEmbed(JavaPlugin plugin, Player player, String content, String trigger) {
super(plugin, player, content);
this.trigger = trigger;
this.severity = severity;
setupBaseEmbed();
}

@Override
protected void setupEmbedDetails() {
embed.setTitle("Name Filter")
.addField("Trigger:", String.format(DiscordConfig.getLogCensorEnabled() ? "||`%s`||" : "`%s`", trigger), true)
.addField("Trigger:", String.format("`%s`", trigger), true)
.setColor(Color.decode(DiscordConfig.getEmbedColor(LogType.NAME)));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,10 @@
public final class SignEmbed extends DiscordEmbed {

private final String trigger;
private final int severity;

public SignEmbed(JavaPlugin plugin, Player player, String content, String trigger, int severity) {
public SignEmbed(JavaPlugin plugin, Player player, String content, String trigger) {
super(plugin, player, content);
this.trigger = trigger;
this.severity = severity;
setupBaseEmbed();
}

Expand All @@ -29,7 +27,7 @@ protected void setupEmbedDetails() {

embed.setTitle("Sign Filter")
.addField("Content:", content, false)
.addField("Trigger:", String.format(DiscordConfig.getLogCensorEnabled() ? "||`%s`||" : "`%s`", trigger), true)
.addField("Trigger:", String.format("`%s`", trigger), true)
.setColor(Color.decode(DiscordConfig.getEmbedColor(LogType.SIGN)));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,24 +34,21 @@ public static void log(LogType logType, Player player, String content, FilterTer
webhook.setAvatarUrl(webhookIcon);


String trigger = "";
int severity = 0;
String trigger = "<TRIGGER WAS NULL>";

if(triggerFilter != null) {
if(triggerFilter != null)
trigger = triggerFilter.getName();
severity = triggerFilter.getSeverity();
}

DiscordEmbed embed;
switch (logType) {
case CHAT:
embed = new ChatEmbed(ChatGuard.getInstance(), player, content, trigger, severity, warned);
embed = new ChatEmbed(ChatGuard.getInstance(), player, content, trigger, warned);
break;
case SIGN:
embed = new SignEmbed(ChatGuard.getInstance(), player, content, trigger, severity);
embed = new SignEmbed(ChatGuard.getInstance(), player, content, trigger);
break;
case NAME:
embed = new NameEmbed(ChatGuard.getInstance(), player, content, trigger, severity);
embed = new NameEmbed(ChatGuard.getInstance(), player, content, trigger);
break;
case CAPTCHA:
embed = new CaptchaEmbed(ChatGuard.getInstance(), player, content);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,6 @@ public static void finalizeActions(LogType logType, Player player, String conten
final int severity = filterTerm.getSeverity();
final boolean shouldWarn = shouldWarn(logType, player, severity);

AudioCuePlayer.play(logType, player, false);
ConsoleLogger.log(logType, player, content);
FileLogger.log(logType, player, content);
DiscordLogger.log(logType, player, content, filterTerm, shouldWarn);

if (shouldSendFeedback(logType)) {
final String badWord = filterTerm.getName();
final String flaggedSection = trigger.getSection();
Expand All @@ -41,11 +36,15 @@ public static void finalizeActions(LogType logType, Player player, String conten

if (shouldWarn) {
PenaltyEnforcer.handleWarning(player);
return; // prevent the mute from being issued
} else {
PenaltyEnforcer.incrementStrikeTier(logType, player, severity);
PenaltyEnforcer.processMute(logType, player);
}

PenaltyEnforcer.incrementStrikeTier(logType, player, severity);
PenaltyEnforcer.processMute(logType, player);
AudioCuePlayer.play(logType, player, false);
ConsoleLogger.log(logType, player, content);
FileLogger.log(logType, player, content);
DiscordLogger.log(logType, player, content, filterTerm, shouldWarn);
}

private static boolean shouldWarn(LogType logType, Player player, int severity) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,21 @@ public static boolean isPlayerNameBlocked(Player player) {
}

private static boolean isBlocked(LogType logType, Player player, String content) {
String sanitizedContent = ContentHandler.sanitizeContent(content, FilterConfig.getWhitelist());
FilterTrigger trigger = FilterDetector.checkFilters(sanitizedContent);

if (trigger == null) {
FilterTrigger trigger = GetBlockedTrigger(content);
if(trigger == null)
return false;
}

FilterFinalizer.finalizeActions(logType, player, content, trigger);
return true;
}

public static FilterTrigger GetBlockedTrigger(String content) {
String sanitizedContent = ContentHandler.sanitizeContent(content, FilterConfig.getWhitelist());
FilterTrigger trigger = FilterDetector.checkFilters(sanitizedContent);

if (trigger == null)
return null;

return trigger;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import io.github.aleksandarharalanov.chatguard.core.config.FilterConfig;
import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterHandler;
import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterTrigger;
import io.github.aleksandarharalanov.chatguard.core.security.penalty.PenaltyEnforcer;
import io.github.aleksandarharalanov.chatguard.util.misc.ColorUtil;
import org.bukkit.entity.Player;
Expand All @@ -16,7 +17,16 @@ public void onPlayerJoin(PlayerJoinEvent event) {

// Fallback if PlayerLoginEvent fails
if (FilterConfig.getNameEnabled() && FilterHandler.isPlayerNameBlocked(player)) {
player.kickPlayer(ColorUtil.translateColorCodes("&cName contains bad words."));
// this is pretty garbage, but i cant be asked to do this properly...
FilterTrigger trigger = FilterHandler.GetBlockedTrigger(player.getName());
String filterName = trigger.getFilterTerm().getName();

player.kickPlayer(ColorUtil.translateColorCodes(
String.format(
"&cYour name contains the bad word '%s'.",
filterName
)
));
return;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.github.aleksandarharalanov.chatguard.listener.player;

import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterHandler;
import io.github.aleksandarharalanov.chatguard.core.security.filter.FilterTrigger;
import io.github.aleksandarharalanov.chatguard.core.data.IPData;
import io.github.aleksandarharalanov.chatguard.util.misc.ColorUtil;
import org.bukkit.entity.Player;
Expand All @@ -17,9 +18,18 @@ public void onPlayerLogin(PlayerLoginEvent event) {
}

if (FilterHandler.isPlayerNameBlocked(player)) {
// this is pretty garbage, but i cant be asked to do this properly...
FilterTrigger trigger = FilterHandler.GetBlockedTrigger(player.getName());
String filterName = trigger.getFilterTerm().getName();

event.disallow(
PlayerLoginEvent.Result.KICK_OTHER,
ColorUtil.translateColorCodes("&cName contains bad words.")
PlayerLoginEvent.Result.KICK_OTHER,
ColorUtil.translateColorCodes(
String.format(
"&cYour name contains the bad word '%s'.",
filterName
)
)
);
}
}
Expand Down