New Permission: essentials.chat.url

Without this perm, URLs will be modified not to be links.
This commit is contained in:
KHobbits 2012-03-22 22:15:18 +00:00
parent 0dc1270aed
commit d20519ef8b
5 changed files with 30 additions and 12 deletions

View File

@ -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,6 +547,24 @@ public class Util
{
message = Util.stripColor(input, VANILLA_COLOR_PATTERN);
}
if (user.isAuthorized(permBase + ".format"))
{
message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN);
}
else
{
message = Util.stripColor(message, VANILLA_FORMAT_PATTERN);
}
return message;
}
public static String formatMessage(final IUser user, final String permBase, final String input)
{
if (input == null)
{
return null;
}
String message = formatString(user, permBase, input);
if (user.isAuthorized(permBase + ".magic"))
{
message = Util.replaceColor(message, REPLACE_MAGIC_PATTERN);
@ -554,13 +573,9 @@ public class Util
{
message = Util.stripColor(message, VANILLA_MAGIC_PATTERN);
}
if (user.isAuthorized(permBase + ".format"))
if (!user.isAuthorized(permBase + ".url"))
{
message = Util.replaceColor(message, REPLACE_FORMAT_PATTERN);
}
else
{
message = Util.stripColor(message, VANILLA_FORMAT_PATTERN);
message = Util.blockURL(message);
}
return message;
}

View File

@ -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));

View File

@ -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
{

View File

@ -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();
}

View File

@ -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)
}));
}
}