From a998354fa2c9a26ec9b785d3210a2ab2bbe77cf7 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Sun, 26 Jun 2016 16:19:55 +0200 Subject: [PATCH] Project cleanup --- pom.xml | 125 ++++++++---------- src/main/java/fr/xephi/authme/AuthMe.java | 113 ++++++++-------- .../fr/xephi/authme/output/Log4JFilter.java | 57 ++++---- .../process/login/ProcessSyncPlayerLogin.java | 24 ++-- src/main/resources/plugin.yml | 2 +- 5 files changed, 149 insertions(+), 172 deletions(-) diff --git a/pom.xml b/pom.xml index a644b229..458f8360 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,6 @@ fr.xephi authme 5.2-SNAPSHOT - jar AuthMeReloaded The first authentication plugin for the Bukkit API! @@ -44,10 +43,6 @@ - - 3.3.3 - - UTF-8 @@ -62,6 +57,7 @@ ${project.outputName} + ${project.versionCode} ${project.groupId}.${project.artifactId}.${bukkitplugin.name} Xephi, sgdc3, DNx5, timvisee, games647, ljacqu, Gnat008 @@ -69,8 +65,9 @@ 1.10-R0.1-SNAPSHOT - + + jenkins @@ -82,6 +79,7 @@ ${env.BUILD_NUMBER} + skipLongHashTests @@ -96,7 +94,7 @@ - + ${project.finalName}-noshade @@ -135,6 +133,7 @@ maven-surefire-plugin 2.19.1 + -Dfile.encoding=${project.build.sourceEncoding} @{argLine} ${project.skipExtendedHashTests} @@ -143,20 +142,16 @@ - org.apache.maven.plugins maven-shade-plugin 2.4.3 false - + @@ -173,36 +168,36 @@ - + com.google.gson - fr.xephi.authme.libs.google - - - com.zaxxer.hikari - fr.xephi.authme.libs.hikari - - - org.slf4j - fr.xephi.authme.libs.slf4j - - - com.maxmind.geoip - fr.xephi.authme.libs.geoip - - - net.ricecode.similarity - fr.xephi.authme.libs.similarity - - - javax.inject - fr.xephi.authme.libs.inject - - - - org.mcstats - fr.xephi.authme + fr.xephi.authme.libs.google.gson + + com.zaxxer.hikari + fr.xephi.authme.libs.zaxxer.hikari + + + org.slf4j + fr.xephi.authme.libs.slf4j.slf4j + + + com.maxmind.geoip + fr.xephi.authme.libs.maxmind.geoip + + + net.ricecode.similarity + fr.xephi.authme.libs.ricecode.similarity + + + javax.inject + fr.xephi.authme.libs.javax.inject + + + + org.mcstats + fr.xephi.authme + target/${project.finalName}-spigot.jar @@ -215,31 +210,31 @@ shade - + com.google fr.xephi.authme.libs.google com.zaxxer.hikari - fr.xephi.authme.libs.hikari + fr.xephi.authme.libs.zaxxer.hikari org.slf4j - fr.xephi.authme.libs.slf4j + fr.xephi.authme.libs.slf4j.slf4j com.maxmind.geoip - fr.xephi.authme.libs.geoip + fr.xephi.authme.libs.maxmind.geoip net.ricecode.similarity - fr.xephi.authme.libs.similarity + fr.xephi.authme.libs.ricecode.similarity javax.inject - fr.xephi.authme.libs.inject + fr.xephi.authme.libs.javax.inject @@ -252,7 +247,7 @@ - + org.codehaus.mojo exec-maven-plugin @@ -267,7 +262,7 @@ true - + org.jacoco jacoco-maven-plugin @@ -281,7 +276,7 @@ - + org.eluder.coveralls coveralls-maven-plugin @@ -289,9 +284,9 @@ false - + - + org.apache.maven.plugins maven-javadoc-plugin @@ -305,9 +300,9 @@ - + - spigot-repo + spigotmc-repo https://hub.spigotmc.org/nexus/content/repositories/snapshots @@ -319,7 +314,7 @@ - minelink-thirdparty + minelink-repo http://repo.minelink.net/content/repositories/public @@ -331,33 +326,27 @@ - onarandombox + onarandombox-repo http://repo.onarandombox.com/content/groups/public - vault-repo + theyeticave-repo http://nexus.theyeticave.net/content/repositories/pub_releases - luricos-releases + luricos-repo http://repo.luricos.de/content/repositories/releases - + xephi-repo http://ci.xephi.fr/plugin/repository/everything/ - - - - pex-repo - https://pex-repo.aoeu.xyz/ - @@ -375,6 +364,7 @@ true + org.slf4j slf4j-simple @@ -387,8 +377,7 @@ org.apache.logging.log4j log4j-core - - 2.0-beta9 + 2.5 provided diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index afd97494..8156d2c1 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -69,6 +69,7 @@ import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginLoader; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.plugin.messaging.Messenger; import org.bukkit.scheduler.BukkitScheduler; import org.bukkit.scheduler.BukkitTask; @@ -90,39 +91,26 @@ import static fr.xephi.authme.settings.properties.EmailSettings.RECALL_PLAYERS; */ public class AuthMe extends JavaPlugin { - // Defines the name of the plugin. + // Name of the plugin. private static final String PLUGIN_NAME = "AuthMeReloaded"; // Default version and build number values; private static String pluginVersion = "N/D"; private static String pluginBuildNumber = "Unknown"; - // Private Instances - private static AuthMe plugin; - /* - * Maps and stuff - */ - public final ConcurrentHashMap sessions = new ConcurrentHashMap<>(); - - /* - * Public instances - */ - public NewAPI api; - // TODO #655: Encapsulate mail - public SendMailSSL mail; /* * Private instances */ - // TODO #604: Encapsulate ProtocolLib members - public AuthMeInventoryPacketAdapter inventoryProtector; - public AuthMeTabCompletePacketAdapter tabComplete; - public AuthMeTablistPacketAdapter tablistHider; + + // Plugin instance + private static AuthMe plugin; + + private NewAPI api; private Management management; private CommandHandler commandHandler; private PermissionsManager permsMan; private NewSetting newSettings; private Messages messages; - private JsonCache playerBackup; private PasswordSecurity passwordSecurity; private DataSource database; private PluginHooks pluginHooks; @@ -130,6 +118,19 @@ public class AuthMe extends JavaPlugin { private BukkitService bukkitService; private AuthMeServiceInitializer initializer; + /* + * Public instances + */ + + // TODO: Encapsulate session management + public final ConcurrentHashMap sessions = new ConcurrentHashMap<>(); + // TODO #655: Encapsulate mail + public SendMailSSL mail; + // TODO #604: Encapsulate ProtocolLib members + public AuthMeInventoryPacketAdapter inventoryProtector; + public AuthMeTabCompletePacketAdapter tabComplete; + public AuthMeTablistPacketAdapter tablistHider; + /** * Constructor. */ @@ -184,7 +185,7 @@ public class AuthMe extends JavaPlugin { } // Get version and build number of the plugin - private void setPluginInfos() { + private void loadPluginInfo() { String versionRaw = this.getDescription().getVersion(); int index = versionRaw.lastIndexOf("-"); if (index != -1) { @@ -201,19 +202,24 @@ public class AuthMe extends JavaPlugin { */ @Override public void onEnable() { - // Set various instances + // Set the plugin instance and load plugin info from the plugin description. plugin = this; + loadPluginInfo(); + + // Set the Logger instance and log file path ConsoleLogger.setLogger(getLogger()); - setPluginInfos(); + ConsoleLogger.setLogFile(new File(getDataFolder(), "authme.log")); // Load settings and custom configurations, if it fails, stop the server due to security reasons. newSettings = createNewSetting(); if (newSettings == null) { getLogger().warning("Could not load configuration. Aborting."); getServer().shutdown(); + setEnabled(false); return; } - ConsoleLogger.setLogFile(new File(getDataFolder(), "authme.log")); + + // Apply settings to the logger ConsoleLogger.setLoggingOptions(newSettings); // Old settings manager @@ -232,10 +238,12 @@ public class AuthMe extends JavaPlugin { stopOrUnload(); return; } + // Convert deprecated PLAINTEXT hash entries MigrationService.changePlainTextToSha256(newSettings, database, new SHA256()); - + // Injector initialization initializer = new AuthMeServiceInitializer("fr.xephi.authme"); + // Register elements of the Bukkit / JavaPlugin environment initializer.register(AuthMe.class, this); initializer.register(Server.class, getServer()); @@ -261,21 +269,15 @@ public class AuthMe extends JavaPlugin { // Set up the mail API setupMailApi(); - // Check if the ProtocolLib is available. If so we could listen for - // inventory protection + // Check if the ProtocolLib is available checkProtocolLib(); - // End of Hooks // Do a backup on start + // TODO: maybe create a backup manager? new PerformBackup(this, newSettings).doBackup(PerformBackup.BackupCause.START); - - // Setup the inventory backup - playerBackup = new JsonCache(); - - // Set up the BungeeCord hook - setupBungeeCordHook(newSettings, initializer); + setupBungeeCordHook(); // Reload support hook reloadSupportHook(); @@ -396,11 +398,11 @@ public class AuthMe extends JavaPlugin { /** * Set up the BungeeCord hook. */ - private void setupBungeeCordHook(NewSetting settings, AuthMeServiceInitializer initializer) { - if (settings.getProperty(HooksSettings.BUNGEECORD)) { - Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord"); - Bukkit.getMessenger().registerIncomingPluginChannel( - this, "BungeeCord", initializer.get(BungeeCordMessage.class)); + private void setupBungeeCordHook() { + if (newSettings.getProperty(HooksSettings.BUNGEECORD)) { + Messenger messenger = Bukkit.getMessenger(); + messenger.registerOutgoingPluginChannel(plugin, "BungeeCord"); + messenger.registerIncomingPluginChannel(plugin, "BungeeCord", initializer.get(BungeeCordMessage.class)); } } @@ -434,18 +436,20 @@ public class AuthMe extends JavaPlugin { * Set up the console filter. */ private void setupConsoleFilter() { - if (newSettings.getProperty(SecuritySettings.REMOVE_PASSWORD_FROM_CONSOLE)) { + if (!newSettings.getProperty(SecuritySettings.REMOVE_PASSWORD_FROM_CONSOLE)) { + return; + } + // Try to set the log4j filter + try { + Class.forName("org.apache.logging.log4j.core.filter.AbstractFilter"); + setLog4JFilter(); + } catch (ClassNotFoundException | NoClassDefFoundError e) { + // log4j is not available + ConsoleLogger.info("You're using Minecraft 1.6.x or older, Log4J support will be disabled"); ConsoleFilter filter = new ConsoleFilter(); getLogger().setFilter(filter); Bukkit.getLogger().setFilter(filter); Logger.getLogger("Minecraft").setFilter(filter); - // Set Log4J Filter - try { - Class.forName("org.apache.logging.log4j.core.Filter"); - setLog4JFilter(); - } catch (ClassNotFoundException | NoClassDefFoundError e) { - ConsoleLogger.info("You're using Minecraft 1.6.x or older, Log4J support will be disabled"); - } } } @@ -570,16 +574,9 @@ public class AuthMe extends JavaPlugin { // Set the console filter to remove the passwords private void setLog4JFilter() { - Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() { - @Override - public void run() { - org.apache.logging.log4j.core.Logger logger; - logger = (org.apache.logging.log4j.core.Logger) LogManager.getRootLogger(); - logger.addFilter(new Log4JFilter()); - logger = (org.apache.logging.log4j.core.Logger) LogManager.getLogger("net.minecraft"); - logger.addFilter(new Log4JFilter()); - } - }); + org.apache.logging.log4j.core.Logger logger; + logger = (org.apache.logging.log4j.core.Logger) LogManager.getRootLogger(); + logger.addFilter(new Log4JFilter()); } // Check the presence of the ProtocolLib plugin @@ -640,9 +637,6 @@ public class AuthMe extends JavaPlugin { player.setOp(limbo.isOperator()); limbo.getTimeoutTask().cancel(); limboCache.deleteLimboPlayer(name); - if (this.playerBackup.doesCacheExist(player)) { - this.playerBackup.removeCache(player); - } } PlayerCache.getInstance().removePlayer(name); } @@ -719,7 +713,6 @@ public class AuthMe extends JavaPlugin { return commandHandler.processCommand(sender, commandLabel, args); } - // ------------- // Service getters (deprecated) // Use @Inject fields instead diff --git a/src/main/java/fr/xephi/authme/output/Log4JFilter.java b/src/main/java/fr/xephi/authme/output/Log4JFilter.java index 8bc52452..90b9f0fb 100644 --- a/src/main/java/fr/xephi/authme/output/Log4JFilter.java +++ b/src/main/java/fr/xephi/authme/output/Log4JFilter.java @@ -2,9 +2,9 @@ package fr.xephi.authme.output; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.Marker; -import org.apache.logging.log4j.core.Filter; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.Logger; +import org.apache.logging.log4j.core.filter.AbstractFilter; import org.apache.logging.log4j.message.Message; /** @@ -12,7 +12,8 @@ import org.apache.logging.log4j.message.Message; * * @author Xephi59 */ -public class Log4JFilter implements Filter { +@SuppressWarnings("serial") +public class Log4JFilter extends AbstractFilter { /** * Constructor. @@ -50,42 +51,30 @@ public class Log4JFilter implements Filter { } @Override - public Result filter(LogEvent record) { - if (record == null) { - return Result.NEUTRAL; + public Result filter(LogEvent event) { + Message candidate = null; + if(event != null) { + candidate = event.getMessage(); } - return validateMessage(record.getMessage()); + return validateMessage(candidate); } @Override - public Result filter(Logger arg0, Level arg1, Marker arg2, String message, Object... arg4) { - if (message == null) { - return Result.NEUTRAL; + public Result filter(Logger logger, Level level, Marker marker, Message msg, Throwable t) { + return validateMessage(msg); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String msg, Object... params) { + return validateMessage(msg); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, Object msg, Throwable t) { + String candidate = null; + if(msg != null) { + candidate = msg.toString(); } - return validateMessage(message); + return validateMessage(candidate); } - - @Override - public Result filter(Logger arg0, Level arg1, Marker arg2, Object message, Throwable arg4) { - if (message == null) { - return Result.NEUTRAL; - } - return validateMessage(message.toString()); - } - - @Override - public Result filter(Logger arg0, Level arg1, Marker arg2, Message message, Throwable arg4) { - return validateMessage(message); - } - - @Override - public Result getOnMatch() { - return Result.NEUTRAL; - } - - @Override - public Result getOnMismatch() { - return Result.NEUTRAL; - } - } 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 28304e00..8f8f32ec 100644 --- a/src/main/java/fr/xephi/authme/process/login/ProcessSyncPlayerLogin.java +++ b/src/main/java/fr/xephi/authme/process/login/ProcessSyncPlayerLogin.java @@ -135,9 +135,7 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess { // The Login event now fires (as intended) after everything is processed bukkitService.callEvent(new LoginEvent(player)); player.saveData(); - if (service.getProperty(HooksSettings.BUNGEECORD)) { - sendBungeeMessage(player); - } + sendBungeeMessage(player); // Login is done, display welcome message if (service.getProperty(RegistrationSettings.USE_WELCOME_MESSAGE)) { if (service.getProperty(RegistrationSettings.BROADCAST_WELCOME_MESSAGE)) { @@ -162,15 +160,24 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess { } private void sendTo(Player player) { - if (!service.getProperty(HooksSettings.BUNGEECORD_SERVER).isEmpty()) { - ByteArrayDataOutput out = ByteStreams.newDataOutput(); - out.writeUTF("Connect"); - out.writeUTF(service.getProperty(HooksSettings.BUNGEECORD_SERVER)); - player.sendPluginMessage(plugin, "BungeeCord", out.toByteArray()); + if(!service.getProperty(HooksSettings.BUNGEECORD)) { + return; } + if(service.getProperty(HooksSettings.BUNGEECORD_SERVER).isEmpty()) { + return; + } + + ByteArrayDataOutput out = ByteStreams.newDataOutput(); + out.writeUTF("Connect"); + out.writeUTF(service.getProperty(HooksSettings.BUNGEECORD_SERVER)); + player.sendPluginMessage(plugin, "BungeeCord", out.toByteArray()); } private void sendBungeeMessage(Player player) { + if(!service.getProperty(HooksSettings.BUNGEECORD)) { + return; + } + ByteArrayDataOutput out = ByteStreams.newDataOutput(); out.writeUTF("Forward"); out.writeUTF("ALL"); @@ -178,5 +185,4 @@ public class ProcessSyncPlayerLogin implements SynchronousProcess { out.writeUTF("login;" + player.getName()); player.sendPluginMessage(plugin, "BungeeCord", out.toByteArray()); } - } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index ef48d2e2..cb915889 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ authors: [${bukkitplugin.authors}] website: ${project.url} description: ${project.description} main: ${bukkitplugin.main} -version: ${project.versionCode} +version: ${bukkitplugin.versionCode} softdepend: - Vault - PermissionsBukkit