Package org.minidns

Class AbstractDnsClient

java.lang.Object
org.minidns.AbstractDnsClient
Direct Known Subclasses:
DnsClient

public abstract class AbstractDnsClient extends Object
A minimal DNS client for SRV/A/AAAA/NS and CNAME lookups, with IDN support. This circumvents the missing javax.naming package on android.
  • Field Details

  • Constructor Details

    • AbstractDnsClient

      protected AbstractDnsClient(DnsCache cache)
      Create a new DNS client with the given DNS cache.
      Parameters:
      cache - The backend DNS cache.
    • AbstractDnsClient

      protected AbstractDnsClient()
      Create a new DNS client using the global default cache.
  • Method Details

    • setDefaultIpVersion

      public static void setDefaultIpVersion(AbstractDnsClient.IpVersionSetting preferedIpVersion)
    • setPreferedIpVersion

      public void setPreferedIpVersion(AbstractDnsClient.IpVersionSetting preferedIpVersion)
    • getPreferedIpVersion

      public AbstractDnsClient.IpVersionSetting getPreferedIpVersion()
    • query

      public final DnsQueryResult query(String name, org.minidns.record.Record.TYPE type, org.minidns.record.Record.CLASS clazz) throws IOException
      Query the system nameservers for a single entry of any class. This can be used to determine the name server version, if name is version.bind, type is TYPE.TXT and clazz is CLASS.CH.
      Parameters:
      name - The DNS name to request.
      type - The DNS type to request (SRV, A, AAAA, ...).
      clazz - The class of the request (usually IN for Internet).
      Returns:
      The response (or null on timeout/error).
      Throws:
      IOException - if an IO error occurs.
    • query

      public final DnsQueryResult query(org.minidns.dnsname.DnsName name, org.minidns.record.Record.TYPE type) throws IOException
      Query the system nameservers for a single entry of the class IN (which is used for MX, SRV, A, AAAA and most other RRs).
      Parameters:
      name - The DNS name to request.
      type - The DNS type to request (SRV, A, AAAA, ...).
      Returns:
      The response (or null on timeout/error).
      Throws:
      IOException - if an IO error occurs.
    • query

      public final DnsQueryResult query(CharSequence name, org.minidns.record.Record.TYPE type) throws IOException
      Query the system nameservers for a single entry of the class IN (which is used for MX, SRV, A, AAAA and most other RRs).
      Parameters:
      name - The DNS name to request.
      type - The DNS type to request (SRV, A, AAAA, ...).
      Returns:
      The response (or null on timeout/error).
      Throws:
      IOException - if an IO error occurs.
    • query

      public DnsQueryResult query(org.minidns.dnsmessage.Question q) throws IOException
      Throws:
      IOException
    • query

      protected abstract DnsQueryResult query(org.minidns.dnsmessage.DnsMessage.Builder query) throws IOException
      Send a query request to the DNS system.
      Parameters:
      query - The query to send to the server.
      Returns:
      The response (or null).
      Throws:
      IOException - if an IO error occurs.
    • queryAsync

      public final MiniDnsFuture<DnsQueryResult,IOException> queryAsync(CharSequence name, org.minidns.record.Record.TYPE type)
    • queryAsync

      public final MiniDnsFuture<DnsQueryResult,IOException> queryAsync(org.minidns.dnsmessage.Question q)
    • queryAsync

      protected MiniDnsFuture<DnsQueryResult,IOException> queryAsync(org.minidns.dnsmessage.DnsMessage.Builder query)
      Default implementation of an asynchronous DNS query which just wraps the synchronous case.

      Subclasses override this method to support true asynchronous queries.

      Parameters:
      query - the query.
      Returns:
      a future for this query.
    • query

      public final DnsQueryResult query(org.minidns.dnsmessage.Question q, InetAddress server, int port) throws IOException
      Throws:
      IOException
    • query

      public final DnsQueryResult query(org.minidns.dnsmessage.DnsMessage requestMessage, InetAddress address, int port) throws IOException
      Throws:
      IOException
    • queryAsync

      public final MiniDnsFuture<DnsQueryResult,IOException> queryAsync(org.minidns.dnsmessage.DnsMessage requestMessage, InetAddress address, int port)
    • isResponseCacheable

      protected boolean isResponseCacheable(org.minidns.dnsmessage.Question q, DnsQueryResult result)
      Whether a response from the DNS system should be cached or not.
      Parameters:
      q - The question the response message should answer.
      result - The DNS query result.
      Returns:
      True, if the response should be cached, false otherwise.
    • newQuestion

      protected abstract org.minidns.dnsmessage.DnsMessage.Builder newQuestion(org.minidns.dnsmessage.DnsMessage.Builder questionMessage)
    • query

      public DnsQueryResult query(String name, org.minidns.record.Record.TYPE type, org.minidns.record.Record.CLASS clazz, InetAddress address, int port) throws IOException
      Query a nameserver for a single entry.
      Parameters:
      name - The DNS name to request.
      type - The DNS type to request (SRV, A, AAAA, ...).
      clazz - The class of the request (usually IN for Internet).
      address - The DNS server address.
      port - The DNS server port.
      Returns:
      The response (or null on timeout / failure).
      Throws:
      IOException - On IO Errors.
    • query

      public DnsQueryResult query(String name, org.minidns.record.Record.TYPE type, org.minidns.record.Record.CLASS clazz, InetAddress address) throws IOException
      Query a nameserver for a single entry.
      Parameters:
      name - The DNS name to request.
      type - The DNS type to request (SRV, A, AAAA, ...).
      clazz - The class of the request (usually IN for Internet).
      address - The DNS server host.
      Returns:
      The response (or null on timeout / failure).
      Throws:
      IOException - On IO Errors.
    • query

      public DnsQueryResult query(String name, org.minidns.record.Record.TYPE type, InetAddress address) throws IOException
      Query a nameserver for a single entry of class IN.
      Parameters:
      name - The DNS name to request.
      type - The DNS type to request (SRV, A, AAAA, ...).
      address - The DNS server host.
      Returns:
      The response (or null on timeout / failure).
      Throws:
      IOException - On IO Errors.
    • query

      public final DnsQueryResult query(org.minidns.dnsmessage.DnsMessage query, InetAddress host) throws IOException
      Throws:
      IOException
    • query

      public DnsQueryResult query(org.minidns.dnsmessage.Question q, InetAddress address) throws IOException
      Query a specific server for one entry.
      Parameters:
      q - The question section of the DNS query.
      address - The dns server address.
      Returns:
      The a DNS query result.
      Throws:
      IOException - On IOErrors.
    • queryAsync

      public final MiniDnsFuture<DnsQueryResult,IOException> queryAsync(org.minidns.dnsmessage.DnsMessage query, InetAddress dnsServer)
    • getDataSource

      public DnsDataSource getDataSource()
      Returns the currently used DnsDataSource. See setDataSource(DnsDataSource) for details.
      Returns:
      The currently used DnsDataSource
    • setDataSource

      public void setDataSource(DnsDataSource dataSource)
      Set a DnsDataSource to be used by the DnsClient. The default implementation will direct all queries directly to the Internet. This can be used to define a non-default handling for outgoing data. This can be useful to redirect the requests to a proxy or to modify requests after or responses before they are handled by the DnsClient implementation.
      Parameters:
      dataSource - An implementation of DNSDataSource that shall be used.
    • getCache

      public DnsCache getCache()
      Get the cache used by this DNS client.
      Returns:
      the cached used by this DNS client or null.
    • getQueryFor

      protected org.minidns.dnsmessage.DnsMessage getQueryFor(org.minidns.dnsmessage.Question q)
    • getCachedNameserverRecordsFor

      public Set<org.minidns.record.NS> getCachedNameserverRecordsFor(org.minidns.dnsname.DnsName dnsName)
    • getCachedIPv4AddressesFor

      public Set<org.minidns.record.A> getCachedIPv4AddressesFor(org.minidns.dnsname.DnsName dnsName)
    • getCachedIPv6AddressesFor

      public Set<org.minidns.record.AAAA> getCachedIPv6AddressesFor(org.minidns.dnsname.DnsName dnsName)
    • getCachedIPv4NameserverAddressesFor

      public Set<org.minidns.record.A> getCachedIPv4NameserverAddressesFor(org.minidns.dnsname.DnsName dnsName)
    • getCachedIPv6NameserverAddressesFor

      public Set<org.minidns.record.AAAA> getCachedIPv6NameserverAddressesFor(org.minidns.dnsname.DnsName dnsName)