Skip to content

Commit ced6501

Browse files
committed
feat: 验证ssl自签名/CA证书的http请求
1 parent fb8287a commit ced6501

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

src/main/java/top/meethigher/proxy/http/VertxHTTPReverseProxy.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,16 @@ public List<ProxyRoute> getRoutes() {
285285
return proxyRoutes;
286286
}
287287

288+
public VertxHTTPReverseProxy port(int port) {
289+
this.sourcePort = port;
290+
return this;
291+
}
292+
293+
public VertxHTTPReverseProxy host(String host) {
294+
this.sourceHost = host;
295+
return this;
296+
}
297+
288298
public void start() {
289299
httpServer.requestHandler(router).exceptionHandler(e -> log.error("request failed", e));
290300
Future<HttpServer> listenFuture = httpServer.listen(sourcePort, sourceHost);

src/main/java/top/meethigher/proxy/tcp/VertxTCPReverseProxy.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,14 @@ private VertxTCPReverseProxy(NetServer netServer, NetClient netClient,
4646
sourceSocket.pause();
4747
netClient.connect(targetPort, targetHost)
4848
.onSuccess(targetSocket -> {
49-
log.info("connected {} <--> {}", sourceSocket.remoteAddress().toString(), targetSocket.remoteAddress().toString());
49+
log.info("connected {} <--> {} ({} <--> {})", sourceSocket.remoteAddress().toString(), sourceSocket.localAddress().toString(),
50+
targetSocket.localAddress().toString(), targetSocket.remoteAddress().toString());
5051
targetSocket.pause();
5152
sourceSocket.closeHandler(v -> targetSocket.close()).pipeTo(targetSocket);
5253
targetSocket.closeHandler(v -> {
5354
sourceSocket.close();
54-
log.info("closed {} <--> {}", sourceSocket.remoteAddress().toString(), targetSocket.remoteAddress().toString());
55+
log.info("closed {} <--> {} ({} <--> {})", sourceSocket.remoteAddress().toString(), sourceSocket.localAddress().toString(),
56+
targetSocket.localAddress().toString(), targetSocket.remoteAddress().toString());
5557
}).pipeTo(sourceSocket);
5658
sourceSocket.resume();
5759
targetSocket.resume();

src/test/java/top/meethigher/VertxHTTPReverseProxyTest.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package top.meethigher;
22

33
import io.vertx.core.Vertx;
4+
import io.vertx.core.http.HttpClientOptions;
5+
import io.vertx.ext.web.Router;
46
import org.junit.Test;
57
import top.meethigher.proxy.http.ProxyRoute;
68
import top.meethigher.proxy.http.VertxHTTPReverseProxy;
@@ -11,12 +13,17 @@ public class VertxHTTPReverseProxyTest {
1113

1214
@Test
1315
public void testVertxHTTPReverseProxyTest() throws Exception {
14-
VertxHTTPReverseProxy proxy = VertxHTTPReverseProxy.create(Vertx.vertx());
15-
16+
Vertx vertx = Vertx.vertx();
17+
VertxHTTPReverseProxy proxy = VertxHTTPReverseProxy.create(
18+
Router.router(vertx),
19+
vertx.createHttpServer(),
20+
vertx.createHttpClient(new HttpClientOptions().setVerifyHost(false).setTrustAll(true))
21+
);
22+
proxy.port(998);
1623
proxy.start();
1724
ProxyRoute proxyRoute = new ProxyRoute();
18-
proxyRoute.setSourceUrl("/api/*");
19-
proxyRoute.setTargetUrl("https://reqres.in/");
25+
proxyRoute.setSourceUrl("/*");
26+
proxyRoute.setTargetUrl("https://10.0.0.10:4321");
2027
proxy.addRoute(proxyRoute);
2128
TimeUnit.MINUTES.sleep(20);
2229
proxy.stop();

0 commit comments

Comments
 (0)