From 4fd6f7eda4e8dfc1b27caab5a6c16ffd5a27d2a0 Mon Sep 17 00:00:00 2001 From: Tim203 Date: Fri, 17 Sep 2021 12:44:35 +0200 Subject: [PATCH] Make a difference between a decrypt error and an exception --- .../floodgate/addon/data/BungeeProxyDataHandler.java | 4 ++++ .../geysermc/floodgate/player/FloodgateHandshakeHandler.java | 5 ++++- .../src/main/java/org/geysermc/floodgate/util/Constants.java | 3 +++ .../org/geysermc/floodgate/addon/data/SpigotDataHandler.java | 4 ++++ .../floodgate/addon/data/VelocityProxyDataHandler.java | 4 ++++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeProxyDataHandler.java b/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeProxyDataHandler.java index 593e3b38..f81500cd 100644 --- a/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeProxyDataHandler.java +++ b/bungee/src/main/java/org/geysermc/floodgate/addon/data/BungeeProxyDataHandler.java @@ -128,6 +128,10 @@ public class BungeeProxyDataHandler extends ChannelInboundHandlerAdapter { switch (result.getResultType()) { case EXCEPTION: + ctx.channel().attr(kickMessageAttribute) + .set(Constants.INTERNAL_ERROR_MESSAGE); + break; + case DECRYPT_ERROR: ctx.channel().attr(kickMessageAttribute) .set(config.getDisconnect().getInvalidKey()); break; diff --git a/common/src/main/java/org/geysermc/floodgate/player/FloodgateHandshakeHandler.java b/common/src/main/java/org/geysermc/floodgate/player/FloodgateHandshakeHandler.java index 7f698a44..4edc537b 100644 --- a/common/src/main/java/org/geysermc/floodgate/player/FloodgateHandshakeHandler.java +++ b/common/src/main/java/org/geysermc/floodgate/player/FloodgateHandshakeHandler.java @@ -180,7 +180,7 @@ public final class FloodgateHandshakeHandler { formatException.printStackTrace(); throw callHandlerAndReturnResult( - ResultType.EXCEPTION, + ResultType.DECRYPT_ERROR, channel, null, hostname ); } catch (Exception exception) { @@ -203,6 +203,8 @@ public final class FloodgateHandshakeHandler { return (HandshakeResult) error; } + error.printStackTrace(); + return callHandlerAndReturnResult( ResultType.EXCEPTION, channel, null, hostname @@ -298,6 +300,7 @@ public final class FloodgateHandshakeHandler { public enum ResultType { EXCEPTION, NOT_FLOODGATE_DATA, + DECRYPT_ERROR, INVALID_DATA_LENGTH, TIMESTAMP_DENIED, SUCCESS diff --git a/common/src/main/java/org/geysermc/floodgate/util/Constants.java b/common/src/main/java/org/geysermc/floodgate/util/Constants.java index 60b58c52..d10a5b48 100644 --- a/common/src/main/java/org/geysermc/floodgate/util/Constants.java +++ b/common/src/main/java/org/geysermc/floodgate/util/Constants.java @@ -52,6 +52,9 @@ public final class Constants { public static final String TIMESTAMP_DENIED_MESSAGE = "Something isn't right with this data." + " Try logging in again or contact a server administrator if the issue persists."; + public static final String INTERNAL_ERROR_MESSAGE = + "An internal error happened while handling Floodgate data." + + " Try logging in again or contact a server administrator if the issue persists."; public static final int HANDSHAKE_PACKET_ID = 0; diff --git a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java b/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java index 3ac8ae4d..7353d361 100644 --- a/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java +++ b/spigot/src/main/java/org/geysermc/floodgate/addon/data/SpigotDataHandler.java @@ -94,6 +94,10 @@ public final class SpigotDataHandler extends ChannelInboundHandlerAdapter { case SUCCESS: break; case EXCEPTION: + logger.info(Constants.INTERNAL_ERROR_MESSAGE); + ctx.close(); + return true; + case DECRYPT_ERROR: logger.info(config.getDisconnect().getInvalidKey()); ctx.close(); return true; diff --git a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java b/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java index 59a914b6..d48b827e 100644 --- a/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java +++ b/velocity/src/main/java/org/geysermc/floodgate/addon/data/VelocityProxyDataHandler.java @@ -128,6 +128,10 @@ public final class VelocityProxyDataHandler extends ChannelInboundHandlerAdapter case SUCCESS: break; case EXCEPTION: + ctx.channel().attr(kickMessageAttribute) + .set(Constants.INTERNAL_ERROR_MESSAGE); + return; + case DECRYPT_ERROR: ctx.channel().attr(kickMessageAttribute) .set(config.getDisconnect().getInvalidKey()); return;