Author: ngn
Date: Mon Jul 28 14:31:00 2008
New Revision: 680510

URL: http://svn.apache.org/viewvc?rev=680510&view=rev
Log:
Implemented login limits in the XML configuration

Modified:
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java
    
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
    
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
    
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
    
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
    
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml

Modified: 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java?rev=680510&r1=680509&r2=680510&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java 
(original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/FtpServer.java 
Mon Jul 28 14:31:00 2008
@@ -283,4 +283,20 @@
         checkAndGetContext().setMessageResource(messageResource);
     }
 
+    /**
+     * Retrieve the connection configuration this server
+     * @return The [EMAIL PROTECTED] MessageResource}
+     */
+    public ConnectionConfig getConnectionConfig() {
+        return getServerContext().getConnectionConfig();
+    }
+
+    /**
+     * Set the message resource to be used with this server
+     * @param messageResource The [EMAIL PROTECTED] MessageResource}
+     * @throws IllegalStateException If a custom server context has been set
+     */
+    public void setConnectionConfig(ConnectionConfig connectionConfig) {
+        checkAndGetContext().setConnectionConfig(connectionConfig);
+    }
 }

Modified: 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java?rev=680510&r1=680509&r2=680510&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/ServerBeanDefinitionParser.java
 Mon Jul 28 14:31:00 2008
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.ftpserver.DefaultConnectionConfig;
 import org.apache.ftpserver.FtpServer;
 import org.apache.ftpserver.FtpServerConfigurationException;
 import org.apache.ftpserver.interfaces.MessageResource;
@@ -88,6 +89,27 @@
                 throw new FtpServerConfigurationException("Unknown 
configuration name: " + childName);
             }
         }
+
+        // Configure login limits
+        DefaultConnectionConfig connectionConfig = new 
DefaultConnectionConfig();
+        if(StringUtils.hasText(element.getAttribute("max-logins"))) {
+            connectionConfig.setMaxLogins(SpringUtil.parseInt(element, 
"max-logins"));
+        }
+        if(StringUtils.hasText(element.getAttribute("max-anon-logins"))) {
+            
connectionConfig.setMaxAnonymousLogins(SpringUtil.parseInt(element, 
"max-anon-logins"));
+        }
+        if(StringUtils.hasText(element.getAttribute("anon-enabled"))) {
+            
connectionConfig.setAnonymousLoginEnabled(SpringUtil.parseBoolean(element, 
"anon-enabled", true));
+        }
+        if(StringUtils.hasText(element.getAttribute("max-login-failures"))) {
+            connectionConfig.setMaxLoginFailures(SpringUtil.parseInt(element, 
"max-login-failures"));
+        }
+        if(StringUtils.hasText(element.getAttribute("login-failure-delay"))) {
+            connectionConfig.setLoginFailureDelay(SpringUtil.parseInt(element, 
"login-failure-delay"));
+        }
+        
+        builder.addPropertyValue("connectionConfig", connectionConfig);
+
     }
 
     /**

Modified: 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java?rev=680510&r1=680509&r2=680510&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/config/spring/SpringUtil.java
 Mon Jul 28 14:31:00 2008
@@ -138,6 +138,17 @@
     
     /**
      * Parses a attribute value into an integer. 
+     * @param parent The element
+     * @param attrName The attribute name
+     * @return The value
+     * @throws NumberFormatException If the attribute does not contain a number
+     */
+    public static int parseInt(Element parent, String attrName) {
+        return Integer.parseInt(parent.getAttribute(attrName));
+    }
+    
+    /**
+     * Parses a attribute value into an integer. 
      * If the attribute is missing or has no content, a default value is 
returned
      * @param parent The element
      * @param attrName The attribute name

Modified: 
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd?rev=680510&r1=680509&r2=680510&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
 (original)
+++ 
mina/ftpserver/trunk/core/src/main/resources/org/apache/ftpserver/config/spring/ftpserver-1.0.xsd
 Mon Jul 28 14:31:00 2008
@@ -52,7 +52,11 @@
                                <xs:element minOccurs="0" ref="messages"/>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:ID"/>
-
+            <xs:attribute name="max-logins" type="xs:int"/>
+            <xs:attribute name="max-anon-logins" type="xs:int"/>
+            <xs:attribute name="anon-enabled" type="xs:boolean"/>
+            <xs:attribute name="max-login-failures" type="xs:int"/>
+            <xs:attribute name="login-failure-delay" type="xs:int"/>
                </xs:complexType>
        </xs:element>
 

Modified: 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java?rev=680510&r1=680509&r2=680510&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
 (original)
+++ 
mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/config/spring/SpringConfigTest.java
 Mon Jul 28 14:31:00 2008
@@ -42,6 +42,12 @@
         FtpServer server = (FtpServer) factory.getBean("server");
         server.start();
         
+        assertEquals(500, server.getConnectionConfig().getMaxLogins());
+        assertEquals(false, 
server.getConnectionConfig().isAnonymousLoginEnabled());
+        assertEquals(123, 
server.getConnectionConfig().getMaxAnonymousLogins());
+        assertEquals(124, server.getConnectionConfig().getMaxLoginFailures());
+        assertEquals(125, server.getConnectionConfig().getLoginFailureDelay());
+        
         Map<String, Listener> listeners = 
server.getServerContext().getListeners(); 
         assertEquals(3, listeners.size());
         

Modified: 
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml
URL: 
http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml?rev=680510&r1=680509&r2=680510&view=diff
==============================================================================
--- 
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml 
(original)
+++ 
mina/ftpserver/trunk/core/src/test/resources/spring-config/config-spring-1.xml 
Mon Jul 28 14:31:00 2008
@@ -23,7 +23,13 @@
        xsi:schemaLocation="
           http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
           http://mina.apache.org/ftpserver/spring/v1 
http://mina.apache.org/ftpserver/ftpserver-1.0.xsd        
-          ">
+          "
+          max-logins="500"
+          anon-enabled="false"
+          max-anon-logins="123"
+          max-login-failures="124"
+          login-failure-delay="125"
+          >
 
 
                <listeners>


Reply via email to