From f546599f7166846fffcd7dc430ff41a7e7c93189 Mon Sep 17 00:00:00 2001 From: Angelillo15 Date: Wed, 28 Dec 2022 19:56:49 +0100 Subject: [PATCH 1/2] Nickname regex configurable --- .../src/main/java/com/earth2me/essentials/ISettings.java | 2 ++ .../src/main/java/com/earth2me/essentials/Settings.java | 5 +++++ .../java/com/earth2me/essentials/commands/Commandnick.java | 2 +- Essentials/src/main/resources/config.yml | 5 +++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java index 4da7f52549b..0925b91417d 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/ISettings.java @@ -404,6 +404,8 @@ public interface ISettings extends IConf { boolean showZeroBaltop(); + String getNickRegex(); + enum KeepInvPolicy { KEEP, DELETE, diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index c0b1c618245..8dde15c42e1 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -1937,4 +1937,9 @@ public boolean isUpdateCheckEnabled() { public boolean showZeroBaltop() { return config.getBoolean("show-zero-baltop", true); } + + @Override + public String getNickRegex() { + return config.getString("nick-regex", "^[a-zA-Z_0-9§]+$"); + } } diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java index 699fef7130d..dfbcd2c110c 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandnick.java @@ -64,7 +64,7 @@ protected void updatePlayer(final Server server, final CommandSource sender, fin private String formatNickname(final User user, final String nick) throws Exception { final String newNick = user == null ? FormatUtil.replaceFormat(nick) : FormatUtil.formatString(user, "essentials.nick", nick); - if (!newNick.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$") && user != null && !user.isAuthorized("essentials.nick.allowunsafe")) { + if (!newNick.matches(ess.getSettings().getNickRegex()) && user != null && !user.isAuthorized("essentials.nick.allowunsafe")) { throw new Exception(tl("nickNamesAlpha")); } else if (getNickLength(newNick) > ess.getSettings().getMaxNickLength()) { throw new Exception(tl("nickTooLong")); diff --git a/Essentials/src/main/resources/config.yml b/Essentials/src/main/resources/config.yml index ba35a3157ad..acb154d01f5 100644 --- a/Essentials/src/main/resources/config.yml +++ b/Essentials/src/main/resources/config.yml @@ -33,6 +33,11 @@ nickname-prefix: '~' # The maximum length allowed in nicknames. The nickname prefix is not included in this. max-nick-length: 15 +# The regex pattern to use when checking the nickname change. +# If the pattern is not matched, the nickname will be rejected. +# To bypass this check, users need the essentials.nick.allowunsafe permission. +nick-regex: '^[a-zA-Z_0-9§]+$' + # A list of phrases that cannot be used in nicknames. You can include regular expressions here. # Users with essentials.nick.blacklist.bypass will be able to bypass this filter. nick-blacklist: From c3b9b5d862392e175328fb0d4cb439e6e65ffb64 Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Mon, 24 Mar 2025 12:41:29 -0400 Subject: [PATCH 2/2] Apply suggestions from code review --- .../src/main/java/com/earth2me/essentials/Settings.java | 2 +- Essentials/src/main/resources/config.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Essentials/src/main/java/com/earth2me/essentials/Settings.java b/Essentials/src/main/java/com/earth2me/essentials/Settings.java index 43e3baa1006..8980aa97b3f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Settings.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Settings.java @@ -2122,7 +2122,7 @@ public boolean showZeroBaltop() { @Override public String getNickRegex() { - return config.getString("nick-regex", "^[a-zA-Z_0-9§]+$"); + return config.getString("allowed-nicks-regex", "^[a-zA-Z_0-9§]+$"); } @Override diff --git a/Essentials/src/main/resources/config.yml b/Essentials/src/main/resources/config.yml index 2a8561d7956..c158f46e85b 100644 --- a/Essentials/src/main/resources/config.yml +++ b/Essentials/src/main/resources/config.yml @@ -33,10 +33,10 @@ nickname-prefix: '~' # The maximum length allowed in nicknames. The nickname prefix is not included in this. max-nick-length: 15 -# The regex pattern to use when checking the nickname change. -# If the pattern is not matched, the nickname will be rejected. -# To bypass this check, users need the essentials.nick.allowunsafe permission. -nick-regex: '^[a-zA-Z_0-9§]+$' +# The regex pattern used to determine if a requested nickname should be allowed for use. +# If the a request nickname does not matched this pattern, the nickname will be rejected. +# Users with essentials.nick.allowunsafe will be able to bypass this check. +allowed-nicks-regex: '^[a-zA-Z_0-9§]+$' # A list of phrases that cannot be used in nicknames. You can include regular expressions here. # Users with essentials.nick.blacklist.bypass will be able to bypass this filter.