Skip to content

Commit 1785495

Browse files
KingPrimesKingPrimes
KingPrimes
authored and
KingPrimes
committed
refactor(proxy): 重构代理配置和使用
- 移除 SpringValues 中的冗余代理配置字段,仅保留一个 url 字段 - 将代理选择器的创建逻辑移至 ProxyUtils 类中 - 更新 HttpUtils 和 JgitUtil 类,使用新的代理选择器方法 - 修改测试配置,移除具体的代理主机和端口设置
1 parent 8961046 commit 1785495

File tree

6 files changed

+39
-51
lines changed

6 files changed

+39
-51
lines changed

src/main/java/com/nyx/bot/core/SpringValues.java

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,8 @@
77
@Component
88
@Profile("dev")
99
public class SpringValues {
10-
11-
/**
12-
* 设置代理地址,如果未设置则用空值填入,默认为空,仅用于测试
13-
*/
14-
@Value("${spring.sendgrid.proxy.host:}")
15-
public String proxyHost;
16-
17-
/**
18-
* 设置代理地址端口,如果未设置则用空值填入,默认为空,仅用于测试
19-
*/
20-
@Value("${spring.sendgrid.proxy.port:}")
21-
public String proxyPort;
22-
23-
@Value("${spring.sendgrid.proxy.proxy:}")
24-
public String proxy;
10+
@Value("${spring.sendgrid.proxy.url:}")
11+
public String url;
2512

2613

2714
}

src/main/java/com/nyx/bot/utils/gitutils/JgitUtil.java

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@
1919

2020
import java.io.File;
2121
import java.io.IOException;
22-
import java.net.*;
22+
import java.net.ProxySelector;
23+
import java.net.URISyntaxException;
2324
import java.nio.file.Paths;
2425
import java.time.Duration;
2526
import java.time.Instant;
@@ -49,34 +50,11 @@ public JgitUtil(String urlPath, String localPath, CredentialsProvider provider)
4950
}
5051

5152
private static void configureGitProxy() {
52-
ProxySelector defaultSelector = getProxySelector();
53-
53+
ProxySelector defaultSelector = ProxyUtils.getProxySelector();
5454
ProxySelector.setDefault(defaultSelector);
5555
}
5656

5757
@NotNull
58-
private static ProxySelector getProxySelector() {
59-
Proxy effectiveProxy = ProxyUtils.getEffectiveProxyForUrl();
60-
61-
return new ProxySelector() {
62-
@Override
63-
public List<Proxy> select(URI uri) {
64-
if (uri == null) return List.of(Proxy.NO_PROXY);
65-
66-
String host = uri.getHost();
67-
if (ProxyUtils.shouldBypassProxy(host)) return List.of(Proxy.NO_PROXY);
68-
69-
return List.of(effectiveProxy != null ? effectiveProxy : Proxy.NO_PROXY);
70-
}
71-
72-
@Override
73-
public void connectFailed(URI uri, SocketAddress address, IOException ex) {
74-
log.error("Proxy connection failed: {}", uri, ex);
75-
}
76-
};
77-
}
78-
79-
8058

8159

8260
/**

src/main/java/com/nyx/bot/utils/http/HttpUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void checkServerTrusted(X509Certificate[] chain, String authType, SSLEngi
7676

7777
client = new OkHttpClient().newBuilder()
7878
.addInterceptor(BrotliInterceptor.INSTANCE)
79-
.proxy(ProxyUtils.getEffectiveProxyForUrl())
79+
.proxySelector(ProxyUtils.getProxySelector())
8080
//调用超时
8181
.callTimeout(60, TimeUnit.SECONDS)
8282
//链接超时

src/main/java/com/nyx/bot/utils/http/ProxyUtils.java

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
import lombok.extern.slf4j.Slf4j;
77

88
import java.io.BufferedReader;
9+
import java.io.IOException;
910
import java.io.InputStreamReader;
10-
import java.net.InetSocketAddress;
11-
import java.net.Proxy;
12-
import java.net.URI;
11+
import java.net.*;
1312
import java.util.HashSet;
13+
import java.util.List;
1414
import java.util.Set;
1515

1616
@Slf4j
@@ -40,6 +40,26 @@ public static Proxy getEffectiveProxyForUrl() {
4040
return Proxy.NO_PROXY;
4141
}
4242

43+
public static ProxySelector getProxySelector() {
44+
return new ProxySelector() {
45+
@Override
46+
public List<Proxy> select(URI uri) {
47+
Proxy effectiveProxy = ProxyUtils.getEffectiveProxyForUrl();
48+
if (uri == null) return List.of(Proxy.NO_PROXY);
49+
50+
String host = uri.getHost();
51+
if (ProxyUtils.shouldBypassProxy(host)) return List.of(Proxy.NO_PROXY);
52+
53+
return List.of(effectiveProxy != null ? effectiveProxy : Proxy.NO_PROXY);
54+
}
55+
56+
@Override
57+
public void connectFailed(URI uri, SocketAddress address, IOException ex) {
58+
log.error("Proxy connection failed: {}", uri, ex);
59+
}
60+
};
61+
}
62+
4363
private static Proxy parseStandardProxy(String proxyUrl) {
4464
if (proxyUrl == null || proxyUrl.isEmpty()) return null;
4565

@@ -207,7 +227,7 @@ private static Proxy getMacOSSystemProxy() {
207227
private static Proxy fromSpringConfig() {
208228
try {
209229
var utils = SpringUtils.getBean(SpringValues.class);
210-
String proxyUrl = utils.proxy;
230+
String proxyUrl = utils.url;
211231
if (proxyUrl != null && !proxyUrl.isEmpty()) {
212232
return parseStandardProxy(proxyUrl);
213233
}

src/test/java/com/nyx/bot/utils/TestGitHubUtils.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,15 @@
22

33
import com.nyx.bot.NyxBotApplication;
44
import com.nyx.bot.utils.gitutils.GitHubUtil;
5+
import com.nyx.bot.utils.gitutils.JgitUtil;
56
import com.nyx.bot.utils.http.HttpUtils;
67
import lombok.extern.slf4j.Slf4j;
8+
import org.eclipse.jgit.api.errors.GitAPIException;
79
import org.junit.jupiter.api.Test;
810
import org.springframework.boot.test.context.SpringBootTest;
911

1012
@Slf4j
11-
@SpringBootTest(classes = NyxBotApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, useMainMethod = SpringBootTest.UseMainMethod.NEVER,
12-
properties = {
13-
"spring.sendgrid.proxy.host=127.0.0.1",
14-
"spring.sendgrid.proxy.port=7890"
15-
})
13+
@SpringBootTest(classes = NyxBotApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, useMainMethod = SpringBootTest.UseMainMethod.NEVER)
1614
public class TestGitHubUtils {
1715

1816
//测试下载最新的Jar文件
@@ -33,4 +31,9 @@ void testGitHubGetReleasesLatestVersion() {
3331
log.info("testGitHubGetReleasesLatestVersion:{}", GitHubUtil.getReleasesLatestVersion("KingPrimes", "NyxBot"));
3432
}
3533

34+
@Test
35+
void testGitClone() throws GitAPIException {
36+
JgitUtil.Build("https://github.com/KingPrimes/DataSource","./data111").gitClone();
37+
}
38+
3639
}

src/test/resources/logback-spring.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
1616
<encoder>
1717
<pattern>${CONSOLE_LOG}</pattern>
18-
<charset>${SYSTEM_ENCODING}</charset>
18+
<!-- <charset>${SYSTEM_ENCODING}</charset>-->
1919
</encoder>
2020
</appender>
2121

0 commit comments

Comments
 (0)