Added username char checking (regex).
This commit is contained in:
parent
79ebe3962e
commit
bd595b60de
|
@ -14,6 +14,9 @@ import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import org.samo_lego.simpleauth.storage.PlayerCache;
|
import org.samo_lego.simpleauth.storage.PlayerCache;
|
||||||
|
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static net.minecraft.block.NetherPortalBlock.AXIS;
|
import static net.minecraft.block.NetherPortalBlock.AXIS;
|
||||||
import static net.minecraft.util.math.Direction.Axis.Z;
|
import static net.minecraft.util.math.Direction.Axis.Z;
|
||||||
import static org.samo_lego.simpleauth.SimpleAuth.*;
|
import static org.samo_lego.simpleauth.SimpleAuth.*;
|
||||||
|
@ -34,13 +37,23 @@ public class AuthEventHandler {
|
||||||
|
|
||||||
// Player joining the server
|
// Player joining the server
|
||||||
public static void onPlayerJoin(ServerPlayerEntity player) {
|
public static void onPlayerJoin(ServerPlayerEntity player) {
|
||||||
|
// Checking if player username is valid
|
||||||
|
String regex = config.main.usernameRegex;
|
||||||
|
|
||||||
|
Pattern pattern = Pattern.compile(regex);
|
||||||
|
Matcher matcher = pattern.matcher(player.getName().getString());
|
||||||
|
if (!matcher.matches()) {
|
||||||
|
player.networkHandler.disconnect(new LiteralText(String.format(config.lang.disallowedUsername, regex)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Checking if session is still valid
|
// Checking if session is still valid
|
||||||
String uuid = player.getUuidAsString();
|
String uuid = player.getUuidAsString();
|
||||||
|
PlayerCache playerCache = deauthenticatedUsers.getOrDefault(uuid, null);
|
||||||
if(
|
if(
|
||||||
deauthenticatedUsers.containsKey(uuid) &&
|
playerCache != null &&
|
||||||
deauthenticatedUsers.get(uuid).lastIp.equals(player.getIp()) &&
|
playerCache.lastIp.equals(player.getIp()) &&
|
||||||
deauthenticatedUsers.get(uuid).wasAuthenticated &&
|
playerCache.wasAuthenticated &&
|
||||||
deauthenticatedUsers.get(uuid).validUntil >= System.currentTimeMillis()
|
playerCache.validUntil >= System.currentTimeMillis()
|
||||||
) {
|
) {
|
||||||
deauthenticatedUsers.remove(uuid); // Makes player authenticated
|
deauthenticatedUsers.remove(uuid); // Makes player authenticated
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -58,19 +58,21 @@ public class AuthConfig {
|
||||||
// Time after which player will be kicked if not authenticated - in seconds
|
// Time after which player will be kicked if not authenticated - in seconds
|
||||||
public int delay = 60;
|
public int delay = 60;
|
||||||
// Disables registering and forces logging in with global password
|
// Disables registering and forces logging in with global password
|
||||||
|
// Visit https://github.com/samolego/SimpleAuth/wiki/Locking-server-with-global-password for more info
|
||||||
public boolean enableGlobalPassword = false;
|
public boolean enableGlobalPassword = false;
|
||||||
/* If above is true, the global password can be set with command:
|
|
||||||
`/auth setGlobalPassword <pass>`
|
|
||||||
Password will be hashed and saved.
|
|
||||||
*/
|
|
||||||
public String globalPassword = null;
|
public String globalPassword = null;
|
||||||
// Tries to rescue players if they are stuck inside a portal on logging in
|
// Tries to rescue players if they are stuck inside a portal on logging in
|
||||||
|
// Visit https://github.com/samolego/SimpleAuth/wiki/Portal-Rescue for more info
|
||||||
public boolean tryPortalRescue = true;
|
public boolean tryPortalRescue = true;
|
||||||
// Minimum and maximum length of password. Set -1 to disable max chars
|
// Minimum and maximum length of password. Set -1 to disable max chars
|
||||||
public int minPasswordChars = 4;
|
public int minPasswordChars = 4;
|
||||||
public int maxPasswordChars = -1;
|
public int maxPasswordChars = -1;
|
||||||
|
// Regex of valid playername characters. You probably don't want to change this.
|
||||||
|
// Visit https://github.com/samolego/SimpleAuth/wiki/Username-Restriction for more info
|
||||||
|
public String usernameRegex = "^[a-zA-Z0-9_]{3,16}$";
|
||||||
// How long to keep session (auto-logging in the player), in seconds
|
// How long to keep session (auto-logging in the player), in seconds
|
||||||
// Set to -1 to disable
|
// Set to -1 to disable
|
||||||
|
// Visit https://github.com/samolego/SimpleAuth/wiki/Sessions for more info
|
||||||
public int sessionTimeoutTime = 60;
|
public int sessionTimeoutTime = 60;
|
||||||
}
|
}
|
||||||
public static class LangConfig {
|
public static class LangConfig {
|
||||||
|
@ -99,6 +101,7 @@ public class AuthConfig {
|
||||||
public String successfulPortalRescue = "§aYou were rescued from nether portal successfully!";
|
public String successfulPortalRescue = "§aYou were rescued from nether portal successfully!";
|
||||||
public String maxPasswordChars = "§6Password can be at most %d characters long!";
|
public String maxPasswordChars = "§6Password can be at most %d characters long!";
|
||||||
public String minPasswordChars = "§6Password needs to be at least %d characters long!";
|
public String minPasswordChars = "§6Password needs to be at least %d characters long!";
|
||||||
|
public String disallowedUsername = "§6Invalid username characters! Allowed character regex: %s";
|
||||||
}
|
}
|
||||||
private static final Logger LOGGER = LogManager.getLogger();
|
private static final Logger LOGGER = LogManager.getLogger();
|
||||||
private static final Gson gson = new GsonBuilder()
|
private static final Gson gson = new GsonBuilder()
|
||||||
|
|
Loading…
Reference in New Issue