diff --git a/build.gradle b/build.gradle index aca5f27..3d14728 100644 --- a/build.gradle +++ b/build.gradle @@ -60,12 +60,14 @@ dependencies { exclude group: "com.google.guava", module: "guava" } include "com.viaversion:viarewind-common:3.0.3-SNAPSHOT" - include "net.raphimc:ViaLegacy:2.2.21-SNAPSHOT" + include("net.raphimc:ViaLegacy:2.2.21-SNAPSHOT") { + exclude group: "net.lenni0451.mcstructs", module: "text" + } include "net.raphimc:ViaAprilFools:2.0.10-SNAPSHOT" include("net.raphimc:ViaBedrock:0.0.3-SNAPSHOT") { - exclude group: "io.netty", module: "netty-codec-http" - exclude group: "io.jsonwebtoken", module: "jjwt-impl" - exclude group: "io.jsonwebtoken", module: "jjwt-gson" + exclude group: "io.netty" + exclude group: "io.jsonwebtoken" + exclude group: "net.lenni0451.mcstructs", module: "text" } include("net.raphimc:ViaLoader:2.2.11-SNAPSHOT") { exclude group: "org.slf4j", module: "slf4j-api" @@ -88,7 +90,9 @@ dependencies { include "net.lenni0451.classtransform:additionalclassprovider:1.11.0" include "net.lenni0451:Reflect:1.3.0" include "net.lenni0451:LambdaEvents:2.3.2" - include "net.raphimc.netminecraft:all:2.3.7-SNAPSHOT" + include("net.raphimc.netminecraft:all:2.3.7-SNAPSHOT") { + exclude group: "com.google.code.gson", module: "gson" + } include("net.raphimc:MinecraftAuth:2.1.7-SNAPSHOT") { exclude group: "com.google.code.gson", module: "gson" exclude group: "org.slf4j", module: "slf4j-api" @@ -98,10 +102,7 @@ dependencies { exclude group: "net.lenni0451.classtransform", module: "additionalclassprovider" } include("org.cloudburstmc.netty:netty-transport-raknet:1.0.0.CR1-SNAPSHOT") { - exclude group: "io.netty", module: "netty-common" - exclude group: "io.netty", module: "netty-buffer" - exclude group: "io.netty", module: "netty-codec" - exclude group: "io.netty", module: "netty-transport" + exclude group: "io.netty" } include "gs.mclo:api:3.0.1" } diff --git a/src/main/java/net/raphimc/viaproxy/proxy/packethandler/LoginPacketHandler.java b/src/main/java/net/raphimc/viaproxy/proxy/packethandler/LoginPacketHandler.java index 9e658a8..a72de7b 100644 --- a/src/main/java/net/raphimc/viaproxy/proxy/packethandler/LoginPacketHandler.java +++ b/src/main/java/net/raphimc/viaproxy/proxy/packethandler/LoginPacketHandler.java @@ -30,6 +30,7 @@ import net.raphimc.netminecraft.packet.impl.login.*; import net.raphimc.vialegacy.protocols.release.protocol1_7_2_5to1_6_4.storage.ProtocolMetadataStorage; import net.raphimc.vialoader.util.VersionEnum; import net.raphimc.viaproxy.ViaProxy; +import net.raphimc.viaproxy.cli.ConsoleFormatter; import net.raphimc.viaproxy.cli.options.Options; import net.raphimc.viaproxy.plugins.events.ClientLoggedInEvent; import net.raphimc.viaproxy.plugins.events.ShouldVerifyOnlineModeEvent; @@ -149,7 +150,9 @@ public class LoginPacketHandler extends PacketHandler { @Override public boolean handleP2S(IPacket packet, List listeners) throws GeneralSecurityException, ExecutionException, InterruptedException { - if (packet instanceof S2CLoginKeyPacket1_7 loginKeyPacket) { + if (packet instanceof S2CLoginDisconnectPacket1_7 loginDisconnectPacket) { + Logger.u_info("server kick", this.proxyConnection.getC2P().remoteAddress(), this.proxyConnection.getGameProfile(), ConsoleFormatter.convert(loginDisconnectPacket.reason.asLegacyFormatString())); + } else if (packet instanceof S2CLoginKeyPacket1_7 loginKeyPacket) { final PublicKey publicKey = CryptUtil.decodeRsaPublicKey(loginKeyPacket.publicKey); final SecretKey secretKey = CryptUtil.generateSecretKey(); final String serverHash = new BigInteger(CryptUtil.computeServerIdHash(loginKeyPacket.serverId, publicKey, secretKey)).toString(16); diff --git a/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java b/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java index f2aa5d1..379ffd9 100644 --- a/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java +++ b/src/main/java/net/raphimc/viaproxy/proxy/session/ProxyConnection.java @@ -27,6 +27,7 @@ import io.netty.buffer.ByteBufUtil; import io.netty.buffer.Unpooled; import io.netty.channel.*; import io.netty.util.AttributeKey; +import net.lenni0451.mcstructs.text.components.StringComponent; import net.raphimc.netminecraft.constants.ConnectionState; import net.raphimc.netminecraft.constants.MCPackets; import net.raphimc.netminecraft.constants.MCPipeline; @@ -35,11 +36,12 @@ import net.raphimc.netminecraft.netty.crypto.AESEncryption; import net.raphimc.netminecraft.packet.PacketTypes; import net.raphimc.netminecraft.packet.impl.login.C2SLoginHelloPacket1_7; import net.raphimc.netminecraft.packet.impl.login.S2CLoginCustomPayloadPacket; -import net.raphimc.netminecraft.packet.impl.login.S2CLoginDisconnectPacket; +import net.raphimc.netminecraft.packet.impl.login.S2CLoginDisconnectPacket1_20_3; import net.raphimc.netminecraft.packet.impl.status.S2CStatusResponsePacket; import net.raphimc.netminecraft.packet.registry.PacketRegistryUtil; import net.raphimc.netminecraft.util.ServerAddress; import net.raphimc.vialoader.util.VersionEnum; +import net.raphimc.viaproxy.cli.ConsoleFormatter; import net.raphimc.viaproxy.proxy.external_interface.OpenAuthModConstants; import net.raphimc.viaproxy.proxy.packethandler.PacketHandler; import net.raphimc.viaproxy.proxy.util.CloseAndReturn; @@ -247,7 +249,7 @@ public class ProxyConnection extends NetClient { PacketTypes.writeString(disconnectPacketData, channel); PacketTypes.writeVarInt(disconnectPacketData, id); disconnectPacketData.writeBytes(data); - this.c2p.writeAndFlush(new S2CLoginDisconnectPacket(messageToJson("§cYou need to install OpenAuthMod in order to join this server.§k\n" + Base64.getEncoder().encodeToString(ByteBufUtil.getBytes(disconnectPacketData)) + "\n" + OpenAuthModConstants.LEGACY_MAGIC_STRING))).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); + this.c2p.writeAndFlush(new S2CLoginDisconnectPacket1_20_3(new StringComponent("§cYou need to install OpenAuthMod in order to join this server.§k\n" + Base64.getEncoder().encodeToString(ByteBufUtil.getBytes(disconnectPacketData)) + "\n" + OpenAuthModConstants.LEGACY_MAGIC_STRING))).addListener(ChannelFutureListener.FIRE_EXCEPTION_ON_FAILURE); } break; case PLAY: @@ -275,13 +277,13 @@ public class ProxyConnection extends NetClient { } public void kickClient(final String message) throws CloseAndReturn { - Logger.u_err("kick", this.c2p.remoteAddress(), this.getGameProfile(), message.replaceAll("§.", "")); + Logger.u_err("proxy kick", this.c2p.remoteAddress(), this.getGameProfile(), ConsoleFormatter.convert(message)); final ChannelFuture future; if (this.c2pConnectionState == ConnectionState.STATUS) { future = this.c2p.writeAndFlush(new S2CStatusResponsePacket("{\"players\":{\"max\":0,\"online\":0},\"description\":" + new JsonPrimitive(message) + ",\"version\":{\"protocol\":-1,\"name\":\"ViaProxy\"}}")); } else if (this.c2pConnectionState == ConnectionState.LOGIN) { - future = this.c2p.writeAndFlush(new S2CLoginDisconnectPacket(messageToJson(message))); + future = this.c2p.writeAndFlush(new S2CLoginDisconnectPacket1_20_3(new StringComponent(message))); } else if (this.c2pConnectionState == ConnectionState.CONFIGURATION) { final ByteBuf disconnectPacket = Unpooled.buffer(); PacketTypes.writeVarInt(disconnectPacket, MCPackets.S2C_CONFIG_DISCONNECT.getId(this.clientVersion.getVersion()));