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


Reply via email to