|
Portable
FTP daemon project
Date: 2006-Sep-26
Name: Portable FTP daemon project (pftpd)
Current version: v0.1-beta
Status: Experimental
Programming language: Python
Author: billiejoex
License: GNU
Web: http://billiejoex.altervista.org
What
is Portable FTP daemon project (pftpd)?
Pftpd is
a proof of concept FTP daemon implementation entirely written
in pure Python. It can work under normal user account and does
not require any
special rights to start. Thanks to Python interpreter, the internal
database password and the virtual path file-system abstraction
it is extremely system undependant.
Currently
supported FTP commands
| USER
/ PASS |
user
authentication |
| PASV
/ PORT |
active
/ passive FTP |
LIST
|
list
files and directories |
| PWD |
get
current directory |
| CWD |
change
current directory |
| CDUP |
go
to parent directory |
| MKD |
create
new directory |
| RMD |
remove
directory |
| MKD |
create
directory |
| DELE |
remove
file |
| RNFR
/ RNTO |
rename
file / directory |
| SIZE |
getting
file size |
| SYST |
getting
system type |
| TYPE
|
setting
transfer type (binary or ASCII) |
| NOOP |
do
nothing |
| STOR |
upload
file |
| RETR |
download
file |
| ABOR
|
stop
transfer |
| QUIT |
disconnect |
Download
Sources:
[src]-pftpd_v0.1.tar.gz
Win32 standalone
executable:
[w32-bin]-pftpd_v0.1.zip
Requirements
The easiest
thing you can do, if you are a Windows user, is using the precompiled
binary stand alone distribution without installing Python iterpreter.
To run pftpd on all other systems you'll only need Python
2.5 interpreter installed.
You can get it from http://www.python.org.
Pftpd claims to be the most portable as possible: for this reasons
no third-party packages are required.
Usage
Unpack
pftpd distribution into a directory, edit pftpd.conf
depending on your needs and run pftpd.py from command line.
That's all.
For further details about how to configure it and use advanced
features take a look at "Installing pftpd on Linux" section
treated later.
Performance
Pftpd uses
multiple threads which means it manages the memory in quite
an efficient way. Here are some tests I made by running pftpd
on my AMD Athlon 2000+, 1Gb RAM, by using Python2.5:
|
Benchmark
Type
|
Windows
XP SP2
|
Linux
Debian 2.4.x
|
|
Download
|
about
34000 Kb/sec
|
about
32000 Kb/sec
|
|
Upload
|
about
9200 Kb/sec
|
about
10100 Kb/sec
|
|
Memory
usage
|
2328
Kb
|
2512
Kb
|
Bug(s)
Surely.
To
do
- FTP
over SSL support.
- Bandwidth
throttling.
- Windows
system service support.
- Support
for resumed Upload / Downloads.
- NAT/Firewall
support with PASV (passive) mode connections.
- PASV/PORT
connection stealing protection.
- IP-Based
access control.
- Encrypted
database password caching.
Warnings
This first beta release version has some known bugs not yet
fixed and many features not yet implemented. It's a working
FTP server implementation, supporting the main FTP commands,
that has been tested with major FTP clients: MS Internet Explorer,
Mozilla Firefox, Bullet proof FTP, Cute FTP, Konqueror, gftp
and Windows & Linux command line FTP client.
As far as I can say... it works, but don't use it in production.
|