@Override public InetSocketAddress translate(InetSocketAddress socketAddress) { InetAddress address = socketAddress.getAddress(); try { // InetAddress#getHostName() is supposed to perform a reverse DNS lookup, but for some reason // it doesn't work // within the same EC2 region (it returns the IP address itself). // We use an alternate implementation: String domainName = lookupPtrRecord(reverse(address)); if (domainName == null) { logger.warn("Found no domain name for {}, returning it as-is", address); return socketAddress; } InetAddress translatedAddress = InetAddress.getByName(domainName); logger.debug("Resolved {} to {}", address, translatedAddress); return new InetSocketAddress(translatedAddress, socketAddress.getPort()); } catch (Exception e) { logger.warn("Error resolving " + address + ", returning it as-is", e); return socketAddress; } }
@Test(groups = "unit") public void should_build_reversed_domain_name_for_ip_v6() throws Exception { InetAddress address = InetAddress.getByName("2001:db8::567:89ab"); assertThat(EC2MultiRegionAddressTranslator.reverse(address)) .isEqualTo("b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa"); } }
@Test(groups = "unit") public void should_build_reversed_domain_name_for_ip_v4() throws Exception { InetAddress address = InetAddress.getByName("192.0.2.5"); assertThat(EC2MultiRegionAddressTranslator.reverse(address)) .isEqualTo("5.2.0.192.in-addr.arpa"); }
@Override public InetSocketAddress translate(InetSocketAddress socketAddress) { InetAddress address = socketAddress.getAddress(); try { // InetAddress#getHostName() is supposed to perform a reverse DNS lookup, but for some reason it doesn't work // within the same EC2 region (it returns the IP address itself). // We use an alternate implementation: String domainName = lookupPtrRecord(reverse(address)); if (domainName == null) { logger.warn("Found no domain name for {}, returning it as-is", address); return socketAddress; } InetAddress translatedAddress = InetAddress.getByName(domainName); logger.debug("Resolved {} to {}", address, translatedAddress); return new InetSocketAddress(translatedAddress, socketAddress.getPort()); } catch (Exception e) { logger.warn("Error resolving " + address + ", returning it as-is", e); return socketAddress; } }
@Override public InetSocketAddress translate(InetSocketAddress socketAddress) { InetAddress address = socketAddress.getAddress(); try { // InetAddress#getHostName() is supposed to perform a reverse DNS lookup, but for some reason it doesn't work // within the same EC2 region (it returns the IP address itself). // We use an alternate implementation: String domainName = lookupPtrRecord(reverse(address)); if (domainName == null) { logger.warn("Found no domain name for {}, returning it as-is", address); return socketAddress; } InetAddress translatedAddress = InetAddress.getByName(domainName); logger.debug("Resolved {} to {}", address, translatedAddress); return new InetSocketAddress(translatedAddress, socketAddress.getPort()); } catch (Exception e) { logger.warn("Error resolving " + address + ", returning it as-is", e); return socketAddress; } }
@Override public InetSocketAddress translate(InetSocketAddress socketAddress) { InetAddress address = socketAddress.getAddress(); try { // InetAddress#getHostName() is supposed to perform a reverse DNS lookup, but for some reason it doesn't work // within the same EC2 region (it returns the IP address itself). // We use an alternate implementation: String domainName = lookupPtrRecord(reverse(address)); if (domainName == null) { logger.warn("Found no domain name for {}, returning it as-is", address); return socketAddress; } InetAddress translatedAddress = InetAddress.getByName(domainName); logger.debug("Resolved {} to {}", address, translatedAddress); return new InetSocketAddress(translatedAddress, socketAddress.getPort()); } catch (Exception e) { logger.warn("Error resolving " + address + ", returning it as-is", e); return socketAddress; } }
@Test(groups = "unit") public void should_build_reversed_domain_name_for_ip_v6() throws Exception { InetAddress address = InetAddress.getByName("2001:db8::567:89ab"); assertThat(EC2MultiRegionAddressTranslator.reverse(address)) .isEqualTo("b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa"); } }
@Test(groups = "unit") public void should_build_reversed_domain_name_for_ip_v4() throws Exception { InetAddress address = InetAddress.getByName("192.0.2.5"); assertThat(EC2MultiRegionAddressTranslator.reverse(address)) .isEqualTo("5.2.0.192.in-addr.arpa"); }