修正doh未生效的问题;

快进快退更激进;
main
于俊 11 months ago
parent d556a0ab87
commit 376214f6c0
  1. 3
      app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java
  2. 4
      app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java
  3. 31
      app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java

@ -611,7 +611,10 @@ public class ApiConfig {
if (infoJson.has("doh")) {
String doh_json = infoJson.getAsJsonArray("doh").toString();
if(!Hawk.get(HawkConfig.DOH_JSON, "").equals(doh_json)){
Hawk.put(HawkConfig.DOH_URL, 0);
Hawk.put(HawkConfig.DOH_JSON,doh_json);
}
}else {
Hawk.put(HawkConfig.DOH_JSON,"");
}

@ -880,8 +880,8 @@ public class VodController extends BaseController {
long currentTime = System.currentTimeMillis();
final int baseSkip = 10000; // 基础跳转10秒
final float accelerationFactor = 1.5f; // 连续操作时的加速因子
final long threshold = 500; // 操作间隔阈值500ms
final float accelerationFactor = 2.0f; // 连续操作时的加速因子
final long threshold = 800; // 操作间隔阈值500ms
if (!simSlideStart) {
simSlideStart = true;

@ -82,7 +82,7 @@ public class OkGoHelper {
}
// builder.dns(dnsOverHttps);
builder.dns(new CustomDns());
builder.dns(new CustomDns(dnsOverHttps));
ItvClient=builder.build();
ExoMediaSourceHelper.getInstance(App.getInstance()).setOkClient(ItvClient);
@ -149,7 +149,7 @@ public class OkGoHelper {
JsonObject dnsConfig = jsonArray.get(i).getAsJsonObject();
String name = dnsConfig.has("name") ? dnsConfig.get("name").getAsString() : "Unknown Name";
dnsHttpsList.add(name);
if(dohSelector==i)ips = dnsConfig.has("ips") ? dnsConfig.getAsJsonArray("ips") : null;
if(dohSelector==(i+1))ips = dnsConfig.has("ips") ? dnsConfig.getAsJsonArray("ips") : null;
}
} catch (Exception e) {
e.printStackTrace();
@ -173,27 +173,22 @@ public class OkGoHelper {
builder.cache(new Cache(new File(App.getInstance().getCacheDir().getAbsolutePath(), "dohcache"), 100 * 1024 * 1024));
OkHttpClient dohClient = builder.build();
String dohUrl = getDohUrl(Hawk.get(HawkConfig.DOH_URL, 0));
if (!dohUrl.isEmpty()) is_doh = true;
// dnsOverHttps = new DnsOverHttps.Builder()
// .client(dohClient)
// .url(dohUrl.isEmpty() ? null : HttpUrl.get(dohUrl))
// .build();
DnsOverHttps.Builder dnsBuilder = new DnsOverHttps.Builder();
dnsBuilder.client(dohClient);
dnsBuilder.url(dohUrl.isEmpty() ? null : HttpUrl.get(dohUrl));
if (is_doh && ips!=null){
List<InetAddress> IPS=DohIps(ips);
dnsOverHttps = dnsBuilder.bootstrapDnsHosts(IPS).build();
}else {
dnsOverHttps = dnsBuilder.build();
}
// if (!dohUrl.isEmpty()) is_doh = true;
// LOG.i("echo-initDnsOverHttps dohUrl:"+dohUrl);
// LOG.i("echo-initDnsOverHttps ips:"+ips);
dnsOverHttps = new DnsOverHttps.Builder().client(dohClient).url(dohUrl.isEmpty() ? null : HttpUrl.get(dohUrl)).bootstrapDnsHosts(ips!=null?DohIps(ips):null).build();
}
// 自定义 DNS 解析器
static class CustomDns implements Dns {
private ConcurrentHashMap<String, List<InetAddress>> map;
private final String excludeIps = "2409:8087:6c02:14:100::14,2409:8087:6c02:14:100::18,39.134.108.253,39.134.108.245";
private final DnsOverHttps mDnsOverHttps;
// 接收外部注入的 DoH 实例
public CustomDns(DnsOverHttps dnsOverHttps) {
this.mDnsOverHttps = dnsOverHttps;
}
@NonNull
@Override
public List<InetAddress> lookup(@NonNull String hostname) throws UnknownHostException {
@ -208,7 +203,7 @@ public class OkGoHelper {
return Collections.singletonList(InetAddress.getByName(hostname));
}
else {
return dnsOverHttps.lookup(hostname);
return mDnsOverHttps.lookup(hostname);
}
}

Loading…
Cancel
Save