Package org.minidns.hla
Class ResolverApi
- java.lang.Object
-
- org.minidns.hla.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 Summary
Fields Modifier and Type Field Description static ResolverApi
INSTANCE
-
Constructor Summary
Constructors Constructor Description ResolverApi(AbstractDnsClient dnsClient)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AbstractDnsClient
getClient()
<D extends Data>
ResolverResult<D>resolve(java.lang.String name, java.lang.Class<D> type)
<D extends Data>
ResolverResult<D>resolve(Question question)
<D extends Data>
ResolverResult<D>resolve(DnsName name, java.lang.Class<D> type)
SrvResolverResult
resolveSrv(java.lang.String name)
SrvResolverResult
resolveSrv(DnsLabel service, DnsLabel proto, DnsName name)
SrvResolverResult
resolveSrv(DnsName srvDnsName)
Resolve theSRV
resource record for the given name.SrvResolverResult
resolveSrv(DnsName name, SrvServiceProto srvServiceProto)
Resolve theSRV
resource record for the given service name, service and protcol.SrvResolverResult
resolveSrv(SrvService service, SrvProto proto, java.lang.String name)
SrvResolverResult
resolveSrv(SrvService service, SrvProto proto, DnsName name)
SrvResolverResult
resolveSrv(SrvType type, java.lang.String serviceName)
SrvResolverResult
resolveSrv(SrvType type, DnsName serviceName)
ResolverResult<PTR>
reverseLookup(java.lang.CharSequence inetAddressCs)
ResolverResult<PTR>
reverseLookup(java.net.Inet4Address inet4Address)
ResolverResult<PTR>
reverseLookup(java.net.Inet6Address inet6Address)
ResolverResult<PTR>
reverseLookup(java.net.InetAddress inetAddress)
-
-
-
Field Detail
-
INSTANCE
public static final ResolverApi INSTANCE
-
-
Constructor Detail
-
ResolverApi
public ResolverApi(AbstractDnsClient dnsClient)
-
-
Method Detail
-
resolve
public final <D extends 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 Data> ResolverResult<D> resolve(DnsName name, java.lang.Class<D> type) throws java.io.IOException
- Throws:
java.io.IOException
-
resolve
public <D extends Data> ResolverResult<D> resolve(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, DnsName serviceName) throws java.io.IOException
- Throws:
java.io.IOException
-
resolveSrv
public SrvResolverResult resolveSrv(SrvService service, SrvProto proto, java.lang.String name) throws java.io.IOException
- Throws:
java.io.IOException
-
resolveSrv
public SrvResolverResult resolveSrv(SrvService service, SrvProto proto, DnsName name) throws java.io.IOException
- Throws:
java.io.IOException
-
resolveSrv
public SrvResolverResult resolveSrv(DnsLabel service, DnsLabel proto, 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<PTR> reverseLookup(java.lang.CharSequence inetAddressCs) throws java.io.IOException
- Throws:
java.io.IOException
-
reverseLookup
public ResolverResult<PTR> reverseLookup(java.net.InetAddress inetAddress) throws java.io.IOException
- Throws:
java.io.IOException
-
reverseLookup
public ResolverResult<PTR> reverseLookup(java.net.Inet4Address inet4Address) throws java.io.IOException
- Throws:
java.io.IOException
-
reverseLookup
public ResolverResult<PTR> reverseLookup(java.net.Inet6Address inet6Address) throws java.io.IOException
- Throws:
java.io.IOException
-
resolveSrv
public SrvResolverResult resolveSrv(DnsName srvDnsName) throws java.io.IOException
Resolve theSRV
resource record for the given name. After ensuring that the resolution was successful withResolverResult.wasSuccessful()
, and, if DNSSEC was used, that the results could be verified withResolverResult.isAuthenticData()
, simply useSrvResolverResult.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(DnsName name, SrvServiceProto srvServiceProto) throws java.io.IOException
Resolve theSRV
resource record for the given service name, service and protcol. After ensuring that the resolution was successful withResolverResult.wasSuccessful()
, and, if DNSSEC was used, that the results could be verified withResolverResult.isAuthenticData()
, simply useSrvResolverResult.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 AbstractDnsClient getClient()
-
-