[Bleeding] Fix invalid characters in usernames

This commit is contained in:
unknown 2014-04-23 19:30:11 +02:00
parent ee0ebd85fc
commit 7cdf1abcf2

View file

@ -17,7 +17,7 @@ import org.bukkit.event.player.PlayerLoginEvent.Result;
public class TFM_ServerInterface public class TFM_ServerInterface
{ {
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd \'at\' HH:mm:ss z"); private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd \'at\' HH:mm:ss z");
public static final Pattern INVALID_CHARS_REGEX = Pattern.compile("[^a-zA-Z0-9\\-\\.\\_]"); public static final Pattern USERNAME_REGEX = Pattern.compile("^[\\w\\d_]{3,20}$");
public static void setOnlineMode(boolean mode) public static void setOnlineMode(boolean mode)
{ {
@ -73,15 +73,15 @@ public class TFM_ServerInterface
final UUID uuid = player.getUniqueId(); final UUID uuid = player.getUniqueId();
final String ip = event.getAddress().getHostAddress().trim(); final String ip = event.getAddress().getHostAddress().trim();
if (INVALID_CHARS_REGEX.matcher(username).find()) if (username.length() < 3 || username.length() > 20)
{ {
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Your username contains invalid characters."); event.disallow(Result.KICK_OTHER, "Your username is an invalid length (must be between 3 and 20 characters long).");
return; return;
} }
if (username.length() <= 2) if (!USERNAME_REGEX.matcher(username).find())
{ {
event.disallow(Result.KICK_OTHER, "Your username is too short (must be at least 3 characters long)."); event.disallow(PlayerLoginEvent.Result.KICK_OTHER, "Your username contains invalid characters.");
return; return;
} }