More Javadoc
This commit is contained in:
parent
eb2b83f3d7
commit
2de71f924f
|
@ -57,11 +57,11 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
public static HashMap<String, PlayerCache> deauthenticatedUsers = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Checks whether player is authenticated
|
||||
* Fake players always count as authenticated
|
||||
* Checks whether player is authenticated.
|
||||
* Fake players always count as authenticated.
|
||||
*
|
||||
* @param player player that needs to be checked
|
||||
* @return false if player is de-authenticated, otherwise false
|
||||
* @return false if player is not authenticated, otherwise true
|
||||
*/
|
||||
public static boolean isAuthenticated(ServerPlayerEntity player) {
|
||||
String uuid = convertUuid(player);
|
||||
|
@ -160,7 +160,7 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
|
||||
/**
|
||||
* Gets the text which tells the player
|
||||
* to login or register, depending on account status
|
||||
* to login or register, depending on account status.
|
||||
*
|
||||
* @param player player who will get the message
|
||||
* @return LiteralText with appropriate string (login or register)
|
||||
|
@ -177,7 +177,7 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
}
|
||||
|
||||
/**
|
||||
* Authenticates player and sends the success message
|
||||
* Authenticates player and sends the success message.
|
||||
*
|
||||
* @param player player that needs to be authenticated
|
||||
* @param msg message to be send to the player
|
||||
|
@ -216,7 +216,7 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
}
|
||||
|
||||
/**
|
||||
* De-authenticates the player
|
||||
* De-authenticates the player.
|
||||
*
|
||||
* @param player player that needs to be de-authenticated
|
||||
*/
|
||||
|
@ -248,11 +248,11 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
if(!isAuthenticated(player) && player.networkHandler.getConnection().isOpen())
|
||||
player.networkHandler.disconnect(new LiteralText(SimpleAuth.config.lang.timeExpired));
|
||||
}
|
||||
}, SimpleAuth.config.main.delay * 1000);
|
||||
}, SimpleAuth.config.main.kickTime * 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether player is a fake player (from CarpetMod)
|
||||
* Checks whether player is a fake player (from CarpetMod).
|
||||
*
|
||||
* @param player player that needs to be checked
|
||||
* @return true if player is fake, otherwise false
|
||||
|
@ -263,8 +263,8 @@ public class SimpleAuth implements DedicatedServerModInitializer {
|
|||
}
|
||||
|
||||
/**
|
||||
* Teleports player to spawn or last location that is recorded
|
||||
* Last location means the location before de-authentication
|
||||
* Teleports player to spawn or last location that is recorded.
|
||||
* Last location means the location before de-authentication.
|
||||
*
|
||||
* @param player player that needs to be teleported
|
||||
* @param toSpawn whether to teleport player to spawn (provided in config) or last recorded position
|
||||
|
|
|
@ -26,41 +26,78 @@ import java.nio.charset.StandardCharsets;
|
|||
import static org.samo_lego.simpleauth.utils.SimpleLogger.logError;
|
||||
|
||||
public class AuthConfig {
|
||||
private static final Gson gson = new GsonBuilder()
|
||||
.setPrettyPrinting()
|
||||
.create();
|
||||
|
||||
// If player is not authenticated, following conditions apply
|
||||
public static class MainConfig {
|
||||
// Allows "right-clicking" on an entity (e.g. clicking on villagers)
|
||||
/**
|
||||
* Allows "right-clicking" on an entity (e.g. clicking on villagers).
|
||||
*/
|
||||
public boolean allowEntityInteract = false;
|
||||
// Maximum login tries before kicking the player from server
|
||||
// Set to -1 to allow unlimited, not recommended however
|
||||
/**
|
||||
* Maximum login tries before kicking the player from server.
|
||||
* Set to -1 to allow unlimited, not recommended however.
|
||||
*/
|
||||
public int maxLoginTries = 1;
|
||||
// Time after which player will be kicked if not authenticated - in seconds
|
||||
public int delay = 60;
|
||||
// Disables registering and forces logging in with global password
|
||||
// Visit https://github.com/samolego/SimpleAuth/wiki/Locking-server-with-global-password for more info
|
||||
/**
|
||||
* Time after which player will be kicked if not authenticated - in seconds
|
||||
*/
|
||||
public int kickTime = 60;
|
||||
/**
|
||||
* Disables registering and forces logging in with global password.
|
||||
* @see <a href="https://github.com/samolego/SimpleAuth/wiki/Locking-server-with-global-password">wiki</a>
|
||||
*/
|
||||
public boolean enableGlobalPassword = false;
|
||||
/**
|
||||
* Hashed global password.
|
||||
*/
|
||||
public String globalPassword;
|
||||
// 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
|
||||
/**
|
||||
* Tries to rescue players if they are stuck inside a portal on logging in.
|
||||
* @see <a href="https://github.com/samolego/SimpleAuth/wiki/Portal-Rescue">wiki</a>
|
||||
*/
|
||||
public boolean tryPortalRescue = true;
|
||||
// Minimum and maximum length of password. Set -1 to disable max chars
|
||||
/**
|
||||
* Minimum length of password.
|
||||
*/
|
||||
public int minPasswordChars = 4;
|
||||
/**
|
||||
* Maximum length of password.
|
||||
* Set -1 to disable.
|
||||
*/
|
||||
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
|
||||
/**
|
||||
* Regex of valid playername characters. You probably don't want to change this.
|
||||
* @see <a href="https://github.com/samolego/SimpleAuth/wiki/Username-Restriction">wiki</a>
|
||||
*/
|
||||
public String usernameRegex = "^[a-zA-Z0-9_]{3,16}$";
|
||||
// How long to keep session (auto-logging in the player), in seconds
|
||||
// Set to -1 to disable
|
||||
// Visit https://github.com/samolego/SimpleAuth/wiki/Sessions for more info
|
||||
/**
|
||||
* How long to keep session (auto-logging in the player), in seconds
|
||||
* Set to -1 to disable
|
||||
* @see <a href="https://github.com/samolego/SimpleAuth/wiki/Sessions">wiki</a>
|
||||
*/
|
||||
public int sessionTimeoutTime = 60;
|
||||
|
||||
// Should deauthenticated players fall if the login mid-air?
|
||||
/**
|
||||
* Should deauthenticated players fall if the login mid-air?
|
||||
*/
|
||||
public boolean allowFalling = false;
|
||||
|
||||
// Whether to tp player to spawn when joining (to hide coordinates)
|
||||
/**
|
||||
* Whether to tp player to spawn when joining (to hide coordinates)
|
||||
*/
|
||||
public boolean spawnOnJoin = false;
|
||||
|
||||
// Data for spawn (where deauthenticated players are teleported)
|
||||
/**
|
||||
* Data for spawn (where deauthenticated players are teleported).
|
||||
* @see <a href="https://github.com/samolego/SimpleAuth/wiki/Coordinate-Hiding">wiki</a>
|
||||
*/
|
||||
public static class WorldSpawn {
|
||||
/**
|
||||
* Dimension id, e.g. "minecraft:overworld"
|
||||
*/
|
||||
public String dimension;
|
||||
public double x;
|
||||
public double y;
|
||||
|
@ -98,40 +135,69 @@ public class AuthConfig {
|
|||
public String corruptedPlayerData = "§cYour data is probably corrupted. Please contact admin.";
|
||||
}
|
||||
public static class ExperimentalConfig {
|
||||
// Prevents player being kicked because another player with the same name has joined the server
|
||||
/**
|
||||
* Prevents player being kicked because another player with the same name has joined the server.
|
||||
*/
|
||||
public boolean disableAnotherLocationKick = true;
|
||||
// If player should be invulnerable before authentication
|
||||
/**
|
||||
* If player should be invulnerable before authentication.
|
||||
*/
|
||||
public boolean playerInvulnerable = true;
|
||||
// If player should be invisible to mobs before authentication
|
||||
/**
|
||||
* If player should be invisible to mobs before authentication.
|
||||
*/
|
||||
public boolean playerInvisible = true;
|
||||
// Allows chat (but not commands, except for /login and /register)
|
||||
/**
|
||||
* Allows chat (but not commands, except for /login and /register).
|
||||
*/
|
||||
public boolean allowChat = false;
|
||||
// Allows player movement
|
||||
/**
|
||||
* Allows player movement.
|
||||
*/
|
||||
public boolean allowMovement = false;
|
||||
// Allows block "use" - right clicking (e.g. opening a chest)
|
||||
/**
|
||||
* Allows block "use" - right clicking (e.g. opening a chest).
|
||||
*/
|
||||
public boolean allowBlockUse = false;
|
||||
// Allows mining || punching blocks
|
||||
/**
|
||||
* Allows mining or punching blocks.
|
||||
*/
|
||||
public boolean allowBlockPunch = false;
|
||||
// Allows dropping items from inventory
|
||||
/**
|
||||
* Allows dropping items from inventory.
|
||||
*/
|
||||
public boolean allowItemDrop = false;
|
||||
// Allows moving item through inventory
|
||||
/**
|
||||
* Allows moving item through inventory.
|
||||
*/
|
||||
public boolean allowItemMoving = false;
|
||||
// Allows item "use" - right click function (e.g. using a bow)
|
||||
/**
|
||||
* Allows item "use" - right click function (e.g. using a bow).
|
||||
*/
|
||||
public boolean allowItemUse = false;
|
||||
// Allows attacking mobs
|
||||
/**
|
||||
* Allows attacking mobs.
|
||||
*/
|
||||
public boolean allowEntityPunch = false;
|
||||
// Whether to use BCrypt instead of Argon2 (GLIBC_2.25 error)
|
||||
/**
|
||||
* Whether to use BCrypt instead of Argon2 (GLIBC_2.25 error).
|
||||
* @see <a href="https://github.com/samolego/SimpleAuth/wiki/GLIBC-problems">wiki</a>
|
||||
*/
|
||||
public boolean useBCryptLibrary = false;
|
||||
}
|
||||
private static final Gson gson = new GsonBuilder()
|
||||
.setPrettyPrinting()
|
||||
.create();
|
||||
|
||||
public MainConfig main = new MainConfig();
|
||||
public MainConfig.WorldSpawn worldSpawn = new MainConfig.WorldSpawn();
|
||||
public LangConfig lang = new LangConfig();
|
||||
public ExperimentalConfig experimental = new ExperimentalConfig();
|
||||
|
||||
|
||||
/**
|
||||
* Loads SimpleAuth's config file.
|
||||
*
|
||||
* @param file file to load config from
|
||||
* @return AuthConfig config object
|
||||
*/
|
||||
public static AuthConfig load(File file) {
|
||||
AuthConfig config;
|
||||
if (file.exists()) {
|
||||
|
@ -150,6 +216,12 @@ public class AuthConfig {
|
|||
|
||||
return config;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the config to the given file.
|
||||
*
|
||||
* @param file file to save config to
|
||||
*/
|
||||
public void save(File file) {
|
||||
try (Writer writer = new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8)) {
|
||||
gson.toJson(this, writer);
|
||||
|
|
|
@ -70,6 +70,8 @@ public class PlayerCache {
|
|||
if(passwordElement instanceof JsonNull) {
|
||||
if(player != null) {
|
||||
player.sendMessage(new LiteralText(config.lang.corruptedPlayerData), false);
|
||||
this.isRegistered = false;
|
||||
this.password = "";
|
||||
}
|
||||
|
||||
// This shouldn't have happened, data seems to be corrupted
|
||||
|
|
|
@ -20,7 +20,9 @@ public class SimpleAuthDatabase {
|
|||
return this.levelDBStore;
|
||||
}
|
||||
|
||||
// Connects to the DB
|
||||
/**
|
||||
* Connects to the DB.
|
||||
*/
|
||||
public void openConnection() {
|
||||
try {
|
||||
|
||||
|
@ -30,7 +32,10 @@ public class SimpleAuthDatabase {
|
|||
logError(e.getMessage());
|
||||
}
|
||||
}
|
||||
// Closing connection
|
||||
|
||||
/**
|
||||
* Closes database connection.
|
||||
*/
|
||||
public void close() {
|
||||
if (levelDBStore != null) {
|
||||
try {
|
||||
|
@ -42,13 +47,23 @@ public class SimpleAuthDatabase {
|
|||
}
|
||||
}
|
||||
|
||||
// Tells whether db connection is closed
|
||||
/**
|
||||
* Tells whether DB connection is closed.
|
||||
*
|
||||
* @return false if connection is open, otherwise false
|
||||
*/
|
||||
public boolean isClosed() {
|
||||
return levelDBStore == null;
|
||||
}
|
||||
|
||||
|
||||
// When player registers, we insert the data into DB
|
||||
/**
|
||||
* Inserts the data for the player.
|
||||
*
|
||||
* @param uuid uuid of the player to insert data for
|
||||
* @param data data to put inside database
|
||||
* @return true if operation was successful, otherwise false
|
||||
*/
|
||||
public boolean registerUser(String uuid, String data) {
|
||||
try {
|
||||
if(!this.isUserRegistered(uuid)) {
|
||||
|
@ -62,7 +77,12 @@ public class SimpleAuthDatabase {
|
|||
}
|
||||
}
|
||||
|
||||
// Checks if user is registered
|
||||
/**
|
||||
* Checks if player is registered.
|
||||
*
|
||||
* @param uuid player's uuid
|
||||
* @return true if registered, otherwise false
|
||||
*/
|
||||
public boolean isUserRegistered(String uuid) {
|
||||
try {
|
||||
return levelDBStore.get(bytes("UUID:" + uuid)) != null;
|
||||
|
@ -72,7 +92,11 @@ public class SimpleAuthDatabase {
|
|||
return false;
|
||||
}
|
||||
|
||||
// Deletes row containing the username provided
|
||||
/**
|
||||
* Deletes data for the provided uuid.
|
||||
*
|
||||
* @param uuid uuid of player to delete data for
|
||||
*/
|
||||
public void deleteUserData(String uuid) {
|
||||
try {
|
||||
levelDBStore.delete(bytes("UUID:" + uuid));
|
||||
|
@ -81,7 +105,12 @@ public class SimpleAuthDatabase {
|
|||
}
|
||||
}
|
||||
|
||||
// Updates the password of the user
|
||||
/**
|
||||
* Updates player's data.
|
||||
*
|
||||
* @param uuid uuid of the player to update data for
|
||||
* @param data data to put inside database
|
||||
*/
|
||||
public void updateUserData(String uuid, String data) {
|
||||
try {
|
||||
levelDBStore.put(bytes("UUID:" + uuid), bytes("data:" + data));
|
||||
|
|
Loading…
Reference in New Issue