diff --git a/build.gradle b/build.gradle index 79516d921..0ffb54d74 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ subprojects { // Maven repo with viewpagerindicator: https://github.com/Goddchen/mvn-repo mavenCentral() mavenLocal() + maven { url "https://jitpack.io" } } } diff --git a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java index 0b50a9c8b..dfe6be4fb 100644 --- a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java +++ b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/P.java @@ -116,7 +116,6 @@ public static void loadUIPreferences() { public static String host, wsPath, pass, connectionType, sshHost, sshUser, sshPass; public static byte[] sshKey, sshKnownHosts; public static int port, sshPort; - public static SSLContext sslContext; public static SSLSocketFactory sslSocketFactory; public static boolean reconnect; @@ -150,11 +149,8 @@ public static void loadConnectionPreferences() { if (Utils.isAnyOf(connectionType, PREF_TYPE_SSL, PREF_TYPE_WEBSOCKET_SSL)) { sslSocketFactory = SSLHandler.getInstance(context).getSSLSocketFactory(); - sslContext = SSLHandler.getInstance(context).getSSLContext(); - if (sslContext == null) throw new RuntimeException("could not init sslContext"); } else { sslSocketFactory = null; - sslContext = null; } printableHost = connectionType.equals(PREF_TYPE_SSH) ? sshHost + "/" + host : host; diff --git a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java index 64d3fd96a..73188c0df 100644 --- a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java +++ b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/RelayService.java @@ -229,7 +229,7 @@ private TRY connect() { case PREF_TYPE_SSH: conn = new SSHConnection(P.host, P.port, P.sshHost, P.sshPort, P.sshUser, P.sshPass, P.sshKey, P.sshKnownHosts); break; case PREF_TYPE_SSL: conn = new SSLConnection(P.host, P.port, P.sslSocketFactory); break; case PREF_TYPE_WEBSOCKET: conn = new WebSocketConnection(P.host, P.port, P.wsPath, null); break; - case PREF_TYPE_WEBSOCKET_SSL: conn = new WebSocketConnection(P.host, P.port, P.wsPath, P.sslContext); break; + case PREF_TYPE_WEBSOCKET_SSL: conn = new WebSocketConnection(P.host, P.port, P.wsPath, P.sslSocketFactory); break; default: conn = new PlainConnection(P.host, P.port); break; } } catch (Exception e) { diff --git a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/SSLHandler.java b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/SSLHandler.java index 9f951c0e8..11e44263a 100644 --- a/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/SSLHandler.java +++ b/weechat-android/src/main/java/com/ubergeek42/WeechatAndroid/service/SSLHandler.java @@ -77,17 +77,6 @@ public void trustCertificate(@NonNull X509Certificate cert) { saveKeystore(); } - public @Nullable SSLContext getSSLContext() { - try { - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(null, UserTrustManager.build(sslKeystore), new SecureRandom()); - return sslContext; - } catch (NoSuchAlgorithmException | KeyManagementException e) { - logger.error("getSSLContext()", e); - return null; - } - } - public SSLSocketFactory getSSLSocketFactory() { SSLCertificateSocketFactory sslSocketFactory = (SSLCertificateSocketFactory) SSLCertificateSocketFactory.getDefault(0, null); sslSocketFactory.setTrustManagers(UserTrustManager.build(sslKeystore)); diff --git a/weechat-relay/build.gradle b/weechat-relay/build.gradle index 03dc54f19..c031a0bda 100644 --- a/weechat-relay/build.gradle +++ b/weechat-relay/build.gradle @@ -2,8 +2,8 @@ apply plugin: 'java' dependencies { compile 'org.slf4j:slf4j-api:1.7.12' - compile 'com.jcraft:jsch:0.1.53' // for ssh tunnel support - compile 'org.java-websocket:Java-WebSocket:1.3.0' // For websocket support + compile 'com.jcraft:jsch:0.1.53' // for ssh tunnel support + compile 'com.github.TooTallNate:Java-WebSocket:58d1778' // for websocket support compile 'junit:junit:4.12' } @@ -14,4 +14,3 @@ compileJava { tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } - diff --git a/weechat-relay/src/main/java/com/ubergeek42/weechat/relay/connection/WebSocketConnection.java b/weechat-relay/src/main/java/com/ubergeek42/weechat/relay/connection/WebSocketConnection.java index c99db1db8..b8476f565 100644 --- a/weechat-relay/src/main/java/com/ubergeek42/weechat/relay/connection/WebSocketConnection.java +++ b/weechat-relay/src/main/java/com/ubergeek42/weechat/relay/connection/WebSocketConnection.java @@ -5,7 +5,6 @@ package com.ubergeek42.weechat.relay.connection; -import org.java_websocket.client.DefaultSSLWebSocketClientFactory; import org.java_websocket.client.WebSocketClient; import org.java_websocket.drafts.Draft; import org.java_websocket.drafts.Draft_17; @@ -21,7 +20,7 @@ import java.net.URISyntaxException; import java.nio.ByteBuffer; -import javax.net.ssl.SSLContext; +import javax.net.ssl.SSLSocketFactory; public class WebSocketConnection extends AbstractConnection { protected static Logger logger = LoggerFactory.getLogger("WebSocketConnection"); @@ -29,9 +28,9 @@ public class WebSocketConnection extends AbstractConnection { private WebSocketClient client; private PipedOutputStream outputToInStream; - public WebSocketConnection(String server, int port, String path, SSLContext sslContext) throws URISyntaxException, IOException { + public WebSocketConnection(String server, int port, String path, SSLSocketFactory sslSocketFactory) throws URISyntaxException, IOException { // can throw URISyntaxException - URI uri = new URI(sslContext == null ? "ws" : "wss", null, server, port, "/" + path, null, null); + URI uri = new URI(sslSocketFactory == null ? "ws" : "wss", null, server, port, "/" + path, null, null); // can throw IOException in = new PipedInputStream(); @@ -39,7 +38,8 @@ public WebSocketConnection(String server, int port, String path, SSLContext sslC outputToInStream.connect((PipedInputStream) in); client = new MyWebSocket(uri, new Draft_17()); - if (sslContext != null) client.setWebSocketFactory(new DefaultSSLWebSocketClientFactory(sslContext)); + if (sslSocketFactory != null) + client.setSocket(sslSocketFactory.createSocket(server, port)); } @Override protected void doConnect() throws Exception {