New proxy setting - part 2

pull/142/head
FongMi 2 years ago
parent 3eef40a47a
commit 7118fe8b8b
  1. 2
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java
  2. 1
      app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java
  3. 18
      app/src/main/java/com/fongmi/android/tv/bean/Rule.java
  4. 2
      app/src/main/java/com/fongmi/android/tv/player/ExoUtil.java
  5. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java
  6. 4
      catvod/src/main/java/com/github/catvod/net/ProxySelector.java

@ -25,6 +25,7 @@ import com.fongmi.android.tv.impl.DohCallback;
import com.fongmi.android.tv.impl.LiveCallback;
import com.fongmi.android.tv.impl.ProxyCallback;
import com.fongmi.android.tv.impl.SiteCallback;
import com.fongmi.android.tv.player.ExoUtil;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.dialog.ConfigDialog;
import com.fongmi.android.tv.ui.custom.dialog.DohDialog;
@ -322,6 +323,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit
@Override
public void setProxy(String proxy) {
ExoUtil.reset();
Setting.putProxy(proxy);
OkHttp.get().setProxy(proxy);
Notify.progress(getActivity());

@ -284,6 +284,7 @@ public class ApiConfig {
public void setRules(List<Rule> rules) {
for (Rule rule : rules) if ("proxy".equals(rule.getName())) OkHttp.selector().setHosts(rule.getHosts());
rules.remove(Rule.create("proxy"));
this.rules = rules;
}

@ -2,6 +2,8 @@ package com.fongmi.android.tv.bean;
import android.text.TextUtils;
import androidx.annotation.Nullable;
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.annotations.SerializedName;
@ -20,6 +22,14 @@ public class Rule {
@SerializedName("regex")
private List<String> regex;
public static Rule create(String name) {
return new Rule(name);
}
public Rule(String name) {
this.name = name;
}
public static List<Rule> arrayFrom(JsonElement element) {
Type listType = new TypeToken<List<Rule>>() {}.getType();
List<Rule> items = new Gson().fromJson(element, listType);
@ -37,4 +47,12 @@ public class Rule {
public List<String> getRegex() {
return regex == null ? Collections.emptyList() : regex;
}
@Override
public boolean equals(@Nullable Object obj) {
if (this == obj) return true;
if (!(obj instanceof Rule)) return false;
Rule it = (Rule) obj;
return getName().equals(it.getName());
}
}

@ -170,7 +170,7 @@ public class ExoUtil {
}
private static synchronized HttpDataSource.Factory getHttpDataSourceFactory() {
if (httpDataSourceFactory == null) httpDataSourceFactory = Setting.getHttp() == 0 ? new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true) : new OkHttpDataSource.Factory((Call.Factory) OkHttp.client());
if (httpDataSourceFactory == null) httpDataSourceFactory = Setting.getHttp() == 0 ? new DefaultHttpDataSource.Factory().setAllowCrossProtocolRedirects(true).setProxy(OkHttp.selector().getProxy()) : new OkHttpDataSource.Factory((Call.Factory) OkHttp.client());
return httpDataSourceFactory;
}

@ -28,6 +28,7 @@ import com.fongmi.android.tv.impl.ConfigCallback;
import com.fongmi.android.tv.impl.LiveCallback;
import com.fongmi.android.tv.impl.ProxyCallback;
import com.fongmi.android.tv.impl.SiteCallback;
import com.fongmi.android.tv.player.ExoUtil;
import com.fongmi.android.tv.ui.activity.MainActivity;
import com.fongmi.android.tv.ui.base.BaseFragment;
import com.fongmi.android.tv.ui.custom.dialog.ConfigDialog;
@ -329,6 +330,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit
@Override
public void setProxy(String proxy) {
ExoUtil.reset();
Setting.putProxy(proxy);
OkHttp.get().setProxy(proxy);
Notify.progress(getActivity());

@ -25,6 +25,10 @@ public class ProxySelector extends java.net.ProxySelector {
this.proxy = getProxy(proxy);
}
public Proxy getProxy() {
return proxy;
}
@Override
public List<Proxy> select(URI uri) {
if (proxy == null || hosts == null || hosts.isEmpty() || uri.getHost() == null || "127.0.0.1".equals(uri.getHost())) return Collections.singletonList(Proxy.NO_PROXY);

Loading…
Cancel
Save