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>