mirror of
https://github.com/octopusYan/alist-gui.git
synced 2024-11-25 13:26:42 +08:00
pref: 获取平台网络代理配置
This commit is contained in:
parent
e00a742fff
commit
ef8ae3e53d
8
pom.xml
8
pom.xml
@ -56,6 +56,14 @@
|
|||||||
<version>2.0.1</version>
|
<version>2.0.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- java 网络代理查找库-->
|
||||||
|
<!-- https://github.com/MarkusBernhardt/proxy-vole -->
|
||||||
|
<!-- https://mvnrepository.com/artifact/org.bidib.com.github.markusbernhardt/proxy-vole -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bidib.com.github.markusbernhardt</groupId>
|
||||||
|
<artifactId>proxy-vole</artifactId>
|
||||||
|
<version>1.1.5</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- slf4j -->
|
<!-- slf4j -->
|
||||||
<!-- https://slf4j.org/manual.html -->
|
<!-- https://slf4j.org/manual.html -->
|
||||||
|
@ -1,14 +1,14 @@
|
|||||||
package cn.octopusyan.alistgui;
|
package cn.octopusyan.alistgui;
|
||||||
|
|
||||||
import atlantafx.base.theme.PrimerLight;
|
import atlantafx.base.theme.PrimerLight;
|
||||||
import cn.octopusyan.alistgui.config.AppConstant;
|
import cn.octopusyan.alistgui.config.Constants;
|
||||||
import cn.octopusyan.alistgui.config.ConfigManager;
|
|
||||||
import cn.octopusyan.alistgui.config.Context;
|
import cn.octopusyan.alistgui.config.Context;
|
||||||
import cn.octopusyan.alistgui.enums.ProxySetup;
|
import cn.octopusyan.alistgui.enums.ProxySetup;
|
||||||
|
import cn.octopusyan.alistgui.manager.ConfigManager;
|
||||||
import cn.octopusyan.alistgui.manager.http.HttpConfig;
|
import cn.octopusyan.alistgui.manager.http.HttpConfig;
|
||||||
import cn.octopusyan.alistgui.manager.http.HttpUtil;
|
import cn.octopusyan.alistgui.manager.http.HttpUtil;
|
||||||
import cn.octopusyan.alistgui.manager.thread.ThreadPoolManager;
|
import cn.octopusyan.alistgui.manager.thread.ThreadPoolManager;
|
||||||
import cn.octopusyan.alistgui.util.AlertUtil;
|
import cn.octopusyan.alistgui.util.alert.AlertUtil;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.net.ProxySelector;
|
import java.net.ProxySelector;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
public class Application extends javafx.application.Application {
|
public class Application extends javafx.application.Application {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(Application.class);
|
private static final Logger logger = LoggerFactory.getLogger(Application.class);
|
||||||
@ -27,18 +28,39 @@ public class Application extends javafx.application.Application {
|
|||||||
private static Stage primaryStage;
|
private static Stage primaryStage;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() throws Exception {
|
public void init() {
|
||||||
logger.info("application init ...");
|
logger.info("application init ...");
|
||||||
// 初始化客户端配置
|
// 初始化客户端配置
|
||||||
ConfigManager.load();
|
ConfigManager.load();
|
||||||
|
|
||||||
|
// http请求工具初始化
|
||||||
|
HttpConfig httpConfig = new HttpConfig();
|
||||||
|
// 加载代理设置
|
||||||
|
if (!ProxySetup.NO_PROXY.equals(ConfigManager.proxySetup())) {
|
||||||
|
// 系统代理
|
||||||
|
if (ProxySetup.SYSTEM.equals(ConfigManager.proxySetup())) {
|
||||||
|
httpConfig.setProxySelector(ProxySelector.getDefault());
|
||||||
|
}
|
||||||
|
// 自定义代理
|
||||||
|
if (ProxySetup.MANUAL.equals(ConfigManager.proxySetup()) && ConfigManager.hasProxy()) {
|
||||||
|
InetSocketAddress unresolved = InetSocketAddress.createUnresolved(
|
||||||
|
Objects.requireNonNull(ConfigManager.proxyHost()),
|
||||||
|
ConfigManager.getProxyPort()
|
||||||
|
);
|
||||||
|
httpConfig.setProxySelector(ProxySelector.of(unresolved));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
httpConfig.setConnectTimeout(10);
|
||||||
|
HttpUtil.init(httpConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void start(Stage primaryStage) throws IOException {
|
public void start(Stage primaryStage) throws IOException {
|
||||||
Application.primaryStage = primaryStage;
|
|
||||||
|
|
||||||
logger.info("application start ...");
|
logger.info("application start ...");
|
||||||
|
|
||||||
|
Application.primaryStage = primaryStage;
|
||||||
|
|
||||||
// 初始化弹窗工具
|
// 初始化弹窗工具
|
||||||
AlertUtil.initOwner(primaryStage);
|
AlertUtil.initOwner(primaryStage);
|
||||||
|
|
||||||
@ -46,24 +68,6 @@ public class Application extends javafx.application.Application {
|
|||||||
Thread.setDefaultUncaughtExceptionHandler(this::showErrorDialog);
|
Thread.setDefaultUncaughtExceptionHandler(this::showErrorDialog);
|
||||||
Thread.currentThread().setUncaughtExceptionHandler(this::showErrorDialog);
|
Thread.currentThread().setUncaughtExceptionHandler(this::showErrorDialog);
|
||||||
|
|
||||||
// http请求工具初始化
|
|
||||||
HttpConfig httpConfig = new HttpConfig();
|
|
||||||
|
|
||||||
if(!ProxySetup.NO_PROXY.equals(ConfigManager.proxySetup())) {
|
|
||||||
// 系统代理
|
|
||||||
if (ProxySetup.SYSTEM.equals(ConfigManager.proxySetup())) {
|
|
||||||
httpConfig.setProxySelector(ProxySelector.getDefault());
|
|
||||||
}
|
|
||||||
// 自定义代理
|
|
||||||
if (ProxySetup.MANUAL.equals(ConfigManager.proxySetup()) && ConfigManager.hasProxy()) {
|
|
||||||
InetSocketAddress unresolved = InetSocketAddress.createUnresolved(ConfigManager.proxyHost(), ConfigManager.getProxyPort());
|
|
||||||
httpConfig.setProxySelector(ProxySelector.of(unresolved));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
httpConfig.setConnectTimeout(10);
|
|
||||||
HttpUtil.init(httpConfig);
|
|
||||||
|
|
||||||
// i18n
|
// i18n
|
||||||
Context.setLanguage(ConfigManager.language());
|
Context.setLanguage(ConfigManager.language());
|
||||||
|
|
||||||
@ -71,10 +75,10 @@ public class Application extends javafx.application.Application {
|
|||||||
Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet());
|
Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet());
|
||||||
|
|
||||||
// 启动主界面
|
// 启动主界面
|
||||||
|
primaryStage.initStyle(StageStyle.TRANSPARENT);
|
||||||
|
primaryStage.setTitle(String.format("%s v%s", Constants.APP_TITLE, Constants.APP_VERSION));
|
||||||
Scene scene = Context.initScene();
|
Scene scene = Context.initScene();
|
||||||
primaryStage.setScene(scene);
|
primaryStage.setScene(scene);
|
||||||
primaryStage.initStyle(StageStyle.TRANSPARENT);
|
|
||||||
primaryStage.setTitle(String.format("%s v%s", AppConstant.APP_TITLE, AppConstant.APP_VERSION));
|
|
||||||
primaryStage.show();
|
primaryStage.show();
|
||||||
|
|
||||||
logger.info("application start over ...");
|
logger.info("application start over ...");
|
||||||
@ -86,7 +90,7 @@ public class Application extends javafx.application.Application {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stop() throws Exception {
|
public void stop() {
|
||||||
logger.info("application stop ...");
|
logger.info("application stop ...");
|
||||||
// 保存应用数据
|
// 保存应用数据
|
||||||
ConfigManager.save();
|
ConfigManager.save();
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package cn.octopusyan.alistgui.manager.http;
|
package cn.octopusyan.alistgui.manager.http;
|
||||||
|
|
||||||
import cn.octopusyan.alistgui.config.ConfigManager;
|
|
||||||
import cn.octopusyan.alistgui.enums.ProxySetup;
|
import cn.octopusyan.alistgui.enums.ProxySetup;
|
||||||
import cn.octopusyan.alistgui.model.ProxyInfo;
|
import cn.octopusyan.alistgui.model.ProxyInfo;
|
||||||
import cn.octopusyan.alistgui.util.JsonUtil;
|
import cn.octopusyan.alistgui.util.JsonUtil;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.github.markusbernhardt.proxy.ProxySearch;
|
||||||
|
import com.github.markusbernhardt.proxy.selector.misc.BufferedProxySelector;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
@ -28,6 +29,19 @@ public class HttpUtil {
|
|||||||
private volatile static HttpUtil util;
|
private volatile static HttpUtil util;
|
||||||
private volatile HttpClient httpClient;
|
private volatile HttpClient httpClient;
|
||||||
private final HttpConfig httpConfig;
|
private final HttpConfig httpConfig;
|
||||||
|
public static final ProxySearch proxySearch = ProxySearch.getDefaultProxySearch();
|
||||||
|
|
||||||
|
static {
|
||||||
|
proxySearch.addStrategy(ProxySearch.Strategy.WIN);
|
||||||
|
proxySearch.addStrategy(ProxySearch.Strategy.OS_DEFAULT);
|
||||||
|
proxySearch.addStrategy(ProxySearch.Strategy.IE);
|
||||||
|
proxySearch.addStrategy(ProxySearch.Strategy.FIREFOX);
|
||||||
|
proxySearch.addStrategy(ProxySearch.Strategy.JAVA);
|
||||||
|
// PAC 代理查询
|
||||||
|
proxySearch.setPacCacheSettings(20, 1000 * 60 * 10, BufferedProxySelector.CacheScope.CACHE_SCOPE_HOST);
|
||||||
|
// 设置系统默认代理
|
||||||
|
ProxySelector.setDefault(proxySearch.getProxySelector());
|
||||||
|
}
|
||||||
|
|
||||||
private HttpUtil(HttpConfig httpConfig) {
|
private HttpUtil(HttpConfig httpConfig) {
|
||||||
this.httpConfig = httpConfig;
|
this.httpConfig = httpConfig;
|
||||||
@ -69,7 +83,7 @@ public class HttpUtil {
|
|||||||
case NO_PROXY -> clearProxy();
|
case NO_PROXY -> clearProxy();
|
||||||
case SYSTEM -> httpConfig.setProxySelector(ProxySelector.getDefault());
|
case SYSTEM -> httpConfig.setProxySelector(ProxySelector.getDefault());
|
||||||
case MANUAL -> {
|
case MANUAL -> {
|
||||||
InetSocketAddress unresolved = InetSocketAddress.createUnresolved(ConfigManager.proxyHost(), ConfigManager.getProxyPort());
|
InetSocketAddress unresolved = InetSocketAddress.createUnresolved(proxy.getHost(), Integer.parseInt(proxy.getPort()));
|
||||||
httpConfig.setProxySelector(ProxySelector.of(unresolved));
|
httpConfig.setProxySelector(ProxySelector.of(unresolved));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ module cn.octopusyan.alistgui {
|
|||||||
requires com.fasterxml.jackson.databind;
|
requires com.fasterxml.jackson.databind;
|
||||||
requires com.fasterxml.jackson.dataformat.yaml;
|
requires com.fasterxml.jackson.dataformat.yaml;
|
||||||
requires atlantafx.base;
|
requires atlantafx.base;
|
||||||
|
requires proxy.vole;
|
||||||
|
|
||||||
exports cn.octopusyan.alistgui;
|
exports cn.octopusyan.alistgui;
|
||||||
opens cn.octopusyan.alistgui to javafx.fxml;
|
opens cn.octopusyan.alistgui to javafx.fxml;
|
||||||
|
Loading…
Reference in New Issue
Block a user