From 376214f6c0e49c2475cd17e5d80b4cc2155833ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=8E=E4=BF=8A?= <215613905@qq.com> Date: Sun, 27 Apr 2025 10:56:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3doh=E6=9C=AA=E7=94=9F?= =?UTF-8?q?=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98;=20=E5=BF=AB=E8=BF=9B?= =?UTF-8?q?=E5=BF=AB=E9=80=80=E6=9B=B4=E6=BF=80=E8=BF=9B;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/github/tvbox/osc/api/ApiConfig.java | 5 ++- .../osc/player/controller/VodController.java | 4 +-- .../com/github/tvbox/osc/util/OkGoHelper.java | 31 ++++++++----------- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java index b4258d9a..cedd493d 100644 --- a/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java +++ b/app/src/main/java/com/github/tvbox/osc/api/ApiConfig.java @@ -611,7 +611,10 @@ public class ApiConfig { if (infoJson.has("doh")) { String doh_json = infoJson.getAsJsonArray("doh").toString(); - Hawk.put(HawkConfig.DOH_JSON,doh_json); + 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,""); } diff --git a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java index 2d656bfb..e54d2207 100644 --- a/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java +++ b/app/src/main/java/com/github/tvbox/osc/player/controller/VodController.java @@ -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; diff --git a/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java b/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java index f5508ee4..44912cce 100644 --- a/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java +++ b/app/src/main/java/com/github/tvbox/osc/util/OkGoHelper.java @@ -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 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> 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 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); } }