From 68da4115281bad99939829becde0d18f1df818aa Mon Sep 17 00:00:00 2001 From: ryanhamshire Date: Wed, 18 Mar 2015 15:49:07 -0700 Subject: [PATCH] Preventing signs with blocked IP addresses. --- .../GriefPrevention/BlockEventHandler.java | 7 +++++ .../GriefPrevention/GriefPrevention.java | 21 ++++++++++++++ .../GriefPrevention/PlayerEventHandler.java | 28 +++++++------------ 3 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/me/ryanhamshire/GriefPrevention/BlockEventHandler.java b/src/me/ryanhamshire/GriefPrevention/BlockEventHandler.java index e574ec3..cd3ba15 100644 --- a/src/me/ryanhamshire/GriefPrevention/BlockEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/BlockEventHandler.java @@ -121,6 +121,13 @@ public class BlockEventHandler implements Listener String signMessage = lines.toString(); + //prevent signs with blocked IP addresses + if(!player.hasPermission("griefprevention.spam") && GriefPrevention.instance.containsBlockedIP(signMessage)) + { + event.setCancelled(true); + return; + } + //if not empty and wasn't the same as the last sign, log it and remember it for later PlayerData playerData = this.dataStore.getPlayerData(player.getUniqueId()); if(notEmpty && playerData.lastMessage != null && !playerData.lastMessage.equals(signMessage)) diff --git a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java index 4068b5c..d079d91 100644 --- a/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java +++ b/src/me/ryanhamshire/GriefPrevention/GriefPrevention.java @@ -28,6 +28,8 @@ import java.util.UUID; import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import net.milkbowl.vault.economy.Economy; @@ -2698,4 +2700,23 @@ public class GriefPrevention extends JavaPlugin return result; } + + public boolean containsBlockedIP(String message) + { + message = message.replace("\r\n", ""); + Pattern ipAddressPattern = Pattern.compile("([0-9]{1,3}\\.){3}[0-9]{1,3}"); + Matcher matcher = ipAddressPattern.matcher(message); + + //if it looks like an IP address + if(matcher.find()) + { + //and it's not in the list of allowed IP addresses + if(!GriefPrevention.instance.config_spam_allowedIpAddresses.contains(matcher.group())) + { + return true; + } + } + + return false; + } } \ No newline at end of file diff --git a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java index 81592eb..e458881 100644 --- a/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java +++ b/src/me/ryanhamshire/GriefPrevention/PlayerEventHandler.java @@ -246,25 +246,17 @@ class PlayerEventHandler implements Listener //filter IP addresses if(!muted) { - Pattern ipAddressPattern = Pattern.compile("([0-9]{1,3}\\.){3}[0-9]{1,3}"); - Matcher matcher = ipAddressPattern.matcher(message); - - //if it looks like an IP address - if(matcher.find()) + if(GriefPrevention.instance.containsBlockedIP(message)) { - //and it's not in the list of allowed IP addresses - if(!GriefPrevention.instance.config_spam_allowedIpAddresses.contains(matcher.group())) - { - //log entry - GriefPrevention.AddLogEntry("Muted IP address from " + player.getName() + ": " + message); - - //spam notation - playerData.spamCount+=5; - spam = true; - - //block message - muted = true; - } + //log entry + GriefPrevention.AddLogEntry("Muted IP address from " + player.getName() + ": " + message); + + //spam notation + playerData.spamCount+=5; + spam = true; + + //block message + muted = true; } }