Try alidns for CN users (#272)
* Add okHttp log * Try alidns for CN users
This commit is contained in:
parent
e033350982
commit
5b6221e04d
|
|
@ -157,6 +157,7 @@ dependencies {
|
|||
implementation("com.takisoft.preferencex:preferencex-colorpicker:1.1.0")
|
||||
implementation("com.squareup.okhttp3:okhttp:$okhttpVersion")
|
||||
implementation("com.squareup.okhttp3:okhttp-dnsoverhttps:$okhttpVersion")
|
||||
implementation("com.squareup.okhttp3:logging-interceptor:$okhttpVersion")
|
||||
implementation("dev.rikka.rikkax.appcompat:appcompat:1.2.0-rc01")
|
||||
implementation("dev.rikka.rikkax.core:core:1.3.0")
|
||||
implementation("dev.rikka.rikkax.insets:insets:1.0.1")
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import android.content.Intent;
|
|||
import android.content.SharedPreferences;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.preference.PreferenceManager;
|
||||
|
|
@ -41,6 +42,7 @@ import io.github.lsposed.manager.util.DoHDNS;
|
|||
import io.github.lsposed.manager.util.theme.ThemeUtil;
|
||||
import okhttp3.Cache;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.logging.HttpLoggingInterceptor;
|
||||
import rikka.material.app.DayNightDelegate;
|
||||
|
||||
public class App extends Application {
|
||||
|
|
@ -107,10 +109,12 @@ public class App extends Application {
|
|||
@NonNull
|
||||
public static OkHttpClient getOkHttpClient() {
|
||||
if (okHttpClient == null) {
|
||||
okHttpClient = new OkHttpClient.Builder()
|
||||
.cache(getOkHttpCache())
|
||||
.dns(new DoHDNS())
|
||||
.build();
|
||||
OkHttpClient.Builder builder = new OkHttpClient.Builder().cache(getOkHttpCache());
|
||||
HttpLoggingInterceptor.Logger logger = s -> Log.v(TAG, s);
|
||||
HttpLoggingInterceptor log = new HttpLoggingInterceptor(logger);
|
||||
log.setLevel(HttpLoggingInterceptor.Level.HEADERS);
|
||||
if (BuildConfig.DEBUG) builder.addInterceptor(log);
|
||||
okHttpClient = builder.dns(new DoHDNS(builder.build())).build();
|
||||
}
|
||||
return okHttpClient;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import androidx.annotation.NonNull;
|
|||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import io.github.lsposed.manager.App;
|
||||
import okhttp3.Dns;
|
||||
|
|
@ -34,41 +35,35 @@ import okhttp3.dnsoverhttps.DnsOverHttps;
|
|||
|
||||
public class DoHDNS implements Dns {
|
||||
|
||||
private static DnsOverHttps dnsOverHttps;
|
||||
private static DnsOverHttps cloudflare;
|
||||
private static DnsOverHttps alidns;
|
||||
|
||||
public DoHDNS() {
|
||||
DnsOverHttps.Builder builder = new DnsOverHttps.Builder()
|
||||
public DoHDNS(OkHttpClient client) {
|
||||
cloudflare = new DnsOverHttps.Builder()
|
||||
.resolvePrivateAddresses(true)
|
||||
.resolvePublicAddresses(true)
|
||||
.client(new OkHttpClient.Builder().build())
|
||||
.url(HttpUrl.get("https://cloudflare-dns.com/dns-query"));
|
||||
try {
|
||||
builder.bootstrapDnsHosts(
|
||||
InetAddress.getByName("104.16.248.249"),
|
||||
InetAddress.getByName("104.16.249.249"),
|
||||
InetAddress.getByName("104.16.111.25"),
|
||||
InetAddress.getByName("104.16.112.25"),
|
||||
InetAddress.getByName("162.159.36.1"),
|
||||
InetAddress.getByName("162.159.46.1"),
|
||||
InetAddress.getByName("1.1.1.1"),
|
||||
InetAddress.getByName("1.0.0.1"),
|
||||
InetAddress.getByName("2606:4700:4700::1111"),
|
||||
InetAddress.getByName("2606:4700:4700::1001"),
|
||||
InetAddress.getByName("2606:4700:4700::0064"),
|
||||
InetAddress.getByName("2606:4700:4700::6400"));
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
dnsOverHttps = builder.post(true).build();
|
||||
.client(client)
|
||||
.url(HttpUrl.get("https://cloudflare-dns.com/dns-query"))
|
||||
.build();
|
||||
|
||||
alidns = new DnsOverHttps.Builder()
|
||||
.resolvePrivateAddresses(true)
|
||||
.client(client)
|
||||
.url(HttpUrl.get("https://dns.alidns.com/dns-query"))
|
||||
.build();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public List<InetAddress> lookup(@NonNull String hostname) throws UnknownHostException {
|
||||
if (App.getPreferences().getBoolean("doh", false)) {
|
||||
List<InetAddress> inetAddresses = dnsOverHttps.lookup(hostname);
|
||||
List<InetAddress> inetAddresses = cloudflare.lookup(hostname);
|
||||
if (inetAddresses.size() > 0) {
|
||||
return inetAddresses;
|
||||
} else if ("CN".equals(Locale.getDefault().getCountry())) {
|
||||
inetAddresses = alidns.lookup(hostname);
|
||||
if (inetAddresses.size() > 0) {
|
||||
return inetAddresses;
|
||||
}
|
||||
}
|
||||
}
|
||||
return SYSTEM.lookup(hostname);
|
||||
|
|
|
|||
Loading…
Reference in New Issue