Class ResolverApi

  • Direct Known Subclasses:
    DnssecResolverApi

    public class ResolverApi
    extends java.lang.Object
    The high-level MiniDNS resolving API. It is designed to be easy to use.

    A simple exammple how to resolve the IPv4 address of a given domain:

     
     ResolverResult<A> result = DnssecResolverApi.INSTANCE.resolve("verteiltesysteme.net", A.class);
     if (!result.wasSuccessful()) {
       RESPONSE_CODE responseCode = result.getResponseCode();
       // Perform error handling.
       …
       return;
     }
     if (!result.isAuthenticData()) {
       // Response was not secured with DNSSEC.
       …
       return;
     }
     Set<A> answers = result.getAnswers();
     for (A a : answers) {
       InetAddress inetAddress = a.getInetAddress();
       // Do someting with the InetAddress, e.g. connect to.
       …
     }
     
     

    MiniDNS also supports SRV resource records as first class citizens:

     
     SrvResolverResult result = DnssecResolverApi.INSTANCE.resolveSrv(SrvType.xmpp_client, "example.org")
     if (!result.wasSuccessful()) {
       RESPONSE_CODE responseCode = result.getResponseCode();
       // Perform error handling.
       …
       return;
     }
     if (!result.isAuthenticData()) {
       // Response was not secured with DNSSEC.
       …
       return;
     }
     List<ResolvedSrvRecord> srvRecords = result.getSortedSrvResolvedAddresses();
     // Loop over the domain names pointed by the SRV RR. MiniDNS will return the list
     // correctly sorted by the priority and weight of the related SRV RR.
     for (ResolvedSrvRecord srvRecord : srvRecord) {
       // Loop over the Internet Address RRs resolved for the SRV RR. The order of
       // the list depends on the prefered IP version setting of MiniDNS.
       for (InternetAddressRR inetAddressRR : srvRecord.addresses) {
         InetAddress inetAddress = inetAddressRR.getInetAddress();
         int port = srvAddresses.port;
         // Try to connect to inetAddress at port.
         …
       }
     }
     
     
    • Field Detail

    • Constructor Detail

      • ResolverApi

        public ResolverApi​(org.minidns.AbstractDnsClient dnsClient)
    • Method Detail

      • resolve

        public final <D extends org.minidns.record.Data> ResolverResult<D> resolve​(java.lang.String name,
                                                                                   java.lang.Class<D> type)
                                                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • resolve

        public final <D extends org.minidns.record.Data> ResolverResult<D> resolve​(org.minidns.dnsname.DnsName name,
                                                                                   java.lang.Class<D> type)
                                                                            throws java.io.IOException
        Throws:
        java.io.IOException
      • resolve

        public <D extends org.minidns.record.Data> ResolverResult<D> resolve​(org.minidns.dnsmessage.Question question)
                                                                      throws java.io.IOException
        Throws:
        java.io.IOException
      • resolveSrv

        public SrvResolverResult resolveSrv​(SrvType type,
                                            java.lang.String serviceName)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • resolveSrv

        public SrvResolverResult resolveSrv​(SrvType type,
                                            org.minidns.dnsname.DnsName serviceName)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • resolveSrv

        public SrvResolverResult resolveSrv​(SrvService service,
                                            SrvProto proto,
                                            org.minidns.dnsname.DnsName name)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • resolveSrv

        public SrvResolverResult resolveSrv​(org.minidns.dnslabel.DnsLabel service,
                                            org.minidns.dnslabel.DnsLabel proto,
                                            org.minidns.dnsname.DnsName name)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • resolveSrv

        public SrvResolverResult resolveSrv​(java.lang.String name)
                                     throws java.io.IOException
        Throws:
        java.io.IOException
      • reverseLookup

        public ResolverResult<org.minidns.record.PTR> reverseLookup​(java.lang.CharSequence inetAddressCs)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • reverseLookup

        public ResolverResult<org.minidns.record.PTR> reverseLookup​(java.net.InetAddress inetAddress)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • reverseLookup

        public ResolverResult<org.minidns.record.PTR> reverseLookup​(java.net.Inet4Address inet4Address)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • reverseLookup

        public ResolverResult<org.minidns.record.PTR> reverseLookup​(java.net.Inet6Address inet6Address)
                                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • resolveSrv

        public SrvResolverResult resolveSrv​(org.minidns.dnsname.DnsName srvDnsName)
                                     throws java.io.IOException
        Resolve the SRV resource record for the given name. After ensuring that the resolution was successful with ResolverResult.wasSuccessful() , and, if DNSSEC was used, that the results could be verified with ResolverResult.isAuthenticData(), simply use SrvResolverResult.getSortedSrvResolvedAddresses() to retrieve the resolved IP addresses.

        The name of SRV records is "_[service]._[protocol].[serviceDomain]", for example "_xmpp-client._tcp.example.org".

        Parameters:
        srvDnsName - the name to resolve.
        Returns:
        a SrvResolverResult instance which can be used to retrieve the IP addresses.
        Throws:
        java.io.IOException - if an IO exception occurs.
      • resolveSrv

        public SrvResolverResult resolveSrv​(org.minidns.dnsname.DnsName name,
                                            SrvServiceProto srvServiceProto)
                                     throws java.io.IOException
        Resolve the SRV resource record for the given service name, service and protcol. After ensuring that the resolution was successful with ResolverResult.wasSuccessful() , and, if DNSSEC was used, that the results could be verified with ResolverResult.isAuthenticData(), simply use SrvResolverResult.getSortedSrvResolvedAddresses() to retrieve the resolved IP addresses.
        Parameters:
        name - the DNS name of the service.
        srvServiceProto - the service and protocol to lookup.
        Returns:
        a SrvResolverResult instance which can be used to retrieve the IP addresses.
        Throws:
        java.io.IOException - if an I/O error occurs.
      • getClient

        public final org.minidns.AbstractDnsClient getClient()