summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Essentials/src/com/earth2me/essentials/Util.java29
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandme.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandmsg.java2
-rw-r--r--Essentials/src/com/earth2me/essentials/commands/Commandr.java2
-rw-r--r--EssentialsChat/src/com/earth2me/essentials/chat/EssentialsChatPlayerListenerLowest.java7
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)
+ }));
}
}