From e926547f834c314a73e7859f6e9996e7d9102c01 Mon Sep 17 00:00:00 2001 From: j502647092 Date: Sun, 1 Nov 2015 02:18:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=A4=B1=E6=95=88=E7=9A=84Fi?= =?UTF-8?q?lter=20=E6=B7=BB=E5=8A=A0=E9=9A=90=E8=97=8F=E6=8F=90=E7=A4=BA..?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: j502647092 --- src/main/java/cn/citycraft/AuthMe/AuthMe.java | 7 +--- .../cn/citycraft/AuthMe/ConsoleFilter.java | 38 ------------------- .../java/cn/citycraft/AuthMe/Log4JFilter.java | 23 ++++++----- 3 files changed, 15 insertions(+), 53 deletions(-) delete mode 100644 src/main/java/cn/citycraft/AuthMe/ConsoleFilter.java diff --git a/src/main/java/cn/citycraft/AuthMe/AuthMe.java b/src/main/java/cn/citycraft/AuthMe/AuthMe.java index c1060d3..ae668e3 100644 --- a/src/main/java/cn/citycraft/AuthMe/AuthMe.java +++ b/src/main/java/cn/citycraft/AuthMe/AuthMe.java @@ -333,18 +333,13 @@ public class AuthMe extends JavaPlugin { // Set Console Filter if (Settings.removePassword) { - final ConsoleFilter filter = new ConsoleFilter(); - this.getLogger().setFilter(filter); - Bukkit.getLogger().setFilter(filter); - Logger.getLogger("Minecraft").setFilter(filter); - authmeLogger.setFilter(filter); // Set Log4J Filter try { Class.forName("org.apache.logging.log4j.core.Filter"); final org.apache.logging.log4j.core.Logger coreLogger = (org.apache.logging.log4j.core.Logger) LogManager.getRootLogger(); coreLogger.addFilter(new Log4JFilter()); } catch (ClassNotFoundException | NoClassDefFoundError e) { - ConsoleLogger.info("You're using Minecraft 1.6.x or older, Log4J support will be disabled"); + ConsoleLogger.info("警告!!! 密码安全替换开启失败 请注意保护控制台日志..."); } ConsoleLogger.info("已开启密码安全替换 控制台将不会记录密码相关数据..."); } diff --git a/src/main/java/cn/citycraft/AuthMe/ConsoleFilter.java b/src/main/java/cn/citycraft/AuthMe/ConsoleFilter.java deleted file mode 100644 index 78b46dd..0000000 --- a/src/main/java/cn/citycraft/AuthMe/ConsoleFilter.java +++ /dev/null @@ -1,38 +0,0 @@ -package cn.citycraft.AuthMe; - -import java.util.logging.Filter; -import java.util.logging.LogRecord; - -/** - * - * @author Xephi59 - */ -public class ConsoleFilter implements Filter { - String[] filterkey = new String[] { "/login ", "/l ", "/reg ", "/register ", "/changepassword ", "/unregister ", "/authme register ", "/authme changepassword ", "/authme reg ", "/authme cp " }; - - public ConsoleFilter() { - } - - @Override - public boolean isLoggable(final LogRecord record) { - try { - if (record == null || record.getMessage() == null) { - return true; - } - final String logM = record.getMessage().toLowerCase(); - if (!logM.contains("issued server command:")) { - return true; - } - for (final String key : filterkey) { - if (logM.contains(key)) { - final String playername = record.getMessage().split(" ")[0]; - record.setMessage(playername + " 执行了一个 AuthMe 命令!"); - break; - } - } - } catch (final NullPointerException npe) { - } - return true; - } - -} diff --git a/src/main/java/cn/citycraft/AuthMe/Log4JFilter.java b/src/main/java/cn/citycraft/AuthMe/Log4JFilter.java index c1b6c92..72f939c 100644 --- a/src/main/java/cn/citycraft/AuthMe/Log4JFilter.java +++ b/src/main/java/cn/citycraft/AuthMe/Log4JFilter.java @@ -11,6 +11,7 @@ import org.apache.logging.log4j.message.Message; * @author Xephi59 */ public class Log4JFilter implements org.apache.logging.log4j.core.Filter { + String[] filterkey = new String[] { "/login ", "/l ", "/reg ", "/register ", "/changepassword ", "/unregister ", "/authme register ", "/authme changepassword ", "/authme reg ", "/authme cp " }; public Log4JFilter() { } @@ -21,7 +22,7 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter { if (record == null || record.getMessage() == null) { return Result.NEUTRAL; } - final String logM = record.getMessage().getFormattedMessage().toLowerCase(); + final String logM = record.getMessage().getFormattedMessage(); return isLogger(logM); } catch (final NullPointerException npe) { return Result.NEUTRAL; @@ -34,7 +35,7 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter { if (message == null) { return Result.NEUTRAL; } - final String logM = message.getFormattedMessage().toLowerCase(); + final String logM = message.getFormattedMessage(); return isLogger(logM); } catch (final NullPointerException npe) { return Result.NEUTRAL; @@ -47,7 +48,7 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter { if (message == null) { return Result.NEUTRAL; } - final String logM = message.toString().toLowerCase(); + final String logM = message.toString(); return isLogger(logM); } catch (final NullPointerException npe) { return Result.NEUTRAL; @@ -60,7 +61,7 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter { if (message == null) { return Result.NEUTRAL; } - final String logM = message.toLowerCase(); + final String logM = message; return isLogger(logM); } catch (final NullPointerException npe) { return Result.NEUTRAL; @@ -78,14 +79,18 @@ public class Log4JFilter implements org.apache.logging.log4j.core.Filter { } private Result isLogger(final String logM) { - if (!logM.contains("issued server command:")) { + final String log = logM.toLowerCase(); + if (!log.contains("issued server command:")) { return Result.NEUTRAL; } - if (!logM.contains("/login ") && !logM.contains("/l ") && !logM.contains("/reg ") && !logM.contains("/changepassword ") && !logM.contains("/unregister ") && !logM.contains("/authme register ") - && !logM.contains("/authme changepassword ") && !logM.contains("/authme reg ") && !logM.contains("/authme cp ") && !logM.contains("/register ")) { - return Result.NEUTRAL; + for (final String key : filterkey) { + if (log.contains(key)) { + final String playername = logM.split(" ")[0]; + AuthMe.getInstance().getLogger().info(playername + " 执行了一个 AuthMe 命令!"); + return Result.DENY; + } } - return Result.DENY; + return Result.NEUTRAL; } }