From 469e8d3a48535b9342a35a0df162ecf365eeba7b Mon Sep 17 00:00:00 2001 From: games647 Date: Tue, 28 Jun 2016 16:03:04 +0200 Subject: [PATCH 1/5] Refactor sessions a bit to fix #419 --- .../fr/xephi/authme/cache/SessionManager.java | 3 +- .../authme/process/join/AsynchronousJoin.java | 7 ++-- .../authme/process/quit/AsynchronousQuit.java | 34 +++++++++---------- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/main/java/fr/xephi/authme/cache/SessionManager.java b/src/main/java/fr/xephi/authme/cache/SessionManager.java index 0c03dc0f..ff448f3f 100644 --- a/src/main/java/fr/xephi/authme/cache/SessionManager.java +++ b/src/main/java/fr/xephi/authme/cache/SessionManager.java @@ -51,10 +51,9 @@ public class SessionManager implements SettingsDependent { * @param name The name of the player who's session to cancel. */ public void cancelSession(String name) { - BukkitTask task = sessions.get(name); + BukkitTask task = sessions.remove(name); if (task != null) { task.cancel(); - removeSession(name); } } 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 5551b9b8..b242f1c3 100644 --- a/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java +++ b/src/main/java/fr/xephi/authme/process/join/AsynchronousJoin.java @@ -142,10 +142,9 @@ public class AsynchronousJoin implements AsynchronousProcess { } // Session logic - if (service.getProperty(PluginSettings.SESSIONS_ENABLED) && (playerCache.isAuthenticated(name) || database.isLogged(name))) { - if (sessionManager.hasSession(name)) { - sessionManager.cancelSession(name); - } + if (service.getProperty(PluginSettings.SESSIONS_ENABLED) && (sessionManager.hasSession(name) || database.isLogged(name))) { + sessionManager.cancelSession(name); + PlayerAuth auth = database.getAuth(name); database.setUnlogged(name); playerCache.removePlayer(name); 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 a157287b..d331cf77 100644 --- a/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java +++ b/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java @@ -86,27 +86,29 @@ public class AsynchronousQuit implements AsynchronousProcess { isOp = limbo.isOperator(); limboCache.deleteLimboPlayer(name); } - if (!isKick) { - if (plugin.isEnabled()) { - BukkitTask task = plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { - @Override - public void run() { - postLogout(name); - } + //always unauthenticate the player - use session only for auto logins on the same ip + playerCache.removePlayer(name); - }, Settings.getSessionTimeout * TICKS_PER_MINUTE); + if (plugin.isEnabled() && Settings.isSessionsEnabled) { + BukkitTask task = plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { - sessionManager.addSession(name, task); - } else { - //plugin is disabled; we cannot schedule more tasks so run it directly here - postLogout(name); - } + @Override + public void run() { + postLogout(name); + } + + }, Settings.getSessionTimeout * TICKS_PER_MINUTE); + + sessionManager.addSession(name, task); } else { - playerCache.removePlayer(name); - database.setUnlogged(name); + //plugin is disabled; we cannot schedule more tasks so run it directly here + postLogout(name); } + //always update the database when the player quit the game + database.setUnlogged(name); + if (plugin.isEnabled()) { syncProcessManager.processSyncPlayerQuit(player, isOp, needToChange); } @@ -117,8 +119,6 @@ public class AsynchronousQuit implements AsynchronousProcess { } private void postLogout(String name) { - PlayerCache.getInstance().removePlayer(name); - database.setUnlogged(name); sessionManager.removeSession(name); } } From 837bbd69ac6bfb963b88383b9bc406f443bfd113 Mon Sep 17 00:00:00 2001 From: games647 Date: Tue, 28 Jun 2016 16:09:32 +0200 Subject: [PATCH 2/5] Remove the debug code as the source for random-logouts is found --- src/main/java/fr/xephi/authme/ConsoleLogger.java | 14 -------------- .../fr/xephi/authme/cache/auth/PlayerCache.java | 4 ---- .../xephi/authme/datasource/CacheDataSource.java | 1 - 3 files changed, 19 deletions(-) diff --git a/src/main/java/fr/xephi/authme/ConsoleLogger.java b/src/main/java/fr/xephi/authme/ConsoleLogger.java index 284a7442..130919aa 100644 --- a/src/main/java/fr/xephi/authme/ConsoleLogger.java +++ b/src/main/java/fr/xephi/authme/ConsoleLogger.java @@ -11,7 +11,6 @@ import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.logging.Level; import java.util.logging.Logger; /** @@ -67,19 +66,6 @@ public final class ConsoleLogger { } - public static void debug(String message) { - if (enableDebug) { - //creating and filling an exception is a expensive call - //TODO #419 20160601: ->so it should be removed as soon #419 is fixed - //logger.isLoggable does not work because the plugin logger is always ALL - logger.log(Level.FINE, message + ' ' + Thread.currentThread().getName(), new Exception()); - - if (useLogging) { - writeLog("Debug: " + Thread.currentThread().getName() + ':' + message); - } - } - } - /** * Print an error message. * diff --git a/src/main/java/fr/xephi/authme/cache/auth/PlayerCache.java b/src/main/java/fr/xephi/authme/cache/auth/PlayerCache.java index 9914ee3f..60040575 100644 --- a/src/main/java/fr/xephi/authme/cache/auth/PlayerCache.java +++ b/src/main/java/fr/xephi/authme/cache/auth/PlayerCache.java @@ -1,6 +1,5 @@ package fr.xephi.authme.cache.auth; -import fr.xephi.authme.ConsoleLogger; import java.util.concurrent.ConcurrentHashMap; @@ -34,7 +33,6 @@ public class PlayerCache { * @param auth PlayerAuth */ public void addPlayer(PlayerAuth auth) { - ConsoleLogger.debug("ADDED PLAYER TO CACHE " + auth.getNickname()); cache.put(auth.getNickname().toLowerCase(), auth); } @@ -44,7 +42,6 @@ public class PlayerCache { * @param auth PlayerAuth */ public void updatePlayer(PlayerAuth auth) { - ConsoleLogger.debug("UPDATE PLAYER " + auth.getNickname()); cache.put(auth.getNickname(), auth); } @@ -54,7 +51,6 @@ public class PlayerCache { * @param user String */ public void removePlayer(String user) { - ConsoleLogger.debug("REMOVE PLAYER " + user); cache.remove(user.toLowerCase()); } diff --git a/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java b/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java index 473633e4..79cc6ae6 100644 --- a/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java +++ b/src/main/java/fr/xephi/authme/datasource/CacheDataSource.java @@ -54,7 +54,6 @@ public class CacheDataSource implements DataSource { return executorService.submit(new Callable>() { @Override public Optional call() { - ConsoleLogger.debug("REFRESH " + key); return load(key); } }); From c383c072ff12d15242a1f60f2d6907af00d3b252 Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 28 Jun 2016 16:12:14 +0200 Subject: [PATCH 3/5] Remove my stupid code --- src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java b/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java index 2d05d5ce..c4d54e58 100644 --- a/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java +++ b/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java @@ -64,11 +64,6 @@ public class BungeeCordMessage implements PluginMessageListener { if ("login".equals(act)) { playerCache.updatePlayer(auth); dataSource.setLogged(name); - //START 03062016 sgdc3: should fix #731 but we need to recode this mess - if (sessionManager.hasSession(name)) { - sessionManager.cancelSession(name); - } - //END if (!settings.getProperty(SecuritySettings.REMOVE_SPAM_FROM_CONSOLE)) { ConsoleLogger.info("Player " + auth.getNickname() + " has logged in from one of your server!"); @@ -76,6 +71,7 @@ public class BungeeCordMessage implements PluginMessageListener { } else if ("logout".equals(act)) { playerCache.removePlayer(name); dataSource.setUnlogged(name); + if (!settings.getProperty(SecuritySettings.REMOVE_SPAM_FROM_CONSOLE)) { ConsoleLogger.info("Player " + auth.getNickname() + " has logged out from one of your server!"); } From 451a570c73f002d95adb03b3279620f4adb61fdb Mon Sep 17 00:00:00 2001 From: Gabriele C Date: Tue, 28 Jun 2016 16:17:01 +0200 Subject: [PATCH 4/5] Cleanup --- src/main/java/fr/xephi/authme/ConsoleLogger.java | 2 -- src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java | 3 --- 2 files changed, 5 deletions(-) diff --git a/src/main/java/fr/xephi/authme/ConsoleLogger.java b/src/main/java/fr/xephi/authme/ConsoleLogger.java index 130919aa..b26a8625 100644 --- a/src/main/java/fr/xephi/authme/ConsoleLogger.java +++ b/src/main/java/fr/xephi/authme/ConsoleLogger.java @@ -21,7 +21,6 @@ public final class ConsoleLogger { private static final String NEW_LINE = System.getProperty("line.separator"); private static final DateFormat DATE_FORMAT = new SimpleDateFormat("[MM-dd HH:mm:ss]"); private static Logger logger; - private static boolean enableDebug = false; private static boolean useLogging = false; private static File logFile; private static FileWriter fileWriter; @@ -39,7 +38,6 @@ public final class ConsoleLogger { public static void setLoggingOptions(NewSetting settings) { ConsoleLogger.useLogging = settings.getProperty(SecuritySettings.USE_LOGGING); - ConsoleLogger.enableDebug = !settings.getProperty(SecuritySettings.REMOVE_SPAM_FROM_CONSOLE); if (useLogging) { if (fileWriter == null) { try { diff --git a/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java b/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java index 53409375..1fda06ba 100644 --- a/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java +++ b/src/main/java/fr/xephi/authme/hooks/BungeeCordMessage.java @@ -28,9 +28,6 @@ public class BungeeCordMessage implements PluginMessageListener { @Inject private PlayerCache playerCache; - - @Inject - private SessionManager sessionManager; @Inject private NewSetting settings; From 348e796752904d88267bc4b7c4a799516c43e2dd Mon Sep 17 00:00:00 2001 From: games647 Date: Tue, 28 Jun 2016 20:47:13 +0200 Subject: [PATCH 5/5] Switch to the new properties settings --- .../java/fr/xephi/authme/process/quit/AsynchronousQuit.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 d331cf77..c1aac0c6 100644 --- a/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java +++ b/src/main/java/fr/xephi/authme/process/quit/AsynchronousQuit.java @@ -11,7 +11,7 @@ import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.process.AsynchronousProcess; import fr.xephi.authme.process.ProcessService; import fr.xephi.authme.process.SyncProcessManager; -import fr.xephi.authme.settings.Settings; +import fr.xephi.authme.settings.properties.PluginSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.util.StringUtils; import fr.xephi.authme.util.Utils; @@ -90,7 +90,7 @@ public class AsynchronousQuit implements AsynchronousProcess { //always unauthenticate the player - use session only for auto logins on the same ip playerCache.removePlayer(name); - if (plugin.isEnabled() && Settings.isSessionsEnabled) { + if (plugin.isEnabled() && service.getProperty(PluginSettings.SESSIONS_ENABLED)) { BukkitTask task = plugin.getServer().getScheduler().runTaskLaterAsynchronously(plugin, new Runnable() { @Override @@ -98,7 +98,7 @@ public class AsynchronousQuit implements AsynchronousProcess { postLogout(name); } - }, Settings.getSessionTimeout * TICKS_PER_MINUTE); + }, service.getProperty(PluginSettings.SESSIONS_TIMEOUT) * TICKS_PER_MINUTE); sessionManager.addSession(name, task); } else {