From 6203687933034542d7c52b9118edcc9b600192d4 Mon Sep 17 00:00:00 2001 From: Daniel Wolf Date: Wed, 25 Apr 2018 02:38:48 +0200 Subject: [PATCH 1/5] Allow DNSServerLookupMechanisms to specify a port the server runs on --- .../android21/AndroidUsingLinkProperties.java | 5 +- .../src/main/java/org/minidns/DNSClient.java | 80 ++++++++++++------- .../AbstractDNSServerLookupMechanism.java | 19 ++++- .../dnsserverlookup/AndroidUsingExec.java | 4 +- .../AndroidUsingReflection.java | 4 +- .../DNSServerLookupMechanism.java | 2 +- .../minidns/dnsserverlookup/IPPortPair.java | 46 +++++++++++ .../UnixUsingEtcResolvConf.java | 6 +- .../test/java/org/minidns/DNSClientTest.java | 3 +- 9 files changed, 127 insertions(+), 42 deletions(-) create mode 100644 minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java diff --git a/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java b/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java index 7ca4c076..545aca72 100644 --- a/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java +++ b/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java @@ -23,6 +23,7 @@ import org.minidns.dnsserverlookup.AbstractDNSServerLookupMechanism; import org.minidns.dnsserverlookup.AndroidUsingExec; +import org.minidns.dnsserverlookup.IPPortPair; /** * Requires the ACCESS_NETWORK_STATE permission. @@ -44,7 +45,7 @@ public boolean isAvailable() { @Override @TargetApi(21) - public List getDnsServerAddresses() { + public List getDnsServerAddresses() { Network[] networks = connectivityManager.getAllNetworks(); if (networks == null) { return null; @@ -69,7 +70,7 @@ public List getDnsServerAddresses() { return null; } - return servers; + return stringCollectionToListOfIPPortPairs(servers); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) diff --git a/minidns-client/src/main/java/org/minidns/DNSClient.java b/minidns-client/src/main/java/org/minidns/DNSClient.java index d3a07f2d..701165ce 100644 --- a/minidns-client/src/main/java/org/minidns/DNSClient.java +++ b/minidns-client/src/main/java/org/minidns/DNSClient.java @@ -15,6 +15,7 @@ import org.minidns.dnsserverlookup.AndroidUsingExec; import org.minidns.dnsserverlookup.AndroidUsingReflection; import org.minidns.dnsserverlookup.DNSServerLookupMechanism; +import org.minidns.dnsserverlookup.IPPortPair; import org.minidns.dnsserverlookup.UnixUsingEtcResolvConf; import org.minidns.util.CollectionsUtil; import org.minidns.util.ExceptionCallback; @@ -96,8 +97,8 @@ protected DNSMessage.Builder newQuestion(DNSMessage.Builder message) { return message; } - private List getServerAddresses() { - List dnsServerAddresses = findDnsAddresses(); + private List getServerAddresses() { + List dnsServerAddresses = findDnsAddresses(); InetAddress[] selectedHardcodedDnsServerAddresses = new InetAddress[2]; if (useHardcodedDnsServers) { @@ -123,7 +124,7 @@ private List getServerAddresses() { } for (InetAddress selectedHardcodedDnsServerAddress : selectedHardcodedDnsServerAddresses) { if (selectedHardcodedDnsServerAddress == null) continue; - dnsServerAddresses.add(selectedHardcodedDnsServerAddress); + dnsServerAddresses.add(new UpstreamDNSServer(selectedHardcodedDnsServerAddress, IPPortPair.DEFAULT_PORT)); } return dnsServerAddresses; @@ -142,23 +143,23 @@ public DNSMessage query(DNSMessage.Builder queryBuilder) throws IOException { return responseMessage; } - List dnsServerAddresses = getServerAddresses(); + List dnsServerAddresses = getServerAddresses(); List ioExceptions = new ArrayList<>(dnsServerAddresses.size()); - for (InetAddress dns : dnsServerAddresses) { - if (nonRaServers.contains(dns)) { + for (UpstreamDNSServer dns : dnsServerAddresses) { + if (nonRaServers.contains(dns.getServer())) { LOGGER.finer("Skipping " + dns + " because it was marked as \"recursion not available\""); continue; } try { - responseMessage = query(q, dns); + responseMessage = query(q, dns.getServer(), dns.getPort()); if (responseMessage == null) { continue; } if (!responseMessage.recursionAvailable) { - boolean newRaServer = nonRaServers.add(dns); + boolean newRaServer = nonRaServers.add(dns.getServer()); if (newRaServer) { LOGGER.warning("The DNS server " + dns @@ -211,16 +212,16 @@ protected MiniDnsFuture queryAsync(DNSMessage.Builder q return MiniDnsFuture.from(responseMessage); } - final List dnsServerAddresses = getServerAddresses(); + final List dnsServerAddresses = getServerAddresses(); final InternalMiniDnsFuture future = new InternalMiniDnsFuture<>(); final List exceptions = Collections.synchronizedList(new ArrayList(dnsServerAddresses.size())); // Filter loop. - Iterator it = dnsServerAddresses.iterator(); + Iterator it = dnsServerAddresses.iterator(); while (it.hasNext()) { - InetAddress dns = it.next(); - if (nonRaServers.contains(dns)) { + UpstreamDNSServer dns = it.next(); + if (nonRaServers.contains(dns.getServer())) { it.remove(); LOGGER.finer("Skipping " + dns + " because it was marked as \"recursion not available\""); continue; @@ -229,7 +230,7 @@ protected MiniDnsFuture queryAsync(DNSMessage.Builder q List> futures = new ArrayList<>(dnsServerAddresses.size()); // "Main" loop. - for (InetAddress dns : dnsServerAddresses) { + for (UpstreamDNSServer dns : dnsServerAddresses) { if (future.isDone()) { for (MiniDnsFuture futureToCancel : futures) { futureToCancel.cancel(true); @@ -237,7 +238,7 @@ protected MiniDnsFuture queryAsync(DNSMessage.Builder q break; } - MiniDnsFuture f = queryAsync(q, dns); + MiniDnsFuture f = queryAsync(q, dns.getServer(), dns.getPort()); f.onSuccess(new SuccessCallback() { @Override public void onSuccess(DNSMessage result) { @@ -268,8 +269,8 @@ public void processException(IOException exception) { * * @return A list of DNS server IP addresses configured for this system. */ - public static List findDNS() { - List res = null; + public static List findDNS() { + List res = null; for (DNSServerLookupMechanism mechanism : LOOKUP_MECHANISMS) { res = mechanism.getDnsServerAddresses(); if (res == null) { @@ -285,10 +286,10 @@ public static List findDNS() { // especially a valid DNS name is returned, as this would cause the following String to InetAddress conversation using // getByName(String) to cause a DNS lookup, which would be performed outside of the realm of MiniDNS and therefore also outside // of its DNSSEC guarantees. - Iterator it = res.iterator(); + Iterator it = res.iterator(); while (it.hasNext()) { - String potentialDnsServer = it.next(); - if (!InetAddressUtil.isIpAddress(potentialDnsServer)) { + IPPortPair potentialDnsServer = it.next(); + if (!InetAddressUtil.isIpAddress(potentialDnsServer.getIp())) { LOGGER.warning("The DNS server lookup mechanism '" + mechanism.getName() + "' returned an invalid non-IP address result: '" + potentialDnsServer + "'"); it.remove(); @@ -321,9 +322,9 @@ public static List findDNS() { * @return A list of DNS server addresses. * @see #findDNS() */ - public static List findDnsAddresses() { + public static List findDnsAddresses() { // The findDNS() method contract guarantees that only IP addresses will be returned. - List res = findDNS(); + List res = findDNS(); if (res == null) { return new ArrayList<>(); @@ -331,8 +332,8 @@ public static List findDnsAddresses() { final IpVersionSetting setting = DEFAULT_IP_VERSION_SETTING; - List ipv4DnsServer = null; - List ipv6DnsServer = null; + List ipv4DnsServer = null; + List ipv6DnsServer = null; if (setting.v4) { ipv4DnsServer = new ArrayList<>(res.size()); } @@ -340,17 +341,18 @@ public static List findDnsAddresses() { ipv6DnsServer = new ArrayList<>(res.size()); } - for (String dnsServerString : res) { + for (IPPortPair dnsServer : res) { // The following invariant must hold: "dnsServerString is a IP address". Therefore findDNS() must only return a List of Strings // representing IP addresses. Otherwise the following call of getByName(String) may perform a DNS lookup without MiniDNS being // involved. Something we want to avoid. - assert (InetAddressUtil.isIpAddress(dnsServerString)); + assert (InetAddressUtil.isIpAddress(dnsServer.getIp())); + assert (dnsServer.getPort() >= 1 && dnsServer.getPort() <= 65535); InetAddress dnsServerAddress; try { - dnsServerAddress = InetAddress.getByName(dnsServerString); + dnsServerAddress = InetAddress.getByName(dnsServer.getIp()); } catch (UnknownHostException e) { - LOGGER.log(Level.SEVERE, "Could not transform '" + dnsServerString + "' to InetAddress", e); + LOGGER.log(Level.SEVERE, "Could not transform '" + dnsServer + "' to InetAddress", e); continue; } if (dnsServerAddress instanceof Inet4Address) { @@ -358,19 +360,19 @@ public static List findDnsAddresses() { continue; } Inet4Address ipv4DnsServerAddress = (Inet4Address) dnsServerAddress; - ipv4DnsServer.add(ipv4DnsServerAddress); + ipv4DnsServer.add(new UpstreamDNSServer(ipv4DnsServerAddress, dnsServer.getPort())); } else if (dnsServerAddress instanceof Inet6Address) { if (!setting.v6) { continue; } Inet6Address ipv6DnsServerAddress = (Inet6Address) dnsServerAddress; - ipv6DnsServer.add(ipv6DnsServerAddress); + ipv6DnsServer.add(new UpstreamDNSServer(ipv6DnsServerAddress, dnsServer.getPort())); } else { throw new AssertionError("The address '" + dnsServerAddress + "' is neither of type Inet(4|6)Address"); } } - List dnsServers = new LinkedList<>(); + List dnsServers = new LinkedList<>(); switch (setting) { case v4v6: @@ -458,4 +460,22 @@ public InetAddress getRandomHardcodedIpv4DnsServer() { public InetAddress getRandomHarcodedIpv6DnsServer() { return CollectionsUtil.getRandomFrom(STATIC_IPV6_DNS_SERVERS, insecureRandom); } + + public static class UpstreamDNSServer { + private InetAddress server; + private int port; + + public UpstreamDNSServer(InetAddress server, int port) { + this.server = server; + this.port = port; + } + + public InetAddress getServer() { + return server; + } + + public int getPort() { + return port; + } + } } diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java index 2ea2fcca..031831e3 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java @@ -44,7 +44,7 @@ public final int compareTo(DNSServerLookupMechanism other) { } @Override - public abstract List getDnsServerAddresses(); + public abstract List getDnsServerAddresses(); protected static List toListOfStrings(Collection inetAddresses) { List result = new ArrayList<>(inetAddresses.size()); @@ -54,4 +54,21 @@ protected static List toListOfStrings(Collection } return result; } + + protected static List inetAddressCollectionToListOfIPPortPairs(Collection inetAddresses){ + List result = new ArrayList<>(inetAddresses.size()); + for (InetAddress inetAddress : inetAddresses) { + String address = inetAddress.getHostAddress(); + result.add(new IPPortPair(address, IPPortPair.DEFAULT_PORT)); + } + return result; + } + + protected static List stringCollectionToListOfIPPortPairs(Collection serverAddresses){ + List result = new ArrayList<>(serverAddresses.size()); + for (String address : serverAddresses) { + result.add(new IPPortPair(address, IPPortPair.DEFAULT_PORT)); + } + return result; + } } diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java index c42ecd8d..14f55c1b 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java @@ -38,7 +38,7 @@ private AndroidUsingExec() { } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddresses() { try { Process process = Runtime.getRuntime().exec("getprop"); InputStream inputStream = process.getInputStream(); @@ -48,7 +48,7 @@ public List getDnsServerAddresses() { if (server.size() > 0) { List res = new ArrayList<>(server.size()); res.addAll(server); - return res; + return stringCollectionToListOfIPPortPairs(res); } } catch (IOException e) { LOGGER.log(Level.WARNING, "Exception in findDNSByExec", e); diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java index 0fc1ef1b..66bf5778 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java @@ -31,7 +31,7 @@ protected AndroidUsingReflection() { } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddresses() { try { Class SystemProperties = Class.forName("android.os.SystemProperties"); @@ -63,7 +63,7 @@ public List getDnsServerAddresses() { } if (servers.size() > 0) { - return servers; + return stringCollectionToListOfIPPortPairs(servers); } } catch (Exception e) { // we might trigger some problems this way diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java index 41e32a3a..4d5c0420 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java @@ -29,6 +29,6 @@ public interface DNSServerLookupMechanism extends Comparable getDnsServerAddresses(); + public List getDnsServerAddresses(); } diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java new file mode 100644 index 00000000..8751d74c --- /dev/null +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java @@ -0,0 +1,46 @@ +/* + * Copyright 2015-2018 the original author or authors + * + * This software is licensed under the Apache License, Version 2.0, + * the GNU Lesser General Public License version 2 or later ("LGPL") + * and the WTFPL. + * You may choose either license to govern your use of this software only + * upon the condition that you accept all of the terms of either + * the Apache License 2.0, the LGPL 2.1+ or the WTFPL. + */ +package org.minidns.dnsserverlookup; + +import java.io.Serializable; + +/** + * Copyright Daniel Wolf 2018 + * All rights reserved. + * Code may NOT be used without proper permission, neither in binary nor in source form. + * All redistributions of this software in source code must retain this copyright header + * All redistributions of this software in binary form must visibly inform users about usage of this software + *

+ * development@frostnerd.com + */ +public class IPPortPair implements Serializable { + private static final long serialVersionUID = 7354713072355023750L; + public static final int DEFAULT_PORT = 53; + private int port; + private String ip; + + public IPPortPair(String ip) { + this(ip, DEFAULT_PORT); + } + + public IPPortPair(String ip, int port) { + this.port = port; + this.ip = ip; + } + + public int getPort() { + return port; + } + + public String getIp() { + return ip; + } +} diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java index ebede1e7..60605b94 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java @@ -34,7 +34,7 @@ public class UnixUsingEtcResolvConf extends AbstractDNSServerLookupMechanism { private static final String RESOLV_CONF_FILE = "/etc/resolv.conf"; private static final Pattern NAMESERVER_PATTERN = Pattern.compile("^nameserver\\s+(.*)$"); - private static List cached; + private static List cached; private static long lastModified; private UnixUsingEtcResolvConf() { @@ -42,7 +42,7 @@ private UnixUsingEtcResolvConf() { } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddresses() { File file = new File(RESOLV_CONF_FILE); if (!file.exists()) { // Not very unixoid systems @@ -81,7 +81,7 @@ public List getDnsServerAddresses() { return null; } - cached = servers; + cached = stringCollectionToListOfIPPortPairs(servers); lastModified = currentLastModified; return cached; diff --git a/minidns-client/src/test/java/org/minidns/DNSClientTest.java b/minidns-client/src/test/java/org/minidns/DNSClientTest.java index c7e0a29e..f770df1f 100644 --- a/minidns-client/src/test/java/org/minidns/DNSClientTest.java +++ b/minidns-client/src/test/java/org/minidns/DNSClientTest.java @@ -16,6 +16,7 @@ import org.minidns.dnsserverlookup.AndroidUsingExec; import org.minidns.dnsserverlookup.AndroidUsingReflection; import org.minidns.dnsserverlookup.DNSServerLookupMechanism; +import org.minidns.dnsserverlookup.IPPortPair; import org.minidns.record.A; import org.minidns.record.Record.TYPE; import org.minidns.source.DNSDataSource; @@ -67,7 +68,7 @@ public boolean isAvailable() { return true; } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddresses() { return null; } } From 9b535718627ded10c43780b2161d657f5b566f46 Mon Sep 17 00:00:00 2001 From: Daniel Wolf Date: Wed, 25 Apr 2018 02:41:27 +0200 Subject: [PATCH 2/5] Renamed getDnsServerAddresses() to getDnsServerAddressesWithPorts() to better show what it returns --- .../dnsserverlookup/android21/AndroidUsingLinkProperties.java | 2 +- minidns-client/src/main/java/org/minidns/DNSClient.java | 2 +- .../dnsserverlookup/AbstractDNSServerLookupMechanism.java | 2 +- .../main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java | 2 +- .../org/minidns/dnsserverlookup/AndroidUsingReflection.java | 2 +- .../org/minidns/dnsserverlookup/DNSServerLookupMechanism.java | 2 +- .../org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java | 2 +- minidns-client/src/test/java/org/minidns/DNSClientTest.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java b/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java index 545aca72..dd0da171 100644 --- a/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java +++ b/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java @@ -45,7 +45,7 @@ public boolean isAvailable() { @Override @TargetApi(21) - public List getDnsServerAddresses() { + public List getDnsServerAddressesWithPorts() { Network[] networks = connectivityManager.getAllNetworks(); if (networks == null) { return null; diff --git a/minidns-client/src/main/java/org/minidns/DNSClient.java b/minidns-client/src/main/java/org/minidns/DNSClient.java index 701165ce..ea9b61ce 100644 --- a/minidns-client/src/main/java/org/minidns/DNSClient.java +++ b/minidns-client/src/main/java/org/minidns/DNSClient.java @@ -272,7 +272,7 @@ public void processException(IOException exception) { public static List findDNS() { List res = null; for (DNSServerLookupMechanism mechanism : LOOKUP_MECHANISMS) { - res = mechanism.getDnsServerAddresses(); + res = mechanism.getDnsServerAddressesWithPorts(); if (res == null) { continue; } diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java index 031831e3..c392a66d 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java @@ -44,7 +44,7 @@ public final int compareTo(DNSServerLookupMechanism other) { } @Override - public abstract List getDnsServerAddresses(); + public abstract List getDnsServerAddressesWithPorts(); protected static List toListOfStrings(Collection inetAddresses) { List result = new ArrayList<>(inetAddresses.size()); diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java index 14f55c1b..3605c221 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java @@ -38,7 +38,7 @@ private AndroidUsingExec() { } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddressesWithPorts() { try { Process process = Runtime.getRuntime().exec("getprop"); InputStream inputStream = process.getInputStream(); diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java index 66bf5778..0f76ea02 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java @@ -31,7 +31,7 @@ protected AndroidUsingReflection() { } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddressesWithPorts() { try { Class SystemProperties = Class.forName("android.os.SystemProperties"); diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java index 4d5c0420..cc83536e 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java @@ -29,6 +29,6 @@ public interface DNSServerLookupMechanism extends Comparable getDnsServerAddresses(); + public List getDnsServerAddressesWithPorts(); } diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java index 60605b94..022c809e 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java @@ -42,7 +42,7 @@ private UnixUsingEtcResolvConf() { } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddressesWithPorts() { File file = new File(RESOLV_CONF_FILE); if (!file.exists()) { // Not very unixoid systems diff --git a/minidns-client/src/test/java/org/minidns/DNSClientTest.java b/minidns-client/src/test/java/org/minidns/DNSClientTest.java index f770df1f..c26453ec 100644 --- a/minidns-client/src/test/java/org/minidns/DNSClientTest.java +++ b/minidns-client/src/test/java/org/minidns/DNSClientTest.java @@ -68,7 +68,7 @@ public boolean isAvailable() { return true; } @Override - public List getDnsServerAddresses() { + public List getDnsServerAddressesWithPorts() { return null; } } From 3f946dc41a2810e097f9f0154d29f628b7cfa2a4 Mon Sep 17 00:00:00 2001 From: Daniel Wolf Date: Wed, 25 Apr 2018 03:16:27 +0200 Subject: [PATCH 3/5] blacklistedDnsServers does contain strings, not IPPortPairs --- minidns-client/src/main/java/org/minidns/DNSClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/minidns-client/src/main/java/org/minidns/DNSClient.java b/minidns-client/src/main/java/org/minidns/DNSClient.java index ea9b61ce..7b0cf748 100644 --- a/minidns-client/src/main/java/org/minidns/DNSClient.java +++ b/minidns-client/src/main/java/org/minidns/DNSClient.java @@ -293,7 +293,7 @@ public static List findDNS() { LOGGER.warning("The DNS server lookup mechanism '" + mechanism.getName() + "' returned an invalid non-IP address result: '" + potentialDnsServer + "'"); it.remove(); - } else if (blacklistedDnsServers.contains(potentialDnsServer)) { + } else if (blacklistedDnsServers.contains(potentialDnsServer.getIp())) { LOGGER.fine("The DNS server lookup mechanism '" + mechanism.getName() + "' returned a blacklisted result: '" + potentialDnsServer + "'"); it.remove(); From ae8f304383a91950662840605ccc47cf51c009cd Mon Sep 17 00:00:00 2001 From: Daniel Wolf Date: Thu, 26 Apr 2018 10:14:29 +0200 Subject: [PATCH 4/5] Removed auto-generated (and wrong) copyright notice --- .../java/org/minidns/dnsserverlookup/IPPortPair.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java index 8751d74c..908a4fb8 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/IPPortPair.java @@ -12,15 +12,6 @@ import java.io.Serializable; -/** - * Copyright Daniel Wolf 2018 - * All rights reserved. - * Code may NOT be used without proper permission, neither in binary nor in source form. - * All redistributions of this software in source code must retain this copyright header - * All redistributions of this software in binary form must visibly inform users about usage of this software - *

- * development@frostnerd.com - */ public class IPPortPair implements Serializable { private static final long serialVersionUID = 7354713072355023750L; public static final int DEFAULT_PORT = 53; From bf8ffeaf1dae2d21dec1fb7379ec40078bcb31eb Mon Sep 17 00:00:00 2001 From: Daniel Wolf Date: Thu, 26 Apr 2018 10:23:22 +0200 Subject: [PATCH 5/5] Let getDnsServerAddresses() keep its original name --- .../dnsserverlookup/android21/AndroidUsingLinkProperties.java | 2 +- minidns-client/src/main/java/org/minidns/DNSClient.java | 2 +- .../dnsserverlookup/AbstractDNSServerLookupMechanism.java | 2 +- .../java/org/minidns/dnsserverlookup/AndroidUsingExec.java | 2 +- .../org/minidns/dnsserverlookup/AndroidUsingReflection.java | 2 +- .../org/minidns/dnsserverlookup/DNSServerLookupMechanism.java | 4 ++-- .../org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java | 2 +- minidns-client/src/test/java/org/minidns/DNSClientTest.java | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java b/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java index dd0da171..545aca72 100644 --- a/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java +++ b/minidns-android21/src/main/java/org/minidns/dnsserverlookup/android21/AndroidUsingLinkProperties.java @@ -45,7 +45,7 @@ public boolean isAvailable() { @Override @TargetApi(21) - public List getDnsServerAddressesWithPorts() { + public List getDnsServerAddresses() { Network[] networks = connectivityManager.getAllNetworks(); if (networks == null) { return null; diff --git a/minidns-client/src/main/java/org/minidns/DNSClient.java b/minidns-client/src/main/java/org/minidns/DNSClient.java index 7b0cf748..24b5b38f 100644 --- a/minidns-client/src/main/java/org/minidns/DNSClient.java +++ b/minidns-client/src/main/java/org/minidns/DNSClient.java @@ -272,7 +272,7 @@ public void processException(IOException exception) { public static List findDNS() { List res = null; for (DNSServerLookupMechanism mechanism : LOOKUP_MECHANISMS) { - res = mechanism.getDnsServerAddressesWithPorts(); + res = mechanism.getDnsServerAddresses(); if (res == null) { continue; } diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java index c392a66d..031831e3 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AbstractDNSServerLookupMechanism.java @@ -44,7 +44,7 @@ public final int compareTo(DNSServerLookupMechanism other) { } @Override - public abstract List getDnsServerAddressesWithPorts(); + public abstract List getDnsServerAddresses(); protected static List toListOfStrings(Collection inetAddresses) { List result = new ArrayList<>(inetAddresses.size()); diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java index 3605c221..14f55c1b 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingExec.java @@ -38,7 +38,7 @@ private AndroidUsingExec() { } @Override - public List getDnsServerAddressesWithPorts() { + public List getDnsServerAddresses() { try { Process process = Runtime.getRuntime().exec("getprop"); InputStream inputStream = process.getInputStream(); diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java index 0f76ea02..66bf5778 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/AndroidUsingReflection.java @@ -31,7 +31,7 @@ protected AndroidUsingReflection() { } @Override - public List getDnsServerAddressesWithPorts() { + public List getDnsServerAddresses() { try { Class SystemProperties = Class.forName("android.os.SystemProperties"); diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java index cc83536e..ebf3c9e6 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/DNSServerLookupMechanism.java @@ -27,8 +27,8 @@ public interface DNSServerLookupMechanism extends Comparable * - * @return a List of Strings presenting hopefully IP addresses. + * @return a List of IPPortPairs presenting hopefully IP addresses with their respective ports. */ - public List getDnsServerAddressesWithPorts(); + public List getDnsServerAddresses(); } diff --git a/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java b/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java index 022c809e..60605b94 100644 --- a/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java +++ b/minidns-client/src/main/java/org/minidns/dnsserverlookup/UnixUsingEtcResolvConf.java @@ -42,7 +42,7 @@ private UnixUsingEtcResolvConf() { } @Override - public List getDnsServerAddressesWithPorts() { + public List getDnsServerAddresses() { File file = new File(RESOLV_CONF_FILE); if (!file.exists()) { // Not very unixoid systems diff --git a/minidns-client/src/test/java/org/minidns/DNSClientTest.java b/minidns-client/src/test/java/org/minidns/DNSClientTest.java index c26453ec..f770df1f 100644 --- a/minidns-client/src/test/java/org/minidns/DNSClientTest.java +++ b/minidns-client/src/test/java/org/minidns/DNSClientTest.java @@ -68,7 +68,7 @@ public boolean isAvailable() { return true; } @Override - public List getDnsServerAddressesWithPorts() { + public List getDnsServerAddresses() { return null; } }