Mina FTP¶
Standalone FTP server written is JAVA.
which use MINA Framework, could be use to deploy service in min.
Source : Mina FTP
Copy following files
tar -xvf springsource-tool-suite-2.6.0.RELEASE-e3.6.2-linux-gtk-x86_64.tar.gz
cp tc-server-developer-2.1.1.RELEASE/lib/com.springsource.org.apache.commons.cli-1.2.0.jar /opt/ftpd/common/lib/
cd /opt/ftpd/cd /usr/local/src/
wget http://s3.amazonaws.com/dist.springframework.org/milestone/SPR/spring-framework-3.1.0.M1.zip
unzip spring-framework-3.1.0.M1.zip
cd spring-framework-3.1.0.M1/dist
cp org.springframework.jdbc-3.1.0.M1.jar /opt/ftpd/common/lib/
wget http://apache.mirrors.tds.net//commons/pool/binaries/commons-pool-1.5.5-bin.tar.gz
tar -xvf commons-pool-1.5.5-bin.tar.gz
cp commons-pool-1.5.5.jar /opt/ftpd/common/lib/
cd /opt/ftpd
keytool -genkey -alias ftp.k2patel.com -keyalg RSA o- keystore k2patel.jks -keysize 2048
keytool -genkey -alias ftp.k2patel.com -keyalg RSA -keystore k2patel.jks -keysize 2048
keytool -genkey -keyalg RSA -alias selfSigned -keystore k2patel.jks -storepass test123 -validity 3650 -keysize 2048
Now use following service config.
File: typical.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://mina.apache.org/ftpserver/spring/v1"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation=" http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/lang
http://www.springframework.org/schema/lang/spring-lang-2.0.xsd
http://mina.apache.org/ftpserver/spring/v1
http://mina.apache.org/ftpserver/ftpserver-1.0.xsd ">
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<beans:property name="url" value="jdbc:mysql://localhost/ftpuser"/>
<beans:property name="username" value="ftpuser"/>
<beans:property name="password" value="servent"/>
</beans:bean>
<server id="server">
<listeners>
<nio-listener name="default" port="21"></nio-listener>
</listeners>
<db-user-manager encrypt-passwords="md5">
<data-source> <beans:ref bean="dataSource"/>
</data-source>
<insert-user>INSERT INTO FTP_USER (userid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate) VALUES ('{userid}', '{userpassword}', '{homedirectory}', {enableflag}, {writepermission}, {idletime}, {uploadrate}, {downloadrate})
</insert-user>
<update-user>UPDATE FTP_USER SET userpassword='{userpassword}',homedirectory='{homedirectory}',enableflag={enableflag},writepermission={writepermission},idletime={idletime},uploadrate={uploadrate},downloadrate={downloadrate} WHERE userid='{userid}'
</update-user>
<delete-user>DELETE FROM FTP_USER WHERE userid = '{userid}'
</delete-user>
<select-user>SELECT userid, userpassword, homedirectory, enableflag, writepermission, idletime, uploadrate, downloadrate, maxloginnumber, maxloginperip FROM FTP_USER WHERE userid = '{userid}'
</select-user>
<select-all-users>SELECT userid FROM FTP_USER ORDER BY userid
</select-all-users>
<is-admin>SELECT userid FROM FTP_USER WHERE userid='{userid}' AND userid='admin'
</is-admin>
<authenticate>SELECT userpassword from FTP_USER WHERE userid='{userid}'
</authenticate>
</db-user-manager>
<native-filesystem case-insensitive="false" create-home="true"/>
</server>
</beans:beans>
File: User Table Structure
FTP_USER Table Structure
Column Type Default value
userid VARCHAR(64), Primary key
userpassword VARCHAR(64)
homedirectory VARCHAR(128)
enableflag BOOLEAN TRUE
writepermission BOOLEAN FALSE
idletime INT 0
uploadrate INT 0
downloadrate INT 0
maxloginnumber INT 0
maxloginperip INT 0
Start server you are good to go