Search in sources :

Example 31 with Lookup

use of org.xbill.DNS.Lookup in project Smack by igniterealtime.

the class DNSJavaResolver method lookupSrvRecords0.

@Override
protected List<SRV> lookupSrvRecords0(DnsName name, List<RemoteConnectionEndpointLookupFailure> lookupFailures, DnssecMode dnssecMode) {
    Lookup lookup;
    try {
        lookup = new Lookup(name.ace, Type.SRV);
    } catch (TextParseException e) {
        RemoteConnectionEndpointLookupFailure failure = new RemoteConnectionEndpointLookupFailure.DnsLookupFailure(name, e);
        lookupFailures.add(failure);
        return null;
    }
    Record[] recs = lookup.run();
    if (recs == null) {
        // TODO: When does this happen? Do we want/need to record a lookup failure?
        return null;
    }
    List<SRV> res = new ArrayList<>();
    for (Record record : recs) {
        org.xbill.DNS.SRVRecord srvRecord = (org.xbill.DNS.SRVRecord) record;
        if (srvRecord != null && srvRecord.getTarget() != null) {
            DnsName host = DnsName.from(srvRecord.getTarget().toString());
            int port = srvRecord.getPort();
            int priority = srvRecord.getPriority();
            int weight = srvRecord.getWeight();
            SRV r = new SRV(priority, weight, port, host);
            res.add(r);
        }
    }
    return res;
}
Also used : DnsName(org.minidns.dnsname.DnsName) RemoteConnectionEndpointLookupFailure(org.jivesoftware.smack.util.rce.RemoteConnectionEndpointLookupFailure) ArrayList(java.util.ArrayList) SRV(org.minidns.record.SRV) Lookup(org.xbill.DNS.Lookup) Record(org.xbill.DNS.Record) TextParseException(org.xbill.DNS.TextParseException)

Example 32 with Lookup

use of org.xbill.DNS.Lookup in project jmeter by apache.

the class DNSCacheManager method customRequestLookup.

private InetAddress[] customRequestLookup(String host) throws UnknownHostException {
    InetAddress[] addresses = null;
    try {
        Lookup lookup = new Lookup(host, Type.A);
        lookup.setCache(lookupCache);
        if (timeoutMs > 0) {
            resolver.setTimeout(timeoutMs / 1000, timeoutMs % 1000);
        }
        lookup.setResolver(resolver);
        Record[] records = lookup.run();
        if (records == null || records.length == 0) {
            throw new UnknownHostException("Failed to resolve host name: " + host);
        }
        addresses = new InetAddress[records.length];
        for (int i = 0; i < records.length; i++) {
            addresses[i] = ((ARecord) records[i]).getAddress();
        }
    } catch (TextParseException tpe) {
        // NOSONAR Exception handled
        log.debug("Failed to create Lookup object for host:{}, error message:{}", host, tpe.toString());
    }
    return addresses;
}
Also used : UnknownHostException(java.net.UnknownHostException) Lookup(org.xbill.DNS.Lookup) ARecord(org.xbill.DNS.ARecord) Record(org.xbill.DNS.Record) InetAddress(java.net.InetAddress) TextParseException(org.xbill.DNS.TextParseException)

Example 33 with Lookup

use of org.xbill.DNS.Lookup in project Signal-Android by WhisperSystems.

the class CustomDns method lookup.

@Override
@NonNull
public List<InetAddress> lookup(@NonNull String hostname) throws UnknownHostException {
    Resolver resolver = new SimpleResolver(dnsHostname);
    Lookup lookup = doLookup(hostname);
    lookup.setResolver(resolver);
    Record[] records = lookup.run();
    if (records != null) {
        List<InetAddress> ipv4Addresses = Stream.of(records).filter(r -> r.getType() == Type.A).map(r -> (ARecord) r).map(ARecord::getAddress).toList();
        if (ipv4Addresses.size() > 0) {
            return ipv4Addresses;
        }
    }
    throw new UnknownHostException(hostname);
}
Also used : Stream(com.annimon.stream.Stream) NonNull(androidx.annotation.NonNull) UnknownHostException(java.net.UnknownHostException) Dns(okhttp3.Dns) InetAddress(java.net.InetAddress) Log(org.signal.core.util.logging.Log) Type(org.xbill.DNS.Type) List(java.util.List) ARecord(org.xbill.DNS.ARecord) SimpleResolver(org.xbill.DNS.SimpleResolver) Record(org.xbill.DNS.Record) Resolver(org.xbill.DNS.Resolver) Lookup(org.xbill.DNS.Lookup) SimpleResolver(org.xbill.DNS.SimpleResolver) Resolver(org.xbill.DNS.Resolver) UnknownHostException(java.net.UnknownHostException) Lookup(org.xbill.DNS.Lookup) ARecord(org.xbill.DNS.ARecord) Record(org.xbill.DNS.Record) SimpleResolver(org.xbill.DNS.SimpleResolver) InetAddress(java.net.InetAddress) NonNull(androidx.annotation.NonNull)

Aggregations

Lookup (org.xbill.DNS.Lookup)33 Record (org.xbill.DNS.Record)26 TextParseException (org.xbill.DNS.TextParseException)12 ArrayList (java.util.ArrayList)10 SRVRecord (org.xbill.DNS.SRVRecord)10 Name (org.xbill.DNS.Name)8 SimpleResolver (org.xbill.DNS.SimpleResolver)6 UnknownHostException (java.net.UnknownHostException)5 List (java.util.List)5 Test (org.junit.Test)5 ARecord (org.xbill.DNS.ARecord)5 InetAddress (java.net.InetAddress)4 ExtendedResolver (org.xbill.DNS.ExtendedResolver)4 SortedSet (java.util.SortedSet)3 PTRRecord (org.xbill.DNS.PTRRecord)3 HashSet (java.util.HashSet)2 Cache (org.xbill.DNS.Cache)2 NSRecord (org.xbill.DNS.NSRecord)2 NonNull (androidx.annotation.NonNull)1 Stream (com.annimon.stream.Stream)1