From ffc6fcf57b9bec566eb383b345588acaf99fddd0 Mon Sep 17 00:00:00 2001 From: LAX1DUDE Date: Tue, 10 Jan 2023 17:48:30 -0800 Subject: [PATCH] (1.0.4) Fixed JSON kick messages in handshake for EaglerXBungee --- .../EaglerXBungee-Latest.jar | Bin 4266360 -> 4266637 bytes .../server/HttpWebSocketHandler.java | 45 ++++++++++++++---- .../server/query/VersionQueryHandler.java | 1 + .../src/main/resources/plugin.yml | 2 +- gateway_version | 2 +- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar b/gateway/EaglercraftXBungee/EaglerXBungee-Latest.jar index 3195cbc976cd4a12da4e0447b9892de662dac321..9afd8380059bbda598c7c98bb19b65402c41a0dd 100644 GIT binary patch delta 26308 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 Dg4{d# delta 25771 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 J5CA maxProtVers) { maxProtVers = j; } @@ -283,9 +287,9 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { boolean versMisMatch = false; boolean isServerProbablyOutdated = false; boolean isClientProbablyOutdated = false; - if(!hasV2InList) { + if(!hasV2InList && !hasV3InList) { versMisMatch = true; - isServerProbablyOutdated = minProtVers > 2 && maxProtVers > 2; //make sure to update VersionQueryHandler too + isServerProbablyOutdated = minProtVers > 3 && maxProtVers > 3; //make sure to update VersionQueryHandler too isClientProbablyOutdated = minProtVers < 2 && maxProtVers < 2; }else if(!has47InList) { versMisMatch = true; @@ -293,13 +297,16 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { isClientProbablyOutdated = minGameVers < minecraftProtocolVersion && maxGameVers < minecraftProtocolVersion; } + clientProtocolVersion = hasV3InList ? 3 : 2; + if(versMisMatch) { clientLoginState = HandshakePacketTypes.STATE_CLIENT_COMPLETE; ByteBuf buf = Unpooled.buffer(); buf.writeByte(HandshakePacketTypes.PROTOCOL_VERSION_MISMATCH); - buf.writeShort(1); - buf.writeShort(2); // want version 2 + buf.writeShort(2); + buf.writeShort(2); // want v2 or v3 + buf.writeShort(3); buf.writeShort(1); buf.writeShort(minecraftProtocolVersion); // want game version 47 @@ -333,6 +340,7 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { boolean useSnapshotFallbackProtocol = false; if(eaglerLegacyProtocolVersion == 1 && !authConfig.isEnableAuthentication()) { + clientProtocolVersion = 2; useSnapshotFallbackProtocol = true; clientAuth = false; clientAuthUsername = null; @@ -348,11 +356,9 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { } } - final int final_eaglerProtocolVersion = 2; final boolean final_useSnapshotFallbackProtocol = useSnapshotFallbackProtocol; Runnable continueThread = () -> { clientLoginState = HandshakePacketTypes.STATE_CLIENT_VERSION; - clientProtocolVersion = final_eaglerProtocolVersion; gameProtocolVersion = 47; clientBrandString = eaglerBrand; clientVersionString = eaglerVersionString; @@ -363,7 +369,7 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { if(final_useSnapshotFallbackProtocol) { buf.writeByte(1); }else { - buf.writeShort(final_eaglerProtocolVersion); + buf.writeShort(clientProtocolVersion); buf.writeShort(minecraftProtocolVersion); } @@ -400,6 +406,7 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { } ctx.writeAndFlush(new BinaryWebSocketFrame(buf)); + isProtocolExchanged = true; }; authRequireEvent = null; @@ -996,12 +1003,21 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { } private ChannelFuture sendLoginDenied(ChannelHandlerContext ctx, String reason) { + if((!isProtocolExchanged || clientProtocolVersion == 2) && reason.length() > 255) { + reason = reason.substring(0, 256); + }else if(reason.length() > 65535) { + reason = reason.substring(0, 65536); + } clientLoginState = HandshakePacketTypes.STATE_CLIENT_COMPLETE; connectionClosed = true; ByteBuf buf = Unpooled.buffer(); buf.writeByte(HandshakePacketTypes.PROTOCOL_SERVER_DENY_LOGIN); byte[] msg = reason.getBytes(StandardCharsets.UTF_8); - buf.writeByte(msg.length); + if(!isProtocolExchanged || clientProtocolVersion == 2) { + buf.writeByte(msg.length); + }else { + buf.writeShort(msg.length); + } buf.writeBytes(msg); return ctx.writeAndFlush(new BinaryWebSocketFrame(buf)); } @@ -1011,13 +1027,22 @@ public class HttpWebSocketHandler extends ChannelInboundHandlerAdapter { } private ChannelFuture sendErrorCode(ChannelHandlerContext ctx, int code, String str) { + if((!isProtocolExchanged || clientProtocolVersion == 2) && str.length() > 255) { + str = str.substring(0, 256); + }else if(str.length() > 65535) { + str = str.substring(0, 65536); + } clientLoginState = HandshakePacketTypes.STATE_CLIENT_COMPLETE; connectionClosed = true; ByteBuf buf = Unpooled.buffer(); buf.writeByte(HandshakePacketTypes.PROTOCOL_SERVER_ERROR); buf.writeByte(code); byte[] msg = str.getBytes(StandardCharsets.UTF_8); - buf.writeByte(msg.length); + if(!isProtocolExchanged || clientProtocolVersion == 2) { + buf.writeByte(msg.length); + }else { + buf.writeShort(msg.length); + } buf.writeBytes(msg); return ctx.writeAndFlush(new BinaryWebSocketFrame(buf)); } diff --git a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/query/VersionQueryHandler.java b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/query/VersionQueryHandler.java index 31b05d7..6be312d 100644 --- a/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/query/VersionQueryHandler.java +++ b/gateway/EaglercraftXBungee/src/main/java/net/lax1dude/eaglercraft/v1_8/plugin/gateway_bungeecord/server/query/VersionQueryHandler.java @@ -26,6 +26,7 @@ public class VersionQueryHandler extends EaglerQuerySimpleHandler { JsonObject responseObj = new JsonObject(); JsonArray handshakeVersions = new JsonArray(); handshakeVersions.add(2); + handshakeVersions.add(3); responseObj.add("handshakeVersions", handshakeVersions); JsonArray protocolVersions = new JsonArray(); protocolVersions.add(47); diff --git a/gateway/EaglercraftXBungee/src/main/resources/plugin.yml b/gateway/EaglercraftXBungee/src/main/resources/plugin.yml index b227c21..2d050ae 100644 --- a/gateway/EaglercraftXBungee/src/main/resources/plugin.yml +++ b/gateway/EaglercraftXBungee/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: EaglercraftXBungee main: net.lax1dude.eaglercraft.v1_8.plugin.gateway_bungeecord.EaglerXBungee -version: 1.0.3 +version: 1.0.4 description: Plugin to allow EaglercraftX 1.8 players to join your network, or allow EaglercraftX 1.8 players to use your network as a proxy to join other networks author: lax1dude \ No newline at end of file diff --git a/gateway_version b/gateway_version index e4c0d46..a6a3a43 100644 --- a/gateway_version +++ b/gateway_version @@ -1 +1 @@ -1.0.3 \ No newline at end of file +1.0.4 \ No newline at end of file