Skip to content

Commit f0ee6cc

Browse files
authored
fix: honor rest api ssl cert verification setting (#351)
1 parent d9debc7 commit f0ee6cc

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

+1-7
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

+12
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)