static SocketAddress _updateHost(@Nullable SocketAddress address, String host) { if(!(address instanceof InetSocketAddress)) { return InetSocketAddressUtil.createUnresolved(host, 0); } InetSocketAddress inet = (InetSocketAddress)address; return InetSocketAddressUtil.createUnresolved(host, inet.getPort()); }
static SocketAddress _updateHost(@Nullable SocketAddress address, String host) { if(!(address instanceof InetSocketAddress)) { return InetSocketAddressUtil.createUnresolved(host, 0); } InetSocketAddress inet = (InetSocketAddress)address; return InetSocketAddressUtil.createUnresolved(host, inet.getPort()); }
static SocketAddress _updatePort(@Nullable SocketAddress address, int port) { if(!(address instanceof InetSocketAddress)) { return InetSocketAddressUtil.createUnresolved(NetUtil.LOCALHOST.getHostAddress(), port); } InetSocketAddress inet = (InetSocketAddress)address; InetAddress addr = inet.getAddress(); String host = addr == null ? inet.getHostName() : addr.getHostAddress(); return InetSocketAddressUtil.createUnresolved(host, port); }
static InetSocketAddress parseAddress(String address, int defaultPort) { int portSeparatorIdx = address.lastIndexOf(":"); if (portSeparatorIdx > address.lastIndexOf("]")) { return InetSocketAddressUtil.createUnresolved(address.substring(0, portSeparatorIdx), Integer.parseInt(address.substring(portSeparatorIdx + 1))); } else { return InetSocketAddressUtil.createUnresolved(address, defaultPort); } }
static InetSocketAddress parseAddress(String address, int defaultPort) { int portSeparatorIdx = address.lastIndexOf(":"); if (portSeparatorIdx > address.lastIndexOf("]")) { return InetSocketAddressUtil.createUnresolved(address.substring(0, portSeparatorIdx), Integer.parseInt(address.substring(portSeparatorIdx + 1))); } else { return InetSocketAddressUtil.createUnresolved(address, defaultPort); } }
static SocketAddress _updatePort(@Nullable SocketAddress address, int port) { if(!(address instanceof InetSocketAddress)) { return InetSocketAddressUtil.createUnresolved(NetUtil.LOCALHOST.getHostAddress(), port); } InetSocketAddress inet = (InetSocketAddress)address; InetAddress addr = inet.getAddress(); String host = addr == null ? inet.getHostName() : addr.getHostAddress(); return InetSocketAddressUtil.createUnresolved(host, port); }
ServerBootstrap createServerBootstrap() { return new ServerBootstrap().option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) .option(ChannelOption.SO_REUSEADDR, true) .option(ChannelOption.SO_BACKLOG, 1000) .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) .childOption(ChannelOption.SO_RCVBUF, 1024 * 1024) .childOption(ChannelOption.SO_SNDBUF, 1024 * 1024) .childOption(ChannelOption.AUTO_READ, false) .childOption(ChannelOption.SO_KEEPALIVE, true) .childOption(ChannelOption.TCP_NODELAY, true) .childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 30000) .localAddress( InetSocketAddressUtil.createUnresolved(NetUtil.LOCALHOST.getHostAddress(), DEFAULT_PORT)); }
ServerBootstrap createServerBootstrap() { return new ServerBootstrap().option(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) .option(ChannelOption.SO_REUSEADDR, true) .option(ChannelOption.SO_BACKLOG, 1000) .childOption(ChannelOption.ALLOCATOR, PooledByteBufAllocator.DEFAULT) .childOption(ChannelOption.SO_RCVBUF, 1024 * 1024) .childOption(ChannelOption.SO_SNDBUF, 1024 * 1024) .childOption(ChannelOption.AUTO_READ, false) .childOption(ChannelOption.SO_KEEPALIVE, true) .childOption(ChannelOption.TCP_NODELAY, true) .childOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, 30000) .localAddress( InetSocketAddressUtil.createUnresolved(NetUtil.LOCALHOST.getHostAddress(), DEFAULT_PORT)); }
static ConnectionInfo parseXForwardedInfo(HttpRequest request, SocketChannel channel) { InetSocketAddress hostAddress = channel.localAddress(); InetSocketAddress remoteAddress = channel.remoteAddress(); String scheme = channel.pipeline().get(SslHandler.class) != null ? "https" : "http"; if (request.headers().contains(XFORWARDED_IP_HEADER)) { String remoteIpValue = request.headers().get(XFORWARDED_IP_HEADER).split(",")[0]; remoteAddress = parseAddress(remoteIpValue, remoteAddress.getPort()); } if(request.headers().contains(XFORWARDED_HOST_HEADER)) { if(request.headers().contains(XFORWARDED_PORT_HEADER)) { hostAddress = InetSocketAddressUtil.createUnresolved( request.headers().get(XFORWARDED_HOST_HEADER).split(",")[0].trim(), Integer.parseInt(request.headers().get(XFORWARDED_PORT_HEADER).split(",")[0].trim())); } else { hostAddress = InetSocketAddressUtil.createUnresolved( request.headers().get(XFORWARDED_HOST_HEADER).split(",")[0].trim(), channel.localAddress().getPort()); } } if (request.headers().contains(XFORWARDED_PROTO_HEADER)) { scheme = request.headers().get(XFORWARDED_PROTO_HEADER).trim(); } return new ConnectionInfo(hostAddress, remoteAddress, scheme); }
static ConnectionInfo parseXForwardedInfo(HttpRequest request, SocketChannel channel) { InetSocketAddress hostAddress = channel.localAddress(); InetSocketAddress remoteAddress = channel.remoteAddress(); String scheme = channel.pipeline().get(SslHandler.class) != null ? "https" : "http"; if (request.headers().contains(XFORWARDED_IP_HEADER)) { String remoteIpValue = request.headers().get(XFORWARDED_IP_HEADER).split(",")[0]; remoteAddress = parseAddress(remoteIpValue, remoteAddress.getPort()); } if(request.headers().contains(XFORWARDED_HOST_HEADER)) { if(request.headers().contains(XFORWARDED_PORT_HEADER)) { hostAddress = InetSocketAddressUtil.createUnresolved( request.headers().get(XFORWARDED_HOST_HEADER).split(",")[0].trim(), Integer.parseInt(request.headers().get(XFORWARDED_PORT_HEADER).split(",")[0].trim())); } else { hostAddress = InetSocketAddressUtil.createUnresolved( request.headers().get(XFORWARDED_HOST_HEADER).split(",")[0].trim(), channel.localAddress().getPort()); } } if (request.headers().contains(XFORWARDED_PROTO_HEADER)) { scheme = request.headers().get(XFORWARDED_PROTO_HEADER).trim(); } return new ConnectionInfo(hostAddress, remoteAddress, scheme); }
@Test public void shouldCreateUnresolvedAddressByHostName() { InetSocketAddress socketAddress = InetSocketAddressUtil .createUnresolved("google.com", 80); assertThat(socketAddress.isUnresolved()).isTrue(); assertThat(socketAddress.getPort()).isEqualTo(80); assertThat(socketAddress.getHostString()).isEqualTo("google.com"); }
@Test public void shouldAlwaysCreateResolvedNumberIPAddress() { InetSocketAddress socketAddress = InetSocketAddressUtil .createUnresolved("127.0.0.1", 8080); assertThat(socketAddress.isUnresolved()).isFalse(); assertThat(socketAddress.getAddress().getHostAddress()).isEqualTo("127.0.0.1"); assertThat(socketAddress.getPort()).isEqualTo(8080); assertThat(socketAddress.getHostString()).isEqualTo("127.0.0.1"); }