From a84632686db105941428ddd94dcb2f58bd2aba2a Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sat, 29 Jul 2017 21:13:08 +0300 Subject: [PATCH] Fix hashCode NPE Attempt to fix "issued command: /plan register" filtering from console output - failed --- .../main/java/com/djrapitops/plan/Plan.java | 16 ++- .../commands/RegisterCommandFilter.java | 130 +++++++++++++++++- .../com/djrapitops/plan/data/UserData.java | 1 - .../plan/data/cache/DataCacheHandler.java | 2 +- 4 files changed, 136 insertions(+), 13 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/Plan.java b/Plan/src/main/java/com/djrapitops/plan/Plan.java index 7921b7346..198a59db3 100644 --- a/Plan/src/main/java/com/djrapitops/plan/Plan.java +++ b/Plan/src/main/java/com/djrapitops/plan/Plan.java @@ -42,11 +42,14 @@ import main.java.com.djrapitops.plan.utilities.Benchmark; import main.java.com.djrapitops.plan.utilities.Check; import main.java.com.djrapitops.plan.utilities.MiscUtils; import main.java.com.djrapitops.plan.utilities.metrics.BStats; -import org.bukkit.Bukkit; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.core.LoggerContext; +import org.apache.logging.log4j.core.config.LoggerConfig; import java.io.*; import java.net.MalformedURLException; import java.net.URL; +import java.util.Collection; import java.util.HashSet; import java.util.Set; import java.util.concurrent.Executors; @@ -186,7 +189,11 @@ public class Plan extends BukkitPlugin { Log.error("WebServer was not Initialized."); } // Prevent passwords showing up on console. - Bukkit.getLogger().setFilter(new RegisterCommandFilter()); + LoggerContext ctx = (LoggerContext) LogManager.getContext(false); + Collection lc = ctx.getConfiguration().getLoggers().values(); + for (LoggerConfig c : lc) { + c.addFilter(new RegisterCommandFilter()); + } } else if (!hasDataViewCapability) { Log.infoColor(Phrase.ERROR_NO_DATA_VIEW.toString()); } @@ -390,7 +397,7 @@ public class Plan extends BukkitPlugin { } try (InputStream inputStream = localeURL.openStream(); - OutputStream outputStream = new FileOutputStream(localeFile)) { + OutputStream outputStream = new FileOutputStream(localeFile)) { int read; byte[] bytes = new byte[1024]; @@ -421,9 +428,8 @@ public class Plan extends BukkitPlugin { /** * Stops initializing the locale * - * @implNote Removes clutter in the method - * * @param usingLocale The locale that's used + * @implNote Removes clutter in the method */ private void stopInitLocale(String usingLocale) { Benchmark.stop("Enable: Initializing locale"); diff --git a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommandFilter.java b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommandFilter.java index 222e1b5b8..1dd9f9372 100644 --- a/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommandFilter.java +++ b/Plan/src/main/java/com/djrapitops/plan/command/commands/RegisterCommandFilter.java @@ -1,7 +1,11 @@ package main.java.com.djrapitops.plan.command.commands; -import java.util.logging.Filter; -import java.util.logging.LogRecord; +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.message.Message; /** * Filters out WebUser registration command logs. @@ -11,12 +15,126 @@ import java.util.logging.LogRecord; */ public class RegisterCommandFilter implements Filter { - @Override - public boolean isLoggable(LogRecord record) { - String message = record.getMessage(); + private boolean start = true; + + private Result filter(String message) { boolean block = message.contains("command: /plan register") || message.contains("command: /plan web register") || message.contains("command: /plan webuser register"); - return !block; + if (block) { + return Result.DENY; + } + return null; + } + + @Override + public Result filter(LogEvent event) { + String message = event.getMessage().toString().toLowerCase(); + return filter(message); + } + + @Override + public Result filter(Logger arg0, Level arg1, Marker arg2, String arg3, Object... arg4) { + return filter(arg3); + } + + @Override + public Result filter(Logger arg0, Level arg1, Marker arg2, Object arg3, Throwable arg4) { + return null; + } + + @Override + public Result filter(Logger arg0, Level arg1, Marker arg2, Message arg3, Throwable arg4) { + return filter(arg3.toString()); + } + + @Override + public Result getOnMatch() { + return null; + } + + @Override + public Result getOnMismatch() { + return null; + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2, Object o3) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2, Object o3, Object o4) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2, Object o3, Object o4, Object o5) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2, Object o3, Object o4, Object o5, Object o6) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8) { + return filter(s); + } + + @Override + public Result filter(Logger logger, Level level, Marker marker, String s, Object o, Object o1, Object o2, Object o3, Object o4, Object o5, Object o6, Object o7, Object o8, Object o9) { + return filter(s); + } + + @Override + public State getState() { + return null; + } + + @Override + public void initialize() { + + } + + @Override + public void start() { + start = true; + } + + @Override + public void stop() { + start = false; + } + + @Override + public boolean isStarted() { + return start; + } + + @Override + public boolean isStopped() { + return !start; } } diff --git a/Plan/src/main/java/com/djrapitops/plan/data/UserData.java b/Plan/src/main/java/com/djrapitops/plan/data/UserData.java index 3a8571c37..e7b70e383 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/UserData.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/UserData.java @@ -805,7 +805,6 @@ public class UserData { result = 31 * result + deaths; result = 31 * result + name.hashCode(); result = 31 * result + (isOnline ? 1 : 0); - result = 31 * result + currentSession.hashCode(); return result; } diff --git a/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java b/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java index c395283d1..826646668 100644 --- a/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java +++ b/Plan/src/main/java/com/djrapitops/plan/data/cache/DataCacheHandler.java @@ -42,7 +42,7 @@ import java.util.*; public class DataCacheHandler extends SessionCache { // Cache - private final HashMap dataCache; + private final Map dataCache; // Plan private final Plan plugin;