Skip to content

Commit 2a78a5a

Browse files
authored
Custom SSLSocketFactory (#80)
1 parent f81a44f commit 2a78a5a

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

centrifuge/src/main/java/io/github/centrifugal/centrifuge/Client.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import java.util.concurrent.ScheduledExecutorService;
1717
import java.util.concurrent.ScheduledFuture;
1818
import java.util.concurrent.TimeUnit;
19+
import javax.net.ssl.SSLSocketFactory;
20+
import javax.net.ssl.X509TrustManager;
1921

2022
import io.github.centrifugal.centrifuge.internal.backoff.Backoff;
2123
import io.github.centrifugal.centrifuge.internal.protocol.Protocol;
@@ -30,7 +32,6 @@
3032
import okhttp3.WebSocketListener;
3133
import okio.ByteString;
3234

33-
3435
public class Client {
3536
private WebSocket ws;
3637
private final String endpoint;
@@ -265,6 +266,16 @@ private void _connect() {
265266
okHttpBuilder.dns(dns::resolve);
266267
}
267268

269+
SSLSocketFactory socketFactory = opts.getSSLSocketFactory();
270+
if (socketFactory != null) {
271+
X509TrustManager trustManager = opts.getTrustManager();
272+
if (trustManager != null) {
273+
okHttpBuilder.sslSocketFactory(socketFactory, trustManager);
274+
} else {
275+
okHttpBuilder.setSslSocketFactoryOrNull$okhttp(socketFactory);
276+
}
277+
}
278+
268279
if (opts.getProxy() != null) {
269280
okHttpBuilder.proxy(opts.getProxy());
270281
if (this.opts.getProxyLogin() != null && this.opts.getProxyPassword() != null) {

centrifuge/src/main/java/io/github/centrifugal/centrifuge/Options.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.github.centrifugal.centrifuge;
22

3+
import javax.net.ssl.SSLSocketFactory;
4+
import javax.net.ssl.X509TrustManager;
35
import java.net.Proxy;
46
import java.util.Map;
57

@@ -190,4 +192,30 @@ public void setDns(Dns dns) {
190192
}
191193

192194
private Dns dns;
195+
196+
/**
197+
* Set custom SSLSocketFactory
198+
*/
199+
public void setSSLSocketFactory(SSLSocketFactory sslSocketFactory) {
200+
this.sslSocketFactory = sslSocketFactory;
201+
}
202+
203+
/**
204+
* Set custom SSLSocketFactory & X509TrustManager
205+
*/
206+
public void setSSLSocketFactory(SSLSocketFactory sslSocketFactory, X509TrustManager trustManager) {
207+
this.sslSocketFactory = sslSocketFactory;
208+
this.trustManager = trustManager;
209+
}
210+
211+
public SSLSocketFactory getSSLSocketFactory() {
212+
return this.sslSocketFactory;
213+
}
214+
215+
private SSLSocketFactory sslSocketFactory;
216+
private X509TrustManager trustManager;
217+
218+
public X509TrustManager getTrustManager() {
219+
return trustManager;
220+
}
193221
}

0 commit comments

Comments
 (0)