diff --git a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java index b13de0ce9f0cced50446310bcdb14f392d023088..541f0b66cfddab0a2bdab26490189c95259fc64d 100644 --- a/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java +++ b/src/main/java/de/thm/arsnova/socket/ARSnovaSocketIOServer.java @@ -1,5 +1,8 @@ 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; } diff --git a/src/main/webapp/WEB-INF/spring/spring-main.xml b/src/main/webapp/WEB-INF/spring/spring-main.xml index d59b0ac6359bf167449a03ba51b00bc37ac2957e..e70b05bc17ef33bf7b523015e762ae8015cd142f 100644 --- a/src/main/webapp/WEB-INF/spring/spring-main.xml +++ b/src/main/webapp/WEB-INF/spring/spring-main.xml @@ -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> diff --git a/src/main/webapp/config.properties b/src/main/webapp/config.properties new file mode 100644 index 0000000000000000000000000000000000000000..5042b97f53891874e9de056924dbaef1330a124f --- /dev/null +++ b/src/main/webapp/config.properties @@ -0,0 +1,19 @@ +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