package org.starmod.net.handler; import org.starmod.net.Handler; import org.starmod.net.NetworkClient; import org.starmod.net.command.Login; public class LoginHandler implements Handler<Login> { @Override public void handle(NetworkClient client, Login cmd) { int returnCode; String playerName = cmd.getPlayerName(); System.out.println("[StarMod][Network][Login] Client " + client.getNetworkId() + " attempting to login with username: " + playerName); if (!playerName.matches("[a-zA-Z0-9_-]{3,32}")) { returnCode = Login.LoginCode.ERROR_INVALID_USERNAME.getCode(); } else { returnCode = Login.LoginCode.SUCCESS_LOGGED_IN.getCode(); } if (returnCode != Login.LoginCode.SUCCESS_LOGGED_IN.getCode()) { System.out.println("[StarMod][Network][Login] Invalid login for Client " + client.getNetworkId() + " (" + Login.LoginCode.getById(returnCode).getMessage() + ")"); } else { System.out.println("[StarMod][Network][Login] Logging in Client " + client.getNetworkId() + " with protected username: " + playerName); } Login returnLogin = new Login(cmd.getHeader(), playerName, cmd.getVersion(), cmd.getAddress(), cmd.getLoginCode(), returnCode, cmd.getUserAgent(), client.getNetworkId()); client.send(returnLogin); client.onLogin(returnLogin); } }