Author: norman
Date: Mon Mar 28 11:52:28 2011
New Revision: 1086199

URL: http://svn.apache.org/viewvc?rev=1086199&view=rev
Log:
Allow to bind to more then one socketaddress. Part of JAMES-1214

Modified:
    james/server/trunk/container-spring/src/main/config/james/imapserver.xml
    james/server/trunk/container-spring/src/main/config/james/lmtpserver.xml
    james/server/trunk/container-spring/src/main/config/james/pop3server.xml
    james/server/trunk/container-spring/src/main/config/james/smtpserver.xml
    
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3TestConfiguration.java
    
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ServerMBean.java
    
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
    
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPTestConfiguration.java

Modified: 
james/server/trunk/container-spring/src/main/config/james/imapserver.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/imapserver.xml?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/imapserver.xml 
(original)
+++ james/server/trunk/container-spring/src/main/config/james/imapserver.xml 
Mon Mar 28 11:52:28 2011
@@ -21,7 +21,7 @@
 <!-- See http://james.apache.org/server/3/config.html for usage -->
 
 <imapserver enabled="true">
-  <port>143</port>
+  <bind>0.0.0.0:143</bind>
   <connectionBacklog>200</connectionBacklog>
   <tls socketTLS="false" startTLS="false">
   </tls>

Modified: 
james/server/trunk/container-spring/src/main/config/james/lmtpserver.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/lmtpserver.xml?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/lmtpserver.xml 
(original)
+++ james/server/trunk/container-spring/src/main/config/james/lmtpserver.xml 
Mon Mar 28 11:52:28 2011
@@ -21,8 +21,7 @@
 <!-- See http://james.apache.org/server/3/config.html for usage -->
 
 <lmtpserver enabled="false">
-  <port>24</port>
-  <bind>127.0.0.1</bind>
+  <bind>127.0.0.1:24</bind>
   <connectionBacklog>200</connectionBacklog>
   <connectiontimeout>1200</connectiontimeout>
   <connectionLimit> 0 </connectionLimit>

Modified: 
james/server/trunk/container-spring/src/main/config/james/pop3server.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/pop3server.xml?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/pop3server.xml 
(original)
+++ james/server/trunk/container-spring/src/main/config/james/pop3server.xml 
Mon Mar 28 11:52:28 2011
@@ -21,7 +21,7 @@
 <!-- See http://james.apache.org/server/3/config.html for usage -->
 
 <pop3server enabled="true">
-  <port>110</port>
+  <bind>0.0.0.0:110</bind>
   <connectionBacklog>200</connectionBacklog>
   <tls socketTLS="false" startTLS="false">
       <keystore>file://conf/keystore</keystore>

Modified: 
james/server/trunk/container-spring/src/main/config/james/smtpserver.xml
URL: 
http://svn.apache.org/viewvc/james/server/trunk/container-spring/src/main/config/james/smtpserver.xml?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- james/server/trunk/container-spring/src/main/config/james/smtpserver.xml 
(original)
+++ james/server/trunk/container-spring/src/main/config/james/smtpserver.xml 
Mon Mar 28 11:52:28 2011
@@ -20,7 +20,7 @@
 <!-- See http://james.apache.org/server/3/config.html for usage -->
 
 <smtpserver enabled="true">
-  <port>25</port>
+  <bind>0.0.0.0:25</bind>
   <connectionBacklog>200</connectionBacklog>
   <tls socketTLS="false" startTLS="false">
   </tls>

Modified: 
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3TestConfiguration.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3TestConfiguration.java?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- 
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3TestConfiguration.java
 (original)
+++ 
james/server/trunk/pop3server/src/test/java/org/apache/james/pop3server/POP3TestConfiguration.java
 Mon Mar 28 11:52:28 2011
@@ -33,7 +33,7 @@ public class POP3TestConfiguration exten
 
     public void init() {
         addProperty("[@enabled]", true);
-        addProperty("port", m_pop3ListenerPort);
+        addProperty("bind", "127.0.0.1:"  +m_pop3ListenerPort);
         addProperty("helloName", "myMailServer");
         addProperty("connectiontimeout", "360000");
         addProperty("handlerchain.[@coreHandlersPackage]", 
CoreCmdHandlerLoader.class.getName());

Modified: 
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ServerMBean.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ServerMBean.java?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- 
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ServerMBean.java
 (original)
+++ 
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/jmx/ServerMBean.java
 Mon Mar 28 11:52:28 2011
@@ -58,19 +58,9 @@ public interface ServerMBean {
      */
        boolean getStartTLSSupported();
 
-
-    /**
-     * Return the IPAddress to which the server is bound
-     *  
-     * @return ipAddress or null if not bound to some specifc ip
-     */
-    String getIPAddress();
-    
-    /**
-     * Return the port number to which ther server is bound
-     * @return
-     */
-    int  getPort();
+       
+    String[] getBoundAddresses();
+  
     
     /**
      * Return the socket type of the server. Which can either be plain or 
secure

Modified: 
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- 
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
 (original)
+++ 
james/server/trunk/protocols-library/src/main/java/org/apache/james/protocols/lib/netty/AbstractConfigurableAsyncServer.java
 Mon Mar 28 11:52:28 2011
@@ -20,8 +20,11 @@ package org.apache.james.protocols.lib.n
 
 import java.io.FileInputStream;
 import java.net.InetAddress;
+import java.net.InetSocketAddress;
 import java.net.UnknownHostException;
 import java.security.KeyStore;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.concurrent.Executor;
 
 import javax.annotation.PostConstruct;
@@ -140,29 +143,31 @@ public abstract class AbstractConfigurab
           logger.info(getServiceType() + " disabled by configuration");
           return;
         }
-        setPort(config.getInt("port", getDefaultPort()));
-
-     
-
-        StringBuilder infoBuffer;
         
-
-        try {
-            final String bindAddress = config.getString("bind",null);
-            if( null != bindAddress ) {
-                String bindTo = 
InetAddress.getByName(bindAddress).getHostName();
-                infoBuffer =
-                    new StringBuilder(64)
-                            .append(getServiceType())
-                            .append(" bound to: ")
-                            .append(bindTo);
-                logger.info(infoBuffer.toString());
-                setIP(bindTo);
+        String listen[] = config.getString("bind", "0.0.0.0:" + 
getDefaultPort()).split(",");
+        List<InetSocketAddress> bindAddresses = new 
ArrayList<InetSocketAddress>();
+        for (int i = 0; i < listen.length; i++) {
+            String bind[] = listen[i].split(":");
+            
+            InetSocketAddress address;
+            String ip = bind[0].trim();
+            int port = Integer.parseInt(bind[1].trim());
+            if (ip.equals("0.0.0.0") == false) {
+                try {
+                        ip = InetAddress.getByName(ip).getHostName();
+                } catch (final UnknownHostException unhe) {
+                    throw new ConfigurationException("Malformed bind parameter 
in configuration of service " + getServiceType(), unhe);
+                }
             }
+            address = new InetSocketAddress(ip, port);
+
+            StringBuilder infoBuffer = new 
StringBuilder(64).append(getServiceType()).append(" bound to: 
").append(ip).append(":").append(port);
+            logger.info(infoBuffer.toString());
+
+            bindAddresses.add(address);
         }
-        catch( final UnknownHostException unhe ) {
-            throw new ConfigurationException( "Malformed bind parameter in 
configuration of service " + getServiceType(), unhe );
-        }
+        setListenAddresses(bindAddresses);
+       
 
         jmxName = config.getString("jmxName",getDefaultJMXName());
         int ioWorker = config.getInt("ioWorkerCount", DEFAULT_IO_WORKER_COUNT);
@@ -172,7 +177,7 @@ public abstract class AbstractConfigurab
 
         setTimeout(config.getInt(TIMEOUT_NAME,DEFAULT_TIMEOUT));
 
-        infoBuffer =
+        StringBuilder infoBuffer =
             new StringBuilder(64)
                     .append(getServiceType())
                     .append(" handler connection timeout is: ")
@@ -519,14 +524,6 @@ public abstract class AbstractConfigurab
 
     /*
      * (non-Javadoc)
-     * @see org.apache.james.socket.ServerMBean#getIPAddress()
-     */
-    public String getIPAddress() {
-        return getIP();
-    }
-
-    /*
-     * (non-Javadoc)
      * @see org.apache.james.server.jmx.ServerMBean#getHandledConnections()
      */
     public long getHandledConnections() {
@@ -546,4 +543,22 @@ public abstract class AbstractConfigurab
     protected ConnectionCountHandler getConnectionCountHandler() {
         return countHandler;
     }
+
+    /*
+     * (non-Javadoc)
+     * @see org.apache.james.protocols.lib.jmx.ServerMBean#getBoundAddresses()
+     */
+    public String[] getBoundAddresses() {
+        
+        List<InetSocketAddress> addresses = getListenAddresses();
+        String[] addrs = new String[addresses.size()];
+        for (int i = 0; i < addresses.size(); i++) {
+            InetSocketAddress address = addresses.get(i);
+            addrs[i] = address.getHostName() + ":" + address.getPort();
+        }
+        
+        return addrs;
+    }
+    
+    
 }

Modified: 
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPTestConfiguration.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPTestConfiguration.java?rev=1086199&r1=1086198&r2=1086199&view=diff
==============================================================================
--- 
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPTestConfiguration.java
 (original)
+++ 
james/server/trunk/smtpserver/src/test/java/org/apache/james/smtpserver/SMTPTestConfiguration.java
 Mon Mar 28 11:52:28 2011
@@ -147,7 +147,7 @@ public class SMTPTestConfiguration exten
 
         addProperty("[@enabled]", true);
 
-        addProperty("port", m_smtpListenerPort);
+        addProperty("bind", "127.0.0.1:" + m_smtpListenerPort);
         if (m_connectionLimit != null) addProperty("connectionLimit",  
""+m_connectionLimit.intValue());
         if (m_connectionBacklog != null) addProperty("connectionBacklog", ""+ 
m_connectionBacklog.intValue());
         



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to