ProxyProvider(ProxyProvider.Build builder) { this.username = builder.username; this.password = builder.password; if (Objects.isNull(builder.address)) { this.address = () -> InetSocketAddressUtil.createResolved(builder.host, builder.port); } else { this.address = builder.address; } if (builder.nonProxyHosts != null) { this.nonProxyHosts = Pattern.compile(builder.nonProxyHosts, Pattern.CASE_INSENSITIVE); } else { this.nonProxyHosts = null; } this.type = builder.type; }
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()); }
@Override public final Builder address(InetSocketAddress address) { Objects.requireNonNull(address, "address"); this.address = () -> InetSocketAddressUtil.replaceWithResolved(address); return this; }
/** * Replaces an unresolved InetSocketAddress with a resolved instance in the case that * the passed address is unresolved. * * @param inetSocketAddress socket address instance to process * @return resolved instance with same host string and port */ public static InetSocketAddress replaceWithResolved( InetSocketAddress inetSocketAddress) { if (!inetSocketAddress.isUnresolved()) { return inetSocketAddress; } inetSocketAddress = replaceUnresolvedNumericIp(inetSocketAddress); if (!inetSocketAddress.isUnresolved()) { return inetSocketAddress; } else { return new InetSocketAddress(inetSocketAddress.getHostString(), inetSocketAddress.getPort()); } }
/** * Creates unresolved InetSocketAddress. Numeric IP addresses will be detected and * resolved. * * @param hostname ip-address or hostname * @param port port number * @return InetSocketAddress for given parameters */ public static InetSocketAddress createUnresolved(String hostname, int port) { return createInetSocketAddress(hostname, port, false); }
/** * Creates InetSocketAddress instance. Numeric IP addresses will be detected and * resolved without doing reverse DNS lookups. * * @param hostname ip-address or hostname * @param port port number * @param resolve when true, resolve given hostname at instance creation time * @return InetSocketAddress for given parameters */ public static InetSocketAddress createInetSocketAddress(String hostname, int port, boolean resolve) { InetSocketAddress inetAddressForIpString = createForIpString(hostname, port); if (inetAddressForIpString != null) { return inetAddressForIpString; } else { return resolve ? new InetSocketAddress(hostname, port) : InetSocketAddress.createUnresolved(hostname, port); } }
@Nullable private static InetSocketAddress createForIpString(String hostname, int port) { InetAddress inetAddressForIpString = attemptParsingIpString(hostname); if (inetAddressForIpString != null) { return new InetSocketAddress(inetAddressForIpString, port); } return null; }
/** * Replaces an unresolved InetSocketAddress with a resolved instance in the case that * the passed address is unresolved. * * @param inetSocketAddress socket address instance to process * @return resolved instance with same host string and port */ public static InetSocketAddress replaceWithResolved( InetSocketAddress inetSocketAddress) { if (!inetSocketAddress.isUnresolved()) { return inetSocketAddress; } inetSocketAddress = replaceUnresolvedNumericIp(inetSocketAddress); if (!inetSocketAddress.isUnresolved()) { return inetSocketAddress; } else { return new InetSocketAddress(inetSocketAddress.getHostString(), inetSocketAddress.getPort()); } }
/** * Creates InetSocketAddress that is always resolved. Numeric IP addresses will be * detected and resolved without doing reverse DNS lookups. * * @param hostname ip-address or hostname * @param port port number * @return InetSocketAddress for given parameters */ public static InetSocketAddress createResolved(String hostname, int port) { return createInetSocketAddress(hostname, port, true); }
/** * Creates InetSocketAddress instance. Numeric IP addresses will be detected and * resolved without doing reverse DNS lookups. * * @param hostname ip-address or hostname * @param port port number * @param resolve when true, resolve given hostname at instance creation time * @return InetSocketAddress for given parameters */ public static InetSocketAddress createInetSocketAddress(String hostname, int port, boolean resolve) { InetSocketAddress inetAddressForIpString = createForIpString(hostname, port); if (inetAddressForIpString != null) { return inetAddressForIpString; } else { return resolve ? new InetSocketAddress(hostname, port) : InetSocketAddress.createUnresolved(hostname, port); } }
@Nullable private static InetSocketAddress createForIpString(String hostname, int port) { InetAddress inetAddressForIpString = attemptParsingIpString(hostname); if (inetAddressForIpString != null) { return new InetSocketAddress(inetAddressForIpString, port); } return null; }
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()); }
@Override public final Builder address(InetSocketAddress address) { Objects.requireNonNull(address, "address"); this.address = () -> InetSocketAddressUtil.replaceWithResolved(address); return this; }
ProxyProvider(ProxyProvider.Build builder) { this.username = builder.username; this.password = builder.password; if (Objects.isNull(builder.address)) { this.address = () -> InetSocketAddressUtil.createResolved(builder.host, builder.port); } else { this.address = builder.address; } if (builder.nonProxyHosts != null) { this.nonProxyHosts = Pattern.compile(builder.nonProxyHosts, Pattern.CASE_INSENSITIVE); } else { this.nonProxyHosts = null; } this.type = builder.type; }
@Test public void shouldReplaceNumericIPAddressWithResolvedInstance() { InetSocketAddress socketAddress = InetSocketAddress.createUnresolved("127.0.0.1", 8080); InetSocketAddress replacedAddress = InetSocketAddressUtil .replaceUnresolvedNumericIp(socketAddress); assertThat(replacedAddress).isNotSameAs(socketAddress); assertThat(socketAddress.isUnresolved()).isTrue(); assertThat(replacedAddress.isUnresolved()).isFalse(); assertThat(replacedAddress.getAddress().getHostAddress()).isEqualTo("127.0.0.1"); assertThat(replacedAddress.getPort()).isEqualTo(8080); assertThat(replacedAddress.getHostString()).isEqualTo("127.0.0.1"); }
/** * Creates unresolved InetSocketAddress. Numeric IP addresses will be detected and * resolved. * * @param hostname ip-address or hostname * @param port port number * @return InetSocketAddress for given parameters */ public static InetSocketAddress createUnresolved(String hostname, int port) { return createInetSocketAddress(hostname, port, false); }
/** * Replaces an unresolved InetSocketAddress with a resolved instance in the case that * the passed address is a numeric IP address (both IPv4 and IPv6 are supported). * * @param inetSocketAddress socket address instance to process * @return processed socket address instance */ public static InetSocketAddress replaceUnresolvedNumericIp( InetSocketAddress inetSocketAddress) { if (!inetSocketAddress.isUnresolved()) { return inetSocketAddress; } InetSocketAddress inetAddressForIpString = createForIpString( inetSocketAddress.getHostString(), inetSocketAddress.getPort()); if (inetAddressForIpString != null) { return inetAddressForIpString; } else { return inetSocketAddress; } }
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); }
@Override public SocketAddress get() { SocketAddress address = activeURI.getRemoteAddress(); if (proxyProvider != null && !proxyProvider.shouldProxy(address) && address instanceof InetSocketAddress) { address = InetSocketAddressUtil.replaceWithResolved((InetSocketAddress) address); } return address; }
@SuppressWarnings("unchecked") static void convertLazyLocalAddress(ServerBootstrap b) { SocketAddress local = b.config() .localAddress(); Objects.requireNonNull(local, "Remote Address not configured"); if (local instanceof Supplier) { Supplier<? extends SocketAddress> lazyLocal = (Supplier<? extends SocketAddress>) local; b.localAddress(Objects.requireNonNull(lazyLocal.get(), "address supplier returned null")); } if (local instanceof InetSocketAddress) { InetSocketAddress localInet = (InetSocketAddress) local; if (localInet.isUnresolved()) { b.localAddress(InetSocketAddressUtil.createResolved(localInet.getHostName(), localInet.getPort())); } } }