From 63043ee67772b71ad092151d24dddb2ce45c6d53 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Sun, 8 Mar 2020 21:58:11 +0100 Subject: [PATCH] Hotfix antiddos Signed-off-by: Lixfel --- src/de/steamwar/bungeecore/ErrorLogger.java | 32 +++++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/de/steamwar/bungeecore/ErrorLogger.java b/src/de/steamwar/bungeecore/ErrorLogger.java index 39db043e..829317f9 100644 --- a/src/de/steamwar/bungeecore/ErrorLogger.java +++ b/src/de/steamwar/bungeecore/ErrorLogger.java @@ -4,15 +4,17 @@ import de.steamwar.bungeecore.sql.SWException; import net.md_5.bungee.api.ProxyServer; import java.text.MessageFormat; +import java.util.logging.Filter; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.LogRecord; -public class ErrorLogger extends Handler { +public class ErrorLogger extends Handler implements Filter { private static ErrorLogger instance; ErrorLogger(){ ProxyServer.getInstance().getLogger().addHandler(this); + ProxyServer.getInstance().getLogger().setFilter(this); instance = this; } @@ -20,6 +22,29 @@ public class ErrorLogger extends Handler { ProxyServer.getInstance().getLogger().removeHandler(instance); } + @Override + public boolean isLoggable(LogRecord record) { + if(record.getLevel() != Level.SEVERE) + return true; + + StringBuilder stacktrace = new StringBuilder(record.getSourceClassName() + "\n" + record.getSourceMethodName()); + Throwable thrown = record.getThrown(); + while(thrown != null){ + stacktrace.append("\nCaused by ").append(thrown.getMessage()); + + for(StackTraceElement ste : thrown.getStackTrace()) + stacktrace.append("\n").append(ste.toString()); + + thrown = thrown.getCause(); + } + + String stacktraceString = stacktrace.toString(); + if(stacktraceString.contains("Cannot request protocol")){ + return false; + } + return true; + } + @Override public void publish(LogRecord record) { if(record.getLevel() != Level.SEVERE) @@ -28,7 +53,7 @@ public class ErrorLogger extends Handler { StringBuilder stacktrace = new StringBuilder(record.getSourceClassName() + "\n" + record.getSourceMethodName()); Throwable thrown = record.getThrown(); while(thrown != null){ - stacktrace.append("\nCaused by").append(thrown.getMessage()); + stacktrace.append("\nCaused by ").append(thrown.getMessage()); for(StackTraceElement ste : thrown.getStackTrace()) stacktrace.append("\n").append(ste.toString()); @@ -36,7 +61,8 @@ public class ErrorLogger extends Handler { thrown = thrown.getCause(); } - SWException.log("Bungee", MessageFormat.format(record.getMessage(), record.getParameters()), stacktrace.toString()); + String stacktraceString = stacktrace.toString(); + SWException.log("Bungee", MessageFormat.format(record.getMessage(), record.getParameters()), stacktraceString); } @Override