[FIX] Вернулись назад NettyIpForwardHandler

This commit is contained in:
Gravit 2019-05-09 22:21:24 +07:00
parent 236b433d5f
commit 94b5a07fc9
No known key found for this signature in database
GPG key ID: 061981E1E85D3216

View file

@ -1,15 +1,15 @@
package ru.gravit.launchserver.websocket; package ru.gravit.launchserver.websocket;
import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageCodec;
import io.netty.handler.codec.MessageToMessageDecoder; import io.netty.handler.codec.MessageToMessageDecoder;
import io.netty.handler.codec.http.HttpHeaders; import io.netty.handler.codec.http.HttpHeaders;
import io.netty.handler.codec.http.HttpRequest; import io.netty.handler.codec.http.HttpRequest;
import io.netty.util.ReferenceCounted;
import ru.gravit.utils.helper.LogHelper; import ru.gravit.utils.helper.LogHelper;
import java.util.List; import java.util.List;
public class NettyIpForwardHandler extends MessageToMessageCodec<HttpRequest, HttpRequest> { public class NettyIpForwardHandler extends MessageToMessageDecoder<HttpRequest> {
private NettyConnectContext context; private NettyConnectContext context;
public NettyIpForwardHandler(NettyConnectContext context) { public NettyIpForwardHandler(NettyConnectContext context) {
@ -17,29 +17,12 @@ public NettyIpForwardHandler(NettyConnectContext context) {
this.context = context; this.context = context;
} }
@Override
protected void encode(ChannelHandlerContext ctx, HttpRequest msg, List<Object> out) throws Exception {
if (context.ip != null) {
out.add(msg);
return;
}
HttpHeaders headers = msg.headers();
String realIP = null;
if (headers.contains("X-Forwarded-For")) {
realIP = headers.get("X-Forwarded-For");
}
if (headers.contains("X-Real-IP")) {
realIP = headers.get("X-Real-IP");
}
if (realIP != null) {
LogHelper.dev("Real IP address %s", realIP);
context.ip = realIP;
} else LogHelper.error("IpForwarding error. Headers not found");
out.add(msg);
}
@Override @Override
protected void decode(ChannelHandlerContext ctx, HttpRequest msg, List<Object> out) throws Exception { protected void decode(ChannelHandlerContext ctx, HttpRequest msg, List<Object> out) throws Exception {
if(msg instanceof ReferenceCounted)
{
((ReferenceCounted) msg).retain();
}
if (context.ip != null) { if (context.ip != null) {
out.add(msg); out.add(msg);
return; return;