diff --git a/pom.xml b/pom.xml index 25e03e9..735d9b5 100644 --- a/pom.xml +++ b/pom.xml @@ -64,11 +64,6 @@ okhttp-ws 2.3.0 - - com.squareup.okhttp - mockwebserver - 2.3.0 - diff --git a/src/main/java/com/github/nkzawa/engineio/client/Socket.java b/src/main/java/com/github/nkzawa/engineio/client/Socket.java index 27796bf..4da61a6 100644 --- a/src/main/java/com/github/nkzawa/engineio/client/Socket.java +++ b/src/main/java/com/github/nkzawa/engineio/client/Socket.java @@ -8,8 +8,6 @@ import com.github.nkzawa.engineio.parser.Packet; import com.github.nkzawa.engineio.parser.Parser; import com.github.nkzawa.parseqs.ParseQS; import com.github.nkzawa.thread.EventThread; -import com.squareup.okhttp.OkHttpClient; - import org.json.JSONException; import javax.net.ssl.SSLContext; @@ -123,7 +121,6 @@ public class Socket extends Emitter { private Future pingTimeoutTimer; private Future pingIntervalTimer; private SSLContext sslContext; - private OkHttpClient okHttpClient; private ReadyState readyState; private ScheduledExecutorService heartbeatScheduler; @@ -200,7 +197,6 @@ public class Socket extends Emitter { opts.transports : new String[]{Polling.NAME, WebSocket.NAME})); this.policyPort = opts.policyPort != 0 ? opts.policyPort : 843; this.rememberUpgrade = opts.rememberUpgrade; - this.okHttpClient = opts.okHttpClient; } /** @@ -258,7 +254,6 @@ public class Socket extends Emitter { opts.timestampParam = this.timestampParam; opts.policyPort = this.policyPort; opts.socket = this; - opts.okHttpClient = this.okHttpClient; Transport transport; if (WebSocket.NAME.equals(name)) { diff --git a/src/main/java/com/github/nkzawa/engineio/client/Transport.java b/src/main/java/com/github/nkzawa/engineio/client/Transport.java index d0c6f9c..8277075 100644 --- a/src/main/java/com/github/nkzawa/engineio/client/Transport.java +++ b/src/main/java/com/github/nkzawa/engineio/client/Transport.java @@ -5,7 +5,6 @@ import com.github.nkzawa.emitter.Emitter; import com.github.nkzawa.engineio.parser.Packet; import com.github.nkzawa.engineio.parser.Parser; import com.github.nkzawa.thread.EventThread; -import com.squareup.okhttp.OkHttpClient; import javax.net.ssl.SSLContext; import java.util.Map; @@ -43,7 +42,6 @@ public abstract class Transport extends Emitter { protected String timestampParam; protected SSLContext sslContext; protected Socket socket; - protected OkHttpClient okHttpClient; protected ReadyState readyState; @@ -57,7 +55,6 @@ public abstract class Transport extends Emitter { this.timestampRequests = opts.timestampRequests; this.sslContext = opts.sslContext; this.socket = opts.socket; - this.okHttpClient = opts.okHttpClient; } protected Transport onError(String msg, Exception desc) { @@ -147,7 +144,6 @@ public abstract class Transport extends Emitter { public int policyPort = -1; public Map query; public SSLContext sslContext; - public OkHttpClient okHttpClient; protected Socket socket; } } diff --git a/src/main/java/com/github/nkzawa/engineio/client/transports/WebSocket.java b/src/main/java/com/github/nkzawa/engineio/client/transports/WebSocket.java index 6331e13..e33f975 100644 --- a/src/main/java/com/github/nkzawa/engineio/client/transports/WebSocket.java +++ b/src/main/java/com/github/nkzawa/engineio/client/transports/WebSocket.java @@ -48,7 +48,7 @@ public class WebSocket extends Transport { this.emit(EVENT_REQUEST_HEADERS, headers); final WebSocket self = this; - final OkHttpClient client = this.okHttpClient != null ? this.okHttpClient : new OkHttpClient(); + final OkHttpClient client = new OkHttpClient(); if (this.sslContext != null) { SSLSocketFactory factory = sslContext.getSocketFactory();// (SSLSocketFactory) SSLSocketFactory.getDefault(); client.setSslSocketFactory(factory); diff --git a/src/test/java/com/github/nkzawa/engineio/client/SSLConnectionTest.java b/src/test/java/com/github/nkzawa/engineio/client/SSLConnectionTest.java index c50b3c8..c4c0e5c 100644 --- a/src/test/java/com/github/nkzawa/engineio/client/SSLConnectionTest.java +++ b/src/test/java/com/github/nkzawa/engineio/client/SSLConnectionTest.java @@ -1,31 +1,37 @@ package com.github.nkzawa.engineio.client; import com.github.nkzawa.emitter.Emitter; -import com.squareup.okhttp.OkHttpClient; -import com.squareup.okhttp.internal.SslContextBuilder; - import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManagerFactory; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.security.GeneralSecurityException; +import java.security.KeyStore; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; -import javax.net.ssl.HostnameVerifier; - import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @RunWith(JUnit4.class) public class SSLConnectionTest extends Connection { - static HostnameVerifier hostnameVerifier = new javax.net.ssl.HostnameVerifier(){ - public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { - return true; - } - }; - + static { + // for test on localhost + javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier( + new javax.net.ssl.HostnameVerifier(){ + public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { + return hostname.equals("localhost"); + } + }); + } private Socket socket; @@ -46,13 +52,28 @@ public class SSLConnectionTest extends Connection { return new String[] {"DEBUG=engine*", "PORT=" + PORT, "SSL=1"}; } + SSLContext createSSLContext() throws GeneralSecurityException, IOException { + KeyStore ks = KeyStore.getInstance("JKS"); + File file = new File("src/test/resources/keystore.jks"); + ks.load(new FileInputStream(file), "password".toCharArray()); + + KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); + kmf.init(ks, "password".toCharArray()); + + TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509"); + tmf.init(ks); + + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null); + return sslContext; + } + @Test(timeout = TIMEOUT) public void connect() throws Exception { final BlockingQueue values = new LinkedBlockingQueue(); Socket.Options opts = createOptions(); - opts.sslContext = SslContextBuilder.localhost(); - opts.okHttpClient = new OkHttpClient().setHostnameVerifier(hostnameVerifier); + opts.sslContext = createSSLContext(); socket = new Socket(opts); socket.on(Socket.EVENT_OPEN, new Emitter.Listener() { @Override @@ -76,8 +97,7 @@ public class SSLConnectionTest extends Connection { final BlockingQueue values = new LinkedBlockingQueue(); Socket.Options opts = createOptions(); - opts.sslContext = SslContextBuilder.localhost(); - opts.okHttpClient = new OkHttpClient().setHostnameVerifier(hostnameVerifier); + opts.sslContext = createSSLContext(); socket = new Socket(opts); socket.on(Socket.EVENT_OPEN, new Emitter.Listener() { @Override @@ -106,10 +126,8 @@ public class SSLConnectionTest extends Connection { public void defaultSSLContext() throws Exception { final BlockingQueue values = new LinkedBlockingQueue(); - Socket.Options opts = createOptions(); - Socket.setDefaultSSLContext(SslContextBuilder.localhost()); - opts.okHttpClient = new OkHttpClient().setHostnameVerifier(hostnameVerifier); - socket = new Socket(opts); + Socket.setDefaultSSLContext(createSSLContext()); + socket = new Socket(createOptions()); socket.on(Socket.EVENT_OPEN, new Emitter.Listener() { @Override public void call(Object... args) {