From d20519ef8bf4141cb99ffc7dd2f43783e2c23253 Mon Sep 17 00:00:00 2001 From: KHobbits Date: Thu, 22 Mar 2012 22:15:18 +0000 Subject: New Permission: essentials.chat.url Without this perm, URLs will be modified not to be links. --- Essentials/src/com/earth2me/essentials/Util.java | 29 ++++++++++++++++------ .../earth2me/essentials/commands/Commandme.java | 2 +- .../earth2me/essentials/commands/Commandmsg.java | 2 +- .../com/earth2me/essentials/commands/Commandr.java | 2 +- .../chat/EssentialsChatPlayerListenerLowest.java | 7 ++++-- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/Essentials/src/com/earth2me/essentials/Util.java b/Essentials/src/com/earth2me/essentials/Util.java index 7a6de8730..d387cad56 100644 --- a/Essentials/src/com/earth2me/essentials/Util.java +++ b/Essentials/src/com/earth2me/essentials/Util.java @@ -495,6 +495,7 @@ public class Util } return buf.toString(); } + private static transient final Pattern URL_PATTERN = Pattern.compile("^((?:(?:https?)://)?[\\w-_\\.]{2,})\\.([a-z]{2,3}(?:/\\S+)?)$"); private static transient final Pattern VANILLA_PATTERN = Pattern.compile("\u00A7+[0-9A-FK-ORa-fk-or]"); private static transient final Pattern REPLACE_PATTERN = Pattern.compile("&([0-9a-fk-or])"); private static transient final Pattern VANILLA_COLOR_PATTERN = Pattern.compile("\u00A7+[0-9A-Fa-f]"); @@ -528,7 +529,7 @@ public class Util { return null; } - return input.replace(".", ". ").replace(". ", ". "); + return URL_PATTERN.matcher(input).replaceAll("$1 $2"); } public static String formatString(final IUser user, final String permBase, final String input) @@ -546,21 +547,35 @@ public class Util { message = Util.stripColor(input, VANILLA_COLOR_PATTERN); } - if (user.isAuthorized(permBase + ".magic")) + if (user.isAuthorized(permBase + ".format")) { - message = Util.replaceColor(message, REPLACE_MAGIC_PATTERN); + message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN); } else { - message = Util.stripColor(message, VANILLA_MAGIC_PATTERN); + message = Util.stripColor(message, VANILLA_FORMAT_PATTERN); } - if (user.isAuthorized(permBase + ".format")) + return message; + } + + public static String formatMessage(final IUser user, final String permBase, final String input) + { + if (input == null) { - message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN); + return null; + } + String message = formatString(user, permBase, input); + if (user.isAuthorized(permBase + ".magic")) + { + message = Util.replaceColor(message, REPLACE_MAGIC_PATTERN); } else { - message = Util.stripColor(message, VANILLA_FORMAT_PATTERN); + message = Util.stripColor(message, VANILLA_MAGIC_PATTERN); + } + if (!user.isAuthorized(permBase + ".url")) + { + message = Util.blockURL(message); } return message; } diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandme.java b/Essentials/src/com/earth2me/essentials/commands/Commandme.java index ec2857841..4322592d4 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandme.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandme.java @@ -27,7 +27,7 @@ public class Commandme extends EssentialsCommand } String message = getFinalArg(args, 0); - message = Util.formatString(user, "essentials.chat", message); + message = Util.formatMessage(user, "essentials.chat", message); user.setDisplayNick(); ess.broadcastMessage(user, _("action", user.getDisplayName(), message)); diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java b/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java index 8a6cdad32..2e1011e3b 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandmsg.java @@ -34,7 +34,7 @@ public class Commandmsg extends EssentialsCommand { throw new Exception(_("voiceSilenced")); } - message = Util.formatString(user, "essentials.msg", message); + message = Util.formatMessage(user, "essentials.msg", message); } else { diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandr.java b/Essentials/src/com/earth2me/essentials/commands/Commandr.java index 00072fded..9b585509d 100644 --- a/Essentials/src/com/earth2me/essentials/commands/Commandr.java +++ b/Essentials/src/com/earth2me/essentials/commands/Commandr.java @@ -32,7 +32,7 @@ public class Commandr extends EssentialsCommand if (sender instanceof Player) { User user = ess.getUser(sender); - message = Util.formatString(user, "essentials.msg", message); + message = Util.formatMessage(user, "essentials.msg", message); replyTo = user; senderName = user.getDisplayName(); } diff --git a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java index 2c0906cbf..599c39dda 100644 --- a/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java +++ b/EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java @@ -37,9 +37,12 @@ public class EssentialsChatPlayerListenerLowest extends EssentialsChatPlayer /** * This listener should apply the general chat formatting only...then return control back the event handler */ - event.setMessage(Util.formatString(user, "essentials.chat", event.getMessage())); + event.setMessage(Util.formatMessage(user, "essentials.chat", event.getMessage())); String group = user.getGroup(); String world = user.getWorld().getName(); - event.setFormat(ess.getSettings().getChatFormat(group).format(new Object[] {group, world, world.substring(0, 1).toUpperCase(Locale.ENGLISH)})); + event.setFormat(ess.getSettings().getChatFormat(group).format(new Object[] + { + group, world, world.substring(0, 1).toUpperCase(Locale.ENGLISH) + })); } } -- cgit v1.2.3