GoldenGate FTP
Please note: All new versions will be located at GitHub under Waarp new project name : http://waarp.github.com/Waarp/ The project still remains Open Source under GPL V3. The GoldenGate project starts with a new fresh FTP server implementation, fully in Java according to the following RFC: It includes also the following extra commands from version 0.9.2:
It is based mainly on the NETTY framework (NIO great framework support) and is tend to be really efficient, both in term of memory, threads and network bandwidth. Bandwidth limitation can be configured both in store and retrieve, per session (although only one value is set by default, but it can be changed dynamically if needed) or globally to the server and of course with no limitation at all if wanted. Limitation should be enough to change the bandwidth behaviour for instance depending on the time in the day, so as to allow to limit bandwidth usage when users are at work and in contrary to allow more speed when only batchs are running.
The specificity of this project is that you can adapt this software to your particular needs by:
The API can be found here! It is a part of the API of the full project. Download is at this page!
Currently this FTP Server handle the following implementations but you can extend it to fit your needs:
So at most, if you want to implement all new, you will have to implement only 7 classes, plus of course the main class one that will launch the server itself.
If you just want a simple FTP Server, then you've just have to instantiate the main class and reused the default implementation that is proposed. The SimpleImpl package shows one example.
Extending the server should not be difficult. For instance, adding a new command is as easy as:
That's it!
Adding a new response code is even easier, you have just to add an entry in FtpReplyCode class.
Extending this FTP server to allow SSH or secured functions should not be too difficult, and it is planned to add them in the future.
This project is in production in the French Ministery of Finances to enable file transfers from an FTP protocol (client side) to an OpenR66 protocol (server side protocol) since end of 2009.
Feel free to test it, ask me or make any feedback you wanted on this project. It will be my pleasure!
|