Update proxy

pull/586/head
FongMi 12 months ago
parent d51b46ca4c
commit 134792c899
  1. 12
      README.md
  2. 7
      app/src/main/java/com/fongmi/android/tv/api/config/LiveConfig.java
  3. 7
      app/src/main/java/com/fongmi/android/tv/api/config/VodConfig.java
  4. 16
      app/src/main/java/com/fongmi/android/tv/utils/Sniffer.java

@ -146,13 +146,17 @@ scheme 支持 http, https, socks4, socks5
scheme://username:password@host:port
```
配置 rules 新增 proxy 判斷 host 是否走代理
配置新增 proxy 判斷域名是否走代理
全局只需要加上一條規則 ".*."
```json
{
"name": "proxy",
"hosts": [
"api.nivodz.com"
"spider": "",
"proxy": [
[
"raw.githubusercontent.com",
"googlevideo.com"
]
]
}
```

@ -200,6 +200,7 @@ public class LiveConfig {
if (home == null) setHome(lives.isEmpty() ? new Live() : lives.get(0), true);
setRules(Rule.arrayFrom(object.getAsJsonArray("rules")));
setHosts(Json.safeListString(object, "hosts"));
setProxy(Json.safeListString(object, "proxy"));
setAds(Json.safeListString(object, "ads"));
}
@ -264,8 +265,6 @@ public class LiveConfig {
}
public void setRules(List<Rule> rules) {
for (Rule rule : rules) if ("proxy".equals(rule.getName())) OkHttp.selector().addAll(rule.getHosts());
rules.remove(Rule.create("proxy"));
this.rules = rules;
}
@ -273,6 +272,10 @@ public class LiveConfig {
OkHttp.dns().addAll(hosts);
}
public void setProxy(List<String> hosts) {
OkHttp.selector().addAll(hosts);
}
public List<String> getAds() {
return ads == null ? Collections.emptyList() : ads;
}

@ -204,6 +204,7 @@ public class VodConfig {
setDoh(Doh.arrayFrom(object.getAsJsonArray("doh")));
setFlags(Json.safeListString(object, "flags"));
setHosts(Json.safeListString(object, "hosts"));
setProxy(Json.safeListString(object, "proxy"));
setWall(Json.safeString(object, "wallpaper"));
setAds(Json.safeListString(object, "ads"));
}
@ -229,8 +230,6 @@ public class VodConfig {
}
public void setRules(List<Rule> rules) {
for (Rule rule : rules) if ("proxy".equals(rule.getName())) OkHttp.selector().addAll(rule.getHosts());
rules.remove(Rule.create("proxy"));
this.rules = rules;
}
@ -267,6 +266,10 @@ public class VodConfig {
OkHttp.dns().addAll(hosts);
}
public void setProxy(List<String> hosts) {
OkHttp.selector().addAll(hosts);
}
public List<String> getAds() {
return ads == null ? Collections.emptyList() : ads;
}

@ -37,14 +37,6 @@ public class Sniffer {
return SNIFFER.matcher(url).find();
}
public static Rule getRule(Uri uri) {
if (uri.getHost() == null) return Rule.empty();
String hosts = TextUtils.join(",", Arrays.asList(UrlUtil.host(uri), UrlUtil.host(uri.getQueryParameter("url"))));
for (Rule rule : VodConfig.get().getRules()) for (String host : rule.getHosts()) if (Util.containOrMatch(hosts, host)) return rule;
for (Rule rule : LiveConfig.get().getRules()) for (String host : rule.getHosts()) if (Util.containOrMatch(hosts, host)) return rule;
return Rule.empty();
}
public static List<String> getRegex(Uri uri) {
return getRule(uri).getRegex();
}
@ -52,4 +44,12 @@ public class Sniffer {
public static List<String> getScript(Uri uri) {
return getRule(uri).getScript();
}
private static Rule getRule(Uri uri) {
if (uri.getHost() == null) return Rule.empty();
String hosts = TextUtils.join(",", Arrays.asList(UrlUtil.host(uri), UrlUtil.host(uri.getQueryParameter("url"))));
for (Rule rule : VodConfig.get().getRules()) for (String host : rule.getHosts()) if (Util.containOrMatch(hosts, host)) return rule;
for (Rule rule : LiveConfig.get().getRules()) for (String host : rule.getHosts()) if (Util.containOrMatch(hosts, host)) return rule;
return Rule.empty();
}
}

Loading…
Cancel
Save