diff --git a/docs/commands.md b/docs/commands.md index edb4a3b9..00f4f8c6 100644 --- a/docs/commands.md +++ b/docs/commands.md @@ -1,5 +1,5 @@ - + ## AuthMe Commands You can use the following commands to use the features of AuthMe. Mandatory arguments are marked with `< >` @@ -32,7 +32,7 @@ brackets; optional arguments are enclosed in square brackets (`[ ]`).
Requires `authme.admin.firstspawn` - **/authme setfirstspawn**: Change the first player's spawn to your current position.
Requires `authme.admin.setfirstspawn` -- **/authme purge** <days>: Purge old AuthMeReloaded data longer than the specified amount of days ago. +- **/authme purge** <days> [all]: Purge old AuthMeReloaded data longer than the specified amount of days ago.
Requires `authme.admin.purge` - **/authme resetpos** <player/*>: Purge the last know position of the specified player or all of them.
Requires `authme.admin.purgelastpos` @@ -66,7 +66,7 @@ brackets; optional arguments are enclosed in square brackets (`[ ]`).
Requires `authme.player.email.add` - **/email change** <oldEmail> <newEmail>: Change an email address of your account.
Requires `authme.player.email.change` -- **/email recover** <email>: Recover your account using an Email address by sending a mail containing a new password. +- **/email recover** <email> [code]: Recover your account using an Email address by sending a mail containing a new password.
Requires `authme.player.email.recover` - **/email help** [query]: View detailed help for /email commands. - **/captcha** <captcha>: Captcha command for AuthMeReloaded. @@ -76,4 +76,4 @@ brackets; optional arguments are enclosed in square brackets (`[ ]`). --- -This page was automatically generated on the [AuthMe-Team/AuthMeReloaded repository](https://github.com/AuthMe-Team/AuthMeReloaded/tree/master/docs/) on Wed Jun 22 17:39:14 EDT 2016 +This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Sat Oct 01 23:33:39 CEST 2016 diff --git a/docs/hash_algorithms.md b/docs/hash_algorithms.md index 8c141a27..e7fd0ae3 100644 --- a/docs/hash_algorithms.md +++ b/docs/hash_algorithms.md @@ -1,5 +1,5 @@ - + ## Hash Algorithms AuthMe supports the following hash algorithms for storing your passwords safely. @@ -17,7 +17,7 @@ JOOMLA | Recommended | 65 | | | Text | 32 | MD5 | Do not use | 32 | | | None | | MD5VB | Acceptable | 56 | | | Text | 16 | MYBB | Acceptable | 32 | | | Text | 8 | Y -PBKDF2 | Does not work | 328 | | | Text | 12 | +PBKDF2 | Does not work | 332 | | | Text | 12 | PBKDF2DJANGO | Acceptable | 77 | Y | | Text | 12 | PHPBB | Acceptable | 34 | | | Text | 16 | PHPFUSION | Do not use | 64 | Y | | | | Y @@ -82,4 +82,4 @@ or bad. --- -This page was automatically generated on the [AuthMe-Team/AuthMeReloaded repository](https://github.com/AuthMe-Team/AuthMeReloaded/tree/master/docs/) on Wed Jun 22 17:39:16 EDT 2016 +This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Sat Oct 01 23:42:20 CEST 2016 diff --git a/docs/permission_nodes.md b/docs/permission_nodes.md index e501736c..61f61c3e 100644 --- a/docs/permission_nodes.md +++ b/docs/permission_nodes.md @@ -1,11 +1,12 @@ - + ## AuthMe Permission Nodes The following are the permission nodes that are currently supported by the latest dev builds. - **authme.admin.*** – Give access to all admin commands. - **authme.admin.accounts** – Administrator command to see all accounts associated with a user. +- **authme.admin.antibotmessages** – Permission to see Antibot messages. - **authme.admin.changemail** – Administrator command to set or change the email address of a user. - **authme.admin.changepassword** – Administrator command to change the password of a user. - **authme.admin.converter** – Administrator command to convert old or other data to AuthMe data. @@ -46,4 +47,4 @@ The following are the permission nodes that are currently supported by the lates --- -This page was automatically generated on the [AuthMe-Team/AuthMeReloaded repository](https://github.com/AuthMe-Team/AuthMeReloaded/tree/master/docs/) on Wed Jun 22 17:39:29 EDT 2016 +This page was automatically generated on the [AuthMe/AuthMeReloaded repository](https://github.com/AuthMe/AuthMeReloaded/tree/master/docs/) on Sun Oct 02 10:47:16 CEST 2016 diff --git a/pom.xml b/pom.xml index a399f16a..101ec119 100644 --- a/pom.xml +++ b/pom.xml @@ -367,7 +367,7 @@ org.eluder.coveralls coveralls-maven-plugin - 4.2.0 + 4.3.0 false @@ -505,7 +505,7 @@ com.zaxxer HikariCP - 2.5.1-SNAPSHOT + 2.5.1 compile diff --git a/src/main/java/fr/xephi/authme/AntiBot.java b/src/main/java/fr/xephi/authme/AntiBot.java deleted file mode 100644 index 81fd11b0..00000000 --- a/src/main/java/fr/xephi/authme/AntiBot.java +++ /dev/null @@ -1,142 +0,0 @@ -package fr.xephi.authme; - -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; -import fr.xephi.authme.permission.PermissionsManager; -import fr.xephi.authme.permission.PlayerStatePermission; -import fr.xephi.authme.settings.Settings; -import fr.xephi.authme.settings.properties.ProtectionSettings; -import fr.xephi.authme.util.BukkitService; -import org.bukkit.entity.Player; - -import javax.inject.Inject; -import java.util.concurrent.CopyOnWriteArrayList; - -import static fr.xephi.authme.util.BukkitService.TICKS_PER_MINUTE; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_SECOND; - -/** - * The AntiBot Service Management class. - */ -public class AntiBot { - - private final Settings settings; - private final Messages messages; - private final PermissionsManager permissionsManager; - private final BukkitService bukkitService; - private final CopyOnWriteArrayList antibotKicked = new CopyOnWriteArrayList(); - private final CopyOnWriteArrayList antibotPlayers = new CopyOnWriteArrayList(); - private AntiBotStatus antiBotStatus = AntiBotStatus.DISABLED; - - @Inject - AntiBot(Settings settings, Messages messages, PermissionsManager permissionsManager, - BukkitService bukkitService) { - this.settings = settings; - this.messages = messages; - this.permissionsManager = permissionsManager; - this.bukkitService = bukkitService; - - setupAntiBotService(); - } - - private void setupAntiBotService() { - if (settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)) { - bukkitService.scheduleSyncDelayedTask(new Runnable() { - @Override - public void run() { - antiBotStatus = AntiBotStatus.LISTENING; - } - }, 2 * TICKS_PER_MINUTE); - } - } - - public void overrideAntiBotStatus(boolean activated) { - if (antiBotStatus != AntiBotStatus.DISABLED) { - if (activated) { - antiBotStatus = AntiBotStatus.ACTIVE; - } else { - antiBotStatus = AntiBotStatus.LISTENING; - } - } - } - - public AntiBotStatus getAntiBotStatus() { - return antiBotStatus; - } - - public void activateAntiBot() { - antiBotStatus = AntiBotStatus.ACTIVE; - for (String s : messages.retrieve(MessageKey.ANTIBOT_AUTO_ENABLED_MESSAGE)) { - bukkitService.broadcastMessage(s); - } - - final int duration = settings.getProperty(ProtectionSettings.ANTIBOT_DURATION); - bukkitService.scheduleSyncDelayedTask(new Runnable() { - @Override - public void run() { - if (antiBotStatus == AntiBotStatus.ACTIVE) { - antiBotStatus = AntiBotStatus.LISTENING; - antibotPlayers.clear(); - antibotKicked.clear(); - for (String s : messages.retrieve(MessageKey.ANTIBOT_AUTO_DISABLED_MESSAGE)) { - bukkitService.broadcastMessage(s.replace("%m", Integer.toString(duration))); - } - } - } - }, duration * TICKS_PER_MINUTE); - } - - /** - * Handles a player joining the server and checks if AntiBot needs to be activated. - * - * @param player the player who joined the server - */ - public void handlePlayerJoin(final Player player) { - if (antiBotStatus == AntiBotStatus.ACTIVE || antiBotStatus == AntiBotStatus.DISABLED) { - return; - } - if (permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)) { - return; - } - - antibotPlayers.add(player.getName().toLowerCase()); - if (antibotPlayers.size() > settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY)) { - activateAntiBot(); - return; - } - bukkitService.scheduleSyncDelayedTask(new Runnable() { - @Override - public void run() { - antibotPlayers.remove(player.getName().toLowerCase()); - } - }, 15 * TICKS_PER_SECOND); - } - - /** - * Returns whether the player was kicked because of activated antibot. The list is reset - * when antibot is deactivated. - * - * @param name the name to check - * @return true if the given name has been kicked because of Antibot - */ - public boolean wasPlayerKicked(String name) { - return antibotKicked.contains(name.toLowerCase()); - } - - /** - * Adds a name to the list of players kicked by antibot. Should only be used when a player - * is determined to be kicked because of failed antibot verification. - * - * @param name the name to add - */ - public void addPlayerKick(String name) { - antibotKicked.addIfAbsent(name.toLowerCase()); - } - - public enum AntiBotStatus { - LISTENING, - DISABLED, - ACTIVE - } - -} diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index b8013057..eaee0347 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -5,8 +5,8 @@ import ch.jalu.injector.InjectorBuilder; import com.google.common.annotations.VisibleForTesting; import fr.xephi.authme.api.API; import fr.xephi.authme.api.NewAPI; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandHandler; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.DataFolder; @@ -21,20 +21,21 @@ import fr.xephi.authme.listener.PlayerListener16; import fr.xephi.authme.listener.PlayerListener18; import fr.xephi.authme.listener.PlayerListener19; import fr.xephi.authme.listener.ServerListener; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PermissionsSystemType; import fr.xephi.authme.security.crypts.SHA256; +import fr.xephi.authme.service.BackupService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.task.CleanupTask; import fr.xephi.authme.task.purge.PurgeService; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.GeoLiteAPI; -import fr.xephi.authme.util.MigrationService; -import fr.xephi.authme.util.Utils; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.geoip.GeoIpManager; +import fr.xephi.authme.service.MigrationService; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.Server; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -48,7 +49,7 @@ import org.bukkit.scheduler.BukkitScheduler; import java.io.File; import java.util.Date; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_MINUTE; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_MINUTE; import static fr.xephi.authme.util.Utils.isClassLoaded; /** @@ -73,7 +74,7 @@ public class AuthMe extends JavaPlugin { private DataSource database; private BukkitService bukkitService; private Injector injector; - private GeoLiteAPI geoLiteApi; + private GeoIpManager geoIpManager; private PlayerCache playerCache; /** @@ -150,7 +151,7 @@ public class AuthMe extends JavaPlugin { } // Do a backup on start - new PerformBackup(this, settings).doBackup(PerformBackup.BackupCause.START); + new BackupService(this, settings).doBackup(BackupService.BackupCause.START); // Set up Metrics MetricsManager.sendMetrics(this, settings); @@ -247,7 +248,7 @@ public class AuthMe extends JavaPlugin { permsMan = injector.getSingleton(PermissionsManager.class); bukkitService = injector.getSingleton(BukkitService.class); commandHandler = injector.getSingleton(CommandHandler.class); - geoLiteApi = injector.getSingleton(GeoLiteAPI.class); + geoIpManager = injector.getSingleton(GeoIpManager.class); // Trigger construction of API classes; they will keep track of the singleton injector.getSingleton(NewAPI.class); @@ -344,7 +345,7 @@ public class AuthMe extends JavaPlugin { // Do backup on stop if enabled if (settings != null) { - new PerformBackup(this, settings).doBackup(PerformBackup.BackupCause.STOP); + new BackupService(this, settings).doBackup(BackupService.BackupCause.STOP); } // Wait for tasks and close data source @@ -360,7 +361,7 @@ public class AuthMe extends JavaPlugin { public String replaceAllInfo(String message, Player player) { String playersOnline = Integer.toString(bukkitService.getOnlinePlayers().size()); - String ipAddress = Utils.getPlayerIp(player); + String ipAddress = PlayerUtils.getPlayerIp(player); Server server = getServer(); return message .replace("&", "\u00a7") @@ -373,7 +374,7 @@ public class AuthMe extends JavaPlugin { .replace("{SERVER}", server.getServerName()) .replace("{VERSION}", server.getBukkitVersion()) // TODO: We should cache info like this, maybe with a class that extends Player? - .replace("{COUNTRY}", geoLiteApi.getCountryName(ipAddress)); + .replace("{COUNTRY}", geoIpManager.getCountryName(ipAddress)); } diff --git a/src/main/java/fr/xephi/authme/api/API.java b/src/main/java/fr/xephi/authme/api/API.java index 0eafe3da..8073cf63 100644 --- a/src/main/java/fr/xephi/authme/api/API.java +++ b/src/main/java/fr/xephi/authme/api/API.java @@ -1,14 +1,14 @@ package fr.xephi.authme.api; import fr.xephi.authme.AuthMe; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.hooks.PluginHooks; import fr.xephi.authme.process.Management; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/api/NewAPI.java b/src/main/java/fr/xephi/authme/api/NewAPI.java index 68f973a8..d42d765d 100644 --- a/src/main/java/fr/xephi/authme/api/NewAPI.java +++ b/src/main/java/fr/xephi/authme/api/NewAPI.java @@ -1,14 +1,14 @@ package fr.xephi.authme.api; import fr.xephi.authme.AuthMe; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.hooks.PluginHooks; import fr.xephi.authme.process.Management; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/CommandService.java b/src/main/java/fr/xephi/authme/command/CommandService.java index 95965fac..bb8bbeca 100644 --- a/src/main/java/fr/xephi/authme/command/CommandService.java +++ b/src/main/java/fr/xephi/authme/command/CommandService.java @@ -1,10 +1,10 @@ package fr.xephi.authme.command; import com.github.authme.configme.properties.Property; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.settings.Settings; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.command.CommandSender; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/CommandUtils.java b/src/main/java/fr/xephi/authme/command/CommandUtils.java index 016cbce1..9ea1f5c5 100644 --- a/src/main/java/fr/xephi/authme/command/CommandUtils.java +++ b/src/main/java/fr/xephi/authme/command/CommandUtils.java @@ -1,7 +1,6 @@ package fr.xephi.authme.command; import com.google.common.collect.Lists; -import fr.xephi.authme.util.StringUtils; import java.util.ArrayList; import java.util.List; @@ -25,18 +24,6 @@ public final class CommandUtils { return command.getArguments().size(); } - /** - * Provide a textual representation of a list of labels to show it as a command. For example, a list containing - * the items ["authme", "register", "player"] will return "authme register player". - * - * @param labels The labels to format - * - * @return The space-separated labels - */ - public static String labelsToString(Iterable labels) { - return StringUtils.join(" ", labels); - } - public static String constructCommandPath(CommandDescription command) { StringBuilder sb = new StringBuilder(); String prefix = "/"; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java index 3b446a7f..f3248b56 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/AccountsCommand.java @@ -1,12 +1,11 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.StringUtils; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import javax.inject.Inject; @@ -70,7 +69,7 @@ public class AccountsCommand implements ExecutableCommand { private static void outputAccountsList(CommandSender sender, String playerName, List accountList) { sender.sendMessage("[AuthMe] " + playerName + " has " + accountList.size() + " accounts."); - String message = "[AuthMe] " + StringUtils.join(", ", accountList) + "."; + String message = "[AuthMe] " + String.join(", ", accountList) + "."; sender.sendMessage(message); } } diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java index 9dcd0479..9842b9f8 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommand.java @@ -1,17 +1,17 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.ValidationService; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.command.CommandSender; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/ConverterCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/ConverterCommand.java index a615f3ec..0cbadf2f 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/ConverterCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/ConverterCommand.java @@ -6,16 +6,16 @@ import com.google.common.collect.ImmutableMap; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; -import fr.xephi.authme.converter.Converter; -import fr.xephi.authme.converter.CrazyLoginConverter; -import fr.xephi.authme.converter.MySqlToSqlite; -import fr.xephi.authme.converter.RakamakConverter; -import fr.xephi.authme.converter.RoyalAuthConverter; -import fr.xephi.authme.converter.SqliteToSql; -import fr.xephi.authme.converter.vAuthConverter; -import fr.xephi.authme.converter.xAuthConverter; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.datasource.converter.Converter; +import fr.xephi.authme.datasource.converter.CrazyLoginConverter; +import fr.xephi.authme.datasource.converter.MySqlToSqlite; +import fr.xephi.authme.datasource.converter.RakamakConverter; +import fr.xephi.authme.datasource.converter.RoyalAuthConverter; +import fr.xephi.authme.datasource.converter.SqliteToSql; +import fr.xephi.authme.datasource.converter.vAuthConverter; +import fr.xephi.authme.datasource.converter.xAuthConverter; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/ForceLoginCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/ForceLoginCommand.java index 9928f56f..3adcad45 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/ForceLoginCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/ForceLoginCommand.java @@ -3,7 +3,7 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.process.Management; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/GetEmailCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/GetEmailCommand.java index 07ee57d3..57ff497a 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/GetEmailCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/GetEmailCommand.java @@ -1,10 +1,10 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.command.CommandSender; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/GetIpCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/GetIpCommand.java index 773f01b4..332c0c8d 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/GetIpCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/GetIpCommand.java @@ -1,7 +1,7 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.command.ExecutableCommand; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/LastLoginCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/LastLoginCommand.java index 376499fb..3c2b8cd5 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/LastLoginCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/LastLoginCommand.java @@ -1,10 +1,10 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.command.CommandSender; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommand.java index b4e9e545..ff41ddba 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommand.java @@ -2,7 +2,7 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.task.purge.PurgeService; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommand.java index ca6a0200..fa45367f 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommand.java @@ -1,10 +1,10 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.command.CommandSender; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommand.java index f4ca7cb0..784e9f4f 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommand.java @@ -1,17 +1,17 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.ValidationService; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/ReloadCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/ReloadCommand.java index e6b8009f..dc1ba638 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/ReloadCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/ReloadCommand.java @@ -8,7 +8,7 @@ import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.Reloadable; import fr.xephi.authme.initialization.SettingsDependent; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; import org.bukkit.command.CommandSender; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/SetEmailCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/SetEmailCommand.java index ebce774c..18eb29f5 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/SetEmailCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/SetEmailCommand.java @@ -1,12 +1,12 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommand.java index 64a7241f..44c30384 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommand.java @@ -1,6 +1,6 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.AntiBot; +import fr.xephi.authme.service.AntiBotService; import fr.xephi.authme.command.CommandMapper; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.command.FoundCommandResult; @@ -18,7 +18,7 @@ import java.util.List; public class SwitchAntiBotCommand implements ExecutableCommand { @Inject - private AntiBot antiBot; + private AntiBotService antiBotService; @Inject private CommandMapper commandMapper; @@ -29,7 +29,7 @@ public class SwitchAntiBotCommand implements ExecutableCommand { @Override public void executeCommand(final CommandSender sender, List arguments) { if (arguments.isEmpty()) { - sender.sendMessage("[AuthMe] AntiBot status: " + antiBot.getAntiBotStatus().name()); + sender.sendMessage("[AuthMe] AntiBot status: " + antiBotService.getAntiBotStatus().name()); return; } @@ -37,10 +37,10 @@ public class SwitchAntiBotCommand implements ExecutableCommand { // Enable or disable the mod if ("ON".equalsIgnoreCase(newState)) { - antiBot.overrideAntiBotStatus(true); + antiBotService.overrideAntiBotStatus(true); sender.sendMessage("[AuthMe] AntiBot Manual Override: enabled!"); } else if ("OFF".equalsIgnoreCase(newState)) { - antiBot.overrideAntiBotStatus(false); + antiBotService.overrideAntiBotStatus(false); sender.sendMessage("[AuthMe] AntiBot Manual Override: disabled!"); } else { sender.sendMessage(ChatColor.DARK_RED + "Invalid AntiBot mode!"); diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java index eaf14b6b..345351d9 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommand.java @@ -3,9 +3,9 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/executable/authme/VersionCommand.java b/src/main/java/fr/xephi/authme/command/executable/authme/VersionCommand.java index 86437dd7..4169940b 100644 --- a/src/main/java/fr/xephi/authme/command/executable/authme/VersionCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/authme/VersionCommand.java @@ -3,7 +3,7 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.AuthMe; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.ExecutableCommand; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/executable/captcha/CaptchaCommand.java b/src/main/java/fr/xephi/authme/command/executable/captcha/CaptchaCommand.java index 1577c7ad..178c6f05 100644 --- a/src/main/java/fr/xephi/authme/command/executable/captcha/CaptchaCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/captcha/CaptchaCommand.java @@ -1,10 +1,10 @@ package fr.xephi.authme.command.executable.captcha; -import fr.xephi.authme.cache.CaptchaManager; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.CaptchaManager; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.PlayerCommand; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.entity.Player; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommand.java b/src/main/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommand.java index 0fdbf607..bfcdbe77 100644 --- a/src/main/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommand.java @@ -1,12 +1,12 @@ package fr.xephi.authme.command.executable.changepassword; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.PlayerCommand; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; -import fr.xephi.authme.util.ValidationService; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.entity.Player; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/command/executable/email/AddEmailCommand.java b/src/main/java/fr/xephi/authme/command/executable/email/AddEmailCommand.java index 842d866d..85baa2d6 100644 --- a/src/main/java/fr/xephi/authme/command/executable/email/AddEmailCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/email/AddEmailCommand.java @@ -2,7 +2,7 @@ package fr.xephi.authme.command.executable.email; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.PlayerCommand; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java b/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java index 26b0e2f9..89138b41 100644 --- a/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/email/RecoverEmailCommand.java @@ -1,17 +1,17 @@ package fr.xephi.authme.command.executable.email; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.PlayerCommand; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.mail.SendMailSSL; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.security.PasswordSecurity; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.service.RecoveryCodeManager; +import fr.xephi.authme.service.RecoveryCodeService; import org.bukkit.entity.Player; import javax.inject.Inject; @@ -40,7 +40,7 @@ public class RecoverEmailCommand extends PlayerCommand { private SendMailSSL sendMailSsl; @Inject - private RecoveryCodeManager recoveryCodeManager; + private RecoveryCodeService recoveryCodeService; @Override public void runCommand(Player player, List arguments) { @@ -69,7 +69,7 @@ public class RecoverEmailCommand extends PlayerCommand { return; } - if (recoveryCodeManager.isRecoveryCodeNeeded()) { + if (recoveryCodeService.isRecoveryCodeNeeded()) { // Process /email recovery addr@example.com if (arguments.size() == 1) { createAndSendRecoveryCode(player, email); @@ -83,25 +83,25 @@ public class RecoverEmailCommand extends PlayerCommand { } private void createAndSendRecoveryCode(Player player, String email) { - String recoveryCode = recoveryCodeManager.generateCode(player.getName()); + String recoveryCode = recoveryCodeService.generateCode(player.getName()); sendMailSsl.sendRecoveryCode(player.getName(), email, recoveryCode); commandService.send(player, MessageKey.RECOVERY_CODE_SENT); } private void processRecoveryCode(Player player, String code, String email) { final String name = player.getName(); - if (!recoveryCodeManager.isCodeValid(name, code)) { + if (!recoveryCodeService.isCodeValid(name, code)) { commandService.send(player, MessageKey.INCORRECT_RECOVERY_CODE); return; } generateAndSendNewPassword(player, email); - recoveryCodeManager.removeCode(name); + recoveryCodeService.removeCode(name); } private void generateAndSendNewPassword(Player player, String email) { String name = player.getName(); - String thePass = RandomString.generate(commandService.getProperty(RECOVERY_PASSWORD_LENGTH)); + String thePass = RandomStringUtils.generate(commandService.getProperty(RECOVERY_PASSWORD_LENGTH)); HashedPassword hashNew = passwordSecurity.computeHash(thePass, name); dataSource.updatePassword(name, hashNew); diff --git a/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java index 0e3f055b..f49ec2db 100644 --- a/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/register/RegisterCommand.java @@ -4,10 +4,10 @@ import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.PlayerCommand; import fr.xephi.authme.mail.SendMailSSL; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; import fr.xephi.authme.security.HashAlgorithm; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.SecuritySettings; import org.bukkit.entity.Player; @@ -80,7 +80,7 @@ public class RegisterCommand extends PlayerCommand { } else if (commandService.getProperty(ENABLE_CONFIRM_EMAIL) && !email.equals(arguments.get(1))) { commandService.send(player, MessageKey.USAGE_REGISTER); } else { - String thePass = RandomString.generate(commandService.getProperty(RECOVERY_PASSWORD_LENGTH)); + String thePass = RandomStringUtils.generate(commandService.getProperty(RECOVERY_PASSWORD_LENGTH)); management.performRegister(player, thePass, email, true); } } diff --git a/src/main/java/fr/xephi/authme/command/executable/unregister/UnregisterCommand.java b/src/main/java/fr/xephi/authme/command/executable/unregister/UnregisterCommand.java index 8526e4a1..c3aaf58a 100644 --- a/src/main/java/fr/xephi/authme/command/executable/unregister/UnregisterCommand.java +++ b/src/main/java/fr/xephi/authme/command/executable/unregister/UnregisterCommand.java @@ -1,9 +1,9 @@ package fr.xephi.authme.command.executable.unregister; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.command.PlayerCommand; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/command/help/HelpProvider.java b/src/main/java/fr/xephi/authme/command/help/HelpProvider.java index 8f05d20a..55432e81 100644 --- a/src/main/java/fr/xephi/authme/command/help/HelpProvider.java +++ b/src/main/java/fr/xephi/authme/command/help/HelpProvider.java @@ -203,7 +203,7 @@ public class HelpProvider implements SettingsDependent { } lines.add(ChatColor.GOLD + helpMessagesService.getMessage(HelpMessageKey.COMMANDS) + ":"); - String parentCommandPath = CommandUtils.labelsToString(parentLabels); + String parentCommandPath = String.join(" ", parentLabels); for (CommandDescription child : command.getChildren()) { lines.add(" /" + parentCommandPath + " " + child.getLabels().get(0) + ChatColor.GRAY + ChatColor.ITALIC + ": " + child.getDescription()); diff --git a/src/main/java/fr/xephi/authme/cache/CaptchaManager.java b/src/main/java/fr/xephi/authme/data/CaptchaManager.java similarity index 96% rename from src/main/java/fr/xephi/authme/cache/CaptchaManager.java rename to src/main/java/fr/xephi/authme/data/CaptchaManager.java index f37637df..36f33a3c 100644 --- a/src/main/java/fr/xephi/authme/cache/CaptchaManager.java +++ b/src/main/java/fr/xephi/authme/data/CaptchaManager.java @@ -1,7 +1,7 @@ -package fr.xephi.authme.cache; +package fr.xephi.authme.data; import fr.xephi.authme.initialization.SettingsDependent; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.SecuritySettings; @@ -86,7 +86,7 @@ public class CaptchaManager implements SettingsDependent { * @return the generated code */ public String generateCode(String name) { - String code = RandomString.generate(captchaLength); + String code = RandomStringUtils.generate(captchaLength); captchaCodes.put(name.toLowerCase(), code); return code; } diff --git a/src/main/java/fr/xephi/authme/cache/SessionManager.java b/src/main/java/fr/xephi/authme/data/SessionManager.java similarity index 98% rename from src/main/java/fr/xephi/authme/cache/SessionManager.java rename to src/main/java/fr/xephi/authme/data/SessionManager.java index 33d3f9a6..f86f5421 100644 --- a/src/main/java/fr/xephi/authme/cache/SessionManager.java +++ b/src/main/java/fr/xephi/authme/data/SessionManager.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.cache; +package fr.xephi.authme.data; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.initialization.HasCleanup; diff --git a/src/main/java/fr/xephi/authme/cache/TempbanManager.java b/src/main/java/fr/xephi/authme/data/TempbanManager.java similarity index 95% rename from src/main/java/fr/xephi/authme/cache/TempbanManager.java rename to src/main/java/fr/xephi/authme/data/TempbanManager.java index 832c650d..e5d31ed1 100644 --- a/src/main/java/fr/xephi/authme/cache/TempbanManager.java +++ b/src/main/java/fr/xephi/authme/data/TempbanManager.java @@ -1,14 +1,14 @@ -package fr.xephi.authme.cache; +package fr.xephi.authme.data; import com.google.common.annotations.VisibleForTesting; import fr.xephi.authme.initialization.HasCleanup; import fr.xephi.authme.initialization.SettingsDependent; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.Utils; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.entity.Player; import javax.inject.Inject; @@ -108,7 +108,7 @@ public class TempbanManager implements SettingsDependent, HasCleanup { */ public void tempbanPlayer(final Player player) { if (isEnabled) { - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); final String reason = messages.retrieveSingle(MessageKey.TEMPBAN_MAX_LOGINS); final Date expires = new Date(); diff --git a/src/main/java/fr/xephi/authme/cache/auth/PlayerAuth.java b/src/main/java/fr/xephi/authme/data/auth/PlayerAuth.java similarity index 99% rename from src/main/java/fr/xephi/authme/cache/auth/PlayerAuth.java rename to src/main/java/fr/xephi/authme/data/auth/PlayerAuth.java index cdbe0c00..e4fd9230 100644 --- a/src/main/java/fr/xephi/authme/cache/auth/PlayerAuth.java +++ b/src/main/java/fr/xephi/authme/data/auth/PlayerAuth.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.cache.auth; +package fr.xephi.authme.data.auth; import fr.xephi.authme.security.crypts.HashedPassword; import org.bukkit.Location; diff --git a/src/main/java/fr/xephi/authme/cache/auth/PlayerCache.java b/src/main/java/fr/xephi/authme/data/auth/PlayerCache.java similarity index 98% rename from src/main/java/fr/xephi/authme/cache/auth/PlayerCache.java rename to src/main/java/fr/xephi/authme/data/auth/PlayerCache.java index b1352833..1ae08f8a 100644 --- a/src/main/java/fr/xephi/authme/cache/auth/PlayerCache.java +++ b/src/main/java/fr/xephi/authme/data/auth/PlayerCache.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.cache.auth; +package fr.xephi.authme.data.auth; import java.util.concurrent.ConcurrentHashMap; diff --git a/src/main/java/fr/xephi/authme/cache/backup/PlayerDataStorage.java b/src/main/java/fr/xephi/authme/data/backup/LimboPlayerStorage.java similarity index 76% rename from src/main/java/fr/xephi/authme/cache/backup/PlayerDataStorage.java rename to src/main/java/fr/xephi/authme/data/backup/LimboPlayerStorage.java index e10e88ef..1b227028 100644 --- a/src/main/java/fr/xephi/authme/cache/backup/PlayerDataStorage.java +++ b/src/main/java/fr/xephi/authme/data/backup/LimboPlayerStorage.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.cache.backup; +package fr.xephi.authme.data.backup; import com.google.common.io.Files; import com.google.gson.Gson; @@ -10,13 +10,13 @@ import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; import com.google.gson.JsonSerializer; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.limbo.PlayerData; +import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.SpawnLoader; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.util.FileUtils; -import fr.xephi.authme.util.Utils; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; @@ -30,7 +30,7 @@ import java.nio.charset.StandardCharsets; /** * Class used to store player's data (OP, flying, speed, position) to disk. */ -public class PlayerDataStorage { +public class LimboPlayerStorage { private final Gson gson; private final File cacheDir; @@ -39,8 +39,8 @@ public class PlayerDataStorage { private BukkitService bukkitService; @Inject - PlayerDataStorage(@DataFolder File dataFolder, PermissionsManager permsMan, - SpawnLoader spawnLoader, BukkitService bukkitService) { + LimboPlayerStorage(@DataFolder File dataFolder, PermissionsManager permsMan, + SpawnLoader spawnLoader, BukkitService bukkitService) { this.permissionsManager = permsMan; this.spawnLoader = spawnLoader; this.bukkitService = bukkitService; @@ -50,8 +50,8 @@ public class PlayerDataStorage { ConsoleLogger.warning("Failed to create userdata directory."); } gson = new GsonBuilder() - .registerTypeAdapter(PlayerData.class, new PlayerDataSerializer()) - .registerTypeAdapter(PlayerData.class, new PlayerDataDeserializer()) + .registerTypeAdapter(LimboPlayer.class, new LimboPlayerSerializer()) + .registerTypeAdapter(LimboPlayer.class, new LimboPlayerDeserializer()) .setPrettyPrinting() .create(); } @@ -63,8 +63,8 @@ public class PlayerDataStorage { * * @return PlayerData object if the data is exist, null otherwise. */ - public PlayerData readData(Player player) { - String id = Utils.getUUIDorName(player); + public LimboPlayer readData(Player player) { + String id = PlayerUtils.getUUIDorName(player); File file = new File(cacheDir, id + File.separator + "data.json"); if (!file.exists()) { return null; @@ -72,7 +72,7 @@ public class PlayerDataStorage { try { String str = Files.toString(file, StandardCharsets.UTF_8); - return gson.fromJson(str, PlayerData.class); + return gson.fromJson(str, LimboPlayer.class); } catch (IOException e) { ConsoleLogger.logException("Could not read player data on disk for '" + player.getName() + "'", e); return null; @@ -85,7 +85,7 @@ public class PlayerDataStorage { * @param player player to save */ public void saveData(Player player) { - String id = Utils.getUUIDorName(player); + String id = PlayerUtils.getUUIDorName(player); Location location = spawnLoader.getPlayerLocationOrSpawn(player); String group = ""; if (permissionsManager.hasGroupSupport()) { @@ -95,12 +95,12 @@ public class PlayerDataStorage { boolean canFly = player.getAllowFlight(); float walkSpeed = player.getWalkSpeed(); float flySpeed = player.getFlySpeed(); - PlayerData playerData = new PlayerData(location, operator, group, canFly, walkSpeed, flySpeed); + LimboPlayer limboPlayer = new LimboPlayer(location, operator, group, canFly, walkSpeed, flySpeed); try { File file = new File(cacheDir, id + File.separator + "data.json"); Files.createParentDirs(file); Files.touch(file); - Files.write(gson.toJson(playerData), file, StandardCharsets.UTF_8); + Files.write(gson.toJson(limboPlayer), file, StandardCharsets.UTF_8); } catch (IOException e) { ConsoleLogger.logException("Failed to write " + player.getName() + " data.", e); } @@ -113,7 +113,7 @@ public class PlayerDataStorage { * @param player player to remove */ public void removeData(Player player) { - String id = Utils.getUUIDorName(player); + String id = PlayerUtils.getUUIDorName(player); File file = new File(cacheDir, id); if (file.exists()) { FileUtils.purgeDirectory(file); @@ -131,15 +131,15 @@ public class PlayerDataStorage { * @return true if data exist, false otherwise. */ public boolean hasData(Player player) { - String id = Utils.getUUIDorName(player); + String id = PlayerUtils.getUUIDorName(player); File file = new File(cacheDir, id + File.separator + "data.json"); return file.exists(); } - private class PlayerDataDeserializer implements JsonDeserializer { + private class LimboPlayerDeserializer implements JsonDeserializer { @Override - public PlayerData deserialize(JsonElement jsonElement, Type type, - JsonDeserializationContext context) { + public LimboPlayer deserialize(JsonElement jsonElement, Type type, + JsonDeserializationContext context) { JsonObject jsonObject = jsonElement.getAsJsonObject(); if (jsonObject == null) { return null; @@ -181,18 +181,18 @@ public class PlayerDataStorage { flySpeed = e.getAsFloat(); } - return new PlayerData(loc, operator, group, canFly, walkSpeed, flySpeed); + return new LimboPlayer(loc, operator, group, canFly, walkSpeed, flySpeed); } } - private class PlayerDataSerializer implements JsonSerializer { + private class LimboPlayerSerializer implements JsonSerializer { @Override - public JsonElement serialize(PlayerData playerData, Type type, + public JsonElement serialize(LimboPlayer limboPlayer, Type type, JsonSerializationContext context) { JsonObject obj = new JsonObject(); - obj.addProperty("group", playerData.getGroup()); + obj.addProperty("group", limboPlayer.getGroup()); - Location loc = playerData.getLocation(); + Location loc = limboPlayer.getLocation(); JsonObject obj2 = new JsonObject(); obj2.addProperty("world", loc.getWorld().getName()); obj2.addProperty("x", loc.getX()); @@ -202,10 +202,10 @@ public class PlayerDataStorage { obj2.addProperty("pitch", loc.getPitch()); obj.add("location", obj2); - obj.addProperty("operator", playerData.isOperator()); - obj.addProperty("can-fly", playerData.isCanFly()); - obj.addProperty("walk-speed", playerData.getWalkSpeed()); - obj.addProperty("fly-speed", playerData.getFlySpeed()); + obj.addProperty("operator", limboPlayer.isOperator()); + obj.addProperty("can-fly", limboPlayer.isCanFly()); + obj.addProperty("walk-speed", limboPlayer.getWalkSpeed()); + obj.addProperty("fly-speed", limboPlayer.getFlySpeed()); return obj; } } diff --git a/src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java b/src/main/java/fr/xephi/authme/data/limbo/LimboCache.java similarity index 82% rename from src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java rename to src/main/java/fr/xephi/authme/data/limbo/LimboCache.java index a49408b0..82e42fba 100644 --- a/src/main/java/fr/xephi/authme/cache/limbo/LimboCache.java +++ b/src/main/java/fr/xephi/authme/data/limbo/LimboCache.java @@ -1,6 +1,6 @@ -package fr.xephi.authme.cache.limbo; +package fr.xephi.authme.data.limbo; -import fr.xephi.authme.cache.backup.PlayerDataStorage; +import fr.xephi.authme.data.backup.LimboPlayerStorage; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SpawnLoader; @@ -16,24 +16,24 @@ import java.util.concurrent.ConcurrentHashMap; import static com.google.common.base.Preconditions.checkNotNull; /** - * Manages all {@link PlayerData} instances. + * Manages all {@link LimboPlayer} instances. */ public class LimboCache { - private final Map cache = new ConcurrentHashMap<>(); + private final Map cache = new ConcurrentHashMap<>(); - private PlayerDataStorage playerDataStorage; + private LimboPlayerStorage limboPlayerStorage; private Settings settings; private PermissionsManager permissionsManager; private SpawnLoader spawnLoader; @Inject LimboCache(Settings settings, PermissionsManager permissionsManager, - SpawnLoader spawnLoader, PlayerDataStorage playerDataStorage) { + SpawnLoader spawnLoader, LimboPlayerStorage limboPlayerStorage) { this.settings = settings; this.permissionsManager = permissionsManager; this.spawnLoader = spawnLoader; - this.playerDataStorage = playerDataStorage; + this.limboPlayerStorage = limboPlayerStorage; } /** @@ -53,8 +53,8 @@ public class LimboCache { playerGroup = permissionsManager.getPrimaryGroup(player); } - if (playerDataStorage.hasData(player)) { - PlayerData cache = playerDataStorage.readData(player); + if (limboPlayerStorage.hasData(player)) { + LimboPlayer cache = limboPlayerStorage.readData(player); if (cache != null) { location = cache.getLocation(); playerGroup = cache.getGroup(); @@ -64,10 +64,10 @@ public class LimboCache { flySpeed = cache.getFlySpeed(); } } else { - playerDataStorage.saveData(player); + limboPlayerStorage.saveData(player); } - cache.put(name, new PlayerData(location, operator, playerGroup, flyEnabled, walkSpeed, flySpeed)); + cache.put(name, new LimboPlayer(location, operator, playerGroup, flyEnabled, walkSpeed, flySpeed)); } /** @@ -78,7 +78,7 @@ public class LimboCache { public void restoreData(Player player) { String lowerName = player.getName().toLowerCase(); if (cache.containsKey(lowerName)) { - PlayerData data = cache.get(lowerName); + LimboPlayer data = cache.get(lowerName); player.setOp(data.isOperator()); player.setAllowFlight(data.isCanFly()); float walkSpeed = data.getWalkSpeed(); @@ -104,7 +104,7 @@ public class LimboCache { */ public void deletePlayerData(Player player) { removeFromCache(player); - playerDataStorage.removeData(player); + limboPlayerStorage.removeData(player); } /** @@ -114,7 +114,7 @@ public class LimboCache { */ public void removeFromCache(Player player) { String name = player.getName().toLowerCase(); - PlayerData cachedPlayer = cache.remove(name); + LimboPlayer cachedPlayer = cache.remove(name); if (cachedPlayer != null) { cachedPlayer.clearTasks(); } @@ -127,7 +127,7 @@ public class LimboCache { * * @return PlayerData */ - public PlayerData getPlayerData(String name) { + public LimboPlayer getPlayerData(String name) { checkNotNull(name); return cache.get(name.toLowerCase()); } diff --git a/src/main/java/fr/xephi/authme/cache/limbo/PlayerData.java b/src/main/java/fr/xephi/authme/data/limbo/LimboPlayer.java similarity index 94% rename from src/main/java/fr/xephi/authme/cache/limbo/PlayerData.java rename to src/main/java/fr/xephi/authme/data/limbo/LimboPlayer.java index 36e641fd..d0b761f1 100644 --- a/src/main/java/fr/xephi/authme/cache/limbo/PlayerData.java +++ b/src/main/java/fr/xephi/authme/data/limbo/LimboPlayer.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.cache.limbo; +package fr.xephi.authme.data.limbo; import org.bukkit.Location; import org.bukkit.scheduler.BukkitTask; @@ -7,7 +7,7 @@ import org.bukkit.scheduler.BukkitTask; * Represents a player which is not logged in and keeps track of certain states (like OP status, flying) * which may be revoked from the player until he has logged in or registered. */ -public class PlayerData { +public class LimboPlayer { private final boolean canFly; private final boolean operator; @@ -18,8 +18,7 @@ public class PlayerData { private BukkitTask timeoutTask = null; private BukkitTask messageTask = null; - public PlayerData(Location loc, boolean operator, - String group, boolean fly, float walkSpeed, float flySpeed) { + public LimboPlayer(Location loc, boolean operator, String group, boolean fly, float walkSpeed, float flySpeed) { this.loc = loc; this.operator = operator; this.group = group; diff --git a/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java b/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java index 7032733d..ebd9299e 100644 --- a/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java +++ b/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java @@ -9,8 +9,10 @@ import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.ThreadFactoryBuilder; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.security.crypts.HashedPassword; import java.util.ArrayList; diff --git a/src/main/java/fr/xephi/authme/datasource/DataSource.java b/src/main/java/fr/xephi/authme/datasource/DataSource.java index 98e29ada..c1c79a64 100644 --- a/src/main/java/fr/xephi/authme/datasource/DataSource.java +++ b/src/main/java/fr/xephi/authme/datasource/DataSource.java @@ -1,6 +1,6 @@ package fr.xephi.authme.datasource; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.initialization.Reloadable; import fr.xephi.authme.security.crypts.HashedPassword; diff --git a/src/main/java/fr/xephi/authme/datasource/DataSourceType.java b/src/main/java/fr/xephi/authme/datasource/DataSourceType.java index 133b492f..093e88ed 100644 --- a/src/main/java/fr/xephi/authme/datasource/DataSourceType.java +++ b/src/main/java/fr/xephi/authme/datasource/DataSourceType.java @@ -7,9 +7,9 @@ public enum DataSourceType { MYSQL, - @Deprecated - FILE, + SQLITE, - SQLITE + @Deprecated + FILE } diff --git a/src/main/java/fr/xephi/authme/datasource/FlatFile.java b/src/main/java/fr/xephi/authme/datasource/FlatFile.java index 779d3640..49b5442d 100644 --- a/src/main/java/fr/xephi/authme/datasource/FlatFile.java +++ b/src/main/java/fr/xephi/authme/datasource/FlatFile.java @@ -1,8 +1,8 @@ package fr.xephi.authme.datasource; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.security.crypts.HashedPassword; import java.io.BufferedReader; diff --git a/src/main/java/fr/xephi/authme/datasource/MySQL.java b/src/main/java/fr/xephi/authme/datasource/MySQL.java index 05f22d0c..9c613ec3 100644 --- a/src/main/java/fr/xephi/authme/datasource/MySQL.java +++ b/src/main/java/fr/xephi/authme/datasource/MySQL.java @@ -4,7 +4,10 @@ import com.google.common.annotations.VisibleForTesting; import com.zaxxer.hikari.HikariDataSource; import com.zaxxer.hikari.pool.HikariPool.PoolInitializationException; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.datasource.Columns; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.security.crypts.HashedPassword; import fr.xephi.authme.security.crypts.XFBCRYPT; diff --git a/src/main/java/fr/xephi/authme/datasource/SQLite.java b/src/main/java/fr/xephi/authme/datasource/SQLite.java index 1e554671..d19c4aa2 100644 --- a/src/main/java/fr/xephi/authme/datasource/SQLite.java +++ b/src/main/java/fr/xephi/authme/datasource/SQLite.java @@ -2,7 +2,10 @@ package fr.xephi.authme.datasource; import com.google.common.annotations.VisibleForTesting; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.datasource.Columns; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.security.crypts.HashedPassword; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; diff --git a/src/main/java/fr/xephi/authme/converter/AbstractDataSourceConverter.java b/src/main/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverter.java similarity index 94% rename from src/main/java/fr/xephi/authme/converter/AbstractDataSourceConverter.java rename to src/main/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverter.java index 19be41c3..d2be7804 100644 --- a/src/main/java/fr/xephi/authme/converter/AbstractDataSourceConverter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverter.java @@ -1,10 +1,9 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceType; -import fr.xephi.authme.util.StringUtils; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; @@ -67,7 +66,7 @@ public abstract class AbstractDataSourceConverter implemen if (!skippedPlayers.isEmpty()) { logAndSendMessage(sender, "Skipped conversion for players which were already in " - + destinationType + ": " + StringUtils.join(", ", skippedPlayers)); + + destinationType + ": " + String.join(", ", skippedPlayers)); } logAndSendMessage(sender, "Database successfully converted from " + source.getType() + " to " + destinationType); diff --git a/src/main/java/fr/xephi/authme/converter/Converter.java b/src/main/java/fr/xephi/authme/datasource/converter/Converter.java similarity index 85% rename from src/main/java/fr/xephi/authme/converter/Converter.java rename to src/main/java/fr/xephi/authme/datasource/converter/Converter.java index 28f18fd9..7549bb48 100644 --- a/src/main/java/fr/xephi/authme/converter/Converter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/Converter.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import org.bukkit.command.CommandSender; diff --git a/src/main/java/fr/xephi/authme/converter/CrazyLoginConverter.java b/src/main/java/fr/xephi/authme/datasource/converter/CrazyLoginConverter.java similarity index 96% rename from src/main/java/fr/xephi/authme/converter/CrazyLoginConverter.java rename to src/main/java/fr/xephi/authme/datasource/converter/CrazyLoginConverter.java index 50cb43c1..535c0eba 100644 --- a/src/main/java/fr/xephi/authme/converter/CrazyLoginConverter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/CrazyLoginConverter.java @@ -1,7 +1,7 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.settings.Settings; diff --git a/src/main/java/fr/xephi/authme/converter/ForceFlatToSqlite.java b/src/main/java/fr/xephi/authme/datasource/converter/ForceFlatToSqlite.java similarity index 93% rename from src/main/java/fr/xephi/authme/converter/ForceFlatToSqlite.java rename to src/main/java/fr/xephi/authme/datasource/converter/ForceFlatToSqlite.java index 321ef246..a52b216b 100644 --- a/src/main/java/fr/xephi/authme/converter/ForceFlatToSqlite.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/ForceFlatToSqlite.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.FlatFile; diff --git a/src/main/java/fr/xephi/authme/converter/MySqlToSqlite.java b/src/main/java/fr/xephi/authme/datasource/converter/MySqlToSqlite.java similarity index 93% rename from src/main/java/fr/xephi/authme/converter/MySqlToSqlite.java rename to src/main/java/fr/xephi/authme/datasource/converter/MySqlToSqlite.java index 76e58f96..7b793e8b 100644 --- a/src/main/java/fr/xephi/authme/converter/MySqlToSqlite.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/MySqlToSqlite.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceType; diff --git a/src/main/java/fr/xephi/authme/converter/RakamakConverter.java b/src/main/java/fr/xephi/authme/datasource/converter/RakamakConverter.java similarity index 97% rename from src/main/java/fr/xephi/authme/converter/RakamakConverter.java rename to src/main/java/fr/xephi/authme/datasource/converter/RakamakConverter.java index 9cf6749f..eb9d904c 100644 --- a/src/main/java/fr/xephi/authme/converter/RakamakConverter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/RakamakConverter.java @@ -1,7 +1,7 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.security.PasswordSecurity; diff --git a/src/main/java/fr/xephi/authme/converter/RoyalAuthConverter.java b/src/main/java/fr/xephi/authme/datasource/converter/RoyalAuthConverter.java similarity index 92% rename from src/main/java/fr/xephi/authme/converter/RoyalAuthConverter.java rename to src/main/java/fr/xephi/authme/datasource/converter/RoyalAuthConverter.java index 49cde259..34b0d61c 100644 --- a/src/main/java/fr/xephi/authme/converter/RoyalAuthConverter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/RoyalAuthConverter.java @@ -1,8 +1,8 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -12,7 +12,7 @@ import org.bukkit.configuration.file.YamlConfiguration; import javax.inject.Inject; import java.io.File; -import static fr.xephi.authme.util.StringUtils.makePath; +import static fr.xephi.authme.util.FileUtils.makePath; public class RoyalAuthConverter implements Converter { diff --git a/src/main/java/fr/xephi/authme/converter/SqliteToSql.java b/src/main/java/fr/xephi/authme/datasource/converter/SqliteToSql.java similarity index 93% rename from src/main/java/fr/xephi/authme/converter/SqliteToSql.java rename to src/main/java/fr/xephi/authme/datasource/converter/SqliteToSql.java index fafa7e27..ce45efed 100644 --- a/src/main/java/fr/xephi/authme/converter/SqliteToSql.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/SqliteToSql.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceType; diff --git a/src/main/java/fr/xephi/authme/converter/vAuthConverter.java b/src/main/java/fr/xephi/authme/datasource/converter/vAuthConverter.java similarity index 94% rename from src/main/java/fr/xephi/authme/converter/vAuthConverter.java rename to src/main/java/fr/xephi/authme/datasource/converter/vAuthConverter.java index 9c116f02..6d3de8b7 100644 --- a/src/main/java/fr/xephi/authme/converter/vAuthConverter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/vAuthConverter.java @@ -1,7 +1,7 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.DataFolder; import org.bukkit.Bukkit; @@ -14,7 +14,7 @@ import java.io.IOException; import java.util.Scanner; import java.util.UUID; -import static fr.xephi.authme.util.StringUtils.makePath; +import static fr.xephi.authme.util.FileUtils.makePath; public class vAuthConverter implements Converter { diff --git a/src/main/java/fr/xephi/authme/converter/xAuthConverter.java b/src/main/java/fr/xephi/authme/datasource/converter/xAuthConverter.java similarity index 97% rename from src/main/java/fr/xephi/authme/converter/xAuthConverter.java rename to src/main/java/fr/xephi/authme/datasource/converter/xAuthConverter.java index 37dfc9fe..27fa6c2e 100644 --- a/src/main/java/fr/xephi/authme/converter/xAuthConverter.java +++ b/src/main/java/fr/xephi/authme/datasource/converter/xAuthConverter.java @@ -1,9 +1,9 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import de.luricos.bukkit.xAuth.database.DatabaseTables; import de.luricos.bukkit.xAuth.utils.xAuthLog; import de.luricos.bukkit.xAuth.xAuth; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.util.CollectionUtils; @@ -19,7 +19,7 @@ import java.sql.SQLException; import java.util.ArrayList; import java.util.List; -import static fr.xephi.authme.util.StringUtils.makePath; +import static fr.xephi.authme.util.FileUtils.makePath; public class xAuthConverter implements Converter { diff --git a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java b/src/main/java/fr/xephi/authme/geoip/GeoIpManager.java similarity index 95% rename from src/main/java/fr/xephi/authme/util/GeoLiteAPI.java rename to src/main/java/fr/xephi/authme/geoip/GeoIpManager.java index 050c3730..bd397a97 100644 --- a/src/main/java/fr/xephi/authme/util/GeoLiteAPI.java +++ b/src/main/java/fr/xephi/authme/geoip/GeoIpManager.java @@ -1,9 +1,10 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.geoip; import com.google.common.annotations.VisibleForTesting; import com.maxmind.geoip.LookupService; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.initialization.DataFolder; +import fr.xephi.authme.util.FileUtils; import javax.inject.Inject; import java.io.File; @@ -16,7 +17,7 @@ import java.net.URLConnection; import java.util.concurrent.TimeUnit; import java.util.zip.GZIPInputStream; -public class GeoLiteAPI { +public class GeoIpManager { private static final String LICENSE = "[LICENSE] This product uses data from the GeoLite API created by MaxMind, available at http://www.maxmind.com"; private static final String GEOIP_URL = @@ -27,14 +28,14 @@ public class GeoLiteAPI { private final File dataFile; @Inject - GeoLiteAPI(@DataFolder File dataFolder) { + GeoIpManager(@DataFolder File dataFolder) { this.dataFile = new File(dataFolder, "GeoIP.dat"); // Fires download of recent data or the initialization of the look up service isDataAvailable(); } @VisibleForTesting - GeoLiteAPI(@DataFolder File dataFolder, LookupService lookupService) { + GeoIpManager(@DataFolder File dataFolder, LookupService lookupService) { this.dataFile = dataFolder; this.lookupService = lookupService; } diff --git a/src/main/java/fr/xephi/authme/initialization/Initializer.java b/src/main/java/fr/xephi/authme/initialization/Initializer.java index 9aaba799..a7bb4c28 100644 --- a/src/main/java/fr/xephi/authme/initialization/Initializer.java +++ b/src/main/java/fr/xephi/authme/initialization/Initializer.java @@ -5,7 +5,7 @@ import com.github.authme.configme.resource.PropertyResource; import com.github.authme.configme.resource.YamlFileResource; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.CacheDataSource; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceType; @@ -14,17 +14,17 @@ import fr.xephi.authme.datasource.MySQL; import fr.xephi.authme.datasource.SQLite; import fr.xephi.authme.output.ConsoleFilter; import fr.xephi.authme.output.Log4JFilter; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SettingsMigrationService; import fr.xephi.authme.settings.properties.AuthMeSettingsRetriever; import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.util.FileUtils; -import fr.xephi.authme.util.MigrationService; +import fr.xephi.authme.service.MigrationService; import fr.xephi.authme.util.StringUtils; import org.apache.logging.log4j.LogManager; import org.bukkit.Bukkit; @@ -37,7 +37,7 @@ import java.util.List; import java.util.logging.Logger; import static fr.xephi.authme.settings.properties.EmailSettings.RECALL_PLAYERS; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_MINUTE; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_MINUTE; /** * Initializes various services. diff --git a/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java b/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java index 852f5380..079fc76a 100644 --- a/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java +++ b/src/main/java/fr/xephi/authme/initialization/OnShutdownPlayerSaver.java @@ -1,16 +1,16 @@ package fr.xephi.authme.initialization; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.backup.PlayerDataStorage; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.backup.LimboPlayerStorage; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.hooks.PluginHooks; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SpawnLoader; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -32,7 +32,7 @@ public class OnShutdownPlayerSaver { @Inject private DataSource dataSource; @Inject - private PlayerDataStorage playerDataStorage; + private LimboPlayerStorage limboPlayerStorage; @Inject private SpawnLoader spawnLoader; @Inject @@ -77,8 +77,8 @@ public class OnShutdownPlayerSaver { } if (settings.getProperty(RestrictionSettings.TELEPORT_UNAUTHED_TO_SPAWN) && !settings.getProperty(RestrictionSettings.NO_TELEPORT)) { - if (!playerDataStorage.hasData(player)) { - playerDataStorage.saveData(player); + if (!limboPlayerStorage.hasData(player)) { + limboPlayerStorage.saveData(player); } } } diff --git a/src/main/java/fr/xephi/authme/listener/FailedVerificationException.java b/src/main/java/fr/xephi/authme/listener/FailedVerificationException.java index b189fd07..0b887f92 100644 --- a/src/main/java/fr/xephi/authme/listener/FailedVerificationException.java +++ b/src/main/java/fr/xephi/authme/listener/FailedVerificationException.java @@ -1,7 +1,6 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.util.StringUtils; +import fr.xephi.authme.message.MessageKey; /** * Exception thrown when a verification has failed. @@ -27,7 +26,7 @@ public class FailedVerificationException extends Exception { @Override public String toString() { - return getClass().getSimpleName() + ": reason=" + (reason == null ? "null" : reason) - + ";args=" + (args == null ? "null" : StringUtils.join(", ", args)); + return getClass().getSimpleName() + ": reason=" + reason + + ";args=" + (args == null ? "null" : String.join(", ", args)); } } diff --git a/src/main/java/fr/xephi/authme/listener/ListenerService.java b/src/main/java/fr/xephi/authme/listener/ListenerService.java index 6c09bd2e..279bfd6c 100644 --- a/src/main/java/fr/xephi/authme/listener/ListenerService.java +++ b/src/main/java/fr/xephi/authme/listener/ListenerService.java @@ -1,12 +1,12 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.hooks.PluginHooks; import fr.xephi.authme.initialization.SettingsDependent; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.RegistrationSettings; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityEvent; diff --git a/src/main/java/fr/xephi/authme/listener/OnJoinVerifier.java b/src/main/java/fr/xephi/authme/listener/OnJoinVerifier.java index 745a1908..93783346 100644 --- a/src/main/java/fr/xephi/authme/listener/OnJoinVerifier.java +++ b/src/main/java/fr/xephi/authme/listener/OnJoinVerifier.java @@ -1,22 +1,22 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AntiBot; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.Reloadable; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerStatePermission; +import fr.xephi.authme.service.AntiBotService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.ProtectionSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.util.StringUtils; import fr.xephi.authme.util.Utils; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerLoginEvent; @@ -40,7 +40,7 @@ class OnJoinVerifier implements Reloadable { @Inject private PermissionsManager permissionsManager; @Inject - private AntiBot antiBot; + private AntiBotService antiBotService; @Inject private ValidationService validationService; @Inject @@ -50,7 +50,8 @@ class OnJoinVerifier implements Reloadable { private Pattern nicknamePattern; - OnJoinVerifier() { } + OnJoinVerifier() { + } @PostConstruct @@ -63,12 +64,15 @@ class OnJoinVerifier implements Reloadable { /** * Checks if Antibot is enabled. * - * @param playerName the name of the player (lowercase) + * @param player the player * @param isAuthAvailable whether or not the player is registered */ - public void checkAntibot(String playerName, boolean isAuthAvailable) throws FailedVerificationException { - if (antiBot.getAntiBotStatus() == AntiBot.AntiBotStatus.ACTIVE && !isAuthAvailable) { - antiBot.addPlayerKick(playerName); + public void checkAntibot(Player player, boolean isAuthAvailable) throws FailedVerificationException { + if (permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)) { + return; + } + if (antiBotService.shouldKick(isAuthAvailable)) { + antiBotService.addPlayerKick(player.getName()); throw new FailedVerificationException(MessageKey.KICK_ANTIBOT); } } @@ -105,6 +109,7 @@ class OnJoinVerifier implements Reloadable { * joining player is a VIP. * * @param event the login event to verify + * * @return true if the player's connection should be refused (i.e. the event does not need to be processed * further), false if the player is not refused */ @@ -141,7 +146,7 @@ class OnJoinVerifier implements Reloadable { * Checks that the casing in the username corresponds to the one in the database, if so configured. * * @param player the player to verify - * @param auth the auth object associated with the player + * @param auth the auth object associated with the player */ public void checkNameCasing(Player player, PlayerAuth auth) throws FailedVerificationException { if (auth != null && settings.getProperty(RegistrationSettings.PREVENT_OTHER_CASE)) { @@ -160,7 +165,7 @@ class OnJoinVerifier implements Reloadable { * Checks that the player's country is admitted. * * @param isAuthAvailable whether or not the user is registered - * @param playerIp the ip address of the player + * @param playerIp the ip address of the player */ public void checkPlayerCountry(boolean isAuthAvailable, String playerIp) throws FailedVerificationException { @@ -193,6 +198,7 @@ class OnJoinVerifier implements Reloadable { * Selects a non-VIP player to kick when a VIP player joins the server when full. * * @param onlinePlayers list of online players + * * @return the player to kick, or null if none applicable */ private Player generateKickPlayer(Collection onlinePlayers) { diff --git a/src/main/java/fr/xephi/authme/listener/PlayerListener.java b/src/main/java/fr/xephi/authme/listener/PlayerListener.java index c498e6ec..b6484fb3 100644 --- a/src/main/java/fr/xephi/authme/listener/PlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/PlayerListener.java @@ -1,19 +1,19 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AntiBot; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.process.Management; +import fr.xephi.authme.service.AntiBotService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SpawnLoader; import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.TeleportationService; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.TeleportationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -62,7 +62,7 @@ public class PlayerListener implements Listener { @Inject private DataSource dataSource; @Inject - private AntiBot antiBot; + private AntiBotService antiBotService; @Inject private Management management; @Inject @@ -218,13 +218,12 @@ public class PlayerListener implements Listener { // Fast stuff onJoinVerifier.checkSingleSession(name); onJoinVerifier.checkIsValidName(name); - + // Get the auth later as this may cause the single session check to fail // Slow stuff final PlayerAuth auth = dataSource.getAuth(name); final boolean isAuthAvailable = (auth != null); - final String lowerName = name.toLowerCase(); - onJoinVerifier.checkAntibot(lowerName, isAuthAvailable); + onJoinVerifier.checkAntibot(player, isAuthAvailable); onJoinVerifier.checkKickNonRegistered(isAuthAvailable); onJoinVerifier.checkNameCasing(player, auth); onJoinVerifier.checkPlayerCountry(isAuthAvailable, event.getAddress().getHostAddress()); @@ -234,7 +233,7 @@ public class PlayerListener implements Listener { return; } - antiBot.handlePlayerJoin(player); + antiBotService.handlePlayerJoin(); teleportationService.teleportOnJoin(player); } @@ -245,12 +244,12 @@ public class PlayerListener implements Listener { if (settings.getProperty(RegistrationSettings.REMOVE_LEAVE_MESSAGE)) { event.setQuitMessage(null); } else if (settings.getProperty(RegistrationSettings.REMOVE_UNLOGGED_LEAVE_MESSAGE)) { - if(listenerService.shouldCancelEvent(event)) { + if (listenerService.shouldCancelEvent(event)) { event.setQuitMessage(null); } } - if (antiBot.wasPlayerKicked(player.getName())) { + if (antiBotService.wasPlayerKicked(player.getName())) { return; } @@ -268,7 +267,7 @@ public class PlayerListener implements Listener { } final Player player = event.getPlayer(); - if (!antiBot.wasPlayerKicked(player.getName())) { + if (!antiBotService.wasPlayerKicked(player.getName())) { management.performQuit(player); } } diff --git a/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java b/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java index 1813ae1d..c7abf96e 100644 --- a/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java +++ b/src/main/java/fr/xephi/authme/listener/protocollib/InventoryPacketAdapter.java @@ -23,7 +23,7 @@ import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketEvent; import fr.xephi.authme.AuthMe; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; diff --git a/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java b/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java index ae373bb0..77a75ac0 100644 --- a/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java +++ b/src/main/java/fr/xephi/authme/listener/protocollib/ProtocolLibService.java @@ -3,11 +3,11 @@ package fr.xephi.authme.listener.protocollib; import ch.jalu.injector.annotations.NoFieldScan; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.initialization.SettingsDependent; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/listener/protocollib/TabCompletePacketAdapter.java b/src/main/java/fr/xephi/authme/listener/protocollib/TabCompletePacketAdapter.java index 35058731..4476f80a 100644 --- a/src/main/java/fr/xephi/authme/listener/protocollib/TabCompletePacketAdapter.java +++ b/src/main/java/fr/xephi/authme/listener/protocollib/TabCompletePacketAdapter.java @@ -8,7 +8,7 @@ import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.reflect.FieldAccessException; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; class TabCompletePacketAdapter extends PacketAdapter { diff --git a/src/main/java/fr/xephi/authme/mail/SendMailSSL.java b/src/main/java/fr/xephi/authme/mail/SendMailSSL.java index 3bd5be44..e629402f 100644 --- a/src/main/java/fr/xephi/authme/mail/SendMailSSL.java +++ b/src/main/java/fr/xephi/authme/mail/SendMailSSL.java @@ -5,7 +5,7 @@ import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.util.FileUtils; import fr.xephi.authme.util.StringUtils; import org.apache.commons.mail.EmailConstants; diff --git a/src/main/java/fr/xephi/authme/output/MessageKey.java b/src/main/java/fr/xephi/authme/message/MessageKey.java similarity index 99% rename from src/main/java/fr/xephi/authme/output/MessageKey.java rename to src/main/java/fr/xephi/authme/message/MessageKey.java index c5a7cd36..f0575227 100644 --- a/src/main/java/fr/xephi/authme/output/MessageKey.java +++ b/src/main/java/fr/xephi/authme/message/MessageKey.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.output; +package fr.xephi.authme.message; /** * Keys for translatable messages managed by {@link Messages}. diff --git a/src/main/java/fr/xephi/authme/output/Messages.java b/src/main/java/fr/xephi/authme/message/Messages.java similarity index 99% rename from src/main/java/fr/xephi/authme/output/Messages.java rename to src/main/java/fr/xephi/authme/message/Messages.java index 5c076f1a..e17ee1a1 100644 --- a/src/main/java/fr/xephi/authme/output/Messages.java +++ b/src/main/java/fr/xephi/authme/message/Messages.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.output; +package fr.xephi.authme.message; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.initialization.SettingsDependent; diff --git a/src/main/java/fr/xephi/authme/permission/AdminPermission.java b/src/main/java/fr/xephi/authme/permission/AdminPermission.java index 043ba6dc..ed5ab9f4 100644 --- a/src/main/java/fr/xephi/authme/permission/AdminPermission.java +++ b/src/main/java/fr/xephi/authme/permission/AdminPermission.java @@ -100,6 +100,11 @@ public enum AdminPermission implements PermissionNode { */ RELOAD("authme.admin.reload", DefaultPermission.OP_ONLY), + /** + * Permission to see Antibot messages. + */ + ANTIBOT_MESSAGES("authme.admin.antibotmessages", DefaultPermission.OP_ONLY), + /** * Permission to see the other accounts of the players that log in. */ diff --git a/src/main/java/fr/xephi/authme/permission/AuthGroupHandler.java b/src/main/java/fr/xephi/authme/permission/AuthGroupHandler.java index 7d2136f0..fb4bff48 100644 --- a/src/main/java/fr/xephi/authme/permission/AuthGroupHandler.java +++ b/src/main/java/fr/xephi/authme/permission/AuthGroupHandler.java @@ -1,8 +1,8 @@ package fr.xephi.authme.permission; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.cache.limbo.PlayerData; +import fr.xephi.authme.data.limbo.LimboCache; +import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.initialization.Reloadable; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.HooksSettings; @@ -72,7 +72,7 @@ public class AuthGroupHandler implements Reloadable { case LOGGED_IN: // Get the player data - PlayerData data = limboCache.getPlayerData(player.getName().toLowerCase()); + LimboPlayer data = limboCache.getPlayerData(player.getName().toLowerCase()); if (data == null) { return false; } diff --git a/src/main/java/fr/xephi/authme/process/Management.java b/src/main/java/fr/xephi/authme/process/Management.java index 9efb5e6d..be32e99e 100644 --- a/src/main/java/fr/xephi/authme/process/Management.java +++ b/src/main/java/fr/xephi/authme/process/Management.java @@ -9,7 +9,7 @@ import fr.xephi.authme.process.logout.AsynchronousLogout; import fr.xephi.authme.process.quit.AsynchronousQuit; import fr.xephi.authme.process.register.AsyncRegister; import fr.xephi.authme.process.unregister.AsynchronousUnregister; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/process/ProcessService.java b/src/main/java/fr/xephi/authme/process/ProcessService.java index 33f3eed7..575b8053 100644 --- a/src/main/java/fr/xephi/authme/process/ProcessService.java +++ b/src/main/java/fr/xephi/authme/process/ProcessService.java @@ -1,14 +1,14 @@ package fr.xephi.authme.process; import com.github.authme.configme.properties.Property; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.permission.AuthGroupHandler; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.permission.PermissionNode; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.Settings; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/main/java/fr/xephi/authme/process/SyncProcessManager.java b/src/main/java/fr/xephi/authme/process/SyncProcessManager.java index 777a957d..b8c344bf 100644 --- a/src/main/java/fr/xephi/authme/process/SyncProcessManager.java +++ b/src/main/java/fr/xephi/authme/process/SyncProcessManager.java @@ -5,7 +5,7 @@ import fr.xephi.authme.process.logout.ProcessSynchronousPlayerLogout; import fr.xephi.authme.process.quit.ProcessSyncronousPlayerQuit; import fr.xephi.authme.process.register.ProcessSyncEmailRegister; import fr.xephi.authme.process.register.ProcessSyncPasswordRegister; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import javax.inject.Inject; diff --git a/src/main/java/fr/xephi/authme/process/changepassword/AsyncChangePassword.java b/src/main/java/fr/xephi/authme/process/changepassword/AsyncChangePassword.java index 3274c2f4..12471b0e 100644 --- a/src/main/java/fr/xephi/authme/process/changepassword/AsyncChangePassword.java +++ b/src/main/java/fr/xephi/authme/process/changepassword/AsyncChangePassword.java @@ -1,10 +1,10 @@ package fr.xephi.authme.process.changepassword; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.security.PasswordSecurity; diff --git a/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java b/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java index d61d39c2..5a8a8e90 100644 --- a/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java +++ b/src/main/java/fr/xephi/authme/process/email/AsyncAddEmail.java @@ -1,10 +1,10 @@ package fr.xephi.authme.process.email; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.settings.properties.RegistrationSettings; diff --git a/src/main/java/fr/xephi/authme/process/email/AsyncChangeEmail.java b/src/main/java/fr/xephi/authme/process/email/AsyncChangeEmail.java index 3ca6a246..6bc83106 100644 --- a/src/main/java/fr/xephi/authme/process/email/AsyncChangeEmail.java +++ b/src/main/java/fr/xephi/authme/process/email/AsyncChangeEmail.java @@ -1,9 +1,9 @@ package fr.xephi.authme.process.email; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.settings.properties.RegistrationSettings; diff --git a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java index dcd7599d..5ea7ebcb 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java @@ -2,14 +2,14 @@ package fr.xephi.authme.process.join; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.SessionManager; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.SessionManager; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.events.ProtectInventoryEvent; import fr.xephi.authme.hooks.PluginHooks; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.permission.PlayerStatePermission; import fr.xephi.authme.process.AsynchronousProcess; @@ -19,9 +19,9 @@ import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.Utils; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.util.PlayerUtils; import org.apache.commons.lang.reflect.MethodUtils; import org.bukkit.GameMode; import org.bukkit.entity.LivingEntity; @@ -32,7 +32,7 @@ import org.bukkit.potion.PotionEffectType; import javax.inject.Inject; import static fr.xephi.authme.settings.properties.RestrictionSettings.PROTECT_INVENTORY_BEFORE_LOGIN; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_SECOND; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND; /** * Asynchronous process for when a player joins. @@ -67,7 +67,7 @@ public class AsynchronousJoin implements AsynchronousProcess { private BukkitService bukkitService; @Inject - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; @Inject private AsynchronousLogin asynchronousLogin; @@ -78,7 +78,7 @@ public class AsynchronousJoin implements AsynchronousProcess { public void processJoin(final Player player) { final String name = player.getName().toLowerCase(); - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); if (isPlayerUnrestricted(name)) { return; @@ -185,8 +185,8 @@ public class AsynchronousJoin implements AsynchronousProcess { }); // Timeout and message task - playerDataTaskManager.registerTimeoutTask(player); - playerDataTaskManager.registerMessageTask(name, isAuthAvailable); + limboPlayerTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerMessageTask(name, isAuthAvailable); } private boolean isPlayerUnrestricted(String name) { @@ -249,7 +249,7 @@ public class AsynchronousJoin implements AsynchronousProcess { private int countOnlinePlayersByIp(String ip) { int count = 0; for (Player player : bukkitService.getOnlinePlayers()) { - if (ip.equalsIgnoreCase(Utils.getPlayerIp(player))) { + if (ip.equalsIgnoreCase(PlayerUtils.getPlayerIp(player))) { ++count; } } diff --git a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java index b63c6ccd..ee91971b 100644 --- a/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/AsynchronousLogin.java @@ -2,15 +2,15 @@ package fr.xephi.authme.process.login; import com.google.common.annotations.VisibleForTesting; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.CaptchaManager; -import fr.xephi.authme.cache.TempbanManager; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.cache.limbo.PlayerData; +import fr.xephi.authme.data.CaptchaManager; +import fr.xephi.authme.data.TempbanManager; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; +import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.events.AuthMeAsyncPreLoginEvent; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.AdminPermission; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerPermission; @@ -24,10 +24,10 @@ import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.util.PlayerUtils; import fr.xephi.authme.util.StringUtils; -import fr.xephi.authme.util.Utils; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -71,7 +71,7 @@ public class AsynchronousLogin implements AsynchronousProcess { private TempbanManager tempbanManager; @Inject - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; AsynchronousLogin() { } @@ -120,7 +120,7 @@ public class AsynchronousLogin implements AsynchronousProcess { service.send(player, MessageKey.USER_NOT_REGISTERED); // Recreate the message task to immediately send the message again as response // and to make sure we send the right register message (password vs. email registration) - playerDataTaskManager.registerMessageTask(name, false); + limboPlayerTaskManager.registerMessageTask(name, false); return null; } @@ -130,7 +130,7 @@ public class AsynchronousLogin implements AsynchronousProcess { return null; } - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); if (hasReachedMaxLoggedInPlayersForIp(player, ip)) { service.send(player, MessageKey.ALREADY_LOGGED_IN_ERROR); return null; @@ -163,7 +163,7 @@ public class AsynchronousLogin implements AsynchronousProcess { return false; } - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); // Increase the counts here before knowing the result of the login. captchaManager.increaseCount(name); @@ -210,7 +210,7 @@ public class AsynchronousLogin implements AsynchronousProcess { private void performLogin(Player player, PlayerAuth auth) { if (player.isOnline()) { // Update auth to reflect this new login - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); auth.setRealName(player.getName()); auth.setLastLogin(System.currentTimeMillis()); auth.setIp(ip); @@ -241,9 +241,9 @@ public class AsynchronousLogin implements AsynchronousProcess { // task, we schedule it in the end // so that we can be sure, and have not to care if it might be // processed in other order. - PlayerData playerData = limboCache.getPlayerData(name); - if (playerData != null) { - playerData.clearTasks(); + LimboPlayer limboPlayer = limboCache.getPlayerData(name); + if (limboPlayer != null) { + limboPlayer.clearTasks(); } syncProcessManager.processSyncPlayerLogin(player); } else { @@ -311,7 +311,7 @@ public class AsynchronousLogin implements AsynchronousProcess { final String name = player.getName(); int count = 0; for (Player onlinePlayer : bukkitService.getOnlinePlayers()) { - if (ip.equalsIgnoreCase(Utils.getPlayerIp(onlinePlayer)) + if (ip.equalsIgnoreCase(PlayerUtils.getPlayerIp(onlinePlayer)) && !onlinePlayer.getName().equals(name) && dataSource.isLogged(onlinePlayer.getName().toLowerCase())) { ++count; diff --git a/src/main/java/fr/xephi/authme/process/login/ProcessSyncPlayerLogin.java b/src/main/java/fr/xephi/authme/process/login/ProcessSyncPlayerLogin.java index acc235db..a31f4d28 100644 --- a/src/main/java/fr/xephi/authme/process/login/ProcessSyncPlayerLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/ProcessSyncPlayerLogin.java @@ -1,9 +1,9 @@ package fr.xephi.authme.process.login; import fr.xephi.authme.AuthMe; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.cache.limbo.PlayerData; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.limbo.LimboCache; +import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.events.LoginEvent; import fr.xephi.authme.events.RestoreInventoryEvent; @@ -12,8 +12,8 @@ import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.process.SynchronousProcess; import fr.xephi.authme.service.BungeeService; import fr.xephi.authme.settings.properties.RegistrationSettings; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.TeleportationService; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.TeleportationService; import org.apache.commons.lang.reflect.MethodUtils; import org.bukkit.Bukkit; import org.bukkit.entity.LivingEntity; @@ -79,7 +79,7 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess { public void processPlayerLogin(Player player) { final String name = player.getName().toLowerCase(); - final PlayerData limbo = limboCache.getPlayerData(name); + final LimboPlayer limbo = limboCache.getPlayerData(name); // Limbo contains the State of the Player before /login if (limbo != null) { limboCache.restoreData(player); diff --git a/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java b/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java index 34a5b493..7374d738 100644 --- a/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java +++ b/src/main/java/fr/xephi/authme/process/logout/AsynchronousLogout.java @@ -1,10 +1,10 @@ package fr.xephi.authme.process.logout; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.process.SyncProcessManager; diff --git a/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java b/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java index 6b61b925..72ff935e 100644 --- a/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java +++ b/src/main/java/fr/xephi/authme/process/logout/ProcessSynchronousPlayerLogout.java @@ -1,25 +1,25 @@ package fr.xephi.authme.process.logout; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.SessionManager; +import fr.xephi.authme.data.SessionManager; import fr.xephi.authme.events.LogoutEvent; import fr.xephi.authme.listener.protocollib.ProtocolLibService; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.process.SynchronousProcess; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.TeleportationService; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.TeleportationService; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import javax.inject.Inject; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_SECOND; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND; public class ProcessSynchronousPlayerLogout implements SynchronousProcess { @@ -34,7 +34,7 @@ public class ProcessSynchronousPlayerLogout implements SynchronousProcess { private ProtocolLibService protocolLibService; @Inject - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; @Inject private SessionManager sessionManager; @@ -53,8 +53,8 @@ public class ProcessSynchronousPlayerLogout implements SynchronousProcess { protocolLibService.sendBlankInventoryPacket(player); } - playerDataTaskManager.registerTimeoutTask(player); - playerDataTaskManager.registerMessageTask(name, true); + limboPlayerTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerMessageTask(name, true); applyLogoutEffect(player); diff --git a/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java b/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java index cc7eb60f..c8f63bbd 100644 --- a/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java +++ b/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java @@ -1,9 +1,9 @@ package fr.xephi.authme.process.quit; import fr.xephi.authme.AuthMe; -import fr.xephi.authme.cache.SessionManager; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.SessionManager; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.CacheDataSource; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.process.AsynchronousProcess; @@ -11,8 +11,8 @@ import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.process.SyncProcessManager; import fr.xephi.authme.settings.SpawnLoader; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.Utils; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.util.PlayerUtils; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -63,7 +63,7 @@ public class AsynchronousQuit implements AsynchronousProcess { database.updateQuitLoc(auth); } - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); PlayerAuth auth = PlayerAuth.builder() .name(name) .realName(player.getName()) diff --git a/src/main/java/fr/xephi/authme/process/quit/ProcessSyncronousPlayerQuit.java b/src/main/java/fr/xephi/authme/process/quit/ProcessSyncronousPlayerQuit.java index 27f46071..73db67f8 100644 --- a/src/main/java/fr/xephi/authme/process/quit/ProcessSyncronousPlayerQuit.java +++ b/src/main/java/fr/xephi/authme/process/quit/ProcessSyncronousPlayerQuit.java @@ -1,7 +1,7 @@ package fr.xephi.authme.process.quit; -import fr.xephi.authme.cache.backup.PlayerDataStorage; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.backup.LimboPlayerStorage; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.process.SynchronousProcess; import org.bukkit.entity.Player; @@ -11,7 +11,7 @@ import javax.inject.Inject; public class ProcessSyncronousPlayerQuit implements SynchronousProcess { @Inject - private PlayerDataStorage playerDataStorage; + private LimboPlayerStorage limboPlayerStorage; @Inject private LimboCache limboCache; @@ -22,8 +22,8 @@ public class ProcessSyncronousPlayerQuit implements SynchronousProcess { limboCache.removeFromCache(player); } else { // Save player's data, so we could retrieve it later on player next join - if (!playerDataStorage.hasData(player)) { - playerDataStorage.saveData(player); + if (!limboPlayerStorage.hasData(player)) { + limboPlayerStorage.saveData(player); } } diff --git a/src/main/java/fr/xephi/authme/process/register/AsyncRegister.java b/src/main/java/fr/xephi/authme/process/register/AsyncRegister.java index 8be5b540..627a993b 100644 --- a/src/main/java/fr/xephi/authme/process/register/AsyncRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/AsyncRegister.java @@ -1,10 +1,10 @@ package fr.xephi.authme.process.register; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.mail.SendMailSSL; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.process.ProcessService; @@ -19,11 +19,11 @@ import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.util.PlayerUtils; import fr.xephi.authme.util.StringUtils; -import fr.xephi.authme.util.Utils; -import fr.xephi.authme.util.ValidationService; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -94,7 +94,7 @@ public class AsyncRegister implements AsynchronousProcess { } final int maxRegPerIp = service.getProperty(RestrictionSettings.MAX_REGISTRATION_PER_IP); - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); if (maxRegPerIp > 0 && !"127.0.0.1".equalsIgnoreCase(ip) && !"localhost".equalsIgnoreCase(ip) @@ -102,7 +102,7 @@ public class AsyncRegister implements AsynchronousProcess { List otherAccounts = database.getAllAuthsByIp(ip); if (otherAccounts.size() >= maxRegPerIp) { service.send(player, MessageKey.MAX_REGISTER_EXCEEDED, Integer.toString(maxRegPerIp), - Integer.toString(otherAccounts.size()), StringUtils.join(", ", otherAccounts)); + Integer.toString(otherAccounts.size()), String.join(", ", otherAccounts)); return false; } } @@ -132,7 +132,7 @@ public class AsyncRegister implements AsynchronousProcess { } final HashedPassword hashedPassword = passwordSecurity.computeHash(password, name); - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); PlayerAuth auth = PlayerAuth.builder() .name(name) .realName(player.getName()) @@ -154,7 +154,7 @@ public class AsyncRegister implements AsynchronousProcess { private void passwordRegister(final Player player, String password, boolean autoLogin) { final String name = player.getName().toLowerCase(); - final String ip = Utils.getPlayerIp(player); + final String ip = PlayerUtils.getPlayerIp(player); final HashedPassword hashedPassword = passwordSecurity.computeHash(password, name); PlayerAuth auth = PlayerAuth.builder() .name(name) diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java index cd10a69b..de77a17d 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncEmailRegister.java @@ -1,13 +1,13 @@ package fr.xephi.authme.process.register; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.process.SynchronousProcess; import fr.xephi.authme.settings.properties.HooksSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.Utils; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.entity.Player; import javax.inject.Inject; @@ -19,7 +19,7 @@ public class ProcessSyncEmailRegister implements SynchronousProcess { private ProcessService service; @Inject - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; ProcessSyncEmailRegister() { } @@ -31,11 +31,11 @@ public class ProcessSyncEmailRegister implements SynchronousProcess { } service.send(player, MessageKey.ACCOUNT_NOT_ACTIVATED); - playerDataTaskManager.registerTimeoutTask(player); - playerDataTaskManager.registerMessageTask(name, true); + limboPlayerTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerMessageTask(name, true); player.saveData(); - ConsoleLogger.fine(player.getName() + " registered " + Utils.getPlayerIp(player)); + ConsoleLogger.fine(player.getName() + " registered " + PlayerUtils.getPlayerIp(player)); } } diff --git a/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java b/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java index 2770b96e..cc190a3c 100644 --- a/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java +++ b/src/main/java/fr/xephi/authme/process/register/ProcessSyncPasswordRegister.java @@ -1,8 +1,8 @@ package fr.xephi.authme.process.register; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.data.limbo.LimboCache; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.process.SynchronousProcess; @@ -10,8 +10,8 @@ import fr.xephi.authme.service.BungeeService; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.Utils; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -31,7 +31,7 @@ public class ProcessSyncPasswordRegister implements SynchronousProcess { private LimboCache limboCache; @Inject - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; ProcessSyncPasswordRegister() { } @@ -54,8 +54,8 @@ public class ProcessSyncPasswordRegister implements SynchronousProcess { private void requestLogin(Player player) { final String name = player.getName().toLowerCase(); limboCache.updatePlayerData(player); - playerDataTaskManager.registerTimeoutTask(player); - playerDataTaskManager.registerMessageTask(name, true); + limboPlayerTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerMessageTask(name, true); if (player.isInsideVehicle() && player.getVehicle() != null) { player.getVehicle().eject(); @@ -74,7 +74,7 @@ public class ProcessSyncPasswordRegister implements SynchronousProcess { } player.saveData(); - ConsoleLogger.fine(player.getName() + " registered " + Utils.getPlayerIp(player)); + ConsoleLogger.fine(player.getName() + " registered " + PlayerUtils.getPlayerIp(player)); // Kick Player after Registration is enabled, kick the player if (service.getProperty(RegistrationSettings.FORCE_KICK_AFTER_REGISTER)) { diff --git a/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java b/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java index 5d9a0fca..7d63d055 100644 --- a/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java +++ b/src/main/java/fr/xephi/authme/process/unregister/AsynchronousUnregister.java @@ -1,11 +1,11 @@ package fr.xephi.authme.process.unregister; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.AuthGroupHandler; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.process.AsynchronousProcess; @@ -13,9 +13,9 @@ import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.TeleportationService; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.TeleportationService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; @@ -23,7 +23,7 @@ import org.bukkit.potion.PotionEffectType; import javax.inject.Inject; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_SECOND; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND; public class AsynchronousUnregister implements AsynchronousProcess { @@ -46,7 +46,7 @@ public class AsynchronousUnregister implements AsynchronousProcess { private LimboCache limboCache; @Inject - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; @Inject private TeleportationService teleportationService; @@ -114,8 +114,8 @@ public class AsynchronousUnregister implements AsynchronousProcess { limboCache.deletePlayerData(player); limboCache.addPlayerData(player); - playerDataTaskManager.registerTimeoutTask(player); - playerDataTaskManager.registerMessageTask(name, false); + limboPlayerTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerMessageTask(name, false); applyBlindEffect(player); } authGroupHandler.setGroup(player, AuthGroupType.UNREGISTERED); diff --git a/src/main/java/fr/xephi/authme/security/crypts/HexSaltedMethod.java b/src/main/java/fr/xephi/authme/security/crypts/HexSaltedMethod.java index 9f76dbbb..5ac8caf8 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/HexSaltedMethod.java +++ b/src/main/java/fr/xephi/authme/security/crypts/HexSaltedMethod.java @@ -1,6 +1,6 @@ package fr.xephi.authme.security.crypts; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.HasSalt; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.SaltType; @@ -30,7 +30,7 @@ public abstract class HexSaltedMethod implements EncryptionMethod { @Override public String generateSalt() { - return RandomString.generateHex(getSaltLength()); + return RandomStringUtils.generateHex(getSaltLength()); } @Override diff --git a/src/main/java/fr/xephi/authme/security/crypts/IPB3.java b/src/main/java/fr/xephi/authme/security/crypts/IPB3.java index 4abfe5d4..a4e62461 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/IPB3.java +++ b/src/main/java/fr/xephi/authme/security/crypts/IPB3.java @@ -1,6 +1,6 @@ package fr.xephi.authme.security.crypts; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.HasSalt; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.SaltType; @@ -19,7 +19,7 @@ public class IPB3 extends SeparateSaltMethod { @Override public String generateSalt() { - return RandomString.generateHex(5); + return RandomStringUtils.generateHex(5); } } diff --git a/src/main/java/fr/xephi/authme/security/crypts/IPB4.java b/src/main/java/fr/xephi/authme/security/crypts/IPB4.java index 0eede2a2..40ea7516 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/IPB4.java +++ b/src/main/java/fr/xephi/authme/security/crypts/IPB4.java @@ -2,7 +2,7 @@ package fr.xephi.authme.security.crypts; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.security.HashUtils; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.HasSalt; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.SaltType; @@ -44,7 +44,7 @@ public class IPB4 implements EncryptionMethod { @Override public String generateSalt() { - return RandomString.generateLowerUpper(22); + return RandomStringUtils.generateLowerUpper(22); } @Override diff --git a/src/main/java/fr/xephi/authme/security/crypts/MYBB.java b/src/main/java/fr/xephi/authme/security/crypts/MYBB.java index 32ad154a..b25f4769 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/MYBB.java +++ b/src/main/java/fr/xephi/authme/security/crypts/MYBB.java @@ -1,6 +1,6 @@ package fr.xephi.authme.security.crypts; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.HasSalt; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.SaltType; @@ -19,7 +19,7 @@ public class MYBB extends SeparateSaltMethod { @Override public String generateSalt() { - return RandomString.generateLowerUpper(8); + return RandomStringUtils.generateLowerUpper(8); } } diff --git a/src/main/java/fr/xephi/authme/security/crypts/PHPFUSION.java b/src/main/java/fr/xephi/authme/security/crypts/PHPFUSION.java index 2950fe67..905798ec 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/PHPFUSION.java +++ b/src/main/java/fr/xephi/authme/security/crypts/PHPFUSION.java @@ -1,7 +1,7 @@ package fr.xephi.authme.security.crypts; import fr.xephi.authme.security.HashUtils; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.AsciiRestricted; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.Usage; @@ -41,7 +41,7 @@ public class PHPFUSION extends SeparateSaltMethod { @Override public String generateSalt() { - return RandomString.generateHex(12); + return RandomStringUtils.generateHex(12); } diff --git a/src/main/java/fr/xephi/authme/security/crypts/SALTED2MD5.java b/src/main/java/fr/xephi/authme/security/crypts/SALTED2MD5.java index 2b683bb2..b2f22ab9 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/SALTED2MD5.java +++ b/src/main/java/fr/xephi/authme/security/crypts/SALTED2MD5.java @@ -1,6 +1,6 @@ package fr.xephi.authme.security.crypts; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.HasSalt; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.SaltType; @@ -30,7 +30,7 @@ public class SALTED2MD5 extends SeparateSaltMethod { @Override public String generateSalt() { - return RandomString.generateHex(saltLength); + return RandomStringUtils.generateHex(saltLength); } diff --git a/src/main/java/fr/xephi/authme/security/crypts/SALTEDSHA512.java b/src/main/java/fr/xephi/authme/security/crypts/SALTEDSHA512.java index d9952ee4..f0f29343 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/SALTEDSHA512.java +++ b/src/main/java/fr/xephi/authme/security/crypts/SALTEDSHA512.java @@ -1,7 +1,7 @@ package fr.xephi.authme.security.crypts; import fr.xephi.authme.security.HashUtils; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.Usage; @@ -15,6 +15,6 @@ public class SALTEDSHA512 extends SeparateSaltMethod { @Override public String generateSalt() { - return RandomString.generateHex(32); + return RandomStringUtils.generateHex(32); } } diff --git a/src/main/java/fr/xephi/authme/security/crypts/WBB3.java b/src/main/java/fr/xephi/authme/security/crypts/WBB3.java index 28e97585..546c2dc8 100644 --- a/src/main/java/fr/xephi/authme/security/crypts/WBB3.java +++ b/src/main/java/fr/xephi/authme/security/crypts/WBB3.java @@ -1,6 +1,6 @@ package fr.xephi.authme.security.crypts; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.security.crypts.description.HasSalt; import fr.xephi.authme.security.crypts.description.Recommendation; import fr.xephi.authme.security.crypts.description.SaltType; @@ -19,7 +19,7 @@ public class WBB3 extends SeparateSaltMethod { @Override public String generateSalt() { - return RandomString.generateHex(40); + return RandomStringUtils.generateHex(40); } } diff --git a/src/main/java/fr/xephi/authme/service/AntiBotService.java b/src/main/java/fr/xephi/authme/service/AntiBotService.java new file mode 100644 index 00000000..24118d40 --- /dev/null +++ b/src/main/java/fr/xephi/authme/service/AntiBotService.java @@ -0,0 +1,218 @@ +package fr.xephi.authme.service; + +import fr.xephi.authme.initialization.SettingsDependent; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; +import fr.xephi.authme.permission.AdminPermission; +import fr.xephi.authme.permission.PermissionsManager; +import fr.xephi.authme.settings.Settings; +import fr.xephi.authme.settings.properties.ProtectionSettings; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitTask; + +import javax.inject.Inject; +import java.util.concurrent.CopyOnWriteArrayList; + +import static fr.xephi.authme.service.BukkitService.TICKS_PER_MINUTE; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND; + +/** + * The AntiBot Service Management class. + */ +public class AntiBotService implements SettingsDependent { + + // Instances + private final Messages messages; + private final PermissionsManager permissionsManager; + private final BukkitService bukkitService; + + // Settings + private int duration; + private int sensibility; + private int delay; + + // Service status + private AntiBotStatus antiBotStatus; + private boolean startup; + private BukkitTask disableTask; + private int antibotPlayers; + private final CopyOnWriteArrayList antibotKicked = new CopyOnWriteArrayList<>(); + + @Inject + AntiBotService(Settings settings, Messages messages, PermissionsManager permissionsManager, + BukkitService bukkitService) { + // Instances + this.messages = messages; + this.permissionsManager = permissionsManager; + this.bukkitService = bukkitService; + // Initial status + disableTask = null; + antibotPlayers = 0; + antiBotStatus = AntiBotStatus.DISABLED; + startup = true; + // Load settings and start if required + reload(settings); + } + + @Override + public void reload(Settings settings) { + // Load settings + duration = settings.getProperty(ProtectionSettings.ANTIBOT_DURATION); + sensibility = settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY); + delay = settings.getProperty(ProtectionSettings.ANTIBOT_DELAY); + + // Stop existing protection + stopProtection(); + antiBotStatus = AntiBotStatus.DISABLED; + + // If antibot is disabled, just stop + if (!settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)) { + return; + } + + // Bot activation task + Runnable enableTask = new Runnable() { + @Override + public void run() { + antiBotStatus = AntiBotStatus.LISTENING; + } + }; + + // Delay the schedule on first start + if(startup) { + bukkitService.scheduleSyncDelayedTask(enableTask, delay * TICKS_PER_SECOND); + startup = false; + } else { + enableTask.run(); + } + } + + private void startProtection() { + // Disable existing antibot session + stopProtection(); + // Enable the new session + antiBotStatus = AntiBotStatus.ACTIVE; + + // Inform admins + for (Player player : bukkitService.getOnlinePlayers()) { + if (permissionsManager.hasPermission(player, AdminPermission.ANTIBOT_MESSAGES)) { + messages.send(player, MessageKey.ANTIBOT_AUTO_ENABLED_MESSAGE); + } + } + + // Schedule auto-disable + disableTask = bukkitService.runTaskLater(new Runnable() { + @Override + public void run() { + stopProtection(); + } + }, duration * TICKS_PER_MINUTE); + } + + private void stopProtection() { + if (antiBotStatus != AntiBotStatus.ACTIVE) { + return; + } + + // Change status + antiBotStatus = AntiBotStatus.LISTENING; + antibotPlayers = 0; + antibotKicked.clear(); + + // Cancel auto-disable task + disableTask.cancel(); + disableTask = null; + + // Inform admins + for (Player player : bukkitService.getOnlinePlayers()) { + if (permissionsManager.hasPermission(player, AdminPermission.ANTIBOT_MESSAGES)) { + messages.send(player, MessageKey.ANTIBOT_AUTO_DISABLED_MESSAGE, Integer.toString(duration)); + } + } + } + + /** + * Returns the status of the AntiBot service. + * + * @return status of the antibot service + */ + public AntiBotStatus getAntiBotStatus() { + return antiBotStatus; + } + + /** + * Allows to override the status of the protection. + * + * @param started the new protection status + */ + public void overrideAntiBotStatus(boolean started) { + if (antiBotStatus != AntiBotStatus.DISABLED) { + if (started) { + startProtection(); + } else { + stopProtection(); + } + } + } + + /** + * Handles a player joining the server and checks if AntiBot needs to be activated. + */ + public void handlePlayerJoin() { + if (antiBotStatus != AntiBotStatus.LISTENING) { + return; + } + + antibotPlayers++; + if (antibotPlayers > sensibility) { + startProtection(); + return; + } + + bukkitService.scheduleSyncDelayedTask(new Runnable() { + @Override + public void run() { + antibotPlayers--; + } + }, 5 * TICKS_PER_SECOND); + } + + /** + * Returns if a player should be kicked due to antibot service. + * + * @param isAuthAvailable if the player is registered + * @return if the player should be kicked + */ + public boolean shouldKick(boolean isAuthAvailable) { + return !isAuthAvailable && (antiBotStatus == AntiBotStatus.ACTIVE); + } + + /** + * Returns whether the player was kicked because of activated antibot. The list is reset + * when antibot is deactivated. + * + * @param name the name to check + * + * @return true if the given name has been kicked because of Antibot + */ + public boolean wasPlayerKicked(String name) { + return antibotKicked.contains(name.toLowerCase()); + } + + /** + * Adds a name to the list of players kicked by antibot. Should only be used when a player + * is determined to be kicked because of failed antibot verification. + * + * @param name the name to add + */ + public void addPlayerKick(String name) { + antibotKicked.addIfAbsent(name.toLowerCase()); + } + + public enum AntiBotStatus { + LISTENING, + DISABLED, + ACTIVE + } + +} diff --git a/src/main/java/fr/xephi/authme/PerformBackup.java b/src/main/java/fr/xephi/authme/service/BackupService.java similarity index 96% rename from src/main/java/fr/xephi/authme/PerformBackup.java rename to src/main/java/fr/xephi/authme/service/BackupService.java index 79f1bf9f..b5dfa06d 100644 --- a/src/main/java/fr/xephi/authme/PerformBackup.java +++ b/src/main/java/fr/xephi/authme/service/BackupService.java @@ -1,10 +1,11 @@ -package fr.xephi.authme; +package fr.xephi.authme.service; +import fr.xephi.authme.AuthMe; +import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.BackupSettings; import fr.xephi.authme.settings.properties.DatabaseSettings; -import fr.xephi.authme.util.StringUtils; import java.io.File; import java.io.FileInputStream; @@ -20,7 +21,7 @@ import java.util.Date; * * @author stefano */ -public class PerformBackup { +public class BackupService { private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd_HH-mm"); @@ -38,7 +39,7 @@ public class PerformBackup { * @param instance AuthMe * @param settings The plugin settings */ - public PerformBackup(AuthMe instance, Settings settings) { + public BackupService(AuthMe instance, Settings settings) { this.dataFolder = instance.getDataFolder(); this.settings = settings; this.dbName = settings.getProperty(DatabaseSettings.MYSQL_DATABASE); @@ -47,7 +48,7 @@ public class PerformBackup { this.tblname = settings.getProperty(DatabaseSettings.MYSQL_TABLE); String dateString = DATE_FORMAT.format(new Date()); - this.path = StringUtils.join(File.separator, + this.path = String.join(File.separator, instance.getDataFolder().getPath(), "backups", "backup" + dateString); } diff --git a/src/main/java/fr/xephi/authme/util/BukkitService.java b/src/main/java/fr/xephi/authme/service/BukkitService.java similarity index 99% rename from src/main/java/fr/xephi/authme/util/BukkitService.java rename to src/main/java/fr/xephi/authme/service/BukkitService.java index 72bdacf7..cd5595ff 100644 --- a/src/main/java/fr/xephi/authme/util/BukkitService.java +++ b/src/main/java/fr/xephi/authme/service/BukkitService.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; diff --git a/src/main/java/fr/xephi/authme/util/MigrationService.java b/src/main/java/fr/xephi/authme/service/MigrationService.java similarity index 96% rename from src/main/java/fr/xephi/authme/util/MigrationService.java rename to src/main/java/fr/xephi/authme/service/MigrationService.java index 7b0a32d0..3eaab887 100644 --- a/src/main/java/fr/xephi/authme/util/MigrationService.java +++ b/src/main/java/fr/xephi/authme/service/MigrationService.java @@ -1,8 +1,8 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.converter.ForceFlatToSqlite; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.datasource.converter.ForceFlatToSqlite; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.datasource.FlatFile; diff --git a/src/main/java/fr/xephi/authme/service/RecoveryCodeManager.java b/src/main/java/fr/xephi/authme/service/RecoveryCodeService.java similarity index 92% rename from src/main/java/fr/xephi/authme/service/RecoveryCodeManager.java rename to src/main/java/fr/xephi/authme/service/RecoveryCodeService.java index e37d2273..e7fa37ad 100644 --- a/src/main/java/fr/xephi/authme/service/RecoveryCodeManager.java +++ b/src/main/java/fr/xephi/authme/service/RecoveryCodeService.java @@ -2,7 +2,7 @@ package fr.xephi.authme.service; import com.google.common.annotations.VisibleForTesting; import fr.xephi.authme.initialization.SettingsDependent; -import fr.xephi.authme.security.RandomString; +import fr.xephi.authme.util.RandomStringUtils; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.SecuritySettings; @@ -16,7 +16,7 @@ import static fr.xephi.authme.util.Utils.MILLIS_PER_HOUR; /** * Manager for recovery codes. */ -public class RecoveryCodeManager implements SettingsDependent { +public class RecoveryCodeService implements SettingsDependent { private Map recoveryCodes = new ConcurrentHashMap<>(); @@ -24,7 +24,7 @@ public class RecoveryCodeManager implements SettingsDependent { private long recoveryCodeExpirationMillis; @Inject - RecoveryCodeManager(Settings settings) { + RecoveryCodeService(Settings settings) { reload(settings); } @@ -42,7 +42,7 @@ public class RecoveryCodeManager implements SettingsDependent { * @return the generated code */ public String generateCode(String player) { - String code = RandomString.generateHex(recoveryCodeLength); + String code = RandomStringUtils.generateHex(recoveryCodeLength); recoveryCodes.put(player, new ExpiringEntry(code, System.currentTimeMillis() + recoveryCodeExpirationMillis)); return code; } diff --git a/src/main/java/fr/xephi/authme/util/TeleportationService.java b/src/main/java/fr/xephi/authme/service/TeleportationService.java similarity index 96% rename from src/main/java/fr/xephi/authme/util/TeleportationService.java rename to src/main/java/fr/xephi/authme/service/TeleportationService.java index b3553515..9be5012f 100644 --- a/src/main/java/fr/xephi/authme/util/TeleportationService.java +++ b/src/main/java/fr/xephi/authme/service/TeleportationService.java @@ -1,8 +1,8 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.PlayerData; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.events.AbstractTeleportEvent; import fr.xephi.authme.events.AuthMeTeleportEvent; @@ -101,7 +101,7 @@ public class TeleportationService implements Reloadable { * @param auth corresponding PlayerAuth object * @param limbo corresponding PlayerData object */ - public void teleportOnLogin(final Player player, PlayerAuth auth, PlayerData limbo) { + public void teleportOnLogin(final Player player, PlayerAuth auth, LimboPlayer limbo) { if (settings.getProperty(RestrictionSettings.NO_TELEPORT)) { return; } diff --git a/src/main/java/fr/xephi/authme/util/ValidationService.java b/src/main/java/fr/xephi/authme/service/ValidationService.java similarity index 96% rename from src/main/java/fr/xephi/authme/util/ValidationService.java rename to src/main/java/fr/xephi/authme/service/ValidationService.java index 7225c1e0..030657ce 100644 --- a/src/main/java/fr/xephi/authme/util/ValidationService.java +++ b/src/main/java/fr/xephi/authme/service/ValidationService.java @@ -1,9 +1,10 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; import com.github.authme.configme.properties.Property; import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.geoip.GeoIpManager; import fr.xephi.authme.initialization.Reloadable; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerStatePermission; import fr.xephi.authme.settings.Settings; @@ -11,6 +12,8 @@ import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.ProtectionSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; +import fr.xephi.authme.util.CollectionUtils; +import fr.xephi.authme.util.Utils; import org.bukkit.command.CommandSender; import javax.annotation.PostConstruct; @@ -33,7 +36,7 @@ public class ValidationService implements Reloadable { @Inject private PermissionsManager permissionsManager; @Inject - private GeoLiteAPI geoLiteApi; + private GeoIpManager geoIpManager; private Pattern passwordRegex; private Set unrestrictedNames; @@ -112,7 +115,7 @@ public class ValidationService implements Reloadable { return true; } - String countryCode = geoLiteApi.getCountryCode(hostAddress); + String countryCode = geoIpManager.getCountryCode(hostAddress); return validateWhitelistAndBlacklist(countryCode, ProtectionSettings.COUNTRIES_WHITELIST, ProtectionSettings.COUNTRIES_BLACKLIST); diff --git a/src/main/java/fr/xephi/authme/settings/Settings.java b/src/main/java/fr/xephi/authme/settings/Settings.java index fc3e929c..2f5a34cc 100644 --- a/src/main/java/fr/xephi/authme/settings/Settings.java +++ b/src/main/java/fr/xephi/authme/settings/Settings.java @@ -7,7 +7,7 @@ import com.github.authme.configme.resource.PropertyResource; import com.google.common.io.Files; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.settings.properties.PluginSettings; -import fr.xephi.authme.util.StringUtils; +import fr.xephi.authme.util.FileUtils; import java.io.File; import java.io.IOException; @@ -120,7 +120,7 @@ public class Settings extends SettingsManager { } private static String buildMessagesFilePathFromCode(String language) { - return StringUtils.makePath("messages", "messages_" + language + ".yml"); + return FileUtils.makePath("messages", "messages_" + language + ".yml"); } /** diff --git a/src/main/java/fr/xephi/authme/settings/properties/ProtectionSettings.java b/src/main/java/fr/xephi/authme/settings/properties/ProtectionSettings.java index 5198a0cc..cdd760bd 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/ProtectionSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/ProtectionSettings.java @@ -42,6 +42,10 @@ public class ProtectionSettings implements SettingsHolder { public static final Property ANTIBOT_DURATION = newProperty("Protection.antiBotDuration", 10); + @Comment("Delay in seconds before the antibot activation") + public static final Property ANTIBOT_DELAY = + newProperty("Protection.antiBotDelay", 60); + private ProtectionSettings() { } diff --git a/src/main/java/fr/xephi/authme/settings/properties/PurgeSettings.java b/src/main/java/fr/xephi/authme/settings/properties/PurgeSettings.java index 01316374..f23a3eb1 100644 --- a/src/main/java/fr/xephi/authme/settings/properties/PurgeSettings.java +++ b/src/main/java/fr/xephi/authme/settings/properties/PurgeSettings.java @@ -20,7 +20,7 @@ public class PurgeSettings implements SettingsHolder { public static final Property REMOVE_PLAYER_DAT = newProperty("Purge.removePlayerDat", false); - @Comment("Do we need to remove the Essentials/users/player.yml file during purge process?") + @Comment("Do we need to remove the Essentials/userdata/player.yml file during purge process?") public static final Property REMOVE_ESSENTIALS_FILES = newProperty("Purge.removeEssentialsFile", false); diff --git a/src/main/java/fr/xephi/authme/task/PlayerDataTaskManager.java b/src/main/java/fr/xephi/authme/task/LimboPlayerTaskManager.java similarity index 78% rename from src/main/java/fr/xephi/authme/task/PlayerDataTaskManager.java rename to src/main/java/fr/xephi/authme/task/LimboPlayerTaskManager.java index b4e1846d..74b14005 100644 --- a/src/main/java/fr/xephi/authme/task/PlayerDataTaskManager.java +++ b/src/main/java/fr/xephi/authme/task/LimboPlayerTaskManager.java @@ -1,26 +1,26 @@ package fr.xephi.authme.task; import fr.xephi.authme.ConsoleLogger; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.cache.limbo.PlayerData; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; +import fr.xephi.authme.data.limbo.LimboPlayer; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; import javax.inject.Inject; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_SECOND; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND; /** * Registers tasks associated with a PlayerData. */ -public class PlayerDataTaskManager { +public class LimboPlayerTaskManager { @Inject private Messages messages; @@ -37,7 +37,7 @@ public class PlayerDataTaskManager { @Inject private PlayerCache playerCache; - PlayerDataTaskManager() { + LimboPlayerTaskManager() { } @@ -52,14 +52,14 @@ public class PlayerDataTaskManager { final int interval = settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL); final MessageKey key = getMessageKey(isRegistered); if (interval > 0) { - final PlayerData playerData = limboCache.getPlayerData(name); - if (playerData == null) { + final LimboPlayer limboPlayer = limboCache.getPlayerData(name); + if (limboPlayer == null) { ConsoleLogger.info("PlayerData for '" + name + "' is not available"); } else { - cancelTask(playerData.getMessageTask()); + cancelTask(limboPlayer.getMessageTask()); BukkitTask messageTask = bukkitService.runTask(new MessageTask(name, messages.retrieve(key), interval, bukkitService, limboCache, playerCache)); - playerData.setMessageTask(messageTask); + limboPlayer.setMessageTask(messageTask); } } } @@ -72,14 +72,14 @@ public class PlayerDataTaskManager { public void registerTimeoutTask(Player player) { final int timeout = settings.getProperty(RestrictionSettings.TIMEOUT) * TICKS_PER_SECOND; if (timeout > 0) { - final PlayerData playerData = limboCache.getPlayerData(player.getName()); - if (playerData == null) { + final LimboPlayer limboPlayer = limboCache.getPlayerData(player.getName()); + if (limboPlayer == null) { ConsoleLogger.info("PlayerData for '" + player.getName() + "' is not available"); } else { - cancelTask(playerData.getTimeoutTask()); + cancelTask(limboPlayer.getTimeoutTask()); String message = messages.retrieveSingle(MessageKey.LOGIN_TIMEOUT_ERROR); BukkitTask task = bukkitService.runTaskLater(new TimeoutTask(player, message, playerCache), timeout); - playerData.setTimeoutTask(task); + limboPlayer.setTimeoutTask(task); } } } diff --git a/src/main/java/fr/xephi/authme/task/MessageTask.java b/src/main/java/fr/xephi/authme/task/MessageTask.java index 7282bc65..7480e526 100644 --- a/src/main/java/fr/xephi/authme/task/MessageTask.java +++ b/src/main/java/fr/xephi/authme/task/MessageTask.java @@ -1,12 +1,12 @@ package fr.xephi.authme.task; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_SECOND; +import static fr.xephi.authme.service.BukkitService.TICKS_PER_SECOND; /** * Message shown to a player in a regular interval as long as he is not logged in. diff --git a/src/main/java/fr/xephi/authme/task/TimeoutTask.java b/src/main/java/fr/xephi/authme/task/TimeoutTask.java index 8aa719cd..60aac741 100644 --- a/src/main/java/fr/xephi/authme/task/TimeoutTask.java +++ b/src/main/java/fr/xephi/authme/task/TimeoutTask.java @@ -1,6 +1,6 @@ package fr.xephi.authme.task; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import org.bukkit.entity.Player; /** diff --git a/src/main/java/fr/xephi/authme/task/purge/PurgeExecutor.java b/src/main/java/fr/xephi/authme/task/purge/PurgeExecutor.java index 2fb65fdd..43476e75 100644 --- a/src/main/java/fr/xephi/authme/task/purge/PurgeExecutor.java +++ b/src/main/java/fr/xephi/authme/task/purge/PurgeExecutor.java @@ -6,8 +6,8 @@ import fr.xephi.authme.hooks.PluginHooks; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.PurgeSettings; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.Utils; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.util.PlayerUtils; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.Server; @@ -16,7 +16,7 @@ import javax.inject.Inject; import java.io.File; import java.util.Collection; -import static fr.xephi.authme.util.StringUtils.makePath; +import static fr.xephi.authme.util.FileUtils.makePath; /** * Executes the purge operations. @@ -152,7 +152,7 @@ class PurgeExecutor { , makePath(settings.getProperty(PurgeSettings.DEFAULT_WORLD), "players")); for (OfflinePlayer offlinePlayer : cleared) { - File playerFile = new File(dataFolder, Utils.getUUIDorName(offlinePlayer) + ".dat"); + File playerFile = new File(dataFolder, PlayerUtils.getUUIDorName(offlinePlayer) + ".dat"); if (playerFile.delete()) { i++; } @@ -184,7 +184,7 @@ class PurgeExecutor { } for (OfflinePlayer offlinePlayer : cleared) { - File playerFile = new File(userDataFolder, Utils.getUUIDorName(offlinePlayer) + ".yml"); + File playerFile = new File(userDataFolder, PlayerUtils.getUUIDorName(offlinePlayer) + ".yml"); if (playerFile.exists() && playerFile.delete()) { i++; } diff --git a/src/main/java/fr/xephi/authme/task/purge/PurgeService.java b/src/main/java/fr/xephi/authme/task/purge/PurgeService.java index ee4370f8..7a1d19fa 100644 --- a/src/main/java/fr/xephi/authme/task/purge/PurgeService.java +++ b/src/main/java/fr/xephi/authme/task/purge/PurgeService.java @@ -5,7 +5,7 @@ import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.PurgeSettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.util.CollectionUtils; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; @@ -16,6 +16,8 @@ import java.util.Calendar; import java.util.Collection; import java.util.Set; +// TODO: move into services. -sgdc3 + /** * Initiates purge tasks. */ diff --git a/src/main/java/fr/xephi/authme/util/CollectionUtils.java b/src/main/java/fr/xephi/authme/util/CollectionUtils.java index 9644c6cd..2388fc60 100644 --- a/src/main/java/fr/xephi/authme/util/CollectionUtils.java +++ b/src/main/java/fr/xephi/authme/util/CollectionUtils.java @@ -9,6 +9,7 @@ import java.util.List; */ public final class CollectionUtils { + // Utility class private CollectionUtils() { } diff --git a/src/main/java/fr/xephi/authme/util/FileUtils.java b/src/main/java/fr/xephi/authme/util/FileUtils.java index d420ef0d..831beafd 100644 --- a/src/main/java/fr/xephi/authme/util/FileUtils.java +++ b/src/main/java/fr/xephi/authme/util/FileUtils.java @@ -15,6 +15,7 @@ import static java.lang.String.format; */ public final class FileUtils { + // Utility class private FileUtils() { } @@ -86,4 +87,15 @@ public final class FileUtils { } } } + + /** + * Construct a file path from the given elements, i.e. separate the given elements by the file separator. + * + * @param elements The elements to create a path with + * + * @return The created path + */ + public static String makePath(String... elements) { + return String.join(File.separator, elements); + } } diff --git a/src/main/java/fr/xephi/authme/util/PlayerUtils.java b/src/main/java/fr/xephi/authme/util/PlayerUtils.java new file mode 100644 index 00000000..7c7302eb --- /dev/null +++ b/src/main/java/fr/xephi/authme/util/PlayerUtils.java @@ -0,0 +1,42 @@ +package fr.xephi.authme.util; + +import org.bukkit.OfflinePlayer; +import org.bukkit.entity.Player; + +/** + * Player utilities. + */ +public class PlayerUtils { + + // Utility class + private PlayerUtils() { + } + + /** + * Get player's UUID if can, name otherwise. + * + * @param player Player to retrieve + * + * @return player's UUID or Name in String. + */ + public static String getUUIDorName(OfflinePlayer player) { + // We may made this configurable in future + // so we can have uuid support. + try { + return player.getUniqueId().toString(); + } catch (NoSuchMethodError ignore) { + return player.getName(); + } + } + + /** + * Returns the IP of the given player. + * + * @param p The player to return the IP address for + * + * @return The player's IP address + */ + public static String getPlayerIp(Player p) { + return p.getAddress().getAddress().getHostAddress(); + } +} diff --git a/src/main/java/fr/xephi/authme/security/RandomString.java b/src/main/java/fr/xephi/authme/util/RandomStringUtils.java similarity index 93% rename from src/main/java/fr/xephi/authme/security/RandomString.java rename to src/main/java/fr/xephi/authme/util/RandomStringUtils.java index 10926e11..0ad582ab 100644 --- a/src/main/java/fr/xephi/authme/security/RandomString.java +++ b/src/main/java/fr/xephi/authme/util/RandomStringUtils.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.security; +package fr.xephi.authme.util; import java.security.SecureRandom; import java.util.Random; @@ -6,14 +6,15 @@ import java.util.Random; /** * Utility for generating random strings. */ -public final class RandomString { +public final class RandomStringUtils { private static final String CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final Random RANDOM = new SecureRandom(); private static final int HEX_MAX_INDEX = 16; private static final int LOWER_ALPHANUMERIC_INDEX = 36; - private RandomString() { + // Utility class + private RandomStringUtils() { } /** diff --git a/src/main/java/fr/xephi/authme/util/RuntimeUtils.java b/src/main/java/fr/xephi/authme/util/RuntimeUtils.java index af7fa3a3..6af0c457 100644 --- a/src/main/java/fr/xephi/authme/util/RuntimeUtils.java +++ b/src/main/java/fr/xephi/authme/util/RuntimeUtils.java @@ -1,6 +1,19 @@ package fr.xephi.authme.util; +/** + * Runtime utilities. + */ public class RuntimeUtils { + + // Utility class + private RuntimeUtils() { + } + + /** + * Return the available core count of the JVM. + * + * @return the core count + */ public static int getCoreCount() { return Runtime.getRuntime().availableProcessors(); } diff --git a/src/main/java/fr/xephi/authme/util/StringUtils.java b/src/main/java/fr/xephi/authme/util/StringUtils.java index 377dd9f7..cc85fe33 100644 --- a/src/main/java/fr/xephi/authme/util/StringUtils.java +++ b/src/main/java/fr/xephi/authme/util/StringUtils.java @@ -5,15 +5,14 @@ import net.ricecode.similarity.StringSimilarityService; import net.ricecode.similarity.StringSimilarityServiceImpl; import java.io.File; -import java.util.Arrays; /** * Utility class for String operations. */ public final class StringUtils { + // Utility class private StringUtils() { - // Utility class } /** @@ -69,44 +68,6 @@ public final class StringUtils { return str == null || str.trim().isEmpty(); } - /** - * Join a list of elements into a single string with the specified delimiter. - * - * @param delimiter The delimiter to use - * @param elements The elements to join - * - * @return A new String that is composed of the elements separated by the delimiter - */ - public static String join(String delimiter, Iterable elements) { - if (delimiter == null) { - delimiter = ""; - } - StringBuilder sb = new StringBuilder(); - for (String element : elements) { - if (!isEmpty(element)) { - // Add the separator if it isn't the first element - if (sb.length() > 0) { - sb.append(delimiter); - } - sb.append(element); - } - } - - return sb.toString(); - } - - /** - * Join a list of elements into a single string with the specified delimiter. - * - * @param delimiter The delimiter to use - * @param elements The elements to join - * - * @return A new String that is composed of the elements separated by the delimiter - */ - public static String join(String delimiter, String... elements) { - return join(delimiter, Arrays.asList(elements)); - } - /** * Format the information from a Throwable as string, retaining the type and its message. * @@ -117,16 +78,4 @@ public final class StringUtils { public static String formatException(Throwable th) { return "[" + th.getClass().getSimpleName() + "]: " + th.getMessage(); } - - /** - * Construct a file path from the given elements, i.e. separate the given elements by the file separator. - * - * @param elements The elements to create a path with - * - * @return The created path - */ - public static String makePath(String... elements) { - return join(File.separator, elements); - } - } diff --git a/src/main/java/fr/xephi/authme/util/Utils.java b/src/main/java/fr/xephi/authme/util/Utils.java index 3a7040d1..f15d77c8 100644 --- a/src/main/java/fr/xephi/authme/util/Utils.java +++ b/src/main/java/fr/xephi/authme/util/Utils.java @@ -16,26 +16,10 @@ public final class Utils { /** Number of milliseconds in an hour. */ public static final long MILLIS_PER_HOUR = 60 * MILLIS_PER_MINUTE; + // Utility class private Utils() { } - /** - * Get player's UUID if can, name otherwise. - * - * @param player Player to retrieve - * - * @return player's UUID or Name in String. - */ - public static String getUUIDorName(OfflinePlayer player) { - // We may made this configurable in future - // so we can have uuid support. - try { - return player.getUniqueId().toString(); - } catch (NoSuchMethodError ignore) { - return player.getName(); - } - } - /** * Compile Pattern sneaky without throwing Exception. * @@ -52,17 +36,6 @@ public final class Utils { } } - /** - * Returns the IP of the given player. - * - * @param p The player to return the IP address for - * - * @return The player's IP address - */ - public static String getPlayerIp(Player p) { - return p.getAddress().getAddress().getHostAddress(); - } - /** * Returns whether the class exists in the current class loader. * diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 211328fe..2dc4bb00 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -405,7 +405,7 @@ Purge: daysBeforeRemovePlayer: 60 # Do we need to remove the player.dat file during purge process? removePlayerDat: false - # Do we need to remove the Essentials/users/player.yml file during purge process? + # Do we need to remove the Essentials/userdata/player.yml file during purge process? removeEssentialsFile: false # World where are players.dat stores defaultWorld: 'world' @@ -435,6 +435,8 @@ Protection: antiBotSensibility: 10 # Duration in minutes of the antibot automatic system antiBotDuration: 10 + # Delay in seconds before the antibot activation + antiBotDelay: 60 GroupOptions: # Registered permission group RegisteredPlayerGroup: '' diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f6af6d4c..2b950e3a 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -126,6 +126,9 @@ permissions: authme.admin.reload: description: Administrator command to reload the plugin configuration. default: op + authme.admin.antibotmessages: + description: Permission to see Antibot messages + default: op authme.player.*: description: Permission to use all player (non-admin) commands. children: diff --git a/src/test/java/fr/xephi/authme/AntiBotTest.java b/src/test/java/fr/xephi/authme/AntiBotTest.java deleted file mode 100644 index 2aee0c66..00000000 --- a/src/test/java/fr/xephi/authme/AntiBotTest.java +++ /dev/null @@ -1,212 +0,0 @@ -package fr.xephi.authme; - -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; -import fr.xephi.authme.permission.PermissionsManager; -import fr.xephi.authme.permission.PlayerStatePermission; -import fr.xephi.authme.settings.Settings; -import fr.xephi.authme.settings.properties.ProtectionSettings; -import fr.xephi.authme.util.BukkitService; -import org.bukkit.entity.Player; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.ArgumentCaptor; -import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; - -import java.util.List; - -import static fr.xephi.authme.util.BukkitService.TICKS_PER_MINUTE; -import static fr.xephi.authme.util.BukkitService.TICKS_PER_SECOND; -import static org.hamcrest.Matchers.contains; -import static org.hamcrest.Matchers.empty; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertThat; -import static org.mockito.BDDMockito.given; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyLong; -import static org.mockito.Matchers.eq; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.reset; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; - -/** - * Test for {@link AntiBot}. - */ -@RunWith(MockitoJUnitRunner.class) -public class AntiBotTest { - - @Mock - private Settings settings; - @Mock - private Messages messages; - @Mock - private PermissionsManager permissionsManager; - @Mock - private BukkitService bukkitService; - - @Before - public void setDefaultSettingValues() { - given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(true); - } - - @Test - public void shouldKeepAntiBotDisabled() { - // given / when - given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(false); - AntiBot antiBot = new AntiBot(settings, messages, permissionsManager, bukkitService); - - // then - verify(bukkitService, never()).scheduleSyncDelayedTask(any(Runnable.class), anyLong()); - assertThat(antiBot.getAntiBotStatus(), equalTo(AntiBot.AntiBotStatus.DISABLED)); - } - - @Test - public void shouldTransitionToListening() { - // given / when - AntiBot antiBot = new AntiBot(settings, messages, permissionsManager, bukkitService); - TestHelper.runSyncDelayedTaskWithDelay(bukkitService); - - // then - assertThat(antiBot.getAntiBotStatus(), equalTo(AntiBot.AntiBotStatus.LISTENING)); - } - - @Test - public void shouldSetStatusToActive() { - // given - AntiBot antiBot = createListeningAntiBot(); - - // when - antiBot.overrideAntiBotStatus(true); - - // then - assertThat(antiBot.getAntiBotStatus(), equalTo(AntiBot.AntiBotStatus.ACTIVE)); - } - - @Test - public void shouldSetStatusToListening() { - // given - AntiBot antiBot = createListeningAntiBot(); - - // when - antiBot.overrideAntiBotStatus(false); - - // then - assertThat(antiBot.getAntiBotStatus(), equalTo(AntiBot.AntiBotStatus.LISTENING)); - } - - @Test - public void shouldRemainDisabled() { - // given - given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(false); - AntiBot antiBot = new AntiBot(settings, messages, permissionsManager, bukkitService); - - // when - antiBot.overrideAntiBotStatus(true); - - // then - assertThat(antiBot.getAntiBotStatus(), equalTo(AntiBot.AntiBotStatus.DISABLED)); - } - - @Test - public void shouldActivateAntiBot() { - // given - given(messages.retrieve(MessageKey.ANTIBOT_AUTO_ENABLED_MESSAGE)) - .willReturn(new String[]{"Test line #1", "Test line #2"}); - int duration = 300; - given(settings.getProperty(ProtectionSettings.ANTIBOT_DURATION)).willReturn(duration); - AntiBot antiBot = createListeningAntiBot(); - - // when - antiBot.activateAntiBot(); - - // then - assertThat(antiBot.getAntiBotStatus(), equalTo(AntiBot.AntiBotStatus.ACTIVE)); - ArgumentCaptor captor = ArgumentCaptor.forClass(String.class); - verify(bukkitService, times(2)).broadcastMessage(captor.capture()); - assertThat(captor.getAllValues(), contains("Test line #1", "Test line #2")); - long expectedTicks = duration * TICKS_PER_MINUTE; - verify(bukkitService).scheduleSyncDelayedTask(any(Runnable.class), eq(expectedTicks)); - } - - @Test - public void shouldDisableAntiBotAfterSetDuration() { - // given - given(messages.retrieve(MessageKey.ANTIBOT_AUTO_ENABLED_MESSAGE)).willReturn(new String[0]); - given(messages.retrieve(MessageKey.ANTIBOT_AUTO_DISABLED_MESSAGE)) - .willReturn(new String[]{"Disabled...", "Placeholder: %m."}); - given(settings.getProperty(ProtectionSettings.ANTIBOT_DURATION)).willReturn(4); - AntiBot antiBot = createListeningAntiBot(); - - // when - antiBot.activateAntiBot(); - TestHelper.runSyncDelayedTaskWithDelay(bukkitService); - - // then - assertThat(antiBot.getAntiBotStatus(), equalTo(AntiBot.AntiBotStatus.LISTENING)); - verify(bukkitService).scheduleSyncDelayedTask(any(Runnable.class), eq((long) 4800)); - ArgumentCaptor captor = ArgumentCaptor.forClass(String.class); - verify(bukkitService, times(2)).broadcastMessage(captor.capture()); - assertThat(captor.getAllValues(), contains("Disabled...", "Placeholder: 4.")); - } - - @Test - public void shouldCheckPlayerAndRemoveHimLater() { - // given - Player player = mock(Player.class); - given(player.getName()).willReturn("Plaer"); - given(permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)).willReturn(false); - given(settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY)).willReturn(10); - AntiBot antiBot = createListeningAntiBot(); - - // when - antiBot.handlePlayerJoin(player); - - // then - List playerList = ReflectionTestUtils - .getFieldValue(AntiBot.class, antiBot, "antibotPlayers"); - assertThat(playerList, hasSize(1)); - verify(bukkitService).scheduleSyncDelayedTask(any(Runnable.class), eq((long) 15 * TICKS_PER_SECOND)); - - // Follow-up: Check that player will be removed from list again by running the Runnable - // given (2) - // Add another player to the list - playerList.add("other_player"); - - // when (2) - TestHelper.runSyncDelayedTaskWithDelay(bukkitService); - - // then (2) - assertThat(playerList, contains("other_player")); - } - - @Test - public void shouldNotUpdateListForPlayerWithByPassPermission() { - // given - Player player = mock(Player.class); - given(permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)).willReturn(true); - given(settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY)).willReturn(3); - AntiBot antiBot = createListeningAntiBot(); - - // when - antiBot.handlePlayerJoin(player); - - // then - List playerList = ReflectionTestUtils.getFieldValue(AntiBot.class, antiBot, "antibotPlayers"); - assertThat(playerList, empty()); - verify(bukkitService, never()).scheduleSyncDelayedTask(any(Runnable.class), anyLong()); - } - - private AntiBot createListeningAntiBot() { - AntiBot antiBot = new AntiBot(settings, messages, permissionsManager, bukkitService); - TestHelper.runSyncDelayedTaskWithDelay(bukkitService); - // Make BukkitService forget about all interactions up to here - reset(bukkitService); - return antiBot; - } - -} diff --git a/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java b/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java index d20424a0..fc504f43 100644 --- a/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java +++ b/src/test/java/fr/xephi/authme/AuthMeInitializationTest.java @@ -15,7 +15,7 @@ import fr.xephi.authme.process.login.ProcessSyncPlayerLogin; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.task.purge.PurgeService; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.plugin.PluginDescriptionFile; diff --git a/src/test/java/fr/xephi/authme/AuthMeMatchers.java b/src/test/java/fr/xephi/authme/AuthMeMatchers.java index cb638222..c19696fa 100644 --- a/src/test/java/fr/xephi/authme/AuthMeMatchers.java +++ b/src/test/java/fr/xephi/authme/AuthMeMatchers.java @@ -1,6 +1,6 @@ package fr.xephi.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.security.crypts.HashedPassword; import org.hamcrest.Description; import org.hamcrest.Matcher; diff --git a/src/test/java/fr/xephi/authme/ConsoleLoggerTest.java b/src/test/java/fr/xephi/authme/ConsoleLoggerTest.java index 8d331f9c..6ae87df6 100644 --- a/src/test/java/fr/xephi/authme/ConsoleLoggerTest.java +++ b/src/test/java/fr/xephi/authme/ConsoleLoggerTest.java @@ -4,7 +4,6 @@ import fr.xephi.authme.output.LogLevel; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.StringUtils; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -135,7 +134,7 @@ public class ConsoleLoggerTest { assertThat(loggedLines.get(1), containsString("[WARN] Exception occurred: [IllegalStateException]: Test exception message")); // Check that we have this class' full name somewhere in the file -> stacktrace of Exception e - assertThat(StringUtils.join("", loggedLines), containsString(getClass().getCanonicalName())); + assertThat(String.join("", loggedLines), containsString(getClass().getCanonicalName())); } @Test diff --git a/src/test/java/fr/xephi/authme/TestHelper.java b/src/test/java/fr/xephi/authme/TestHelper.java index c8d4803e..d16bd31f 100644 --- a/src/test/java/fr/xephi/authme/TestHelper.java +++ b/src/test/java/fr/xephi/authme/TestHelper.java @@ -1,6 +1,6 @@ package fr.xephi.authme; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; diff --git a/src/test/java/fr/xephi/authme/api/NewAPITest.java b/src/test/java/fr/xephi/authme/api/NewAPITest.java index 5ec009c0..64e4c7c8 100644 --- a/src/test/java/fr/xephi/authme/api/NewAPITest.java +++ b/src/test/java/fr/xephi/authme/api/NewAPITest.java @@ -2,13 +2,13 @@ package fr.xephi.authme.api; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ReflectionTestUtils; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.hooks.PluginHooks; import fr.xephi.authme.process.Management; import fr.xephi.authme.security.PasswordSecurity; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Server; diff --git a/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java b/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java index d5db0c55..944424f5 100644 --- a/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java +++ b/src/test/java/fr/xephi/authme/command/CommandInitializerTest.java @@ -296,17 +296,12 @@ public class CommandInitializerTest { * @return List of all bindings that lead to the command */ private static List getAbsoluteLabels(CommandDescription command) { - String parentPath = ""; - CommandDescription elem = command.getParent(); - while (elem != null) { - parentPath = elem.getLabels().get(0) + " " + parentPath; - elem = elem.getParent(); - } - parentPath = parentPath.trim(); + CommandDescription parent = command.getParent(); + String parentPath = (parent == null) ? "" : parent.getLabels().get(0) + " "; List bindings = new ArrayList<>(command.getLabels().size()); for (String label : command.getLabels()) { - bindings.add(StringUtils.join(" ", parentPath, label)); + bindings.add(parentPath + label); } return bindings; } diff --git a/src/test/java/fr/xephi/authme/command/CommandServiceTest.java b/src/test/java/fr/xephi/authme/command/CommandServiceTest.java index 07c8a289..dabc8a09 100644 --- a/src/test/java/fr/xephi/authme/command/CommandServiceTest.java +++ b/src/test/java/fr/xephi/authme/command/CommandServiceTest.java @@ -1,11 +1,11 @@ package fr.xephi.authme.command; import com.github.authme.configme.properties.Property; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/command/CommandUtilsTest.java b/src/test/java/fr/xephi/authme/command/CommandUtilsTest.java index bdff3c25..2d73549d 100644 --- a/src/test/java/fr/xephi/authme/command/CommandUtilsTest.java +++ b/src/test/java/fr/xephi/authme/command/CommandUtilsTest.java @@ -3,10 +3,6 @@ package fr.xephi.authme.command; import fr.xephi.authme.TestHelper; import org.junit.Test; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; @@ -15,42 +11,6 @@ import static org.junit.Assert.assertThat; */ public class CommandUtilsTest { - @Test - public void shouldPrintPartsForStringRepresentation() { - // given - Iterable parts = Arrays.asList("some", "parts", "for", "test"); - - // when - String str = CommandUtils.labelsToString(parts); - - // then - assertThat(str, equalTo("some parts for test")); - } - - @Test - public void shouldPrintEmptyStringForNoArguments() { - // given - List parts = Collections.emptyList(); - - // when - String str = CommandUtils.labelsToString(parts); - - // then - assertThat(str, equalTo("")); - } - - @Test - public void shouldPrintLabels() { - // given - List labels = Arrays.asList("authme", "help", "reload"); - - // when - String result = CommandUtils.labelsToString(labels); - - // then - assertThat(result, equalTo("authme help reload")); - } - @Test public void shouldReturnCommandPath() { // given diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/AccountsCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/AccountsCommandTest.java index 09615751..9c645e4d 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/AccountsCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/AccountsCommandTest.java @@ -1,10 +1,10 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommandTest.java index a44cd6bc..af8f4e96 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/ChangePasswordAdminCommandTest.java @@ -1,16 +1,16 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.ValidationService; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.command.CommandSender; import org.junit.BeforeClass; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/ConverterCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/ConverterCommandTest.java index a978833a..32cc6489 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/ConverterCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/ConverterCommandTest.java @@ -3,9 +3,9 @@ package fr.xephi.authme.command.executable.authme; import ch.jalu.injector.Injector; import fr.xephi.authme.TestHelper; import fr.xephi.authme.command.CommandService; -import fr.xephi.authme.converter.Converter; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.datasource.converter.Converter; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.util.StringUtils; import org.bukkit.command.CommandSender; import org.junit.BeforeClass; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/ForceLoginCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/ForceLoginCommandTest.java index bc7fdec0..fc2602bb 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/ForceLoginCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/ForceLoginCommandTest.java @@ -3,7 +3,7 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerPermission; import fr.xephi.authme.process.Management; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/GetEmailCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/GetEmailCommandTest.java index 6afdc329..f7d32260 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/GetEmailCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/GetEmailCommandTest.java @@ -1,9 +1,9 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.command.CommandSender; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/GetIpCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/GetIpCommandTest.java index 65ed998a..75d8953a 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/GetIpCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/GetIpCommandTest.java @@ -1,7 +1,7 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/LastLoginCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/LastLoginCommandTest.java index d42996ee..8ff1baff 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/LastLoginCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/LastLoginCommandTest.java @@ -1,9 +1,9 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.command.CommandSender; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommandTest.java index 01d9c89d..1927854e 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/PurgeBannedPlayersCommandTest.java @@ -1,7 +1,7 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.task.purge.PurgeService; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommandTest.java index e3a79db8..54a31734 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/PurgeLastPositionCommandTest.java @@ -1,9 +1,9 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.command.CommandSender; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommandTest.java index c7157229..508010cf 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/RegisterAdminCommandTest.java @@ -1,16 +1,16 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.ValidationService; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.junit.BeforeClass; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/ReloadCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/ReloadCommandTest.java index 5eb7dcc6..07424e15 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/ReloadCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/ReloadCommandTest.java @@ -9,7 +9,7 @@ import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.initialization.Reloadable; import fr.xephi.authme.initialization.SettingsDependent; import fr.xephi.authme.output.LogLevel; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.PluginSettings; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/SetEmailCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/SetEmailCommandTest.java index 7a07d8c8..033bd881 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/SetEmailCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/SetEmailCommandTest.java @@ -1,11 +1,11 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommandTest.java index 9b380411..239ba33d 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/SwitchAntiBotCommandTest.java @@ -1,6 +1,6 @@ package fr.xephi.authme.command.executable.authme; -import fr.xephi.authme.AntiBot; +import fr.xephi.authme.service.AntiBotService; import fr.xephi.authme.command.CommandMapper; import fr.xephi.authme.command.FoundCommandResult; import fr.xephi.authme.command.help.HelpProvider; @@ -32,7 +32,7 @@ public class SwitchAntiBotCommandTest { private SwitchAntiBotCommand command; @Mock - private AntiBot antiBot; + private AntiBotService antiBot; @Mock private CommandMapper commandMapper; @@ -43,7 +43,7 @@ public class SwitchAntiBotCommandTest { @Test public void shouldReturnAntiBotState() { // given - given(antiBot.getAntiBotStatus()).willReturn(AntiBot.AntiBotStatus.ACTIVE); + given(antiBot.getAntiBotStatus()).willReturn(AntiBotService.AntiBotStatus.ACTIVE); CommandSender sender = mock(CommandSender.class); // when diff --git a/src/test/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommandTest.java index aea73ed7..fd2e3688 100644 --- a/src/test/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/authme/UnregisterAdminCommandTest.java @@ -2,9 +2,9 @@ package fr.xephi.authme.command.executable.authme; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/command/executable/captcha/CaptchaCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/captcha/CaptchaCommandTest.java index 5de45e61..cfdc51dc 100644 --- a/src/test/java/fr/xephi/authme/command/executable/captcha/CaptchaCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/captcha/CaptchaCommandTest.java @@ -1,9 +1,9 @@ package fr.xephi.authme.command.executable.captcha; -import fr.xephi.authme.cache.CaptchaManager; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.CaptchaManager; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.entity.Player; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommandTest.java index 3a67bd77..7ca0510b 100644 --- a/src/test/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/changepassword/ChangePasswordCommandTest.java @@ -1,13 +1,13 @@ package fr.xephi.authme.command.executable.changepassword; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.ValidationService; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.ValidationService; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.command.BlockCommandSender; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/test/java/fr/xephi/authme/command/executable/email/AddEmailCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/email/AddEmailCommandTest.java index 143ac5fe..985ce815 100644 --- a/src/test/java/fr/xephi/authme/command/executable/email/AddEmailCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/email/AddEmailCommandTest.java @@ -1,7 +1,7 @@ package fr.xephi.authme.command.executable.email; import fr.xephi.authme.command.CommandService; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; import org.bukkit.command.BlockCommandSender; import org.bukkit.command.CommandSender; diff --git a/src/test/java/fr/xephi/authme/command/executable/email/RecoverEmailCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/email/RecoverEmailCommandTest.java index 14d2cc62..8a3dfcf4 100644 --- a/src/test/java/fr/xephi/authme/command/executable/email/RecoverEmailCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/email/RecoverEmailCommandTest.java @@ -1,15 +1,15 @@ package fr.xephi.authme.command.executable.email; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.mail.SendMailSSL; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; -import fr.xephi.authme.service.RecoveryCodeManager; +import fr.xephi.authme.service.RecoveryCodeService; import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.SecuritySettings; import org.bukkit.entity.Player; @@ -63,7 +63,7 @@ public class RecoverEmailCommandTest { private SendMailSSL sendMailSsl; @Mock - private RecoveryCodeManager recoveryCodeManager; + private RecoveryCodeService recoveryCodeService; @BeforeClass public static void initLogger() { @@ -177,8 +177,8 @@ public class RecoverEmailCommandTest { int hoursValid = 12; given(commandService.getProperty(SecuritySettings.RECOVERY_CODE_HOURS_VALID)).willReturn(hoursValid); String code = "a94f37"; - given(recoveryCodeManager.isRecoveryCodeNeeded()).willReturn(true); - given(recoveryCodeManager.generateCode(name)).willReturn(code); + given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(true); + given(recoveryCodeService.generateCode(name)).willReturn(code); // when command.executeCommand(sender, Collections.singletonList(email.toUpperCase())); @@ -186,7 +186,7 @@ public class RecoverEmailCommandTest { // then verify(sendMailSsl).hasAllInformation(); verify(dataSource).getAuth(name); - verify(recoveryCodeManager).generateCode(name); + verify(recoveryCodeService).generateCode(name); verify(commandService).send(sender, MessageKey.RECOVERY_CODE_SENT); verify(sendMailSsl).sendRecoveryCode(name, email, code); } @@ -203,8 +203,8 @@ public class RecoverEmailCommandTest { PlayerAuth auth = newAuthWithEmail(email); given(dataSource.getAuth(name)).willReturn(auth); given(commandService.getProperty(EmailSettings.RECOVERY_PASSWORD_LENGTH)).willReturn(20); - given(recoveryCodeManager.isRecoveryCodeNeeded()).willReturn(true); - given(recoveryCodeManager.isCodeValid(name, "bogus")).willReturn(false); + given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(true); + given(recoveryCodeService.isCodeValid(name, "bogus")).willReturn(false); // when command.executeCommand(sender, Arrays.asList(email, "bogus")); @@ -231,8 +231,8 @@ public class RecoverEmailCommandTest { given(commandService.getProperty(EmailSettings.RECOVERY_PASSWORD_LENGTH)).willReturn(20); given(passwordSecurity.computeHash(anyString(), eq(name))) .willAnswer(invocation -> new HashedPassword((String) invocation.getArguments()[0])); - given(recoveryCodeManager.isRecoveryCodeNeeded()).willReturn(true); - given(recoveryCodeManager.isCodeValid(name, code)).willReturn(true); + given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(true); + given(recoveryCodeService.isCodeValid(name, code)).willReturn(true); // when command.executeCommand(sender, Arrays.asList(email, code)); @@ -245,7 +245,7 @@ public class RecoverEmailCommandTest { String generatedPassword = passwordCaptor.getValue(); assertThat(generatedPassword, stringWithLength(20)); verify(dataSource).updatePassword(eq(name), any(HashedPassword.class)); - verify(recoveryCodeManager).removeCode(name); + verify(recoveryCodeService).removeCode(name); verify(sendMailSsl).sendPasswordMail(name, email, generatedPassword); verify(commandService).send(sender, MessageKey.RECOVERY_EMAIL_SENT_MESSAGE); } @@ -264,7 +264,7 @@ public class RecoverEmailCommandTest { given(commandService.getProperty(EmailSettings.RECOVERY_PASSWORD_LENGTH)).willReturn(20); given(passwordSecurity.computeHash(anyString(), eq(name))) .willAnswer(invocation -> new HashedPassword((String) invocation.getArguments()[0])); - given(recoveryCodeManager.isRecoveryCodeNeeded()).willReturn(false); + given(recoveryCodeService.isRecoveryCodeNeeded()).willReturn(false); // when command.executeCommand(sender, Collections.singletonList(email)); diff --git a/src/test/java/fr/xephi/authme/command/executable/register/RegisterCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/register/RegisterCommandTest.java index ca1a1ae6..a4dfe8f7 100644 --- a/src/test/java/fr/xephi/authme/command/executable/register/RegisterCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/register/RegisterCommandTest.java @@ -3,7 +3,7 @@ package fr.xephi.authme.command.executable.register; import fr.xephi.authme.TestHelper; import fr.xephi.authme.command.CommandService; import fr.xephi.authme.mail.SendMailSSL; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.settings.properties.EmailSettings; diff --git a/src/test/java/fr/xephi/authme/command/executable/unregister/UnregisterCommandTest.java b/src/test/java/fr/xephi/authme/command/executable/unregister/UnregisterCommandTest.java index 33bbf4c6..336b1742 100644 --- a/src/test/java/fr/xephi/authme/command/executable/unregister/UnregisterCommandTest.java +++ b/src/test/java/fr/xephi/authme/command/executable/unregister/UnregisterCommandTest.java @@ -1,8 +1,8 @@ package fr.xephi.authme.command.executable.unregister; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.command.CommandService; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.Management; import org.bukkit.entity.Player; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/cache/CaptchaManagerTest.java b/src/test/java/fr/xephi/authme/data/CaptchaManagerTest.java similarity index 99% rename from src/test/java/fr/xephi/authme/cache/CaptchaManagerTest.java rename to src/test/java/fr/xephi/authme/data/CaptchaManagerTest.java index bb293ef9..92be450d 100644 --- a/src/test/java/fr/xephi/authme/cache/CaptchaManagerTest.java +++ b/src/test/java/fr/xephi/authme/data/CaptchaManagerTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.cache; +package fr.xephi.authme.data; import fr.xephi.authme.ReflectionTestUtils; import fr.xephi.authme.settings.Settings; diff --git a/src/test/java/fr/xephi/authme/cache/SessionManagerTest.java b/src/test/java/fr/xephi/authme/data/SessionManagerTest.java similarity index 99% rename from src/test/java/fr/xephi/authme/cache/SessionManagerTest.java rename to src/test/java/fr/xephi/authme/data/SessionManagerTest.java index 80f9a409..f778dd16 100644 --- a/src/test/java/fr/xephi/authme/cache/SessionManagerTest.java +++ b/src/test/java/fr/xephi/authme/data/SessionManagerTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.cache; +package fr.xephi.authme.data; import fr.xephi.authme.ReflectionTestUtils; import fr.xephi.authme.settings.Settings; diff --git a/src/test/java/fr/xephi/authme/cache/TempbanManagerTest.java b/src/test/java/fr/xephi/authme/data/TempbanManagerTest.java similarity index 97% rename from src/test/java/fr/xephi/authme/cache/TempbanManagerTest.java rename to src/test/java/fr/xephi/authme/data/TempbanManagerTest.java index f487a97f..70aa11c7 100644 --- a/src/test/java/fr/xephi/authme/cache/TempbanManagerTest.java +++ b/src/test/java/fr/xephi/authme/data/TempbanManagerTest.java @@ -1,13 +1,13 @@ -package fr.xephi.authme.cache; +package fr.xephi.authme.data; import fr.xephi.authme.ReflectionTestUtils; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.TempbanManager.TimedCounter; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.data.TempbanManager.TimedCounter; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/src/test/java/fr/xephi/authme/cache/backup/PlayerDataStorageTest.java b/src/test/java/fr/xephi/authme/data/backup/LimboPlayerStorageTest.java similarity index 82% rename from src/test/java/fr/xephi/authme/cache/backup/PlayerDataStorageTest.java rename to src/test/java/fr/xephi/authme/data/backup/LimboPlayerStorageTest.java index 3480b7d5..f9c5880c 100644 --- a/src/test/java/fr/xephi/authme/cache/backup/PlayerDataStorageTest.java +++ b/src/test/java/fr/xephi/authme/data/backup/LimboPlayerStorageTest.java @@ -1,15 +1,15 @@ -package fr.xephi.authme.cache.backup; +package fr.xephi.authme.data.backup; import ch.jalu.injector.testing.BeforeInjecting; import ch.jalu.injector.testing.DelayedInjectionRunner; import ch.jalu.injector.testing.InjectDelayed; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.limbo.PlayerData; +import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.SpawnLoader; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.StringUtils; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.util.FileUtils; import org.bukkit.Location; import org.bukkit.World; import org.bukkit.entity.Player; @@ -32,16 +32,16 @@ import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; /** - * Test for {@link PlayerDataStorage}. + * Test for {@link LimboPlayerStorage}. */ @RunWith(DelayedInjectionRunner.class) -public class PlayerDataStorageTest { +public class LimboPlayerStorageTest { private static final UUID SAMPLE_UUID = UUID.nameUUIDFromBytes("PlayerDataStorageTest".getBytes()); - private static final String SOURCE_FOLDER = TestHelper.PROJECT_ROOT + "cache/backup/"; + private static final String SOURCE_FOLDER = TestHelper.PROJECT_ROOT + "data/backup/"; @InjectDelayed - private PlayerDataStorage playerDataStorage; + private LimboPlayerStorage limboPlayerStorage; @Mock private SpawnLoader spawnLoader; @@ -61,11 +61,11 @@ public class PlayerDataStorageTest { @BeforeInjecting public void copyTestFiles() throws IOException { dataFolder = temporaryFolder.newFolder(); - File playerFolder = new File(dataFolder, StringUtils.makePath("playerdata", SAMPLE_UUID.toString())); + File playerFolder = new File(dataFolder, FileUtils.makePath("playerdata", SAMPLE_UUID.toString())); if (!playerFolder.mkdirs()) { throw new IllegalStateException("Cannot create '" + playerFolder.getAbsolutePath() + "'"); } - Files.copy(TestHelper.getJarPath(StringUtils.makePath(SOURCE_FOLDER, "sample-folder", "data.json")), + Files.copy(TestHelper.getJarPath(FileUtils.makePath(SOURCE_FOLDER, "sample-folder", "data.json")), new File(playerFolder, "data.json").toPath()); } @@ -78,7 +78,7 @@ public class PlayerDataStorageTest { given(bukkitService.getWorld("nether")).willReturn(world); // when - PlayerData data = playerDataStorage.readData(player); + LimboPlayer data = limboPlayerStorage.readData(player); // then assertThat(data, not(nullValue())); @@ -103,7 +103,7 @@ public class PlayerDataStorageTest { given(player.getUniqueId()).willReturn(UUID.nameUUIDFromBytes("other-player".getBytes())); // when - PlayerData data = playerDataStorage.readData(player); + LimboPlayer data = limboPlayerStorage.readData(player); // then assertThat(data, nullValue()); @@ -118,8 +118,8 @@ public class PlayerDataStorageTest { given(player2.getUniqueId()).willReturn(UUID.nameUUIDFromBytes("not-stored".getBytes())); // when / then - assertThat(playerDataStorage.hasData(player1), equalTo(true)); - assertThat(playerDataStorage.hasData(player2), equalTo(false)); + assertThat(limboPlayerStorage.hasData(player1), equalTo(true)); + assertThat(limboPlayerStorage.hasData(player2), equalTo(false)); } @Test @@ -140,10 +140,10 @@ public class PlayerDataStorageTest { given(spawnLoader.getPlayerLocationOrSpawn(player)).willReturn(location); // when - playerDataStorage.saveData(player); + limboPlayerStorage.saveData(player); // then - File playerFile = new File(dataFolder, StringUtils.makePath("playerdata", uuid.toString(), "data.json")); + File playerFile = new File(dataFolder, FileUtils.makePath("playerdata", uuid.toString(), "data.json")); assertThat(playerFile.exists(), equalTo(true)); // TODO ljacqu 20160711: Check contents of file } diff --git a/src/test/java/fr/xephi/authme/cache/limbo/LimboCacheTest.java b/src/test/java/fr/xephi/authme/data/limbo/LimboCacheTest.java similarity index 72% rename from src/test/java/fr/xephi/authme/cache/limbo/LimboCacheTest.java rename to src/test/java/fr/xephi/authme/data/limbo/LimboCacheTest.java index 60059630..54f40865 100644 --- a/src/test/java/fr/xephi/authme/cache/limbo/LimboCacheTest.java +++ b/src/test/java/fr/xephi/authme/data/limbo/LimboCacheTest.java @@ -1,7 +1,7 @@ -package fr.xephi.authme.cache.limbo; +package fr.xephi.authme.data.limbo; import fr.xephi.authme.ReflectionTestUtils; -import fr.xephi.authme.cache.backup.PlayerDataStorage; +import fr.xephi.authme.data.backup.LimboPlayerStorage; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SpawnLoader; @@ -44,7 +44,7 @@ public class LimboCacheTest { private SpawnLoader spawnLoader; @Mock - private PlayerDataStorage playerDataStorage; + private LimboPlayerStorage limboPlayerStorage; @Test public void shouldAddPlayerData() { @@ -63,13 +63,13 @@ public class LimboCacheTest { given(permissionsManager.hasGroupSupport()).willReturn(true); String group = "test-group"; given(permissionsManager.getPrimaryGroup(player)).willReturn(group); - given(playerDataStorage.hasData(player)).willReturn(false); + given(limboPlayerStorage.hasData(player)).willReturn(false); // when limboCache.addPlayerData(player); // then - PlayerData limboPlayer = limboCache.getPlayerData(name); + LimboPlayer limboPlayer = limboCache.getPlayerData(name); assertThat(limboPlayer.getLocation(), equalTo(location)); assertThat(limboPlayer.isOperator(), equalTo(true)); assertThat(limboPlayer.getWalkSpeed(), equalTo(walkSpeed)); @@ -84,22 +84,22 @@ public class LimboCacheTest { String name = "player01"; Player player = mock(Player.class); given(player.getName()).willReturn(name); - given(playerDataStorage.hasData(player)).willReturn(true); - PlayerData playerData = mock(PlayerData.class); - given(playerDataStorage.readData(player)).willReturn(playerData); + given(limboPlayerStorage.hasData(player)).willReturn(true); + LimboPlayer limboPlayer = mock(LimboPlayer.class); + given(limboPlayerStorage.readData(player)).willReturn(limboPlayer); float walkSpeed = 2.4f; - given(playerData.getWalkSpeed()).willReturn(walkSpeed); - given(playerData.isCanFly()).willReturn(true); + given(limboPlayer.getWalkSpeed()).willReturn(walkSpeed); + given(limboPlayer.isCanFly()).willReturn(true); float flySpeed = 1.0f; - given(playerData.getFlySpeed()).willReturn(flySpeed); + given(limboPlayer.getFlySpeed()).willReturn(flySpeed); String group = "primary-group"; - given(playerData.getGroup()).willReturn(group); + given(limboPlayer.getGroup()).willReturn(group); // when limboCache.addPlayerData(player); // then - PlayerData result = limboCache.getPlayerData(name); + LimboPlayer result = limboCache.getPlayerData(name); assertThat(result.getWalkSpeed(), equalTo(walkSpeed)); assertThat(result.isCanFly(), equalTo(true)); assertThat(result.getFlySpeed(), equalTo(flySpeed)); @@ -112,16 +112,16 @@ public class LimboCacheTest { String name = "Champ"; Player player = mock(Player.class); given(player.getName()).willReturn(name); - PlayerData playerData = mock(PlayerData.class); - given(playerData.isOperator()).willReturn(true); + LimboPlayer limboPlayer = mock(LimboPlayer.class); + given(limboPlayer.isOperator()).willReturn(true); float walkSpeed = 2.4f; - given(playerData.getWalkSpeed()).willReturn(walkSpeed); - given(playerData.isCanFly()).willReturn(true); + given(limboPlayer.getWalkSpeed()).willReturn(walkSpeed); + given(limboPlayer.isCanFly()).willReturn(true); float flySpeed = 1.0f; - given(playerData.getFlySpeed()).willReturn(flySpeed); + given(limboPlayer.getFlySpeed()).willReturn(flySpeed); String group = "primary-group"; - given(playerData.getGroup()).willReturn(group); - getCache().put(name.toLowerCase(), playerData); + given(limboPlayer.getGroup()).willReturn(group); + getCache().put(name.toLowerCase(), limboPlayer); given(settings.getProperty(PluginSettings.ENABLE_PERMISSION_CHECK)).willReturn(true); given(permissionsManager.hasGroupSupport()).willReturn(true); @@ -134,7 +134,7 @@ public class LimboCacheTest { verify(player).setAllowFlight(true); verify(player).setFlySpeed(flySpeed); verify(permissionsManager).setGroup(player, group); - verify(playerData).clearTasks(); + verify(limboPlayer).clearTasks(); } @Test @@ -143,14 +143,14 @@ public class LimboCacheTest { String name = "Champ"; Player player = mock(Player.class); given(player.getName()).willReturn(name); - PlayerData playerData = mock(PlayerData.class); - given(playerData.isOperator()).willReturn(true); - given(playerData.getWalkSpeed()).willReturn(0f); - given(playerData.isCanFly()).willReturn(true); - given(playerData.getFlySpeed()).willReturn(0f); + LimboPlayer limboPlayer = mock(LimboPlayer.class); + given(limboPlayer.isOperator()).willReturn(true); + given(limboPlayer.getWalkSpeed()).willReturn(0f); + given(limboPlayer.isCanFly()).willReturn(true); + given(limboPlayer.getFlySpeed()).willReturn(0f); String group = "primary-group"; - given(playerData.getGroup()).willReturn(group); - getCache().put(name.toLowerCase(), playerData); + given(limboPlayer.getGroup()).willReturn(group); + getCache().put(name.toLowerCase(), limboPlayer); given(settings.getProperty(PluginSettings.ENABLE_PERMISSION_CHECK)).willReturn(true); given(permissionsManager.hasGroupSupport()).willReturn(true); @@ -180,9 +180,9 @@ public class LimboCacheTest { @Test public void shouldRemoveAndClearTasks() { // given - PlayerData playerData = mock(PlayerData.class); + LimboPlayer limboPlayer = mock(LimboPlayer.class); String name = "abcdef"; - getCache().put(name, playerData); + getCache().put(name, limboPlayer); Player player = mock(Player.class); given(player.getName()).willReturn(name); @@ -191,16 +191,16 @@ public class LimboCacheTest { // then assertThat(getCache(), anEmptyMap()); - verify(playerData).clearTasks(); + verify(limboPlayer).clearTasks(); } @Test public void shouldDeleteFromCacheAndStorage() { // given - PlayerData playerData = mock(PlayerData.class); + LimboPlayer limboPlayer = mock(LimboPlayer.class); String name = "SomeName"; - getCache().put(name.toLowerCase(), playerData); - getCache().put("othername", mock(PlayerData.class)); + getCache().put(name.toLowerCase(), limboPlayer); + getCache().put("othername", mock(LimboPlayer.class)); Player player = mock(Player.class); given(player.getName()).willReturn(name); @@ -209,22 +209,22 @@ public class LimboCacheTest { // then assertThat(getCache(), aMapWithSize(1)); - verify(playerData).clearTasks(); - verify(playerDataStorage).removeData(player); + verify(limboPlayer).clearTasks(); + verify(limboPlayerStorage).removeData(player); } @Test public void shouldReturnIfHasData() { // given String name = "tester"; - getCache().put(name, mock(PlayerData.class)); + getCache().put(name, mock(LimboPlayer.class)); // when / then assertThat(limboCache.hasPlayerData(name), equalTo(true)); assertThat(limboCache.hasPlayerData("someone_else"), equalTo(false)); } - private Map getCache() { + private Map getCache() { return ReflectionTestUtils.getFieldValue(LimboCache.class, limboCache, "cache"); } } diff --git a/src/test/java/fr/xephi/authme/datasource/AbstractDataSourceIntegrationTest.java b/src/test/java/fr/xephi/authme/datasource/AbstractDataSourceIntegrationTest.java index 6399221c..3c8523bb 100644 --- a/src/test/java/fr/xephi/authme/datasource/AbstractDataSourceIntegrationTest.java +++ b/src/test/java/fr/xephi/authme/datasource/AbstractDataSourceIntegrationTest.java @@ -1,6 +1,6 @@ package fr.xephi.authme.datasource; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.security.crypts.HashedPassword; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/datasource/AbstractResourceClosingTest.java b/src/test/java/fr/xephi/authme/datasource/AbstractResourceClosingTest.java index ee6bdd04..c8aeb796 100644 --- a/src/test/java/fr/xephi/authme/datasource/AbstractResourceClosingTest.java +++ b/src/test/java/fr/xephi/authme/datasource/AbstractResourceClosingTest.java @@ -6,7 +6,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.security.crypts.HashedPassword; import fr.xephi.authme.settings.Settings; diff --git a/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java b/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java index 853cbd78..7ce72f15 100644 --- a/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java +++ b/src/test/java/fr/xephi/authme/datasource/FlatFileIntegrationTest.java @@ -2,7 +2,9 @@ package fr.xephi.authme.datasource; import com.google.common.io.Files; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.FlatFile; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -23,7 +25,7 @@ import static org.junit.Assert.assertThat; /** * Integration test for the deprecated {@link FlatFile} datasource. The flatfile datasource is no longer used. - * Essentially, the only time we use it is in {@link fr.xephi.authme.converter.ForceFlatToSqlite}, + * Essentially, the only time we use it is in {@link fr.xephi.authme.datasource.converter.ForceFlatToSqlite}, * which requires {@link FlatFile#getAllAuths()}. */ public class FlatFileIntegrationTest { diff --git a/src/test/java/fr/xephi/authme/datasource/MySqlIntegrationTest.java b/src/test/java/fr/xephi/authme/datasource/MySqlIntegrationTest.java index 93d8a399..5484bd5e 100644 --- a/src/test/java/fr/xephi/authme/datasource/MySqlIntegrationTest.java +++ b/src/test/java/fr/xephi/authme/datasource/MySqlIntegrationTest.java @@ -4,6 +4,9 @@ import com.github.authme.configme.properties.Property; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import fr.xephi.authme.TestHelper; +import fr.xephi.authme.datasource.AbstractDataSourceIntegrationTest; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.MySQL; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; import org.junit.After; diff --git a/src/test/java/fr/xephi/authme/datasource/MySqlResourceClosingTest.java b/src/test/java/fr/xephi/authme/datasource/MySqlResourceClosingTest.java index 7dccb08b..f943cac4 100644 --- a/src/test/java/fr/xephi/authme/datasource/MySqlResourceClosingTest.java +++ b/src/test/java/fr/xephi/authme/datasource/MySqlResourceClosingTest.java @@ -1,6 +1,9 @@ package fr.xephi.authme.datasource; import com.zaxxer.hikari.HikariDataSource; +import fr.xephi.authme.datasource.AbstractResourceClosingTest; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.MySQL; import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.settings.Settings; diff --git a/src/test/java/fr/xephi/authme/datasource/SQLiteIntegrationTest.java b/src/test/java/fr/xephi/authme/datasource/SQLiteIntegrationTest.java index 4836b198..9398e4ed 100644 --- a/src/test/java/fr/xephi/authme/datasource/SQLiteIntegrationTest.java +++ b/src/test/java/fr/xephi/authme/datasource/SQLiteIntegrationTest.java @@ -2,7 +2,10 @@ package fr.xephi.authme.datasource; import com.github.authme.configme.properties.Property; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.datasource.AbstractDataSourceIntegrationTest; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.SQLite; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.DatabaseSettings; import org.junit.After; diff --git a/src/test/java/fr/xephi/authme/datasource/SQLiteResourceClosingTest.java b/src/test/java/fr/xephi/authme/datasource/SQLiteResourceClosingTest.java index 9eac9463..efc6dbef 100644 --- a/src/test/java/fr/xephi/authme/datasource/SQLiteResourceClosingTest.java +++ b/src/test/java/fr/xephi/authme/datasource/SQLiteResourceClosingTest.java @@ -1,5 +1,8 @@ package fr.xephi.authme.datasource; +import fr.xephi.authme.datasource.AbstractResourceClosingTest; +import fr.xephi.authme.datasource.DataSource; +import fr.xephi.authme.datasource.SQLite; import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.settings.Settings; diff --git a/src/test/java/fr/xephi/authme/converter/AbstractDataSourceConverterTest.java b/src/test/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverterTest.java similarity index 98% rename from src/test/java/fr/xephi/authme/converter/AbstractDataSourceConverterTest.java rename to src/test/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverterTest.java index b8378c1e..897f36e9 100644 --- a/src/test/java/fr/xephi/authme/converter/AbstractDataSourceConverterTest.java +++ b/src/test/java/fr/xephi/authme/datasource/converter/AbstractDataSourceConverterTest.java @@ -1,7 +1,7 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceType; import org.bukkit.command.CommandSender; diff --git a/src/test/java/fr/xephi/authme/converter/CrazyLoginConverterTest.java b/src/test/java/fr/xephi/authme/datasource/converter/CrazyLoginConverterTest.java similarity index 96% rename from src/test/java/fr/xephi/authme/converter/CrazyLoginConverterTest.java rename to src/test/java/fr/xephi/authme/datasource/converter/CrazyLoginConverterTest.java index 0049a028..e24953b9 100644 --- a/src/test/java/fr/xephi/authme/converter/CrazyLoginConverterTest.java +++ b/src/test/java/fr/xephi/authme/datasource/converter/CrazyLoginConverterTest.java @@ -1,9 +1,9 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import ch.jalu.injector.testing.DelayedInjectionRunner; import ch.jalu.injector.testing.InjectDelayed; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.settings.Settings; @@ -45,7 +45,7 @@ public class CrazyLoginConverterTest { private Settings settings; @DataFolder - private File dataFolder = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "converter/"); + private File dataFolder = TestHelper.getJarFile(TestHelper.PROJECT_ROOT + "/datasource/converter/"); @BeforeClass public static void initializeLogger() { diff --git a/src/test/java/fr/xephi/authme/converter/ForceFlatToSqliteTest.java b/src/test/java/fr/xephi/authme/datasource/converter/ForceFlatToSqliteTest.java similarity index 96% rename from src/test/java/fr/xephi/authme/converter/ForceFlatToSqliteTest.java rename to src/test/java/fr/xephi/authme/datasource/converter/ForceFlatToSqliteTest.java index 273d5530..3ec28a7b 100644 --- a/src/test/java/fr/xephi/authme/converter/ForceFlatToSqliteTest.java +++ b/src/test/java/fr/xephi/authme/datasource/converter/ForceFlatToSqliteTest.java @@ -1,8 +1,8 @@ -package fr.xephi.authme.converter; +package fr.xephi.authme.datasource.converter; import com.google.common.io.Files; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSourceType; import fr.xephi.authme.datasource.FlatFile; diff --git a/src/test/java/fr/xephi/authme/util/GeoLiteAPITest.java b/src/test/java/fr/xephi/authme/geoip/GeoIpManagerTest.java similarity index 84% rename from src/test/java/fr/xephi/authme/util/GeoLiteAPITest.java rename to src/test/java/fr/xephi/authme/geoip/GeoIpManagerTest.java index c932ddbb..a4d459ca 100644 --- a/src/test/java/fr/xephi/authme/util/GeoLiteAPITest.java +++ b/src/test/java/fr/xephi/authme/geoip/GeoIpManagerTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.geoip; import com.maxmind.geoip.Country; import com.maxmind.geoip.LookupService; @@ -22,12 +22,12 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; /** - * Test for {@link GeoLiteAPI}. + * Test for {@link GeoIpManager}. */ @RunWith(MockitoJUnitRunner.class) -public class GeoLiteAPITest { +public class GeoIpManagerTest { - private GeoLiteAPI geoLiteApi; + private GeoIpManager geoIpManager; private File dataFolder; @Mock private LookupService lookupService; @@ -38,7 +38,7 @@ public class GeoLiteAPITest { @Before public void initializeGeoLiteApi() throws IOException { dataFolder = temporaryFolder.newFolder(); - geoLiteApi = new GeoLiteAPI(dataFolder, lookupService); + geoIpManager = new GeoIpManager(dataFolder, lookupService); } @Test @@ -51,7 +51,7 @@ public class GeoLiteAPITest { given(lookupService.getCountry(ip)).willReturn(country); // when - String result = geoLiteApi.getCountryCode(ip); + String result = geoIpManager.getCountryCode(ip); // then assertThat(result, equalTo(countryCode)); @@ -64,7 +64,7 @@ public class GeoLiteAPITest { String ip = "127.0.0.1"; // when - String result = geoLiteApi.getCountryCode(ip); + String result = geoIpManager.getCountryCode(ip); // then assertThat(result, equalTo("--")); @@ -81,7 +81,7 @@ public class GeoLiteAPITest { given(lookupService.getCountry(ip)).willReturn(country); // when - String result = geoLiteApi.getCountryName(ip); + String result = geoIpManager.getCountryName(ip); // then assertThat(result, equalTo(countryName)); @@ -94,7 +94,7 @@ public class GeoLiteAPITest { String ip = "127.0.0.1"; // when - String result = geoLiteApi.getCountryName(ip); + String result = geoIpManager.getCountryName(ip); // then assertThat(result, equalTo("N/A")); diff --git a/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java b/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java index bc78db2f..bc999c53 100644 --- a/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java +++ b/src/test/java/fr/xephi/authme/listener/ListenerServiceTest.java @@ -3,12 +3,12 @@ package fr.xephi.authme.listener; import ch.jalu.injector.testing.BeforeInjecting; import ch.jalu.injector.testing.DelayedInjectionRunner; import ch.jalu.injector.testing.InjectDelayed; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.hooks.PluginHooks; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.RegistrationSettings; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; diff --git a/src/test/java/fr/xephi/authme/listener/OnJoinVerifierTest.java b/src/test/java/fr/xephi/authme/listener/OnJoinVerifierTest.java index 19685ff8..92522eb5 100644 --- a/src/test/java/fr/xephi/authme/listener/OnJoinVerifierTest.java +++ b/src/test/java/fr/xephi/authme/listener/OnJoinVerifierTest.java @@ -1,20 +1,19 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AntiBot; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerStatePermission; +import fr.xephi.authme.service.AntiBotService; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.ProtectionSettings; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.StringUtils; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Server; import org.bukkit.entity.Player; import org.bukkit.event.player.PlayerLoginEvent; @@ -62,7 +61,7 @@ public class OnJoinVerifierTest { @Mock private PermissionsManager permissionsManager; @Mock - private AntiBot antiBot; + private AntiBotService antiBotService; @Mock private ValidationService validationService; @Mock @@ -377,48 +376,53 @@ public class OnJoinVerifierTest { } @Test - public void shouldCheckAntiBot() throws FailedVerificationException { + public void shouldAllowUser() throws FailedVerificationException { // given - String name = "user123"; - boolean hasAuth = false; - given(antiBot.getAntiBotStatus()).willReturn(AntiBot.AntiBotStatus.LISTENING); + Player player = newPlayerWithName("Bobby"); + boolean isAuthAvailable = false; + given(permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)).willReturn(false); + given(antiBotService.shouldKick(isAuthAvailable)).willReturn(false); // when - onJoinVerifier.checkAntibot(name, hasAuth); + onJoinVerifier.checkAntibot(player, isAuthAvailable); // then - verify(antiBot).getAntiBotStatus(); + verify(permissionsManager).hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT); + verify(antiBotService).shouldKick(isAuthAvailable); } @Test - public void shouldAllowUserWithAuth() throws FailedVerificationException { + public void shouldAllowUserWithBypassPermission() throws FailedVerificationException { // given - String name = "Bobby"; - boolean hasAuth = true; - given(antiBot.getAntiBotStatus()).willReturn(AntiBot.AntiBotStatus.ACTIVE); + Player player = newPlayerWithName("Steward"); + boolean isAuthAvailable = false; + given(permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)).willReturn(true); + given(antiBotService.shouldKick(isAuthAvailable)).willReturn(true); // when - onJoinVerifier.checkAntibot(name, hasAuth); + onJoinVerifier.checkAntibot(player, isAuthAvailable); // then - verify(antiBot).getAntiBotStatus(); + verify(permissionsManager).hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT); } @Test - public void shouldThrowForActiveAntiBot() { + public void shouldKickUserForFailedAntibotCheck() throws FailedVerificationException { // given - String name = "Bobby"; - boolean hasAuth = false; - given(antiBot.getAntiBotStatus()).willReturn(AntiBot.AntiBotStatus.ACTIVE); + Player player = newPlayerWithName("D3"); + boolean isAuthAvailable = false; + given(permissionsManager.hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT)).willReturn(false); + given(antiBotService.shouldKick(isAuthAvailable)).willReturn(true); // when / then try { - onJoinVerifier.checkAntibot(name, hasAuth); + onJoinVerifier.checkAntibot(player, isAuthAvailable); fail("Expected exception to be thrown"); } catch (FailedVerificationException e) { - assertThat(e, exceptionWithData(MessageKey.KICK_ANTIBOT)); - verify(antiBot).addPlayerKick(name); + verify(permissionsManager).hasPermission(player, PlayerStatePermission.BYPASS_ANTIBOT); + verify(antiBotService).shouldKick(isAuthAvailable); } + } /** @@ -489,7 +493,7 @@ public class OnJoinVerifierTest { return player; } - @SuppressWarnings({ "unchecked", "rawtypes" }) + @SuppressWarnings("unchecked") private void returnOnlineListFromBukkitServer(Collection onlineList) { // Note ljacqu 20160529: The compiler gets lost in generics because Collection is returned // from getOnlinePlayers(). We need to uncheck onlineList to a simple Collection or it will refuse to compile. @@ -511,7 +515,7 @@ public class OnJoinVerifierTest { @Override public void describeTo(Description description) { description.appendValue("VerificationFailedException: reason=" + messageKey + ";args=" - + (args == null ? "null" : StringUtils.join(", ", args))); + + (args == null ? "null" : String.join(", ", args))); } }; } diff --git a/src/test/java/fr/xephi/authme/listener/PlayerListenerTest.java b/src/test/java/fr/xephi/authme/listener/PlayerListenerTest.java index 35179e6e..74f9d508 100644 --- a/src/test/java/fr/xephi/authme/listener/PlayerListenerTest.java +++ b/src/test/java/fr/xephi/authme/listener/PlayerListenerTest.java @@ -1,18 +1,18 @@ package fr.xephi.authme.listener; -import fr.xephi.authme.AntiBot; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.service.AntiBotService; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.process.Management; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.SpawnLoader; import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.TeleportationService; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.TeleportationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.Location; import org.bukkit.Server; import org.bukkit.World; @@ -80,7 +80,7 @@ public class PlayerListenerTest { @Mock private DataSource dataSource; @Mock - private AntiBot antiBot; + private AntiBotService antiBotService; @Mock private Management management; @Mock @@ -112,7 +112,7 @@ public class PlayerListenerTest { // then assertThat(event.isCancelled(), equalTo(true)); - verifyZeroInteractions(player, management, antiBot); + verifyZeroInteractions(player, management, antiBotService); } @Test @@ -122,14 +122,14 @@ public class PlayerListenerTest { String name = "Bobby"; Player player = mockPlayerWithName(name); PlayerKickEvent event = new PlayerKickEvent(player, "You logged in from another location", ""); - given(antiBot.wasPlayerKicked(name)).willReturn(false); + given(antiBotService.wasPlayerKicked(name)).willReturn(false); // when listener.onPlayerKick(event); // then assertThat(event.isCancelled(), equalTo(false)); - verify(antiBot).wasPlayerKicked(name); + verify(antiBotService).wasPlayerKicked(name); verify(management).performQuit(player); } @@ -140,14 +140,14 @@ public class PlayerListenerTest { String name = "Bobby"; Player player = mockPlayerWithName(name); PlayerKickEvent event = new PlayerKickEvent(player, "No longer desired here!", ""); - given(antiBot.wasPlayerKicked(name)).willReturn(true); + given(antiBotService.wasPlayerKicked(name)).willReturn(true); // when listener.onPlayerKick(event); // then assertThat(event.isCancelled(), equalTo(false)); - verify(antiBot).wasPlayerKicked(name); + verify(antiBotService).wasPlayerKicked(name); verifyZeroInteractions(management); } @@ -560,11 +560,11 @@ public class PlayerListenerTest { verify(onJoinVerifier).refusePlayerForFullServer(event); verify(onJoinVerifier).checkSingleSession(name); verify(onJoinVerifier).checkIsValidName(name); - verify(onJoinVerifier).checkAntibot(name, true); + verify(onJoinVerifier).checkAntibot(player, true); verify(onJoinVerifier).checkKickNonRegistered(true); verify(onJoinVerifier).checkNameCasing(player, auth); verify(onJoinVerifier).checkPlayerCountry(true, ip); - verify(antiBot).handlePlayerJoin(player); + verify(antiBotService).handlePlayerJoin(); verify(teleportationService).teleportOnJoin(player); verifyNoModifyingCalls(event); } diff --git a/src/test/java/fr/xephi/authme/output/MessageKeyTest.java b/src/test/java/fr/xephi/authme/message/MessageKeyTest.java similarity index 95% rename from src/test/java/fr/xephi/authme/output/MessageKeyTest.java rename to src/test/java/fr/xephi/authme/message/MessageKeyTest.java index dda5eeb9..3eb9f96e 100644 --- a/src/test/java/fr/xephi/authme/output/MessageKeyTest.java +++ b/src/test/java/fr/xephi/authme/message/MessageKeyTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.output; +package fr.xephi.authme.message; import fr.xephi.authme.util.StringUtils; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/output/MessagesFileConsistencyTest.java b/src/test/java/fr/xephi/authme/message/MessagesFileConsistencyTest.java similarity index 93% rename from src/test/java/fr/xephi/authme/output/MessagesFileConsistencyTest.java rename to src/test/java/fr/xephi/authme/message/MessagesFileConsistencyTest.java index 607560d6..9e16994d 100644 --- a/src/test/java/fr/xephi/authme/output/MessagesFileConsistencyTest.java +++ b/src/test/java/fr/xephi/authme/message/MessagesFileConsistencyTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.output; +package fr.xephi.authme.message; import fr.xephi.authme.TestHelper; import fr.xephi.authme.util.StringUtils; @@ -32,7 +32,7 @@ public class MessagesFileConsistencyTest { if (!errors.isEmpty()) { fail("Validation errors in " + MESSAGES_FILE + ":\n- " - + StringUtils.join("\n- ", errors)); + + String.join("\n- ", errors)); } } @@ -55,7 +55,7 @@ public class MessagesFileConsistencyTest { if (!missingTags.isEmpty()) { String pluralS = missingTags.size() > 1 ? "s" : ""; errors.add(String.format("Message with key '%s' missing tag%s: %s", key, pluralS, - StringUtils.join(", ", missingTags))); + String.join(", ", missingTags))); } } } diff --git a/src/test/java/fr/xephi/authme/output/MessagesFileYamlCheckerTest.java b/src/test/java/fr/xephi/authme/message/MessagesFileYamlCheckerTest.java similarity index 97% rename from src/test/java/fr/xephi/authme/output/MessagesFileYamlCheckerTest.java rename to src/test/java/fr/xephi/authme/message/MessagesFileYamlCheckerTest.java index fc7b74e5..ebb04fc2 100644 --- a/src/test/java/fr/xephi/authme/output/MessagesFileYamlCheckerTest.java +++ b/src/test/java/fr/xephi/authme/message/MessagesFileYamlCheckerTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.output; +package fr.xephi.authme.message; import fr.xephi.authme.TestHelper; import fr.xephi.authme.util.StringUtils; @@ -48,7 +48,7 @@ public class MessagesFileYamlCheckerTest { // then if (!errors.isEmpty()) { - fail("Errors during verification of message files:\n-" + StringUtils.join("\n-", errors)); + fail("Errors during verification of message files:\n-" + String.join("\n-", errors)); } } diff --git a/src/test/java/fr/xephi/authme/output/MessagesIntegrationTest.java b/src/test/java/fr/xephi/authme/message/MessagesIntegrationTest.java similarity index 97% rename from src/test/java/fr/xephi/authme/output/MessagesIntegrationTest.java rename to src/test/java/fr/xephi/authme/message/MessagesIntegrationTest.java index ba8f03fb..a7a4af31 100644 --- a/src/test/java/fr/xephi/authme/output/MessagesIntegrationTest.java +++ b/src/test/java/fr/xephi/authme/message/MessagesIntegrationTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.output; +package fr.xephi.authme.message; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.TestHelper; @@ -33,8 +33,8 @@ import static org.mockito.Mockito.verify; */ public class MessagesIntegrationTest { - private static final String YML_TEST_FILE = TestHelper.PROJECT_ROOT + "output/messages_test.yml"; - private static final String YML_DEFAULT_TEST_FILE = TestHelper.PROJECT_ROOT + "output/messages_default.yml"; + private static final String YML_TEST_FILE = TestHelper.PROJECT_ROOT + "message/messages_test.yml"; + private static final String YML_DEFAULT_TEST_FILE = TestHelper.PROJECT_ROOT + "message/messages_default.yml"; private Messages messages; @BeforeClass @@ -256,7 +256,7 @@ public class MessagesIntegrationTest { assumeThat(messages.retrieveSingle(key), equalTo("§cWrong password!")); Settings settings = mock(Settings.class); given(settings.getMessagesFile()).willReturn(TestHelper.getJarFile( - TestHelper.PROJECT_ROOT + "output/messages_test2.yml")); + TestHelper.PROJECT_ROOT + "message/messages_test2.yml")); // when messages.reload(settings); diff --git a/src/test/java/fr/xephi/authme/permission/PermissionConsistencyTest.java b/src/test/java/fr/xephi/authme/permission/PermissionConsistencyTest.java index 55c22eb8..bd18df8a 100644 --- a/src/test/java/fr/xephi/authme/permission/PermissionConsistencyTest.java +++ b/src/test/java/fr/xephi/authme/permission/PermissionConsistencyTest.java @@ -2,7 +2,6 @@ package fr.xephi.authme.permission; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import fr.xephi.authme.util.StringUtils; import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -65,7 +64,7 @@ public class PermissionConsistencyTest { // then if (!errors.isEmpty()) { - fail("Found consistency issues!\n" + StringUtils.join("\n", errors)); + fail("Found consistency issues!\n" + String.join("\n", errors)); } } @@ -90,7 +89,7 @@ public class PermissionConsistencyTest { // then if (!errors.isEmpty()) { - fail("Found consistency issues!\n" + StringUtils.join("\n", errors)); + fail("Found consistency issues!\n" + String.join("\n", errors)); } } @@ -172,7 +171,7 @@ public class PermissionConsistencyTest { } if (!badChildren.isEmpty()) { errorList.add("Permission '" + definition.node + "' has children that are not logically below it: " - + StringUtils.join(", ", badChildren)); + + String.join(", ", badChildren)); } } diff --git a/src/test/java/fr/xephi/authme/process/ProcessServiceTest.java b/src/test/java/fr/xephi/authme/process/ProcessServiceTest.java index a1196c4d..0c71cd51 100644 --- a/src/test/java/fr/xephi/authme/process/ProcessServiceTest.java +++ b/src/test/java/fr/xephi/authme/process/ProcessServiceTest.java @@ -1,7 +1,7 @@ package fr.xephi.authme.process; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.permission.AuthGroupHandler; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.permission.PermissionNode; @@ -9,7 +9,7 @@ import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerPermission; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.ValidationService; +import fr.xephi.authme.service.ValidationService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.junit.Test; diff --git a/src/test/java/fr/xephi/authme/process/email/AsyncAddEmailTest.java b/src/test/java/fr/xephi/authme/process/email/AsyncAddEmailTest.java index 4d013bd3..e14c69f5 100644 --- a/src/test/java/fr/xephi/authme/process/email/AsyncAddEmailTest.java +++ b/src/test/java/fr/xephi/authme/process/email/AsyncAddEmailTest.java @@ -1,10 +1,10 @@ package fr.xephi.authme.process.email; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.settings.properties.RegistrationSettings; import org.bukkit.entity.Player; diff --git a/src/test/java/fr/xephi/authme/process/email/AsyncChangeEmailTest.java b/src/test/java/fr/xephi/authme/process/email/AsyncChangeEmailTest.java index 7b9dbfdb..ea18f86b 100644 --- a/src/test/java/fr/xephi/authme/process/email/AsyncChangeEmailTest.java +++ b/src/test/java/fr/xephi/authme/process/email/AsyncChangeEmailTest.java @@ -1,9 +1,9 @@ package fr.xephi.authme.process.email; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.settings.properties.RegistrationSettings; import org.bukkit.entity.Player; diff --git a/src/test/java/fr/xephi/authme/process/login/AsynchronousLoginTest.java b/src/test/java/fr/xephi/authme/process/login/AsynchronousLoginTest.java index 2171bef2..27582a59 100644 --- a/src/test/java/fr/xephi/authme/process/login/AsynchronousLoginTest.java +++ b/src/test/java/fr/xephi/authme/process/login/AsynchronousLoginTest.java @@ -1,11 +1,11 @@ package fr.xephi.authme.process.login; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.events.AuthMeAsyncPreLoginEvent; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerStatePermission; import fr.xephi.authme.process.ProcessService; @@ -13,8 +13,8 @@ import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import org.junit.BeforeClass; import org.junit.Test; @@ -58,7 +58,7 @@ public class AsynchronousLoginTest { @Mock private ProcessService processService; @Mock - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; @Mock private BukkitService bukkitService; @Mock diff --git a/src/test/java/fr/xephi/authme/process/unregister/AsynchronousUnregisterTest.java b/src/test/java/fr/xephi/authme/process/unregister/AsynchronousUnregisterTest.java index c77d4d3c..318b782a 100644 --- a/src/test/java/fr/xephi/authme/process/unregister/AsynchronousUnregisterTest.java +++ b/src/test/java/fr/xephi/authme/process/unregister/AsynchronousUnregisterTest.java @@ -1,11 +1,11 @@ package fr.xephi.authme.process.unregister; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.AuthGroupHandler; import fr.xephi.authme.permission.AuthGroupType; import fr.xephi.authme.process.ProcessService; @@ -13,9 +13,9 @@ import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.crypts.HashedPassword; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.task.PlayerDataTaskManager; -import fr.xephi.authme.util.BukkitService; -import fr.xephi.authme.util.TeleportationService; +import fr.xephi.authme.task.LimboPlayerTaskManager; +import fr.xephi.authme.service.BukkitService; +import fr.xephi.authme.service.TeleportationService; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.junit.BeforeClass; @@ -55,7 +55,7 @@ public class AsynchronousUnregisterTest { @Mock private LimboCache limboCache; @Mock - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; @Mock private TeleportationService teleportationService; @Mock @@ -85,7 +85,7 @@ public class AsynchronousUnregisterTest { // then verify(service).send(player, MessageKey.WRONG_PASSWORD); verify(passwordSecurity).comparePassword(userPassword, password, name); - verifyZeroInteractions(dataSource, playerDataTaskManager, limboCache, authGroupHandler, teleportationService); + verifyZeroInteractions(dataSource, limboPlayerTaskManager, limboCache, authGroupHandler, teleportationService); verify(player, only()).getName(); } @@ -175,7 +175,7 @@ public class AsynchronousUnregisterTest { verify(dataSource).removeAuth(name); verify(playerCache).removePlayer(name); verify(authGroupHandler).setGroup(player, AuthGroupType.UNREGISTERED); - verifyZeroInteractions(teleportationService, playerDataTaskManager); + verifyZeroInteractions(teleportationService, limboPlayerTaskManager); verify(bukkitService, never()).runTask(any(Runnable.class)); } diff --git a/src/test/java/fr/xephi/authme/security/RandomStringTest.java b/src/test/java/fr/xephi/authme/security/RandomStringUtilsTest.java similarity index 84% rename from src/test/java/fr/xephi/authme/security/RandomStringTest.java rename to src/test/java/fr/xephi/authme/security/RandomStringUtilsTest.java index 3582fb91..217bc927 100644 --- a/src/test/java/fr/xephi/authme/security/RandomStringTest.java +++ b/src/test/java/fr/xephi/authme/security/RandomStringUtilsTest.java @@ -1,5 +1,6 @@ package fr.xephi.authme.security; +import fr.xephi.authme.util.RandomStringUtils; import org.junit.Test; import java.util.regex.Pattern; @@ -8,9 +9,9 @@ import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; /** - * Test for {@link RandomString}. + * Test for {@link RandomStringUtils}. */ -public class RandomStringTest { +public class RandomStringUtilsTest { @Test public void shouldGenerateRandomStrings() { @@ -20,7 +21,7 @@ public class RandomStringTest { // when / then for (int length : lengths) { - String result = RandomString.generate(length); + String result = RandomStringUtils.generate(length); assertThat("Result '" + result + "' should have length " + length, result.length(), equalTo(length)); assertThat("Result '" + result + "' should only have characters a-z, 0-9", @@ -36,7 +37,7 @@ public class RandomStringTest { // when / then for (int length : lengths) { - String result = RandomString.generateHex(length); + String result = RandomStringUtils.generateHex(length); assertThat("Result '" + result + "' should have length " + length, result.length(), equalTo(length)); assertThat("Result '" + result + "' should only have characters a-f, 0-9", @@ -52,7 +53,7 @@ public class RandomStringTest { // when / then for (int length : lengths) { - String result = RandomString.generateHex(length); + String result = RandomStringUtils.generateHex(length); assertThat("Result '" + result + "' should have length " + length, result.length(), equalTo(length)); assertThat("Result '" + result + "' should only have characters a-z, A-Z, 0-9", @@ -63,7 +64,7 @@ public class RandomStringTest { @Test(expected = IllegalArgumentException.class) public void shouldThrowForInvalidLength() { // given/when - RandomString.generate(-3); + RandomStringUtils.generate(-3); // then - throw exception } diff --git a/src/test/java/fr/xephi/authme/service/AntiBotServiceTest.java b/src/test/java/fr/xephi/authme/service/AntiBotServiceTest.java new file mode 100644 index 00000000..1ab74ec3 --- /dev/null +++ b/src/test/java/fr/xephi/authme/service/AntiBotServiceTest.java @@ -0,0 +1,228 @@ +package fr.xephi.authme.service; + +import ch.jalu.injector.testing.BeforeInjecting; +import ch.jalu.injector.testing.DelayedInjectionRunner; +import ch.jalu.injector.testing.InjectDelayed; +import fr.xephi.authme.ReflectionTestUtils; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; +import fr.xephi.authme.permission.AdminPermission; +import fr.xephi.authme.permission.PermissionsManager; +import fr.xephi.authme.settings.Settings; +import fr.xephi.authme.settings.properties.ProtectionSettings; +import org.bukkit.entity.Player; +import org.bukkit.scheduler.BukkitTask; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; + +import java.util.Arrays; +import java.util.List; + +import static fr.xephi.authme.TestHelper.runSyncDelayedTaskWithDelay; +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.mockito.BDDMockito.given; +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyLong; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.only; +import static org.mockito.Mockito.reset; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; + +/** + * Test for {@link AntiBotService}. + */ +@RunWith(DelayedInjectionRunner.class) +public class AntiBotServiceTest { + + @InjectDelayed + private AntiBotService antiBotService; + + @Mock + private Settings settings; + @Mock + private Messages messages; + @Mock + private PermissionsManager permissionsManager; + @Mock + private BukkitService bukkitService; + + @BeforeInjecting + public void initSettings() { + given(settings.getProperty(ProtectionSettings.ANTIBOT_DURATION)).willReturn(10); + given(settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY)).willReturn(5); + given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(true); + given(settings.getProperty(ProtectionSettings.ANTIBOT_DELAY)).willReturn(8); + } + + @Test + public void shouldStartListenerOnStartup() { + // given / when + runSyncDelayedTaskWithDelay(bukkitService); + + // then + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.LISTENING)); + } + + @Test + public void shouldNotListenForDisabledSetting() { + // given + reset(bukkitService); + given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(false); + + // when + AntiBotService antiBotService = new AntiBotService(settings, messages, permissionsManager, bukkitService); + + // then + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.DISABLED)); + verifyZeroInteractions(bukkitService); + } + + @Test + public void shouldActivateAntibot() { + // given - listening antibot + runSyncDelayedTaskWithDelay(bukkitService); + + // when + antiBotService.overrideAntiBotStatus(true); + + // then + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.ACTIVE)); + // Check that a task is scheduled to disable again + runSyncDelayedTaskWithDelay(bukkitService); + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.LISTENING)); + } + + @Test + public void shouldNotActivateAntibotForDisabledSetting() { + // given - disabled antibot + reset(bukkitService); + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.DISABLED)); + given(settings.getProperty(ProtectionSettings.ENABLE_ANTIBOT)).willReturn(false); + + // when + antiBotService.overrideAntiBotStatus(true); + + // then + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.DISABLED)); + verifyZeroInteractions(bukkitService); + } + + @Test + public void shouldKeepTrackOfKickedPlayers() { + // given + String name = "eratic"; + antiBotService.addPlayerKick(name); + + // when + boolean result1 = antiBotService.wasPlayerKicked(name); + boolean result2 = antiBotService.wasPlayerKicked("other"); + + // then + assertThat(result1, equalTo(true)); + assertThat(result2, equalTo(false)); + } + + @Test + public void shouldAcceptPlayerToJoin() { + // given - listening antibot + runSyncDelayedTaskWithDelay(bukkitService); + + // when + boolean result = antiBotService.shouldKick(false); + + // then + assertThat(result, equalTo(false)); + } + + @Test + public void shouldRejectPlayerWithoutAuth() { + // given - active antibot + runSyncDelayedTaskWithDelay(bukkitService); + antiBotService.overrideAntiBotStatus(true); + + // when + boolean kickWithoutAuth = antiBotService.shouldKick(false); + boolean kickWithAuth = antiBotService.shouldKick(true); + + // then + assertThat(kickWithoutAuth, equalTo(true)); + assertThat(kickWithAuth, equalTo(false)); + } + + @Test + public void shouldIncreaseCountAndDecreaseAfterDelay() { + // given - listening antibot + runSyncDelayedTaskWithDelay(bukkitService); + reset(bukkitService); + assertThat(getAntiBotCount(antiBotService), equalTo(0)); + + // when + antiBotService.handlePlayerJoin(); + + // then + assertThat(getAntiBotCount(antiBotService), equalTo(1)); + runSyncDelayedTaskWithDelay(bukkitService); + assertThat(getAntiBotCount(antiBotService), equalTo(0)); + } + + @Test + public void shouldActivateAntibotAfterThreshold() { + // given + int sensitivity = 10; + given(settings.getProperty(ProtectionSettings.ANTIBOT_SENSIBILITY)).willReturn(sensitivity); + reset(bukkitService); + AntiBotService antiBotService = new AntiBotService(settings, messages, permissionsManager, bukkitService); + runSyncDelayedTaskWithDelay(bukkitService); + + for (int i = 0; i < sensitivity; ++i) { + antiBotService.handlePlayerJoin(); + } + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.LISTENING)); + + // when + antiBotService.handlePlayerJoin(); + + // then + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.ACTIVE)); + } + + @Test + @SuppressWarnings("unchecked") + public void shouldInformPlayersOnActivation() { + // given - listening antibot + runSyncDelayedTaskWithDelay(bukkitService); + List players = Arrays.asList(mock(Player.class), mock(Player.class)); + given(bukkitService.getOnlinePlayers()).willReturn((List) players); + given(permissionsManager.hasPermission(players.get(0), AdminPermission.ANTIBOT_MESSAGES)).willReturn(false); + given(permissionsManager.hasPermission(players.get(1), AdminPermission.ANTIBOT_MESSAGES)).willReturn(true); + + // when + antiBotService.overrideAntiBotStatus(true); + + // then + verify(permissionsManager).hasPermission(players.get(0), AdminPermission.ANTIBOT_MESSAGES); + verify(permissionsManager).hasPermission(players.get(1), AdminPermission.ANTIBOT_MESSAGES); + verify(messages, only()).send(players.get(1), MessageKey.ANTIBOT_AUTO_ENABLED_MESSAGE); + } + + @Test + public void shouldImmediatelyStartAfterFirstStartup() { + // given - listening antibot + runSyncDelayedTaskWithDelay(bukkitService); + given(bukkitService.runTaskLater(any(Runnable.class), anyLong())).willReturn(mock(BukkitTask.class)); + antiBotService.overrideAntiBotStatus(true); + + // when + antiBotService.reload(settings); + + // then + assertThat(antiBotService.getAntiBotStatus(), equalTo(AntiBotService.AntiBotStatus.LISTENING)); + } + + private static int getAntiBotCount(AntiBotService antiBotService) { + return ReflectionTestUtils.getFieldValue(AntiBotService.class, antiBotService, "antibotPlayers"); + } +} diff --git a/src/test/java/fr/xephi/authme/util/BukkitServiceTest.java b/src/test/java/fr/xephi/authme/service/BukkitServiceTest.java similarity index 98% rename from src/test/java/fr/xephi/authme/util/BukkitServiceTest.java rename to src/test/java/fr/xephi/authme/service/BukkitServiceTest.java index 37922e92..d43f3c53 100644 --- a/src/test/java/fr/xephi/authme/util/BukkitServiceTest.java +++ b/src/test/java/fr/xephi/authme/service/BukkitServiceTest.java @@ -1,4 +1,4 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; import fr.xephi.authme.AuthMe; import fr.xephi.authme.ReflectionTestUtils; diff --git a/src/test/java/fr/xephi/authme/util/MigrationServiceTest.java b/src/test/java/fr/xephi/authme/service/MigrationServiceTest.java similarity index 98% rename from src/test/java/fr/xephi/authme/util/MigrationServiceTest.java rename to src/test/java/fr/xephi/authme/service/MigrationServiceTest.java index 5a3f19ee..7283a468 100644 --- a/src/test/java/fr/xephi/authme/util/MigrationServiceTest.java +++ b/src/test/java/fr/xephi/authme/service/MigrationServiceTest.java @@ -1,7 +1,7 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerAuth; import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.security.crypts.HashedPassword; diff --git a/src/test/java/fr/xephi/authme/service/RecoveryCodeManagerTest.java b/src/test/java/fr/xephi/authme/service/RecoveryCodeServiceTest.java similarity index 73% rename from src/test/java/fr/xephi/authme/service/RecoveryCodeManagerTest.java rename to src/test/java/fr/xephi/authme/service/RecoveryCodeServiceTest.java index c606a743..b06a01f8 100644 --- a/src/test/java/fr/xephi/authme/service/RecoveryCodeManagerTest.java +++ b/src/test/java/fr/xephi/authme/service/RecoveryCodeServiceTest.java @@ -4,7 +4,7 @@ import ch.jalu.injector.testing.BeforeInjecting; import ch.jalu.injector.testing.DelayedInjectionRunner; import ch.jalu.injector.testing.InjectDelayed; import fr.xephi.authme.ReflectionTestUtils; -import fr.xephi.authme.service.RecoveryCodeManager.ExpiringEntry; +import fr.xephi.authme.service.RecoveryCodeService.ExpiringEntry; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.SecuritySettings; import org.junit.Test; @@ -20,13 +20,13 @@ import static org.junit.Assert.assertThat; import static org.mockito.BDDMockito.given; /** - * Test for {@link RecoveryCodeManager}. + * Test for {@link RecoveryCodeService}. */ @RunWith(DelayedInjectionRunner.class) -public class RecoveryCodeManagerTest { +public class RecoveryCodeServiceTest { @InjectDelayed - private RecoveryCodeManager recoveryCodeManager; + private RecoveryCodeService recoveryCodeService; @Mock private Settings settings; @@ -39,16 +39,16 @@ public class RecoveryCodeManagerTest { @Test public void shouldBeDisabledForNonPositiveLength() { - assertThat(recoveryCodeManager.isRecoveryCodeNeeded(), equalTo(true)); + assertThat(recoveryCodeService.isRecoveryCodeNeeded(), equalTo(true)); // given given(settings.getProperty(SecuritySettings.RECOVERY_CODE_LENGTH)).willReturn(0); // when - recoveryCodeManager.reload(settings); + recoveryCodeService.reload(settings); // then - assertThat(recoveryCodeManager.isRecoveryCodeNeeded(), equalTo(false)); + assertThat(recoveryCodeService.isRecoveryCodeNeeded(), equalTo(false)); } @Test @@ -57,7 +57,7 @@ public class RecoveryCodeManagerTest { String name = "Bobbers"; // when - recoveryCodeManager.generateCode(name); + recoveryCodeService.generateCode(name); // then ExpiringEntry entry = getCodeMap().get(name); @@ -72,7 +72,7 @@ public class RecoveryCodeManagerTest { setCodeInMap(player, code, System.currentTimeMillis() - 500); // when - boolean result = recoveryCodeManager.isCodeValid(player, code); + boolean result = recoveryCodeService.isCodeValid(player, code); // then assertThat(result, equalTo(false)); @@ -82,10 +82,10 @@ public class RecoveryCodeManagerTest { public void shouldRecognizeCorrectCode() { // given String player = "dragon"; - String code = recoveryCodeManager.generateCode(player); + String code = recoveryCodeService.generateCode(player); // when - boolean result = recoveryCodeManager.isCodeValid(player, code); + boolean result = recoveryCodeService.isCodeValid(player, code); // then assertThat(result, equalTo(true)); @@ -95,19 +95,19 @@ public class RecoveryCodeManagerTest { public void shouldRemoveCode() { // given String player = "Tester"; - String code = recoveryCodeManager.generateCode(player); + String code = recoveryCodeService.generateCode(player); // when - recoveryCodeManager.removeCode(player); + recoveryCodeService.removeCode(player); // then - assertThat(recoveryCodeManager.isCodeValid(player, code), equalTo(false)); + assertThat(recoveryCodeService.isCodeValid(player, code), equalTo(false)); assertThat(getCodeMap().get(player), nullValue()); } private Map getCodeMap() { - return ReflectionTestUtils.getFieldValue(RecoveryCodeManager.class, recoveryCodeManager, "recoveryCodes"); + return ReflectionTestUtils.getFieldValue(RecoveryCodeService.class, recoveryCodeService, "recoveryCodes"); } private void setCodeInMap(String player, String code, long expiration) { diff --git a/src/test/java/fr/xephi/authme/util/TeleportationServiceTest.java b/src/test/java/fr/xephi/authme/service/TeleportationServiceTest.java similarity index 96% rename from src/test/java/fr/xephi/authme/util/TeleportationServiceTest.java rename to src/test/java/fr/xephi/authme/service/TeleportationServiceTest.java index d3b0973f..30af5b0b 100644 --- a/src/test/java/fr/xephi/authme/util/TeleportationServiceTest.java +++ b/src/test/java/fr/xephi/authme/service/TeleportationServiceTest.java @@ -1,8 +1,8 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; -import fr.xephi.authme.cache.auth.PlayerAuth; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.PlayerData; +import fr.xephi.authme.data.auth.PlayerAuth; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboPlayer; import fr.xephi.authme.events.FirstSpawnTeleportEvent; import fr.xephi.authme.events.SpawnTeleportEvent; import fr.xephi.authme.settings.Settings; @@ -235,7 +235,7 @@ public class TeleportationServiceTest { given(settings.getProperty(RestrictionSettings.NO_TELEPORT)).willReturn(true); Player player = mock(Player.class); PlayerAuth auth = mock(PlayerAuth.class); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); // when teleportationService.teleportOnLogin(player, auth, limbo); @@ -253,7 +253,7 @@ public class TeleportationServiceTest { Location spawn = mockLocation(); given(spawnLoader.getSpawnLocation(player)).willReturn(spawn); PlayerAuth auth = mock(PlayerAuth.class); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); Location limboLocation = mockLocation(); given(limboLocation.getWorld().getName()).willReturn("forced1"); given(limbo.getLocation()).willReturn(limboLocation); @@ -277,7 +277,7 @@ public class TeleportationServiceTest { Location spawn = mockLocation(); given(spawnLoader.getSpawnLocation(player)).willReturn(spawn); PlayerAuth auth = mock(PlayerAuth.class); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); Location limboLocation = mockLocation(); given(limboLocation.getWorld().getName()).willReturn("Forced1"); // different case given(limbo.getLocation()).willReturn(limboLocation); @@ -304,7 +304,7 @@ public class TeleportationServiceTest { Player player = mock(Player.class); given(player.isOnline()).willReturn(true); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); Location limboLocation = mockLocation(); given(limbo.getLocation()).willReturn(limboLocation); @@ -333,7 +333,7 @@ public class TeleportationServiceTest { given(player.isOnline()).willReturn(true); World world = mock(World.class); given(player.getWorld()).willReturn(world); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); Location limboLocation = mockLocation(); given(limbo.getLocation()).willReturn(limboLocation); @@ -361,7 +361,7 @@ public class TeleportationServiceTest { given(player.isOnline()).willReturn(true); World world = mock(World.class); given(player.getWorld()).willReturn(world); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); Location location = mockLocation(); given(limbo.getLocation()).willReturn(location); @@ -386,7 +386,7 @@ public class TeleportationServiceTest { given(player.isOnline()).willReturn(true); World world = mock(World.class); given(player.getWorld()).willReturn(world); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); Location location = mockLocation(); given(limbo.getLocation()).willReturn(location); @@ -407,7 +407,7 @@ public class TeleportationServiceTest { PlayerAuth auth = PlayerAuth.builder().name("bobby").build(); Player player = mock(Player.class); - PlayerData limbo = mock(PlayerData.class); + LimboPlayer limbo = mock(LimboPlayer.class); // when teleportationService.teleportOnLogin(player, auth, limbo); diff --git a/src/test/java/fr/xephi/authme/util/ValidationServiceTest.java b/src/test/java/fr/xephi/authme/service/ValidationServiceTest.java similarity index 94% rename from src/test/java/fr/xephi/authme/util/ValidationServiceTest.java rename to src/test/java/fr/xephi/authme/service/ValidationServiceTest.java index b61f833d..1a1cbbe4 100644 --- a/src/test/java/fr/xephi/authme/util/ValidationServiceTest.java +++ b/src/test/java/fr/xephi/authme/service/ValidationServiceTest.java @@ -1,11 +1,12 @@ -package fr.xephi.authme.util; +package fr.xephi.authme.service; import ch.jalu.injector.testing.BeforeInjecting; import ch.jalu.injector.testing.DelayedInjectionRunner; import ch.jalu.injector.testing.InjectDelayed; import com.google.common.base.Strings; import fr.xephi.authme.datasource.DataSource; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.geoip.GeoIpManager; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PlayerStatePermission; import fr.xephi.authme.settings.Settings; @@ -13,7 +14,7 @@ import fr.xephi.authme.settings.properties.EmailSettings; import fr.xephi.authme.settings.properties.ProtectionSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; -import fr.xephi.authme.util.ValidationService.ValidationResult; +import fr.xephi.authme.service.ValidationService.ValidationResult; import org.bukkit.command.CommandSender; import org.junit.Test; import org.junit.runner.RunWith; @@ -44,7 +45,7 @@ public class ValidationServiceTest { @Mock private PermissionsManager permissionsManager; @Mock - private GeoLiteAPI geoLiteApi; + private GeoIpManager geoIpManager; @BeforeInjecting public void createService() { @@ -265,7 +266,7 @@ public class ValidationServiceTest { // then assertThat(result, equalTo(true)); - verifyZeroInteractions(geoLiteApi); + verifyZeroInteractions(geoIpManager); } @Test @@ -274,14 +275,14 @@ public class ValidationServiceTest { given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(asList("ch", "it")); given(settings.getProperty(ProtectionSettings.COUNTRIES_BLACKLIST)).willReturn(Collections.emptyList()); String ip = "127.0.0.1"; - given(geoLiteApi.getCountryCode(ip)).willReturn("CH"); + given(geoIpManager.getCountryCode(ip)).willReturn("CH"); // when boolean result = validationService.isCountryAdmitted(ip); // then assertThat(result, equalTo(true)); - verify(geoLiteApi).getCountryCode(ip); + verify(geoIpManager).getCountryCode(ip); } @Test @@ -290,14 +291,14 @@ public class ValidationServiceTest { given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(asList("ch", "it")); given(settings.getProperty(ProtectionSettings.COUNTRIES_BLACKLIST)).willReturn(Collections.emptyList()); String ip = "123.45.67.89"; - given(geoLiteApi.getCountryCode(ip)).willReturn("BR"); + given(geoIpManager.getCountryCode(ip)).willReturn("BR"); // when boolean result = validationService.isCountryAdmitted(ip); // then assertThat(result, equalTo(false)); - verify(geoLiteApi).getCountryCode(ip); + verify(geoIpManager).getCountryCode(ip); } @Test @@ -306,14 +307,14 @@ public class ValidationServiceTest { given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(Collections.emptyList()); given(settings.getProperty(ProtectionSettings.COUNTRIES_BLACKLIST)).willReturn(asList("ch", "it")); String ip = "127.0.0.1"; - given(geoLiteApi.getCountryCode(ip)).willReturn("BR"); + given(geoIpManager.getCountryCode(ip)).willReturn("BR"); // when boolean result = validationService.isCountryAdmitted(ip); // then assertThat(result, equalTo(true)); - verify(geoLiteApi).getCountryCode(ip); + verify(geoIpManager).getCountryCode(ip); } @Test @@ -322,14 +323,14 @@ public class ValidationServiceTest { given(settings.getProperty(ProtectionSettings.COUNTRIES_WHITELIST)).willReturn(Collections.emptyList()); given(settings.getProperty(ProtectionSettings.COUNTRIES_BLACKLIST)).willReturn(asList("ch", "it")); String ip = "123.45.67.89"; - given(geoLiteApi.getCountryCode(ip)).willReturn("IT"); + given(geoIpManager.getCountryCode(ip)).willReturn("IT"); // when boolean result = validationService.isCountryAdmitted(ip); // then assertThat(result, equalTo(false)); - verify(geoLiteApi).getCountryCode(ip); + verify(geoIpManager).getCountryCode(ip); } private static void assertErrorEquals(ValidationResult validationResult, MessageKey messageKey, String... args) { diff --git a/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java b/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java index a495254a..768dd98e 100644 --- a/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java +++ b/src/test/java/fr/xephi/authme/settings/ConfigFileConsistencyTest.java @@ -8,7 +8,6 @@ import com.github.authme.configme.resource.PropertyResource; import com.github.authme.configme.resource.YamlFileResource; import fr.xephi.authme.TestHelper; import fr.xephi.authme.settings.properties.AuthMeSettingsRetriever; -import fr.xephi.authme.util.StringUtils; import org.bukkit.configuration.MemorySection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; @@ -54,7 +53,7 @@ public class ConfigFileConsistencyTest { missingProperties.add(path); } } - fail("Found missing properties!\n-" + StringUtils.join("\n-", missingProperties)); + fail("Found missing properties!\n-" + String.join("\n-", missingProperties)); } } @@ -78,7 +77,7 @@ public class ConfigFileConsistencyTest { // then if (!unknownPaths.isEmpty()) { fail("Found " + unknownPaths.size() + " unknown property paths in the project's config.yml: \n- " - + StringUtils.join("\n- ", unknownPaths)); + + String.join("\n- ", unknownPaths)); } } diff --git a/src/test/java/fr/xephi/authme/settings/SettingsTest.java b/src/test/java/fr/xephi/authme/settings/SettingsTest.java index 3cde1f2d..1e85a742 100644 --- a/src/test/java/fr/xephi/authme/settings/SettingsTest.java +++ b/src/test/java/fr/xephi/authme/settings/SettingsTest.java @@ -22,7 +22,7 @@ import java.util.Collections; import java.util.List; import static fr.xephi.authme.settings.properties.PluginSettings.MESSAGES_LANGUAGE; -import static fr.xephi.authme.util.StringUtils.makePath; +import static fr.xephi.authme.util.FileUtils.makePath; import static org.hamcrest.Matchers.arrayContaining; import static org.hamcrest.Matchers.arrayWithSize; import static org.hamcrest.Matchers.endsWith; diff --git a/src/test/java/fr/xephi/authme/task/PlayerDataTaskManagerTest.java b/src/test/java/fr/xephi/authme/task/LimboPlayerTaskManagerTest.java similarity index 72% rename from src/test/java/fr/xephi/authme/task/PlayerDataTaskManagerTest.java rename to src/test/java/fr/xephi/authme/task/LimboPlayerTaskManagerTest.java index ab4d6ef9..7a2f9eeb 100644 --- a/src/test/java/fr/xephi/authme/task/PlayerDataTaskManagerTest.java +++ b/src/test/java/fr/xephi/authme/task/LimboPlayerTaskManagerTest.java @@ -1,15 +1,15 @@ package fr.xephi.authme.task; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.cache.auth.PlayerCache; -import fr.xephi.authme.cache.limbo.LimboCache; -import fr.xephi.authme.cache.limbo.PlayerData; -import fr.xephi.authme.output.MessageKey; -import fr.xephi.authme.output.Messages; +import fr.xephi.authme.data.auth.PlayerCache; +import fr.xephi.authme.data.limbo.LimboCache; +import fr.xephi.authme.data.limbo.LimboPlayer; +import fr.xephi.authme.message.MessageKey; +import fr.xephi.authme.message.Messages; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitTask; import org.junit.BeforeClass; @@ -28,13 +28,13 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; /** - * Test for {@link PlayerDataTaskManager}. + * Test for {@link LimboPlayerTaskManager}. */ @RunWith(MockitoJUnitRunner.class) -public class PlayerDataTaskManagerTest { +public class LimboPlayerTaskManagerTest { @InjectMocks - private PlayerDataTaskManager playerDataTaskManager; + private LimboPlayerTaskManager limboPlayerTaskManager; @Mock private Messages messages; @@ -60,8 +60,8 @@ public class PlayerDataTaskManagerTest { public void shouldRegisterMessageTask() { // given String name = "bobby"; - PlayerData playerData = mock(PlayerData.class); - given(limboCache.getPlayerData(name)).willReturn(playerData); + LimboPlayer limboPlayer = mock(LimboPlayer.class); + given(limboCache.getPlayerData(name)).willReturn(limboPlayer); MessageKey key = MessageKey.REGISTER_EMAIL_MESSAGE; given(messages.retrieve(key)).willReturn(new String[]{"Please register!"}); BukkitTask bukkiTask = mock(BukkitTask.class); @@ -70,10 +70,10 @@ public class PlayerDataTaskManagerTest { given(settings.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(true); // when - playerDataTaskManager.registerMessageTask(name, false); + limboPlayerTaskManager.registerMessageTask(name, false); // then - verify(playerData).setMessageTask(bukkiTask); + verify(limboPlayer).setMessageTask(bukkiTask); verify(messages).retrieve(key); } @@ -85,7 +85,7 @@ public class PlayerDataTaskManagerTest { given(settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL)).willReturn(5); // when - playerDataTaskManager.registerMessageTask(name, true); + limboPlayerTaskManager.registerMessageTask(name, true); // then verify(limboCache).getPlayerData(name); @@ -97,28 +97,28 @@ public class PlayerDataTaskManagerTest { public void shouldNotScheduleTaskForZeroAsInterval() { // given String name = "Tester1"; - PlayerData playerData = mock(PlayerData.class); - given(limboCache.getPlayerData(name)).willReturn(playerData); + LimboPlayer limboPlayer = mock(LimboPlayer.class); + given(limboCache.getPlayerData(name)).willReturn(limboPlayer); BukkitTask bukkiTask = mock(BukkitTask.class); given(bukkitService.runTask(any(MessageTask.class))).willReturn(bukkiTask); given(settings.getProperty(RegistrationSettings.MESSAGE_INTERVAL)).willReturn(0); // when - playerDataTaskManager.registerMessageTask(name, true); + limboPlayerTaskManager.registerMessageTask(name, true); // then - verifyZeroInteractions(playerData, bukkitService); + verifyZeroInteractions(limboPlayer, bukkitService); } @Test public void shouldCancelExistingMessageTask() { // given - PlayerData playerData = mock(PlayerData.class); + LimboPlayer limboPlayer = mock(LimboPlayer.class); BukkitTask existingMessageTask = mock(BukkitTask.class); - given(playerData.getMessageTask()).willReturn(existingMessageTask); + given(limboPlayer.getMessageTask()).willReturn(existingMessageTask); String name = "bobby"; - given(limboCache.getPlayerData(name)).willReturn(playerData); + given(limboCache.getPlayerData(name)).willReturn(limboPlayer); given(messages.retrieve(MessageKey.REGISTER_EMAIL_MESSAGE)) .willReturn(new String[]{"Please register", "Use /register"}); @@ -128,10 +128,10 @@ public class PlayerDataTaskManagerTest { given(settings.getProperty(RegistrationSettings.USE_EMAIL_REGISTRATION)).willReturn(true); // when - playerDataTaskManager.registerMessageTask(name, false); + limboPlayerTaskManager.registerMessageTask(name, false); // then - verify(playerData).setMessageTask(bukkiTask); + verify(limboPlayer).setMessageTask(bukkiTask); verify(messages).retrieve(MessageKey.REGISTER_EMAIL_MESSAGE); verify(existingMessageTask).cancel(); } @@ -142,17 +142,17 @@ public class PlayerDataTaskManagerTest { String name = "l33tPlayer"; Player player = mock(Player.class); given(player.getName()).willReturn(name); - PlayerData playerData = mock(PlayerData.class); - given(limboCache.getPlayerData(name)).willReturn(playerData); + LimboPlayer limboPlayer = mock(LimboPlayer.class); + given(limboCache.getPlayerData(name)).willReturn(limboPlayer); given(settings.getProperty(RestrictionSettings.TIMEOUT)).willReturn(30); BukkitTask bukkitTask = mock(BukkitTask.class); given(bukkitService.runTaskLater(any(TimeoutTask.class), anyLong())).willReturn(bukkitTask); // when - playerDataTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerTimeoutTask(player); // then - verify(playerData).setTimeoutTask(bukkitTask); + verify(limboPlayer).setTimeoutTask(bukkitTask); verify(bukkitService).runTaskLater(any(TimeoutTask.class), eq(600L)); // 30 * TICKS_PER_SECOND verify(messages).retrieveSingle(MessageKey.LOGIN_TIMEOUT_ERROR); } @@ -167,7 +167,7 @@ public class PlayerDataTaskManagerTest { given(settings.getProperty(RestrictionSettings.TIMEOUT)).willReturn(27); // when - playerDataTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerTimeoutTask(player); // then verifyZeroInteractions(bukkitService, messages); @@ -179,15 +179,15 @@ public class PlayerDataTaskManagerTest { String name = "snail"; Player player = mock(Player.class); given(player.getName()).willReturn(name); - PlayerData playerData = mock(PlayerData.class); - given(limboCache.getPlayerData(name)).willReturn(playerData); + LimboPlayer limboPlayer = mock(LimboPlayer.class); + given(limboCache.getPlayerData(name)).willReturn(limboPlayer); given(settings.getProperty(RestrictionSettings.TIMEOUT)).willReturn(0); // when - playerDataTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerTimeoutTask(player); // then - verifyZeroInteractions(playerData, bukkitService); + verifyZeroInteractions(limboPlayer, bukkitService); } @Test @@ -196,20 +196,20 @@ public class PlayerDataTaskManagerTest { String name = "l33tPlayer"; Player player = mock(Player.class); given(player.getName()).willReturn(name); - PlayerData playerData = mock(PlayerData.class); + LimboPlayer limboPlayer = mock(LimboPlayer.class); BukkitTask existingTask = mock(BukkitTask.class); - given(playerData.getTimeoutTask()).willReturn(existingTask); - given(limboCache.getPlayerData(name)).willReturn(playerData); + given(limboPlayer.getTimeoutTask()).willReturn(existingTask); + given(limboCache.getPlayerData(name)).willReturn(limboPlayer); given(settings.getProperty(RestrictionSettings.TIMEOUT)).willReturn(18); BukkitTask bukkitTask = mock(BukkitTask.class); given(bukkitService.runTaskLater(any(TimeoutTask.class), anyLong())).willReturn(bukkitTask); // when - playerDataTaskManager.registerTimeoutTask(player); + limboPlayerTaskManager.registerTimeoutTask(player); // then verify(existingTask).cancel(); - verify(playerData).setTimeoutTask(bukkitTask); + verify(limboPlayer).setTimeoutTask(bukkitTask); verify(bukkitService).runTaskLater(any(TimeoutTask.class), eq(360L)); // 18 * TICKS_PER_SECOND verify(messages).retrieveSingle(MessageKey.LOGIN_TIMEOUT_ERROR); } diff --git a/src/test/java/fr/xephi/authme/task/purge/PurgeServiceTest.java b/src/test/java/fr/xephi/authme/task/purge/PurgeServiceTest.java index 3f626f4d..d6fe5b57 100644 --- a/src/test/java/fr/xephi/authme/task/purge/PurgeServiceTest.java +++ b/src/test/java/fr/xephi/authme/task/purge/PurgeServiceTest.java @@ -6,7 +6,7 @@ import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.properties.PurgeSettings; -import fr.xephi.authme.util.BukkitService; +import fr.xephi.authme.service.BukkitService; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; diff --git a/src/test/java/fr/xephi/authme/util/FileUtilsTest.java b/src/test/java/fr/xephi/authme/util/FileUtilsTest.java index 41059eff..f36acf75 100644 --- a/src/test/java/fr/xephi/authme/util/FileUtilsTest.java +++ b/src/test/java/fr/xephi/authme/util/FileUtilsTest.java @@ -119,6 +119,15 @@ public class FileUtilsTest { // Nothing happens } + @Test + public void shouldConstructPath() { + // given/when + String result = FileUtils.makePath("path", "to", "test-file.txt"); + + // then + assertThat(result, equalTo("path" + File.separator + "to" + File.separator + "test-file.txt")); + } + private static void createFiles(File... files) throws IOException { for (File file : files) { boolean result = file.getParentFile().mkdirs() & file.createNewFile(); diff --git a/src/test/java/fr/xephi/authme/util/PlayerUtilsTest.java b/src/test/java/fr/xephi/authme/util/PlayerUtilsTest.java new file mode 100644 index 00000000..14933a04 --- /dev/null +++ b/src/test/java/fr/xephi/authme/util/PlayerUtilsTest.java @@ -0,0 +1,69 @@ +package fr.xephi.authme.util; + +import fr.xephi.authme.TestHelper; +import org.bukkit.entity.Player; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.UUID; +import java.util.regex.Pattern; + +import static org.hamcrest.Matchers.equalTo; +import static org.junit.Assert.assertThat; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.doThrow; +import static org.mockito.Mockito.mock; + +/** + * Test for {@link PlayerUtils}. + */ +public class PlayerUtilsTest { + + @BeforeClass + public static void setAuthmeInstance() { + TestHelper.setupLogger(); + } + + @Test + public void shouldGetPlayerIp() { + // given + Player player = mock(Player.class); + String ip = "124.86.248.62"; + TestHelper.mockPlayerIp(player, ip); + + // when + String result = PlayerUtils.getPlayerIp(player); + + // then + assertThat(result, equalTo(ip)); + } + + @Test + public void shouldGetUuid() { + // given + UUID uuid = UUID.randomUUID(); + Player player = mock(Player.class); + given(player.getUniqueId()).willReturn(uuid); + + // when + String result = PlayerUtils.getUUIDorName(player); + + // then + assertThat(result, equalTo(uuid.toString())); + } + + @Test + public void shouldFallbackToName() { + // given + Player player = mock(Player.class); + doThrow(NoSuchMethodError.class).when(player).getUniqueId(); + String name = "Bobby12"; + given(player.getName()).willReturn(name); + + // when + String result = PlayerUtils.getUUIDorName(player); + + // then + assertThat(result, equalTo(name)); + } +} diff --git a/src/test/java/fr/xephi/authme/util/StringUtilsTest.java b/src/test/java/fr/xephi/authme/util/StringUtilsTest.java index a09ac87c..1be95d0d 100644 --- a/src/test/java/fr/xephi/authme/util/StringUtilsTest.java +++ b/src/test/java/fr/xephi/authme/util/StringUtilsTest.java @@ -3,10 +3,7 @@ package fr.xephi.authme.util; import fr.xephi.authme.TestHelper; import org.junit.Test; -import java.io.File; import java.net.MalformedURLException; -import java.util.Arrays; -import java.util.List; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.greaterThan; @@ -65,51 +62,6 @@ public class StringUtilsTest { assertFalse(StringUtils.isEmpty(" test")); } - @Test - public void shouldJoinStrings() { - // given - List elements = Arrays.asList("test", "for", null, "join", "StringUtils"); - - // when - String result = StringUtils.join(", ", elements); - - // then - assertThat(result, equalTo("test, for, join, StringUtils")); - } - - @Test - public void shouldJoinStringArray() { - // given - String[] elements = {"A", "test", "sentence", "for", "the join", null, "method"}; - - // when - String result = StringUtils.join("_", elements); - - // then - assertThat(result, equalTo("A_test_sentence_for_the join_method")); - } - - @Test - public void shouldNotHaveDelimiter() { - // given - List elements = Arrays.asList(" ", null, "\t", "hello", null); - - // when - String result = StringUtils.join("-", elements); - - // then - assertThat(result, equalTo("hello")); - } - - @Test - public void shouldJoinWithNullDelimiter() { - // given/when - String result = StringUtils.join(null, "A", "Few", "Words", "\n", "To", "Join"); - - // then - assertThat(result, equalTo("AFewWordsToJoin")); - } - @Test public void shouldFormatException() { // given @@ -138,15 +90,6 @@ public class StringUtilsTest { assertThat(StringUtils.getDifference("test", "something"), greaterThan(0.88)); } - @Test - public void shouldConstructPath() { - // given/when - String result = StringUtils.makePath("path", "to", "test-file.txt"); - - // then - assertThat(result, equalTo("path" + File.separator + "to" + File.separator + "test-file.txt")); - } - @Test public void shouldHaveHiddenConstructor() { TestHelper.validateHasOnlyPrivateEmptyConstructor(StringUtils.class); diff --git a/src/test/java/fr/xephi/authme/util/UtilsTest.java b/src/test/java/fr/xephi/authme/util/UtilsTest.java index 930a5db8..458023d6 100644 --- a/src/test/java/fr/xephi/authme/util/UtilsTest.java +++ b/src/test/java/fr/xephi/authme/util/UtilsTest.java @@ -1,18 +1,13 @@ package fr.xephi.authme.util; import fr.xephi.authme.TestHelper; -import org.bukkit.entity.Player; import org.junit.BeforeClass; import org.junit.Test; -import java.util.UUID; import java.util.regex.Pattern; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertThat; -import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; /** * Test for {@link Utils}. @@ -48,49 +43,6 @@ public class UtilsTest { assertThat(result.toString(), equalTo(".*?")); } - @Test - public void shouldGetPlayerIp() { - // given - Player player = mock(Player.class); - String ip = "124.86.248.62"; - TestHelper.mockPlayerIp(player, ip); - - // when - String result = Utils.getPlayerIp(player); - - // then - assertThat(result, equalTo(ip)); - } - - @Test - public void shouldGetUuid() { - // given - UUID uuid = UUID.randomUUID(); - Player player = mock(Player.class); - given(player.getUniqueId()).willReturn(uuid); - - // when - String result = Utils.getUUIDorName(player); - - // then - assertThat(result, equalTo(uuid.toString())); - } - - @Test - public void shouldFallbackToName() { - // given - Player player = mock(Player.class); - doThrow(NoSuchMethodError.class).when(player).getUniqueId(); - String name = "Bobby12"; - given(player.getName()).willReturn(name); - - // when - String result = Utils.getUUIDorName(player); - - // then - assertThat(result, equalTo(name)); - } - @Test public void shouldHavePrivateConstructorOnly() { // given / when / then diff --git a/src/test/java/tools/ToolsRunner.java b/src/test/java/tools/ToolsRunner.java index 240b0681..3dfbd36b 100644 --- a/src/test/java/tools/ToolsRunner.java +++ b/src/test/java/tools/ToolsRunner.java @@ -5,9 +5,9 @@ import fr.xephi.authme.TestHelper; import tools.utils.AutoToolTask; import tools.utils.ToolTask; -import java.util.HashMap; import java.util.Map; import java.util.Scanner; +import java.util.TreeMap; /** * Runner for executing tool tasks. @@ -29,7 +29,7 @@ public final class ToolsRunner { // Note ljacqu 20151212: If the tools folder becomes a lot bigger, it will make sense to restrict the depth // of this recursive collector ClassCollector collector = new ClassCollector(TestHelper.TEST_SOURCES_FOLDER, "tools"); - Map tasks = new HashMap<>(); + Map tasks = new TreeMap<>(String.CASE_INSENSITIVE_ORDER); for (ToolTask task : collector.getInstancesOfType(ToolTask.class)) { tasks.put(task.getTaskName(), task); } diff --git a/src/test/java/tools/checktestmocks/CheckTestMocks.java b/src/test/java/tools/checktestmocks/CheckTestMocks.java index 8e301134..def4e822 100644 --- a/src/test/java/tools/checktestmocks/CheckTestMocks.java +++ b/src/test/java/tools/checktestmocks/CheckTestMocks.java @@ -1,10 +1,8 @@ package tools.checktestmocks; -import com.google.common.collect.Collections2; import com.google.common.collect.Sets; import fr.xephi.authme.ClassCollector; import fr.xephi.authme.TestHelper; -import fr.xephi.authme.util.StringUtils; import org.mockito.Mock; import tools.utils.AutoToolTask; import tools.utils.InjectorUtils; @@ -16,6 +14,7 @@ import java.util.HashSet; import java.util.List; import java.util.Scanner; import java.util.Set; +import java.util.stream.Collectors; /** * Task checking if all tests' {@code @Mock} fields have a corresponding @@ -37,11 +36,11 @@ public class CheckTestMocks implements AutoToolTask { @Override public void executeDefault() { - ClassCollector collector = new ClassCollector(TestHelper.SOURCES_FOLDER, TestHelper.PROJECT_ROOT); + ClassCollector collector = new ClassCollector(TestHelper.TEST_SOURCES_FOLDER, TestHelper.PROJECT_ROOT); for (Class clazz : collector.collectClasses(c -> isTestClassWithMocks(c))) { checkClass(clazz); } - System.out.println(StringUtils.join("\n", errors)); + System.out.println(String.join("\n", errors)); } /** @@ -112,8 +111,9 @@ public class CheckTestMocks implements AutoToolTask { } private static String formatClassList(Collection> coll) { - Collection classNames = Collections2.transform(coll, Class::getSimpleName); - return StringUtils.join(", ", classNames); + return coll.stream() + .map(Class::getSimpleName) + .collect(Collectors.joining(", ")); } } diff --git a/src/test/java/tools/dependencygraph/DrawDependency.java b/src/test/java/tools/dependencygraph/DrawDependency.java index 6515f52d..6b2c9c8a 100644 --- a/src/test/java/tools/dependencygraph/DrawDependency.java +++ b/src/test/java/tools/dependencygraph/DrawDependency.java @@ -8,7 +8,7 @@ import com.google.common.collect.Multimap; import fr.xephi.authme.ClassCollector; import fr.xephi.authme.TestHelper; import fr.xephi.authme.command.ExecutableCommand; -import fr.xephi.authme.converter.Converter; +import fr.xephi.authme.datasource.converter.Converter; import fr.xephi.authme.initialization.DataFolder; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.process.SynchronousProcess; diff --git a/src/test/java/tools/hashmethods/EncryptionMethodInfoGatherer.java b/src/test/java/tools/hashmethods/EncryptionMethodInfoGatherer.java index 23fa6d6b..057f14bb 100644 --- a/src/test/java/tools/hashmethods/EncryptionMethodInfoGatherer.java +++ b/src/test/java/tools/hashmethods/EncryptionMethodInfoGatherer.java @@ -152,7 +152,7 @@ public class EncryptionMethodInfoGatherer { // By passing some bogus "package" to the constructor, the injector will throw if it needs to // instantiate any dependency other than what we provide. - Injector injector = new InjectorBuilder().addDefaultHandlers("!!No package!!").create(); + Injector injector = new InjectorBuilder().addDefaultHandlers("fr.xephi.authme.security.crypts").create(); injector.register(Settings.class, settings); return injector; } diff --git a/src/test/java/tools/hashmethods/HashAlgorithmsDescriptionTask.java b/src/test/java/tools/hashmethods/HashAlgorithmsDescriptionTask.java index edbf5430..9f0a7b36 100644 --- a/src/test/java/tools/hashmethods/HashAlgorithmsDescriptionTask.java +++ b/src/test/java/tools/hashmethods/HashAlgorithmsDescriptionTask.java @@ -13,7 +13,7 @@ import java.util.Scanner; /** * Task for generating the markdown page describing the AuthMe hash algorithms. * - * @see {@link fr.xephi.authme.security.HashAlgorithm} + * @see fr.xephi.authme.security.HashAlgorithm */ public class HashAlgorithmsDescriptionTask implements AutoToolTask { diff --git a/src/test/java/tools/hashmethods/hash_algorithms.tpl.md b/src/test/java/tools/hashmethods/hash_algorithms.tpl.md index 73e85ba0..17431eb5 100644 --- a/src/test/java/tools/hashmethods/hash_algorithms.tpl.md +++ b/src/test/java/tools/hashmethods/hash_algorithms.tpl.md @@ -9,8 +9,7 @@ Algorithm | Recommendation | Hash length | ASCII | | Salt type | Length | Se --------- | -------------- | ----------- | ----- | --- | --------- | ------ | --------- [#algorithms] {name} | {recommendation} | {hash_length} | {ascii_restricted} | | {salt_type} | {salt_length} | {separate_salt} -[/#algorithms] -CUSTOM | | | | | | | | +[/#algorithms]CUSTOM | | | | | | | | diff --git a/src/test/java/tools/messages/MessageFileVerifier.java b/src/test/java/tools/messages/MessageFileVerifier.java index 8207091b..f0be6bb4 100644 --- a/src/test/java/tools/messages/MessageFileVerifier.java +++ b/src/test/java/tools/messages/MessageFileVerifier.java @@ -5,7 +5,7 @@ import com.google.common.base.Predicate; import com.google.common.collect.HashMultimap; import com.google.common.collect.Iterables; import com.google.common.collect.Multimap; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import tools.utils.FileUtils; diff --git a/src/test/java/tools/messages/translation/ExportMessagesTask.java b/src/test/java/tools/messages/translation/ExportMessagesTask.java index 672dac39..7ea2a419 100644 --- a/src/test/java/tools/messages/translation/ExportMessagesTask.java +++ b/src/test/java/tools/messages/translation/ExportMessagesTask.java @@ -2,7 +2,7 @@ package tools.messages.translation; import com.google.common.io.CharStreams; import com.google.gson.Gson; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import fr.xephi.authme.util.StringUtils; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; diff --git a/src/test/java/tools/messages/translation/ImportMessagesTask.java b/src/test/java/tools/messages/translation/ImportMessagesTask.java index 0685667d..c70caaa3 100644 --- a/src/test/java/tools/messages/translation/ImportMessagesTask.java +++ b/src/test/java/tools/messages/translation/ImportMessagesTask.java @@ -2,7 +2,7 @@ package tools.messages.translation; import com.google.common.io.Resources; import com.google.gson.Gson; -import fr.xephi.authme.output.MessageKey; +import fr.xephi.authme.message.MessageKey; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import tools.messages.MessageFileVerifier; diff --git a/src/test/java/tools/messages/translation/MessageExport.java b/src/test/java/tools/messages/translation/MessageExport.java index 270c460d..1b37347c 100644 --- a/src/test/java/tools/messages/translation/MessageExport.java +++ b/src/test/java/tools/messages/translation/MessageExport.java @@ -1,7 +1,5 @@ package tools.messages.translation; -import fr.xephi.authme.util.StringUtils; - /** * Container class for one translatable message. */ @@ -14,7 +12,7 @@ public class MessageExport { public MessageExport(String key, String[] tags, String defaultMessage, String translatedMessage) { this.key = key; - this.tags = StringUtils.join(",", tags); + this.tags = String.join(",", tags); this.defaultMessage = defaultMessage; this.translatedMessage = translatedMessage; } diff --git a/src/test/resources/fr/xephi/authme/cache/backup/sample-folder/data.json b/src/test/resources/fr/xephi/authme/data/backup/sample-folder/data.json similarity index 100% rename from src/test/resources/fr/xephi/authme/cache/backup/sample-folder/data.json rename to src/test/resources/fr/xephi/authme/data/backup/sample-folder/data.json diff --git a/src/test/resources/fr/xephi/authme/converter/crazylogin.db b/src/test/resources/fr/xephi/authme/datasource/converter/crazylogin.db similarity index 100% rename from src/test/resources/fr/xephi/authme/converter/crazylogin.db rename to src/test/resources/fr/xephi/authme/datasource/converter/crazylogin.db diff --git a/src/test/resources/fr/xephi/authme/output/messages_default.yml b/src/test/resources/fr/xephi/authme/message/messages_default.yml similarity index 100% rename from src/test/resources/fr/xephi/authme/output/messages_default.yml rename to src/test/resources/fr/xephi/authme/message/messages_default.yml diff --git a/src/test/resources/fr/xephi/authme/output/messages_test.yml b/src/test/resources/fr/xephi/authme/message/messages_test.yml similarity index 100% rename from src/test/resources/fr/xephi/authme/output/messages_test.yml rename to src/test/resources/fr/xephi/authme/message/messages_test.yml diff --git a/src/test/resources/fr/xephi/authme/output/messages_test2.yml b/src/test/resources/fr/xephi/authme/message/messages_test2.yml similarity index 100% rename from src/test/resources/fr/xephi/authme/output/messages_test2.yml rename to src/test/resources/fr/xephi/authme/message/messages_test2.yml