DnsServiceEndpointGroup(EventLoop eventLoop, int minTtl, int maxTtl, DnsServerAddressStreamProvider serverAddressStreamProvider, Backoff backoff, String hostname) { super(eventLoop, minTtl, maxTtl, serverAddressStreamProvider, backoff, ImmutableList.of(new DefaultDnsQuestion(hostname, DnsRecordType.SRV)), unused -> {}); start(); }
DnsTextEndpointGroup(EventLoop eventLoop, int minTtl, int maxTtl, DnsServerAddressStreamProvider serverAddressStreamProvider, Backoff backoff, String hostname, Function<byte[], Endpoint> mapping) { super(eventLoop, minTtl, maxTtl, serverAddressStreamProvider, backoff, ImmutableList.of(new DefaultDnsQuestion(hostname, DnsRecordType.TXT)), unused -> {}); this.mapping = mapping; start(); }
private static List<DnsQuestion> newQuestions( String hostname, @Nullable ResolvedAddressTypes resolvedAddressTypes) { if (resolvedAddressTypes == null) { if (NetUtil.isIpV4StackPreferred()) { resolvedAddressTypes = ResolvedAddressTypes.IPV4_ONLY; } else { resolvedAddressTypes = ResolvedAddressTypes.IPV4_PREFERRED; } } final ImmutableList.Builder<DnsQuestion> builder = ImmutableList.builder(); switch (resolvedAddressTypes) { case IPV4_ONLY: case IPV4_PREFERRED: case IPV6_PREFERRED: builder.add(new DefaultDnsQuestion(hostname, DnsRecordType.A)); break; } switch (resolvedAddressTypes) { case IPV6_ONLY: case IPV4_PREFERRED: case IPV6_PREFERRED: builder.add(new DefaultDnsQuestion(hostname, DnsRecordType.AAAA)); break; } return builder.build(); }
private boolean query(String hostname, DnsRecordType type, DnsServerAddressStream dnsServerAddressStream, boolean flush, Promise<List<T>> promise) { final DnsQuestion question; try { question = new DefaultDnsQuestion(hostname, type, dnsClass); } catch (Throwable cause) { // Assume a single failure means that queries will succeed. If the hostname is invalid for one type // there is no case where it is known to be valid for another type. promise.tryFailure(new IllegalArgumentException("Unable to create DNS Question for: [" + hostname + ", " + type + ']', cause)); return false; } query(dnsServerAddressStream, 0, question, newDnsQueryLifecycleObserver(question), flush, promise, null); return true; }
private boolean query(String hostname, DnsRecordType type, DnsServerAddressStream dnsServerAddressStream, Promise<List<T>> promise) { final DnsQuestion question; try { question = new DefaultDnsQuestion(hostname, type, dnsClass); } catch (Throwable cause) { // Assume a single failure means that queries will succeed. If the hostname is invalid for one type // there is no case where it is known to be valid for another type. promise.tryFailure(new IllegalArgumentException("Unable to create DNS Question for: [" + hostname + ", " + type + "]", cause)); return false; } query(dnsServerAddressStream, 0, question, promise, null); return true; }
public Query(String name, DnsRecordType[] types, Handler<AsyncResult<List<T>>> handler) { this.msg = new DatagramDnsQuery(null, dnsServer, ThreadLocalRandom.current().nextInt()).setRecursionDesired(options.isRecursionDesired()); for (DnsRecordType type: types) { msg.addRecord(DnsSection.QUESTION, new DefaultDnsQuestion(name, type, DnsRecord.CLASS_IN)); } this.fut = Future.<List<T>>future().setHandler(handler); this.types = types; this.name = name; }
private List<ADnsAnswer> resolveIpAddresses(String hostName, DnsRecordType dnsRecordType, boolean includeIpVersion) throws InterruptedException, ExecutionException { LOG.debug("Attempting to resolve [{}] records for [{}]", dnsRecordType, hostName); if (isShutdown()) { throw new DnsClientNotRunningException(); } validateHostName(hostName); final DefaultDnsQuestion aRecordDnsQuestion = new DefaultDnsQuestion(hostName, dnsRecordType); /* The DnsNameResolver.resolveAll(DnsQuestion) method handles all redirects through CNAME records to * ultimately resolve a list of IP addresses with TTL values. */ return resolver.resolveAll(aRecordDnsQuestion).sync().get().stream() .map(dnsRecord -> decodeDnsRecord(dnsRecord, includeIpVersion)) .filter(Objects::nonNull) // Removes any entries which the IP address could not be extracted for. .collect(Collectors.toList()); }
@Override public final DnsQuestion decodeQuestion(ByteBuf in) throws Exception { String name = decodeName(in); DnsRecordType type = DnsRecordType.valueOf(in.readUnsignedShort()); int qClass = in.readUnsignedShort(); return new DefaultDnsQuestion(name, type, qClass); }
@Override public final DnsQuestion decodeQuestion(ByteBuf in) throws Exception { String name = decodeName(in); DnsRecordType type = DnsRecordType.valueOf(in.readUnsignedShort()); int qClass = in.readUnsignedShort(); return new DefaultDnsQuestion(name, type, qClass); }
cnameQuestion = new DefaultDnsQuestion(cname, question.type(), dnsClass); } catch (Throwable cause) { queryLifecycleObserver.queryFailed(cause);
private void followCname(DnsQuestion question, String cname, DnsQueryLifecycleObserver queryLifecycleObserver, Promise<List<T>> promise) { DnsServerAddressStream stream = getNameServers(cname); final DnsQuestion cnameQuestion; try { cnameQuestion = new DefaultDnsQuestion(cname, question.type(), dnsClass); } catch (Throwable cause) { queryLifecycleObserver.queryFailed(cause); PlatformDependent.throwException(cause); return; } query(stream, 0, cnameQuestion, queryLifecycleObserver.queryCNAMEd(cnameQuestion), promise, null); }
content = resolver.query(new DefaultDnsQuestion(hostName, DnsRecordType.TXT)).sync().get().content(); int count = content.count(DnsSection.ANSWER); final ArrayList<TxtDnsAnswer> txtRecords = new ArrayList<>(count);
content = resolver.query(new DefaultDnsQuestion(inverseAddressFormat, DnsRecordType.PTR)).sync().get().content(); for (int i = 0; i < content.count(DnsSection.ANSWER); i++) {
public Query(String name, DnsRecordType[] types, Handler<AsyncResult<List<T>>> handler) { this.msg = new DatagramDnsQuery(null, dnsServer, ThreadLocalRandom.current().nextInt()).setRecursionDesired(options.isRecursionDesired()); for (DnsRecordType type: types) { msg.addRecord(DnsSection.QUESTION, new DefaultDnsQuestion(name, type, DnsRecord.CLASS_IN)); } this.fut = Future.<List<T>>future().setHandler(handler); this.types = types; this.name = name; }
private DnsQuestion newQuestion(String hostname, DnsRecordType type) { try { return new DefaultDnsQuestion(hostname, type, dnsClass); } catch (IllegalArgumentException e) { // java.net.IDN.toASCII(...) may throw an IllegalArgumentException if it fails to parse the hostname return null; } }
private boolean query(String hostname, DnsRecordType type, DnsServerAddressStream nextAddr, Promise<T> promise) { final DnsQuestion question; try { question = new DefaultDnsQuestion(hostname, type); } catch (IllegalArgumentException e) { // java.net.IDN.toASCII(...) may throw an IllegalArgumentException if it fails to parse the hostname promise.tryFailure(e); return false; } query(nextAddr, question, promise); return true; }
private boolean query(String hostname, DnsRecordType type, DnsServerAddressStream dnsServerAddressStream, boolean flush, Promise<List<T>> promise) { final DnsQuestion question; try { question = new DefaultDnsQuestion(hostname, type, dnsClass); } catch (Throwable cause) { // Assume a single failure means that queries will succeed. If the hostname is invalid for one type // there is no case where it is known to be valid for another type. promise.tryFailure(new IllegalArgumentException("Unable to create DNS Question for: [" + hostname + ", " + type + ']', cause)); return false; } query(dnsServerAddressStream, 0, question, newDnsQueryLifecycleObserver(question), flush, promise, null); return true; }
@Override public final DnsQuestion decodeQuestion(ByteBuf in) throws Exception { String name = decodeName(in); DnsRecordType type = DnsRecordType.valueOf(in.readUnsignedShort()); int qClass = in.readUnsignedShort(); return new DefaultDnsQuestion(name, type, qClass); }
@Override public final DnsQuestion decodeQuestion(ByteBuf in) throws Exception { String name = decodeName(in); DnsRecordType type = DnsRecordType.valueOf(in.readUnsignedShort()); int qClass = in.readUnsignedShort(); return new DefaultDnsQuestion(name, type, qClass); }
@Override public final DnsQuestion decodeQuestion(ByteBuf in) throws Exception { String name = decodeName(in); DnsRecordType type = DnsRecordType.valueOf(in.readUnsignedShort()); int qClass = in.readUnsignedShort(); return new DefaultDnsQuestion(name, type, qClass); }