Refactoring

pull/214/head
M66B 1 year ago
parent 15986650a7
commit 98bd662201

@ -277,6 +277,7 @@ public class ApplicationEx extends Application
ContactInfo.init(this);
DnsHelper.init(this);
DisconnectBlacklist.init(this);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) {

@ -92,6 +92,23 @@ public class DnsHelper {
private static final int CHECK_TIMEOUT = 5; // seconds
private static final int LOOKUP_TIMEOUT = 15; // seconds
static void init(Context context) {
DnsClient.addDnsServerLookupMechanism(
new AbstractDnsServerLookupMechanism("FairEmail", 1) {
@Override
public boolean isAvailable() {
return true;
}
@Override
public List<String> getDnsServerAddresses() {
List<String> servers = getDnsServers(context);
Log.i("DNS servers=" + TextUtils.join(",", servers));
return servers;
}
});
}
static void checkMx(Context context, Address[] addresses) throws UnknownHostException {
if (addresses == null)
return;
@ -176,22 +193,6 @@ public class DnsHelper {
client.getDataSource().setTimeout(timeout * 1000);
List<String> servers = getDnsServers(context);
Log.i("DNS servers=" + TextUtils.join(",", servers));
DnsClient.addDnsServerLookupMechanism(
new AbstractDnsServerLookupMechanism("FairEmail", 1) {
@Override
public boolean isAvailable() {
return (servers.size() > 0);
}
@Override
public List<String> getDnsServerAddresses() {
return servers;
}
});
// https://github.com/MiniDNS/minidns/issues/102
if (client instanceof DnssecClient && dns_custom)
((DnssecClient) client).setUseHardcodedDnsServers(false);
@ -364,7 +365,7 @@ public class DnsHelper {
}
private static List<String> getDnsServers(Context context) {
List<String> result = new ArrayList<>();
List<String> result = new ArrayList<>(_getDnsServers(context));
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
String dns_extra = prefs.getString("dns_extra", null);
@ -377,30 +378,33 @@ public class DnsHelper {
Log.w("DNS extra invalid=" + extra);
}
result.addAll(_getDnsServers(context));
result.add(DEFAULT_DNS);
return result;
}
private static List<String> _getDnsServers(Context context) {
List<String> result = new ArrayList<>();
result.add(DEFAULT_DNS);
ConnectivityManager cm = Helper.getSystemService(context, ConnectivityManager.class);
if (cm == null)
return result;
try {
ConnectivityManager cm = Helper.getSystemService(context, ConnectivityManager.class);
if (cm == null)
return result;
Network active = ConnectionHelper.getActiveNetwork(context);
if (active == null)
return result;
Network active = ConnectionHelper.getActiveNetwork(context);
if (active == null)
return result;
LinkProperties props = cm.getLinkProperties(active);
if (props == null)
return result;
LinkProperties props = cm.getLinkProperties(active);
if (props == null)
return result;
List<InetAddress> dns = props.getDnsServers();
for (int i = 0; i < dns.size(); i++)
result.add(i, dns.get(i).getHostAddress());
List<InetAddress> dns = props.getDnsServers();
for (int i = 0; i < dns.size(); i++)
result.add(dns.get(i).getHostAddress());
} catch (Throwable ex) {
Log.e(ex);
}
return result;
}

Loading…
Cancel
Save