geforkt von Mirrors/Paper
2873869bb1
Signs no longer have a specific isEdiable state, the entire API in this regard needs updating/deprecation. The boolean field is completely gone, replaced by a uuid (which will need a new setEditingPlayer(UUID) method on the Sign interface), and the current upstream implementation of setEdiable simply flips the is_waxed state. This patch is hence not needed as it neither allows editing (which will be redone in a later patch) nor is required to copy the is_waxed boolean flag as it lives in the signs compound tag and is covered by applyTo.
67 Zeilen
4.2 KiB
Diff
67 Zeilen
4.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: PanSzelescik <panszelescik@gmail.com>
|
|
Date: Thu, 7 Apr 2022 16:13:39 +0200
|
|
Subject: [PATCH] Add support for Proxy Protocol
|
|
|
|
|
|
diff --git a/build.gradle.kts b/build.gradle.kts
|
|
index e1e8f7c42f5e68da25b11c4cfadd67425395e558..7a17e05b630517a6861c34a4561198db62acf82a 100644
|
|
--- a/build.gradle.kts
|
|
+++ b/build.gradle.kts
|
|
@@ -20,6 +20,7 @@ dependencies {
|
|
*/
|
|
implementation("org.apache.logging.log4j:log4j-core:2.14.1") // Paper - implementation
|
|
annotationProcessor("org.apache.logging.log4j:log4j-core:2.14.1") // Paper - Needed to generate meta for our Log4j plugins
|
|
+ implementation("io.netty:netty-codec-haproxy:4.1.87.Final") // Paper - Add support for proxy protocol
|
|
// Paper end
|
|
implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
|
|
implementation("org.ow2.asm:asm:9.4")
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
|
index 17f42a4097d9c91bae2ccb02365498a0f7c7f8f8..0f578e870f2bed207a8650a31e89b3672ae8a57b 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerConnectionListener.java
|
|
@@ -106,6 +106,12 @@ public class ServerConnectionListener {
|
|
ServerConnectionListener.LOGGER.info("Paper: Using " + com.velocitypowered.natives.util.Natives.cipher.getLoadedVariant() + " cipher from Velocity.");
|
|
// Paper end
|
|
|
|
+ // Paper start - indicate Proxy Protocol usage
|
|
+ if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.proxyProtocol) {
|
|
+ ServerConnectionListener.LOGGER.info("Paper: Using Proxy Protocol");
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
this.channels.add(((ServerBootstrap) ((ServerBootstrap) (new ServerBootstrap()).channel(oclass)).childHandler(new ChannelInitializer<Channel>() {
|
|
protected void initChannel(Channel channel) {
|
|
try {
|
|
@@ -120,6 +126,30 @@ public class ServerConnectionListener {
|
|
int j = ServerConnectionListener.this.server.getRateLimitPacketsPerSecond();
|
|
Connection object = j > 0 ? new RateKickingConnection(j) : new Connection(PacketFlow.SERVERBOUND); // CraftBukkit - decompile error
|
|
|
|
+ // Paper start - Add support for Proxy Protocol
|
|
+ if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.proxyProtocol) {
|
|
+ channel.pipeline().addAfter("timeout", "haproxy-decoder", new io.netty.handler.codec.haproxy.HAProxyMessageDecoder());
|
|
+ channel.pipeline().addAfter("haproxy-decoder", "haproxy-handler", new ChannelInboundHandlerAdapter() {
|
|
+ @Override
|
|
+ public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
|
|
+ if (msg instanceof io.netty.handler.codec.haproxy.HAProxyMessage message) {
|
|
+ if (message.command() == io.netty.handler.codec.haproxy.HAProxyCommand.PROXY) {
|
|
+ String realaddress = message.sourceAddress();
|
|
+ int realport = message.sourcePort();
|
|
+
|
|
+ SocketAddress socketaddr = new java.net.InetSocketAddress(realaddress, realport);
|
|
+
|
|
+ Connection connection = (Connection) channel.pipeline().get("packet_handler");
|
|
+ connection.address = socketaddr;
|
|
+ }
|
|
+ } else {
|
|
+ super.channelRead(ctx, msg);
|
|
+ }
|
|
+ }
|
|
+ });
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
//ServerConnectionListener.this.connections.add(object);
|
|
pending.add(object); // Paper
|
|
channelpipeline.addLast("packet_handler", (ChannelHandler) object);
|