mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
Added API to get player ha proxy address
This commit is contained in:
parent
d5b93a0167
commit
445e9a65fb
3 changed files with 36 additions and 19 deletions
|
@ -29,7 +29,7 @@
|
||||||
@Nullable
|
@Nullable
|
||||||
private volatile PacketListener disconnectListener;
|
private volatile PacketListener disconnectListener;
|
||||||
@Nullable
|
@Nullable
|
||||||
@@ -114,7 +119,41 @@
|
@@ -114,7 +119,42 @@
|
||||||
private volatile DisconnectionDetails delayedDisconnect;
|
private volatile DisconnectionDetails delayedDisconnect;
|
||||||
@Nullable
|
@Nullable
|
||||||
BandwidthDebugMonitor bandwidthDebugMonitor;
|
BandwidthDebugMonitor bandwidthDebugMonitor;
|
||||||
|
@ -67,11 +67,12 @@
|
||||||
+ this.stopReadingPackets = true;
|
+ this.stopReadingPackets = true;
|
||||||
+ }
|
+ }
|
||||||
+ // Paper end - packet limiter
|
+ // Paper end - packet limiter
|
||||||
|
+ @Nullable public SocketAddress haProxyAddress; // Paper - Add API to get player's proxy address
|
||||||
+
|
+
|
||||||
public Connection(PacketFlow side) {
|
public Connection(PacketFlow side) {
|
||||||
this.receiving = side;
|
this.receiving = side;
|
||||||
}
|
}
|
||||||
@@ -123,6 +162,9 @@
|
@@ -123,6 +163,9 @@
|
||||||
super.channelActive(channelhandlercontext);
|
super.channelActive(channelhandlercontext);
|
||||||
this.channel = channelhandlercontext.channel();
|
this.channel = channelhandlercontext.channel();
|
||||||
this.address = this.channel.remoteAddress();
|
this.address = this.channel.remoteAddress();
|
||||||
|
@ -81,7 +82,7 @@
|
||||||
if (this.delayedDisconnect != null) {
|
if (this.delayedDisconnect != null) {
|
||||||
this.disconnect(this.delayedDisconnect);
|
this.disconnect(this.delayedDisconnect);
|
||||||
}
|
}
|
||||||
@@ -134,6 +176,21 @@
|
@@ -134,6 +177,21 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void exceptionCaught(ChannelHandlerContext channelhandlercontext, Throwable throwable) {
|
public void exceptionCaught(ChannelHandlerContext channelhandlercontext, Throwable throwable) {
|
||||||
|
@ -103,7 +104,7 @@
|
||||||
if (throwable instanceof SkipPacketException) {
|
if (throwable instanceof SkipPacketException) {
|
||||||
Connection.LOGGER.debug("Skipping packet due to errors", throwable.getCause());
|
Connection.LOGGER.debug("Skipping packet due to errors", throwable.getCause());
|
||||||
} else {
|
} else {
|
||||||
@@ -141,8 +198,10 @@
|
@@ -141,8 +199,10 @@
|
||||||
|
|
||||||
this.handlingFault = true;
|
this.handlingFault = true;
|
||||||
if (this.channel.isOpen()) {
|
if (this.channel.isOpen()) {
|
||||||
|
@ -114,7 +115,7 @@
|
||||||
this.disconnect((Component) Component.translatable("disconnect.timeout"));
|
this.disconnect((Component) Component.translatable("disconnect.timeout"));
|
||||||
} else {
|
} else {
|
||||||
MutableComponent ichatmutablecomponent = Component.translatable("disconnect.genericReason", "Internal Exception: " + String.valueOf(throwable));
|
MutableComponent ichatmutablecomponent = Component.translatable("disconnect.genericReason", "Internal Exception: " + String.valueOf(throwable));
|
||||||
@@ -155,6 +214,7 @@
|
@@ -155,6 +215,7 @@
|
||||||
disconnectiondetails = new DisconnectionDetails(ichatmutablecomponent);
|
disconnectiondetails = new DisconnectionDetails(ichatmutablecomponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,7 +123,7 @@
|
||||||
if (flag) {
|
if (flag) {
|
||||||
Connection.LOGGER.debug("Failed to sent packet", throwable);
|
Connection.LOGGER.debug("Failed to sent packet", throwable);
|
||||||
if (this.getSending() == PacketFlow.CLIENTBOUND) {
|
if (this.getSending() == PacketFlow.CLIENTBOUND) {
|
||||||
@@ -176,6 +236,7 @@
|
@@ -176,6 +237,7 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -130,7 +131,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void channelRead0(ChannelHandlerContext channelhandlercontext, Packet<?> packet) {
|
protected void channelRead0(ChannelHandlerContext channelhandlercontext, Packet<?> packet) {
|
||||||
@@ -185,11 +246,61 @@
|
@@ -185,11 +247,61 @@
|
||||||
if (packetlistener == null) {
|
if (packetlistener == null) {
|
||||||
throw new IllegalStateException("Received a packet before the packet listener was initialized");
|
throw new IllegalStateException("Received a packet before the packet listener was initialized");
|
||||||
} else {
|
} else {
|
||||||
|
@ -192,7 +193,7 @@
|
||||||
} catch (RejectedExecutionException rejectedexecutionexception) {
|
} catch (RejectedExecutionException rejectedexecutionexception) {
|
||||||
this.disconnect((Component) Component.translatable("multiplayer.disconnect.server_shutdown"));
|
this.disconnect((Component) Component.translatable("multiplayer.disconnect.server_shutdown"));
|
||||||
} catch (ClassCastException classcastexception) {
|
} catch (ClassCastException classcastexception) {
|
||||||
@@ -205,7 +316,7 @@
|
@@ -205,7 +317,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
private static <T extends PacketListener> void genericsFtw(Packet<T> packet, PacketListener listener) {
|
private static <T extends PacketListener> void genericsFtw(Packet<T> packet, PacketListener listener) {
|
||||||
|
@ -201,7 +202,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateListener(ProtocolInfo<?> state, PacketListener listener) {
|
private void validateListener(ProtocolInfo<?> state, PacketListener listener) {
|
||||||
@@ -418,12 +529,26 @@
|
@@ -418,12 +530,26 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,7 +229,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.isConnected() && !this.disconnectionHandled) {
|
if (!this.isConnected() && !this.disconnectionHandled) {
|
||||||
@@ -431,7 +556,7 @@
|
@@ -431,7 +557,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.channel != null) {
|
if (this.channel != null) {
|
||||||
|
@ -237,7 +238,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.tickCount++ % 20 == 0) {
|
if (this.tickCount++ % 20 == 0) {
|
||||||
@@ -464,12 +589,15 @@
|
@@ -464,12 +590,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disconnect(DisconnectionDetails disconnectionInfo) {
|
public void disconnect(DisconnectionDetails disconnectionInfo) {
|
||||||
|
@ -254,7 +255,7 @@
|
||||||
this.disconnectionDetails = disconnectionInfo;
|
this.disconnectionDetails = disconnectionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -537,7 +665,7 @@
|
@@ -537,7 +666,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
public void configurePacketHandler(ChannelPipeline pipeline) {
|
public void configurePacketHandler(ChannelPipeline pipeline) {
|
||||||
|
@ -263,7 +264,7 @@
|
||||||
public void write(ChannelHandlerContext channelhandlercontext, Object object, ChannelPromise channelpromise) throws Exception {
|
public void write(ChannelHandlerContext channelhandlercontext, Object object, ChannelPromise channelpromise) throws Exception {
|
||||||
super.write(channelhandlercontext, object, channelpromise);
|
super.write(channelhandlercontext, object, channelpromise);
|
||||||
}
|
}
|
||||||
@@ -633,6 +761,7 @@
|
@@ -633,6 +762,7 @@
|
||||||
} else {
|
} else {
|
||||||
this.channel.pipeline().addAfter("prepender", "compress", new CompressionEncoder(compressionThreshold));
|
this.channel.pipeline().addAfter("prepender", "compress", new CompressionEncoder(compressionThreshold));
|
||||||
}
|
}
|
||||||
|
@ -271,7 +272,7 @@
|
||||||
} else {
|
} else {
|
||||||
if (this.channel.pipeline().get("decompress") instanceof CompressionDecoder) {
|
if (this.channel.pipeline().get("decompress") instanceof CompressionDecoder) {
|
||||||
this.channel.pipeline().remove("decompress");
|
this.channel.pipeline().remove("decompress");
|
||||||
@@ -641,6 +770,7 @@
|
@@ -641,6 +771,7 @@
|
||||||
if (this.channel.pipeline().get("compress") instanceof CompressionEncoder) {
|
if (this.channel.pipeline().get("compress") instanceof CompressionEncoder) {
|
||||||
this.channel.pipeline().remove("compress");
|
this.channel.pipeline().remove("compress");
|
||||||
}
|
}
|
||||||
|
@ -279,7 +280,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -660,7 +790,28 @@
|
@@ -660,7 +791,28 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
packetlistener1.onDisconnect(disconnectiondetails);
|
packetlistener1.onDisconnect(disconnectiondetails);
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
this.channels.add(((ServerBootstrap) ((ServerBootstrap) (new ServerBootstrap()).channel(oclass)).childHandler(new ChannelInitializer<Channel>() {
|
this.channels.add(((ServerBootstrap) ((ServerBootstrap) (new ServerBootstrap()).channel(oclass)).childHandler(new ChannelInitializer<Channel>() {
|
||||||
protected void initChannel(Channel channel) {
|
protected void initChannel(Channel channel) {
|
||||||
try {
|
try {
|
||||||
@@ -100,16 +126,51 @@
|
@@ -100,16 +126,58 @@
|
||||||
|
|
||||||
Connection.configureSerialization(channelpipeline, PacketFlow.SERVERBOUND, false, (BandwidthDebugMonitor) null);
|
Connection.configureSerialization(channelpipeline, PacketFlow.SERVERBOUND, false, (BandwidthDebugMonitor) null);
|
||||||
int j = ServerConnectionListener.this.server.getRateLimitPacketsPerSecond();
|
int j = ServerConnectionListener.this.server.getRateLimitPacketsPerSecond();
|
||||||
|
@ -90,6 +90,13 @@
|
||||||
+
|
+
|
||||||
+ Connection connection = (Connection) channel.pipeline().get("packet_handler");
|
+ Connection connection = (Connection) channel.pipeline().get("packet_handler");
|
||||||
+ connection.address = socketaddr;
|
+ connection.address = socketaddr;
|
||||||
|
+
|
||||||
|
+ // Paper start - Add API to get player's proxy address
|
||||||
|
+ final String proxyAddress = message.destinationAddress();
|
||||||
|
+ final int proxyPort = message.destinationPort();
|
||||||
|
+
|
||||||
|
+ connection.haProxyAddress = new java.net.InetSocketAddress(proxyAddress, proxyPort);
|
||||||
|
+ // Paper end - Add API to get player's proxy address
|
||||||
+ }
|
+ }
|
||||||
+ } else {
|
+ } else {
|
||||||
+ super.channelRead(ctx, msg);
|
+ super.channelRead(ctx, msg);
|
||||||
|
@ -121,7 +128,7 @@
|
||||||
public SocketAddress startMemoryChannel() {
|
public SocketAddress startMemoryChannel() {
|
||||||
List list = this.channels;
|
List list = this.channels;
|
||||||
ChannelFuture channelfuture;
|
ChannelFuture channelfuture;
|
||||||
@@ -153,6 +214,14 @@
|
@@ -153,6 +221,14 @@
|
||||||
List list = this.connections;
|
List list = this.connections;
|
||||||
|
|
||||||
synchronized (this.connections) {
|
synchronized (this.connections) {
|
||||||
|
@ -136,7 +143,7 @@
|
||||||
Iterator<Connection> iterator = this.connections.iterator();
|
Iterator<Connection> iterator = this.connections.iterator();
|
||||||
|
|
||||||
while (iterator.hasNext()) {
|
while (iterator.hasNext()) {
|
||||||
@@ -176,6 +245,10 @@
|
@@ -176,6 +252,10 @@
|
||||||
networkmanager.setReadOnly();
|
networkmanager.setReadOnly();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -270,7 +270,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InetSocketAddress getAddress() {
|
public InetSocketAddress getAddress() {
|
||||||
if (this.getHandle().connection.protocol() == null) return null;
|
if (this.getHandle().connection == null) return null;
|
||||||
|
|
||||||
SocketAddress addr = this.getHandle().connection.getRemoteAddress();
|
SocketAddress addr = this.getHandle().connection.getRemoteAddress();
|
||||||
if (addr instanceof InetSocketAddress) {
|
if (addr instanceof InetSocketAddress) {
|
||||||
|
@ -280,6 +280,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Paper start - Add API to get player's proxy address
|
||||||
|
@Override
|
||||||
|
public @Nullable InetSocketAddress getHAProxyAddress() {
|
||||||
|
if (this.getHandle().connection == null) return null;
|
||||||
|
|
||||||
|
return this.getHandle().connection.connection.haProxyAddress instanceof final InetSocketAddress inetSocketAddress ? inetSocketAddress : null;
|
||||||
|
}
|
||||||
|
// Paper end - Add API to get player's proxy address
|
||||||
|
|
||||||
public interface TransferCookieConnection {
|
public interface TransferCookieConnection {
|
||||||
|
|
||||||
boolean isTransferred();
|
boolean isTransferred();
|
||||||
|
|
Loading…
Reference in a new issue