From 2de71f924f5703f606a0af3219e38cd610fa5f6b Mon Sep 17 00:00:00 2001 From: samo_lego <34912839+samolego@users.noreply.github.com> Date: Wed, 19 Aug 2020 23:09:13 +0200 Subject: [PATCH] More Javadoc --- .../org/samo_lego/simpleauth/SimpleAuth.java | 20 +-- .../simpleauth/storage/AuthConfig.java | 138 +++++++++++++----- .../simpleauth/storage/PlayerCache.java | 2 + .../storage/SimpleAuthDatabase.java | 43 +++++- 4 files changed, 153 insertions(+), 50 deletions(-) diff --git a/src/main/java/org/samo_lego/simpleauth/SimpleAuth.java b/src/main/java/org/samo_lego/simpleauth/SimpleAuth.java index 05d4e9a..0d49cb7 100644 --- a/src/main/java/org/samo_lego/simpleauth/SimpleAuth.java +++ b/src/main/java/org/samo_lego/simpleauth/SimpleAuth.java @@ -57,11 +57,11 @@ public class SimpleAuth implements DedicatedServerModInitializer { public static HashMap 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 diff --git a/src/main/java/org/samo_lego/simpleauth/storage/AuthConfig.java b/src/main/java/org/samo_lego/simpleauth/storage/AuthConfig.java index 3b6542e..205d2d8 100644 --- a/src/main/java/org/samo_lego/simpleauth/storage/AuthConfig.java +++ b/src/main/java/org/samo_lego/simpleauth/storage/AuthConfig.java @@ -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 wiki + */ 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 wiki + */ 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 wiki + */ 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 wiki + */ 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 wiki + */ 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 wiki + */ 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); diff --git a/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java b/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java index a4a87bc..6798294 100644 --- a/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java +++ b/src/main/java/org/samo_lego/simpleauth/storage/PlayerCache.java @@ -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 diff --git a/src/main/java/org/samo_lego/simpleauth/storage/SimpleAuthDatabase.java b/src/main/java/org/samo_lego/simpleauth/storage/SimpleAuthDatabase.java index 13832d7..fbd09ea 100644 --- a/src/main/java/org/samo_lego/simpleauth/storage/SimpleAuthDatabase.java +++ b/src/main/java/org/samo_lego/simpleauth/storage/SimpleAuthDatabase.java @@ -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));