Skip to content

Commit 07f0741

Browse files
committed
fix: honor rest api ssl cert verification setting (lowcoder-org#351)
1 parent aeaaffb commit 07f0741

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

server/api-service/lowcoder-plugins/restApiPlugin/src/main/java/org/lowcoder/plugin/restapi/RestApiExecutor.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
import java.net.URISyntaxException;
4848
import java.nio.charset.StandardCharsets;
4949
import java.text.ParseException;
50-
import java.time.Duration;
5150
import java.util.ArrayList;
5251
import java.util.Base64;
5352
import java.util.HashMap;
@@ -94,7 +93,6 @@
9493
import org.springframework.http.MediaType;
9594
import org.springframework.http.ResponseEntity;
9695
import org.springframework.http.client.reactive.ClientHttpRequest;
97-
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
9896
import org.springframework.util.MultiValueMap;
9997
import org.springframework.web.reactive.function.BodyInserter;
10098
import org.springframework.web.reactive.function.BodyInserters;
@@ -109,7 +107,6 @@
109107
import lombok.Builder;
110108
import lombok.Getter;
111109
import reactor.core.publisher.Mono;
112-
import reactor.netty.http.client.HttpClient;
113110

114111
@Extension
115112
public class RestApiExecutor implements QueryExecutor<RestApiDatasourceConfig, Object, RestApiQueryExecutionContext> {
@@ -244,6 +241,7 @@ public Mono<QueryExecutionResult> executeQuery(Object webClientFilter, RestApiQu
244241
WebClient.Builder webClientBuilder = WebClientBuildHelper.builder()
245242
.disallowedHosts(commonConfig.getDisallowedHosts())
246243
.sslConfig(context.getSslConfig())
244+
.timeoutMs(context.getTimeoutMs())
247245
.toWebClientBuilder();
248246

249247
Map<String, String> allHeaders = context.getHeaders();
@@ -260,13 +258,9 @@ public Mono<QueryExecutionResult> executeQuery(Object webClientFilter, RestApiQu
260258
webClientBuilder.filter(new BufferingFilter());
261259
}
262260

263-
HttpClient httpClient = HttpClient.create()
264-
.responseTimeout(Duration.ofMillis(context.getTimeoutMs()));
265-
266261
webClientBuilder.defaultCookies(injectCookies(context));
267262
WebClient client = webClientBuilder
268263
.exchangeStrategies(exchangeStrategies)
269-
.clientConnector(new ReactorClientHttpConnector(httpClient))
270264
.build();
271265

272266
BodyInserter<?, ? super ClientHttpRequest> bodyInserter = buildBodyInserter(

server/api-service/lowcoder-sdk/src/main/java/org/lowcoder/sdk/webclient/WebClientBuildHelper.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.security.cert.CertificateException;
44
import java.security.cert.X509Certificate;
5+
import java.time.Duration;
56
import java.util.Set;
67

78
import javax.net.ssl.SSLException;
@@ -33,6 +34,7 @@ public class WebClientBuildHelper {
3334
private SslConfig sslConfig;
3435
private Set<String> disallowedHosts;
3536
private boolean systemProxy;
37+
private Long timeoutMs;
3638

3739
static {
3840
proxyHost = System.getProperty("http.proxyHost");
@@ -61,12 +63,22 @@ public WebClientBuildHelper systemProxy() {
6163
return this;
6264
}
6365

66+
public WebClientBuildHelper timeoutMs(long milliseconds) {
67+
this.timeoutMs = milliseconds;
68+
return this;
69+
}
70+
6471
public WebClient build() {
6572
return toWebClientBuilder().build();
6673
}
6774

6875
public Builder toWebClientBuilder() {
6976
HttpClient httpClient = HttpClient.create();
77+
if (timeoutMs != null)
78+
{
79+
httpClient.responseTimeout(Duration.ofMillis(timeoutMs));
80+
}
81+
7082
if (sslConfig != null) {
7183
if (sslConfig instanceof DisableVerifySslConfig) {
7284
httpClient = httpClient.secure(sslProviderWithoutCertVerify());

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy