Support hosts

pull/586/head
FongMi 10 months ago
parent f2e2bf601c
commit d51b46ca4c
  1. 5
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  2. 5
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  3. 40
      catvod/src/main/java/com/github/catvod/net/OkDns.java
  4. 21
      catvod/src/main/java/com/github/catvod/net/OkHttp.java

@ -199,6 +199,7 @@ public class LiveConfig {
private void initOther(JsonObject object) {
if (home == null) setHome(lives.isEmpty() ? new Live() : lives.get(0), true);
setRules(Rule.arrayFrom(object.getAsJsonArray("rules")));
setHosts(Json.safeListString(object, "hosts"));
setAds(Json.safeListString(object, "ads"));
}
@ -268,6 +269,10 @@ public class LiveConfig {
this.rules = rules;
}
public void setHosts(List<String> hosts) {
OkHttp.dns().addAll(hosts);
}
public List<String> getAds() {
return ads == null ? Collections.emptyList() : ads;
}

@ -203,6 +203,7 @@ public class VodConfig {
setRules(Rule.arrayFrom(object.getAsJsonArray("rules")));
setDoh(Doh.arrayFrom(object.getAsJsonArray("doh")));
setFlags(Json.safeListString(object, "flags"));
setHosts(Json.safeListString(object, "hosts"));
setWall(Json.safeString(object, "wallpaper"));
setAds(Json.safeListString(object, "ads"));
}
@ -262,6 +263,10 @@ public class VodConfig {
this.flags.addAll(flags);
}
public void setHosts(List<String> hosts) {
OkHttp.dns().addAll(hosts);
}
public List<String> getAds() {
return ads == null ? Collections.emptyList() : ads;
}

@ -0,0 +1,40 @@
package com.github.catvod.net;
import androidx.annotation.NonNull;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.List;
import okhttp3.Dns;
public class OkDns implements Dns {
private final HashMap<String, String> map;
private Dns doh;
public OkDns() {
this.map = new HashMap<>();
}
public void setDoh(Dns doh) {
this.doh = doh;
}
public void addAll(List<String> hosts) {
for (String host : hosts) {
if (!host.contains("=")) continue;
String[] splits = host.split("=");
map.put(splits[0], splits[1]);
}
}
@NonNull
@Override
public List<InetAddress> lookup(@NonNull String hostname) throws UnknownHostException {
if (map.containsKey(hostname)) return Dns.SYSTEM.lookup(map.get(hostname));
return doh != null ? doh.lookup(hostname) : Dns.SYSTEM.lookup(hostname);
}
}

@ -23,7 +23,6 @@ import javax.net.ssl.X509TrustManager;
import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Dns;
import okhttp3.FormBody;
import okhttp3.Headers;
import okhttp3.HttpUrl;
@ -39,10 +38,11 @@ public class OkHttp {
private static final int CACHE = 100 * 1024 * 1024;
private static final ProxySelector defaultSelector;
private boolean proxy;
private DnsOverHttps dns;
private OkHttpClient client;
private OkProxySelector selector;
private OkHttpClient client;
private OkDns dns;
private boolean proxy;
static {
defaultSelector = ProxySelector.getDefault();
@ -56,16 +56,17 @@ public class OkHttp {
return Loader.INSTANCE;
}
public static Dns dns() {
return get().dns != null ? get().dns : Dns.SYSTEM;
}
public void setDoh(Doh doh) {
OkHttpClient dohClient = new OkHttpClient.Builder().cache(new Cache(Path.doh(), CACHE)).build();
dns = doh.getUrl().isEmpty() ? null : new DnsOverHttps.Builder().client(dohClient).url(HttpUrl.get(doh.getUrl())).bootstrapDnsHosts(doh.getHosts()).build();
OkHttpClient c = new OkHttpClient.Builder().cache(new Cache(Path.doh(), CACHE)).build();
dns().setDoh(doh.getUrl().isEmpty() ? null : new DnsOverHttps.Builder().client(c).url(HttpUrl.get(doh.getUrl())).bootstrapDnsHosts(doh.getHosts()).build());
client = null;
}
public static OkDns dns() {
if (get().dns != null) return get().dns;
return get().dns = new OkDns();
}
public void setProxy(String proxy) {
ProxySelector.setDefault(TextUtils.isEmpty(proxy) ? defaultSelector : selector());
if (!TextUtils.isEmpty(proxy)) selector().setProxy(proxy);

Loading…
Cancel
Save