brusdev commented on code in PR #5908:
URL: https://github.com/apache/activemq-artemis/pull/5908#discussion_r2329957797
##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/remoting/impl/netty/NettyServerConnection.java:
##########
@@ -51,4 +58,55 @@ public void setSNIHostname(String sniHostname) {
public String getRouter() {
return router;
}
+
+ /**
+ * {@return a string representation of the remote address of this
connection; if this connection was made via the
+ * proxy protocol then this will be the original address, not the proxy
address}
+ */
+ @Override
+ public String getRemoteAddress() {
+ String proxyProtocolSourceAddress =
channel.attr(PROXY_PROTOCOL_SOURCE_ADDRESS).get();
+ String proxyProtocolSourcePort =
channel.attr(PROXY_PROTOCOL_SOURCE_PORT).get();
+ if (proxyProtocolSourceAddress != null &&
!proxyProtocolSourceAddress.isEmpty() && proxyProtocolSourcePort != null &&
!proxyProtocolSourcePort.isEmpty()) {
+ return proxyProtocolSourceAddress + ":" + proxyProtocolSourcePort;
+ } else {
Review Comment:
The method `getProxyAddress` could avoid code duplication, i.e.
```suggestion
String result = getProxyAddress();
if (result != null) {
return result;
} else {
```
##########
artemis-server/src/main/java/org/apache/activemq/artemis/core/protocol/ProtocolHandler.java:
##########
@@ -147,11 +156,26 @@ public void channelInactive(ChannelHandlerContext ctx)
throws Exception {
timeoutFuture.cancel(true);
timeoutFuture = null;
}
+ if (proxyAttributesSet) {
+ ctx.channel().attr(PROXY_PROTOCOL_SOURCE_ADDRESS).remove();
+ ctx.channel().attr(PROXY_PROTOCOL_SOURCE_PORT).remove();
+ ctx.channel().attr(PROXY_PROTOCOL_DESTINATION_ADDRESS).remove();
+ ctx.channel().attr(PROXY_PROTOCOL_DESTINATION_PORT).remove();
+ ctx.channel().attr(PROXY_PROTOCOL_VERSION).remove();
+ }
}
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws
Exception {
- if (msg instanceof FullHttpRequest httpRequest) {
+ if (msg instanceof HAProxyMessage haProxyMessage) {
+
ctx.channel().attr(PROXY_PROTOCOL_SOURCE_ADDRESS).set(haProxyMessage.sourceAddress());
+
ctx.channel().attr(PROXY_PROTOCOL_SOURCE_PORT).set(Integer.toString(haProxyMessage.sourcePort()));
+
ctx.channel().attr(PROXY_PROTOCOL_DESTINATION_ADDRESS).set(haProxyMessage.destinationAddress());
+
ctx.channel().attr(PROXY_PROTOCOL_DESTINATION_PORT).set(Integer.toString(haProxyMessage.destinationPort()));
+
ctx.channel().attr(PROXY_PROTOCOL_VERSION).set(haProxyMessage.protocolVersion().toString());
+ proxyAttributesSet = true;
+ skipProxyBytes = true;
+ } else if (msg instanceof FullHttpRequest httpRequest) {
Review Comment:
Should `skipProxyBytes` be false for `FullHttpRequest`?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information, visit: https://activemq.apache.org/contact