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