*** This is a dump of a HTML file that lives at: http://amoeba.collude.com.au/lightftpserver/ ***

This is the second release. Console logging is now the default logging mechanism. Please make sure you modify config.xml in the /bin directory to specify the users you wish to have access to your FTP site. 

Thanks all! Enjoy!
-Joel.







LightFTPServer - a small lightweight subset implementation of the FTP RFC spec in C# .NET  

To put quite simply - this is a C# FTP Server with source code included. It's a three day hack, as are most of the small lightweight programs I put up on this site, and does not represent what a FTP Server source code base should look like. 

What it can do: 

Supports most of the common FTP commands that FTP clients like CuteFTP and LeechFTP support. 
Upload and download files 
Delete files 
Restrict a user to their home directory and further subdirectories. 
Late bind to a logging assembly (create your own logging infrastructure)
What it can't do: 

It's not secure! 
It's definately not secure! 
It's not extensible. 
Security! 
Idle timeout. 
What it may be able to do in the future: 

Active directory authentication 
AD physical directory authentication 
Impersonation 
Command parsing (for a heavier weight security focus) 
Late bound loading of authentication assemblies. 
Support the new Whidbey FtpWebListener namespace 
Quota support 
Some sort of user tracking system, ala IIS, to recycle resources and do tracking of some sort. 

Downloads

LightFTPServer [version 1.0.0.0 (beta 2)] .NET 1.1 runtime

February 2004
- Second Release, lots of cleanup after performance analysis. Fixed a gaping 100% cpu consumption hole, cleaned up the security stuff (still not perfect). Applied FxCop fixes. Made Console logging the default logging mechanism.


LightFTPServer [version 0.0.1 (beta)] .NET 1.1 runtime

November 2003
- First release

Readme 

The late binding of assemblies that perform the logging functions of the FTP server is a great example of the use of the Reflection namespace. At the command line, specify the full path and filename of the assembly which implements the LightFTPServerLogInterface.LogOutput interface, and the system will bind and use that assembly for it's command session logging. 

An example of redirecting all logging to the console:

c:\LightFTPServer\bin\Debug> LightFTP.exe ..\..\ConsoleLog\bin\Debug\ConsoleLog.dll

The textfile logoutput assembly included in this distribution has a known file locking bug - basically, if a user is logged in twice or more, exceptions are thrown. I included it because I don't particularly care about it. =) Feel free to implement some sort of Class factory that dishes out a singleton reference for each valid user. 


Please send me comments and feedback! e-mail me joel@collude.com.au. 

Last updated February 2004
