Skip to content

Commit

Permalink
relay: websocket: use Java-WebSocket master to add hostname
Browse files Browse the repository at this point in the history
vertification
  • Loading branch information
zopieux committed Dec 9, 2016
1 parent a20fff1 commit e7c5c9b
Show file tree
Hide file tree
Showing 6 changed files with 9 additions and 24 deletions.
1 change: 1 addition & 0 deletions build.gradle
Expand Up @@ -3,6 +3,7 @@ subprojects {
// Maven repo with viewpagerindicator: https://github.com/Goddchen/mvn-repo
mavenCentral()
mavenLocal()
maven { url "https://jitpack.io" }
}
}

Expand Down
Expand Up @@ -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;

Expand Down Expand Up @@ -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;
Expand Down
Expand Up @@ -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) {
Expand Down
Expand Up @@ -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));
Expand Down
5 changes: 2 additions & 3 deletions weechat-relay/build.gradle
Expand Up @@ -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'
}

Expand All @@ -14,4 +14,3 @@ compileJava {
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}

Expand Up @@ -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;
Expand All @@ -21,25 +20,26 @@
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");

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();
outputToInStream = new PipedOutputStream();
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 {
Expand Down

0 comments on commit e7c5c9b

Please sign in to comment.