Author: bdonlan
Date: 2005-05-27 14:59:35 -0400 (Fri, 27 May 2005)
New Revision: 738
Added:
trunk/clients/Javer2/src/org/haverdev/haver/server/SSLAcceptLoop.java
Modified:
trunk/clients/Javer2/server.conf
trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java
trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java
Log:
Pluggable accept loops, with SSL
Modified: trunk/clients/Javer2/server.conf
===================================================================
--- trunk/clients/Javer2/server.conf 2005-05-27 03:56:05 UTC (rev 737)
+++ trunk/clients/Javer2/server.conf 2005-05-27 18:59:35 UTC (rev 738)
@@ -3,8 +3,13 @@
# This file is absolutely vital for the server to start. Sorry.
# Which port to listen on
-haver.ListenPort=7070
+#haver.ListenPort=7070
+haver.listeners=org.haverdev.haver.server.AcceptLoop,
org.haverdev.haver.server.SSLAcceptLoop
+org.haverdev.haver.server.AcceptLoop.listenPorts=7070
+org.haverdev.haver.server.SSLAcceptLoop.listenPorts=7777
+
+
# Time after a S: PING before disconnect
haver.PingTimeout=30
@@ -67,3 +72,7 @@
log4j.appender.__A1=org.apache.log4j.ConsoleAppender
log4j.appender.__A1.layout=org.apache.log4j.PatternLayout
log4j.appender.__A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
+
+# SSL config
+javax.net.ssl.keyStore=mySrvKeystore
+javax.net.ssl.keyStorePassword=123456
Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java
2005-05-27 03:56:05 UTC (rev 737)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/AcceptLoop.java
2005-05-27 18:59:35 UTC (rev 738)
@@ -16,20 +16,31 @@
*/
public class AcceptLoop extends Thread {
- ServerSocket socket;
- int port;
+ protected ServerSocket socket;
+ protected int port;
+ public static void startListening() throws Throwable {
+ String[] ports =
+
System.getProperty("org.haverdev.haver.server.AcceptLoop.listenPorts").split("[,
]+");
+ for (int i = 0; i < ports.length; i++) {
+ int port = Integer.decode(ports[i]).intValue();
+ try {
+ ServerSocket socket = new ServerSocket(port);
+ new AcceptLoop(socket, port).start();
+ } catch (Throwable t) {
+ Logger.getLogger(AcceptLoop.class).error("While opening
listening socket on port " + port, t);
+ throw t;
+ }
+ }
+
+ }
+
/** Creates a new instance of AcceptLoop */
- public AcceptLoop(int port) throws IOException {
+ protected AcceptLoop(ServerSocket s, int port) throws IOException {
Logger.getLogger(getClass()).info("Listening on port " + port);
this.port = port;
- try {
- socket = new ServerSocket(port);
- setName("Listening socket on port " + port);
- } catch (IOException e) {
- Logger.getLogger(getClass()).error(e);
- throw e;
- }
+ socket = s;
+ setName("Listening socket on port " + port);
}
public void run() {
@@ -53,8 +64,4 @@
t.printStackTrace();
}
}
-
- public static void main(String[] args) throws Throwable {
- new AcceptLoop(15678).start();
- }
}
Modified: trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java
2005-05-27 03:56:05 UTC (rev 737)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/Main.java
2005-05-27 18:59:35 UTC (rev 738)
@@ -22,7 +22,7 @@
private Main() {
}
- public static final Properties buildDefaults() {
+ static final Properties buildDefaults() {
Properties defaults = new Properties(System.getProperties());
defaults.setProperty("haver.ListenPort", "7070");
defaults.setProperty("haver.PingTimeout", "30");
@@ -38,7 +38,7 @@
return defaults;
}
- public static final void initStore(String impl) throws Throwable {
+ static final void initStore(String impl) throws Throwable {
ClassLoader loader = ClassLoader.getSystemClassLoader();
Class theClass = loader.loadClass(impl);
Class[] nothing_p = {};
@@ -47,16 +47,34 @@
theStore = (UserStore)m.newInstance(nothing_a);
}
- public static final void initPlugin(String what) throws Throwable {
+ static final void initPlugin(String what) throws Throwable {
ClassLoader loader = ClassLoader.getSystemClassLoader();
Class theClass = loader.loadClass(what);
Class[] nothing = {};
Object[] nothing_o = {};
Method m = theClass.getDeclaredMethod("initPlugin", nothing);
m.invoke(null, nothing_o);
- }
+ }
- public static final void main(String[] args) throws Throwable {
+ static final void initListener(String what) throws Throwable {
+ ClassLoader loader = ClassLoader.getSystemClassLoader();
+ Class theClass = loader.loadClass(what);
+ Class[] nothing = {};
+ Object[] nothing_o = {};
+ Method m = theClass.getDeclaredMethod("startListening", nothing);
+ m.invoke(null, nothing_o);
+ }
+
+ public static final void main(String[] args) {
+ try {
+ _main(args);
+ } catch (Throwable t) {
+ t.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ static final void _main(String[] args) throws Throwable {
Properties defaults = buildDefaults();
Properties props = new Properties(defaults);
if (args.length != 0) {
@@ -78,8 +96,8 @@
Lobby.initLobby(props.getProperty("haver.Lobby"));
initStore(props.getProperty("haver.UserStore",
"org.haverdev.haver.server.DefaultUserStore"));
- String portStr = props.getProperty("haver.ListenPort", "7070");
- int port = Integer.decode(portStr).intValue();
+ //String portStr = props.getProperty("haver.ListenPort", "7070");
+ //int port = Integer.decode(portStr).intValue();
String channelstr = props.getProperty("haver.ChatChannels", "");
String[] channels = channelstr.split("[, ]+");
@@ -99,8 +117,12 @@
}
}
- Logger.getRootLogger().warn("Haver server starts");
- new AcceptLoop(port).start();
+ Logger.getRootLogger().warn("Running accept loop init functions");
+ String[] listeners = System.getProperty("haver.listeners",
"org.haverdev.haver.server.AcceptLoop").split("[, ]+");
+ for (int i = 0; i < listeners.length; i++)
+ initListener(listeners[i]);
+
+ Logger.getRootLogger().warn("Server is online");
}
}
Added: trunk/clients/Javer2/src/org/haverdev/haver/server/SSLAcceptLoop.java
===================================================================
--- trunk/clients/Javer2/src/org/haverdev/haver/server/SSLAcceptLoop.java
2005-05-27 03:56:05 UTC (rev 737)
+++ trunk/clients/Javer2/src/org/haverdev/haver/server/SSLAcceptLoop.java
2005-05-27 18:59:35 UTC (rev 738)
@@ -0,0 +1,41 @@
+/*
+ * SSLAcceptLoop.java
+ *
+ * Created on May 27, 2005, 2:44 PM
+ */
+
+package org.haverdev.haver.server;
+import java.net.*;
+import javax.net.*;
+import javax.net.ssl.*;
+import org.apache.log4j.Logger;
+
+/**
+ *
+ * @author bdonlan
+ */
+public class SSLAcceptLoop extends AcceptLoop {
+
+ protected SSLAcceptLoop(ServerSocket s, int port) throws Throwable {
+ super(s, port);
+ }
+
+ public static void startListening() throws Throwable {
+ String[] ports =
+
System.getProperty("org.haverdev.haver.server.SSLAcceptLoop.listenPorts").split("[,
]+");
+ ServerSocketFactory ssocketFactory =
SSLServerSocketFactory.getDefault();
+
+ for (int i = 0; i < ports.length; i++) {
+ int port = Integer.decode(ports[i]).intValue();
+ try {
+ ServerSocket ssocket = ssocketFactory.createServerSocket(port);
+ new SSLAcceptLoop(ssocket, port).start();
+ } catch (Throwable t) {
+ Logger.getLogger(SSLAcceptLoop.class).error("While opening
listening socket on port " + port, t);
+ throw t;
+ }
+ }
+
+ }
+
+}
Property changes on:
trunk/clients/Javer2/src/org/haverdev/haver/server/SSLAcceptLoop.java
___________________________________________________________________
Name: svn:eol-style
+ native