Apache FtpServer | ![]() |
FTP server based on Apache Avalon
by Rana Bhattacharyya
Overview
FtpServer is a server component for Avalon Phoenix that allows remote FTP client to attach and download files. The client software can be any type of FTP client written in any language. The criteria for eligibility is RFC compliance.
The server uses several components. Some of the components have multiple implementations. For example user management has implementations that will use LDAP, JDBC and Cornerstone's Store facility for storage.
The server has a management console (GUI) that can connect over RMI to the server.
Features
- 100% pure Java, free, open source resumable FTP server!!!
- Multi platform support and multithreaded design.
- User virtual directory, write permission, idle time-out and upload/download bandwidth limitation support.
- You can monitor all the user activities.
- Anonymous login support.
- Both upload and download files are resumable.
- Handles both ASCII and binary data transfers.
- IP restriction support. You can use a limited set of regular expressions (*?[^-]) to specify the allowed/banned IPs.
- The server reloads the user data at a regular interval if necessary.
- Database and LDAP can be used to store user data.
- Default users admin/admin and anonymous will be created by the server when you start it for the first time.
- New user managers can be added very easily by adding new user manager.
- Supports SITE commands. Use SITE HELP to get the available commands.
Components
The ftp server consists of several components. The component implementations and dependencies are declared in ftp-assembly.xml file.
| Name | Description |
|---|---|
| thread-manager | Manages a set of thread pools |
| sockets | A service to manage the socket factories |
| connections | This is the service through which connection management occurs. |
| objectstorage | Manages object repository. |
| user-manager | Handles all ftp server user management. |
| ip-restrictor | It allows/bans the specified IPs depending on the configuration. |
| ftp-server | This is the ftp server starting point. |
| Name> | Interfaces |
|---|---|
| thread-manager | org.apache.avalon.cornerstone.services.threads.ThreadManager |
| sockets | org.apache.avalon.cornerstone.services.sockets.SocketManager |
| connections | org.apache.avalon.cornerstone.services.connection.ConnectionManager |
| objectstorage | org.apache.avalon.cornerstone.services.store.Store |
| user-manager | org.apache.ftpserver.usermanager.UserManagerInterface |
| ip-restrictor | org.apache.ftpserver.ip.IpRestrictorInterface |
| ftp-server | org.apache.ftpserver.ip.FtpServerInterface |
| Name | Dependency |
|---|---|
| connections | thread-manager |
| user-manager | objectstorage (if we use object store based user manager) |
| ftp-server | sockets, connections, ip-restrictor, user-manager |


