From ef8ae3e53de4876658171b7dc0658466027f4373 Mon Sep 17 00:00:00 2001 From: octopus_yan Date: Sun, 8 Sep 2024 01:39:19 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E8=8E=B7=E5=8F=96=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=E4=BB=A3=E7=90=86=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 8 +++ .../cn/octopusyan/alistgui/Application.java | 56 ++++++++++--------- .../alistgui/manager/http/HttpUtil.java | 18 +++++- src/main/java/module-info.java | 1 + 4 files changed, 55 insertions(+), 28 deletions(-) diff --git a/pom.xml b/pom.xml index 4612d77..2728439 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,14 @@ 2.0.1 + + + + + org.bidib.com.github.markusbernhardt + proxy-vole + 1.1.5 + diff --git a/src/main/java/cn/octopusyan/alistgui/Application.java b/src/main/java/cn/octopusyan/alistgui/Application.java index 86e88f2..53a0394 100644 --- a/src/main/java/cn/octopusyan/alistgui/Application.java +++ b/src/main/java/cn/octopusyan/alistgui/Application.java @@ -1,14 +1,14 @@ package cn.octopusyan.alistgui; import atlantafx.base.theme.PrimerLight; -import cn.octopusyan.alistgui.config.AppConstant; -import cn.octopusyan.alistgui.config.ConfigManager; +import cn.octopusyan.alistgui.config.Constants; import cn.octopusyan.alistgui.config.Context; 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.HttpUtil; 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.scene.Scene; import javafx.stage.Stage; @@ -20,6 +20,7 @@ import org.slf4j.LoggerFactory; import java.io.IOException; import java.net.InetSocketAddress; import java.net.ProxySelector; +import java.util.Objects; public class Application extends javafx.application.Application { private static final Logger logger = LoggerFactory.getLogger(Application.class); @@ -27,18 +28,39 @@ public class Application extends javafx.application.Application { private static Stage primaryStage; @Override - public void init() throws Exception { + public void init() { logger.info("application init ..."); // 初始化客户端配置 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 public void start(Stage primaryStage) throws IOException { - Application.primaryStage = primaryStage; logger.info("application start ..."); + Application.primaryStage = primaryStage; + // 初始化弹窗工具 AlertUtil.initOwner(primaryStage); @@ -46,24 +68,6 @@ public class Application extends javafx.application.Application { Thread.setDefaultUncaughtExceptionHandler(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 Context.setLanguage(ConfigManager.language()); @@ -71,10 +75,10 @@ public class Application extends javafx.application.Application { 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(); primaryStage.setScene(scene); - primaryStage.initStyle(StageStyle.TRANSPARENT); - primaryStage.setTitle(String.format("%s v%s", AppConstant.APP_TITLE, AppConstant.APP_VERSION)); primaryStage.show(); logger.info("application start over ..."); @@ -86,7 +90,7 @@ public class Application extends javafx.application.Application { } @Override - public void stop() throws Exception { + public void stop() { logger.info("application stop ..."); // 保存应用数据 ConfigManager.save(); diff --git a/src/main/java/cn/octopusyan/alistgui/manager/http/HttpUtil.java b/src/main/java/cn/octopusyan/alistgui/manager/http/HttpUtil.java index 89557bd..215c067 100644 --- a/src/main/java/cn/octopusyan/alistgui/manager/http/HttpUtil.java +++ b/src/main/java/cn/octopusyan/alistgui/manager/http/HttpUtil.java @@ -1,10 +1,11 @@ package cn.octopusyan.alistgui.manager.http; -import cn.octopusyan.alistgui.config.ConfigManager; import cn.octopusyan.alistgui.enums.ProxySetup; import cn.octopusyan.alistgui.model.ProxyInfo; import cn.octopusyan.alistgui.util.JsonUtil; 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.net.InetSocketAddress; @@ -28,6 +29,19 @@ public class HttpUtil { private volatile static HttpUtil util; private volatile HttpClient httpClient; 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) { this.httpConfig = httpConfig; @@ -69,7 +83,7 @@ public class HttpUtil { case NO_PROXY -> clearProxy(); case SYSTEM -> httpConfig.setProxySelector(ProxySelector.getDefault()); 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)); } } diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java index b6e3dd2..e2051d9 100644 --- a/src/main/java/module-info.java +++ b/src/main/java/module-info.java @@ -15,6 +15,7 @@ module cn.octopusyan.alistgui { requires com.fasterxml.jackson.databind; requires com.fasterxml.jackson.dataformat.yaml; requires atlantafx.base; + requires proxy.vole; exports cn.octopusyan.alistgui; opens cn.octopusyan.alistgui to javafx.fxml;