From feb8ce779db5d79451dd74b605aede6f9cf92e62 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Tue, 28 Jul 2020 11:52:51 +0200 Subject: [PATCH] Add DnsClient.getReverseIpLookupQuestionFor(InetAddress) --- .../src/main/java/org/minidns/DnsClient.java | 31 +++++++++++++++++++ .../java/org/minidns/hla/ResolverApi.java | 12 +++---- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/minidns-client/src/main/java/org/minidns/DnsClient.java b/minidns-client/src/main/java/org/minidns/DnsClient.java index f87f4de4..cb1e741a 100644 --- a/minidns-client/src/main/java/org/minidns/DnsClient.java +++ b/minidns-client/src/main/java/org/minidns/DnsClient.java @@ -13,11 +13,14 @@ import org.minidns.MiniDnsException.ErrorResponseException; import org.minidns.MiniDnsException.NoQueryPossibleException; import org.minidns.dnsmessage.DnsMessage; +import org.minidns.dnsmessage.Question; +import org.minidns.dnsname.DnsName; import org.minidns.dnsqueryresult.DnsQueryResult; import org.minidns.dnsserverlookup.AndroidUsingExec; import org.minidns.dnsserverlookup.AndroidUsingReflection; import org.minidns.dnsserverlookup.DnsServerLookupMechanism; import org.minidns.dnsserverlookup.UnixUsingEtcResolvConf; +import org.minidns.record.Record.TYPE; import org.minidns.util.CollectionsUtil; import org.minidns.util.InetAddressUtil; import org.minidns.util.MultipleIoException; @@ -441,4 +444,32 @@ public InetAddress getRandomHardcodedIpv4DnsServer() { public InetAddress getRandomHarcodedIpv6DnsServer() { return CollectionsUtil.getRandomFrom(STATIC_IPV6_DNS_SERVERS, insecureRandom); } + + private static Question getReverseIpLookupQuestionFor(DnsName dnsName) { + return new Question(dnsName, TYPE.PTR); + } + + public static Question getReverseIpLookupQuestionFor(Inet4Address inet4Address) { + DnsName reversedIpAddress = InetAddressUtil.reverseIpAddressOf(inet4Address); + DnsName dnsName = DnsName.from(reversedIpAddress, DnsName.IN_ADDR_ARPA); + return getReverseIpLookupQuestionFor(dnsName); + } + + public static Question getReverseIpLookupQuestionFor(Inet6Address inet6Address) { + DnsName reversedIpAddress = InetAddressUtil.reverseIpAddressOf(inet6Address); + DnsName dnsName = DnsName.from(reversedIpAddress, DnsName.IP6_ARPA); + return getReverseIpLookupQuestionFor(dnsName); + } + + public static Question getReverseIpLookupQuestionFor(InetAddress inetAddress) { + if (inetAddress instanceof Inet4Address) { + return getReverseIpLookupQuestionFor((Inet4Address) inetAddress); + } else if (inetAddress instanceof Inet6Address) { + return getReverseIpLookupQuestionFor((Inet6Address) inetAddress); + } else { + throw new IllegalArgumentException("The provided inetAddress '" + inetAddress + + "' is neither of type Inet4Address nor Inet6Address"); + } + } + } diff --git a/minidns-hla/src/main/java/org/minidns/hla/ResolverApi.java b/minidns-hla/src/main/java/org/minidns/hla/ResolverApi.java index 5e142634..d7855bbf 100644 --- a/minidns-hla/src/main/java/org/minidns/hla/ResolverApi.java +++ b/minidns-hla/src/main/java/org/minidns/hla/ResolverApi.java @@ -16,6 +16,7 @@ import java.net.InetAddress; import org.minidns.AbstractDnsClient; +import org.minidns.DnsClient; import org.minidns.dnslabel.DnsLabel; import org.minidns.dnsmessage.Question; import org.minidns.dnsname.DnsName; @@ -29,7 +30,6 @@ import org.minidns.record.PTR; import org.minidns.record.SRV; import org.minidns.record.Record.TYPE; -import org.minidns.util.InetAddressUtil; /** * The high-level MiniDNS resolving API. It is designed to be easy to use. @@ -161,15 +161,13 @@ public ResolverResult reverseLookup(InetAddress inetAddress) throws IOExcep } public ResolverResult reverseLookup(Inet4Address inet4Address) throws IOException { - DnsName reversedIpAddress = InetAddressUtil.reverseIpAddressOf(inet4Address); - DnsName dnsName = DnsName.from(reversedIpAddress, DnsName.IN_ADDR_ARPA); - return resolve(dnsName, PTR.class); + Question question = DnsClient.getReverseIpLookupQuestionFor(inet4Address); + return resolve(question); } public ResolverResult reverseLookup(Inet6Address inet6Address) throws IOException { - DnsName reversedIpAddress = InetAddressUtil.reverseIpAddressOf(inet6Address); - DnsName dnsName = DnsName.from(reversedIpAddress, DnsName.IP6_ARPA); - return resolve(dnsName, PTR.class); + Question question = DnsClient.getReverseIpLookupQuestionFor(inet6Address); + return resolve(question); } /**