Package org.minidns.hla
Class ResolverApi
- java.lang.Object
-
- org.minidns.hla.ResolverApi
-
- Direct Known Subclasses:
DnssecResolverApi
public class ResolverApi extends 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 ResolverApiINSTANCE
-
Constructor Summary
Constructors Constructor Description ResolverApi(AbstractDnsClient dnsClient)
-
Method Summary
-
-
-
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(String name, Class<D> type) throws IOException
- Throws:
IOException
-
resolve
public final <D extends Data> ResolverResult<D> resolve(DnsName name, Class<D> type) throws IOException
- Throws:
IOException
-
resolve
public <D extends Data> ResolverResult<D> resolve(Question question) throws IOException
- Throws:
IOException
-
resolveSrv
public SrvResolverResult resolveSrv(SrvType type, String serviceName) throws IOException
- Throws:
IOException
-
resolveSrv
public SrvResolverResult resolveSrv(SrvType type, DnsName serviceName) throws IOException
- Throws:
IOException
-
resolveSrv
public SrvResolverResult resolveSrv(SrvService service, SrvProto proto, String name) throws IOException
- Throws:
IOException
-
resolveSrv
public SrvResolverResult resolveSrv(SrvService service, SrvProto proto, DnsName name) throws IOException
- Throws:
IOException
-
resolveSrv
public SrvResolverResult resolveSrv(DnsLabel service, DnsLabel proto, DnsName name) throws IOException
- Throws:
IOException
-
resolveSrv
public SrvResolverResult resolveSrv(String name) throws IOException
- Throws:
IOException
-
reverseLookup
public ResolverResult<PTR> reverseLookup(CharSequence inetAddressCs) throws IOException
- Throws:
IOException
-
reverseLookup
public ResolverResult<PTR> reverseLookup(InetAddress inetAddress) throws IOException
- Throws:
IOException
-
reverseLookup
public ResolverResult<PTR> reverseLookup(Inet4Address inet4Address) throws IOException
- Throws:
IOException
-
reverseLookup
public ResolverResult<PTR> reverseLookup(Inet6Address inet6Address) throws IOException
- Throws:
IOException
-
resolveSrv
public SrvResolverResult resolveSrv(DnsName srvDnsName) throws IOException
Resolve theSRVresource 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
SrvResolverResultinstance which can be used to retrieve the IP addresses. - Throws:
IOException- if an IO exception occurs.
-
resolveSrv
public SrvResolverResult resolveSrv(DnsName name, SrvServiceProto srvServiceProto) throws IOException
Resolve theSRVresource 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
SrvResolverResultinstance which can be used to retrieve the IP addresses. - Throws:
IOException- if an I/O error occurs.
-
getClient
public final AbstractDnsClient getClient()
-
-