Add regex support to restricted users ip addresses #1227

Seems to work: https://regex101.com/r/zSp6Ke/1
@ljacqu What do you think?
This commit is contained in:
Gabriele C
2017-07-03 01:43:56 +02:00
parent b24dcfed3c
commit cd4766e0a1
3 changed files with 29 additions and 4 deletions
@@ -157,8 +157,25 @@ public class ValidationService implements Reloadable {
String ip = PlayerUtils.getPlayerIp(player);
String domain = player.getAddress().getHostName();
return restrictions.stream()
.anyMatch(restriction -> ip.equals(restriction) || domain.equalsIgnoreCase(restriction));
for(String restriction : restrictions) {
if(restriction.startsWith("regex:")) {
restriction = restriction.replace("regex:", "");
if(ip.matches(restriction)) {
return true;
}
if(domain.matches(restriction)) {
return true;
}
} else {
if(ip.equals(restriction)) {
return true;
}
if(domain.equalsIgnoreCase(restriction)) {
return true;
}
}
}
return false;
}
/**
@@ -78,9 +78,11 @@ public final class RestrictionSettings implements SettingsHolder {
@Comment({
"The restricted user feature will kick players listed below",
"if they don't match the defined IP address. Names are case-insensitive.",
"Ip addresses support regex expressions (regex:127\\.0\\.0\\..*)",
"Example:",
" AllowedRestrictedUser:",
" - playername;127.0.0.1"})
" - playername;127.0.0.1",
" - playername;regex:127\\.0\\.0\\..*"})
public static final Property<List<String>> RESTRICTED_USERS =
newLowercaseListProperty("settings.restrictions.AllowedRestrictedUser");