Skip to content
Snippets Groups Projects
Commit 7df5d267 authored by Julian Hochstetter's avatar Julian Hochstetter
Browse files

Task #3861: Provide SSL Encryption for Sockets

parent a449dc84
Branches
Tags
No related merge requests found
package de.thm.arsnova.socket;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
......@@ -29,6 +32,9 @@ public class ARSnovaSocketIOServer {
private final Map<String, User> session2user = new ConcurrentHashMap<String, User>();
private int portNumber;
private boolean useSSL = false;
private String keystore;
private String storepass;
private final Configuration config;
private SocketIOServer server;
......@@ -45,6 +51,15 @@ public class ARSnovaSocketIOServer {
config.setPort(portNumber);
config.setHostname("0.0.0.0");
if(useSSL) {
try {
InputStream stream = new FileInputStream(keystore);
config.setKeyStore(stream);
config.setKeyStorePassword(storepass);
} catch(FileNotFoundException e) {
logger.error("Keystore {} not found on filesystem", keystore);
}
}
server = new SocketIOServer(config);
server.addEventListener("setFeedback", Feedback.class,
......@@ -99,6 +114,33 @@ public class ARSnovaSocketIOServer {
this.portNumber = portNumber;
}
public String getStorepass() {
return storepass;
}
@Required
public void setStorepass(String storepass) {
this.storepass = storepass;
}
public String getKeystore() {
return keystore;
}
@Required
public void setKeystore(String keystore) {
this.keystore = keystore;
}
public boolean isUseSSL() {
return useSSL;
}
@Required
public void setUseSSL(boolean useSSL) {
this.useSSL = useSSL;
}
public boolean authorize(String session, User user) {
return session2user.put(session, user) != null;
}
......
......@@ -27,6 +27,9 @@
<context:annotation-config />
<bean id="socketServer" class="de.thm.arsnova.socket.ARSnovaSocketIOServer" init-method="startServer" destroy-method="stopServer" scope="singleton"
p:portNumber="18018" />
p:portNumber="10443"
p:useSSL="${security.ssl}"
p:keystore="${security.keystore}"
p:storepass="${security.storepass}" />
</beans>
security.arsnova-url=http://localhost:8080
security.cas-server-url=https://cas.thm.de/cas
security.facebook.key=318531508227494
security.facebook.secret=e3f38cfc72bb63e35641b637081a6177
security.twitter.key=PEVtidSG0HzSrxVRPpsCXw
security.twitter.secret=mC0HOvxiEgqwdDWCcDoy3q75nUQPu1bYRp1ncHWGd0
security.google.key=110959746118.apps.googleusercontent.com
security.google.secret=CkzUJZswY8rjWCCYnHVovyGA
security.ssl=false
security.keystore=/etc/arsnova.thm.de.jks
security.storepass=arsnova
couchdb.host=localhost
couchdb.port=5984
couchdb.name=arsnova
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment