Home

Home # Python FTP server library (pyftpdlib)¶ ## About¶ Python FTP server library provides a high-level portable interface to easily write asynchronous FTP servers with Python. pyftpdlib is currently the most complete RFC-959 FTP server implementation available for Python programming language. It is used in projects like Google Chromium and Bazaar and included in Debian, Fedora and FreeBSD package repositories. ## Features¶ Support for FTPS (FTP over TLS/SSL). New in 0.6.0 Native support for virtual users and virtual filesystem. Support for recent FTP commands like MLSD and MLST (RFC-3659). Support for FXP, site-to-site transfers. Support for IPv6 (RFC-2428). NAT/Firewall support with PASV/EPSV passive mode connections. Bandwidth throttling. Support for resumed transfers. Per-user permissions configurability. Maximum connections limit. Per-source-IP limits. Configurable idle timeouts for both control and data channels. Compact: main library is distributed as a single stand-alone module (ftpserver.py). High portability: Entirely written in pure Python, no third party modules are used. It works on any system where select( ) or poll( ) is available. Extremely flexible system of "authorizers" able to manage both "virtual" and "real" users on different platforms (Windows, UNIX, OSX). Works with Python 2.4, 2.5, 2.6 and 2.7. ## Quick start¶
    >>> from pyftpdlib import ftpserver
    >>> authorizer = ftpserver.DummyAuthorizer()
    >>> authorizer.add_user("user", "12345", "/home/user", perm="elradfmw")
    >>> authorizer.add_anonymous("/home/nobody")
    >>> handler = ftpserver.FTPHandler
    >>> handler.authorizer = authorizer
    >>> address = ("127.0.0.1", 21)
    >>> ftpd = ftpserver.FTPServer(address, handler)
    >>> ftpd.serve_forever()
    Serving FTP on 127.0.0.1:21
    []127.0.0.1:2503 connected.
    127.0.0.1:2503 ==> 220 Ready.
    127.0.0.1:2503 <== USER anonymous
    127.0.0.1:2503 ==> 331 Username ok, send password.
    127.0.0.1:2503 <== PASS ******
    127.0.0.1:2503 ==> 230 Login successful.
    [anonymous]@127.0.0.1:2503 User anonymous logged in.
    127.0.0.1:2503 <== TYPE A
    127.0.0.1:2503 ==> 200 Type set to: ASCII.
    127.0.0.1:2503 <== PASV
    127.0.0.1:2503 ==> 227 Entering passive mode (127,0,0,1,9,201).
    127.0.0.1:2503 <== LIST
    127.0.0.1:2503 ==> 150 File status okay. About to open data connection.
    [anonymous]@127.0.0.1:2503 OK LIST "/". Transfer starting.
    127.0.0.1:2503 ==> 226 Transfer complete.
    [anonymous]@127.0.0.1:2503 Transfer complete. 706 bytes transmitted.
    127.0.0.1:2503 <== QUIT
    127.0.0.1:2503 ==> 221 Goodbye.
    [anonymous]@127.0.0.1:2503 Disconnected.
## Discussion group¶ http://groups.google.com/group/pyftpdlib/topics ## Timeline¶ 2010-11-07: version 0.6.0 released. 2010-08-24: pyftpdlib included in peerscape project. 2010-07-15: pyftpdlib included in Faetus project. 2010-07-11: pyftpdlib included in Pyfilesystem project. 2010-06-28: pyftpdlib has been packaged for Debian 2010-04-28: pyftpdlib included in sierramodulepos project. 2010-03-20: http://www.smartfile.com uses pyftpdlib. 2010-01-13: pyftpdlib included in zenftp project. 2009-12-26: pyftpdlib included in Symbian Python FTP server project. 2009-11-04: www.netplay.it uses pyftpdlib. 2009-11-04: www.adcast.tv uses pyftpdlib. 2009-11-04: www.bitsontherun.com uses pyftpdlib. 2009-11-02: pyftpdlib included in ftp-cloudfs project. 2009-09-14: version 0.5.2 released. 2009-08-10: pyftpdlib included in Imgserve project. 2009-07-22: pyftpdlib included in Plumi project. 2009-04-02: pyftpdlib RPM-packaged and ported on Fedora to make users can easily install on it via yum install pyftpdlib. 2009-03-28: pyftpdlib included in Bazaar project. 2009-02-23: pyftpdlib included in ShareFTP project. 2009-01-21: version 0.5.1 released. 2008-12-27: pyftpdlib included in Google Chromium, the open source project behind Google Chrome. 2008-12-27: pyftpdlib ported on GNU Darwin systems to make users can easily install on it. 2008-11-26: pyftpdlib included in OpenERP. 2008-10-26: pyftpdlib included in Python for OpenVMS as standard package. 2008-10-09: pyftpdlib included in Shareme project. 2008-09-20: version 0.5.0 released. 2008-08-10: pyftpdlib included in Manent project. 2008-05-16: version 0.4.0 released. 2008-04-09: pyftpdlib used as backend for gpftpd, an FTP server for managing files hosted on Google Pages. 2008-01-17: version 0.3.0 released. 2007-10-14: pyftpdlib included in Aksy project. 2007-09-17: version 0.2.0 released. 2007-09-08: pyftpdlib included as FarManager plug-in. 2007-03-06: pyftpdlib ported on FreeBSD systems to make users can easily install on it. 2007-03-07: version 0.1.1 released. 2007-02-26: version 0.1.0 released. ## Contribute¶ If you want to help or just give us suggestions about the project and other related things, subscribe to the discussion mailing list. If you want to talk with project team members about pyftpdlib and other related things feel free to contact us at the following addresses:
Name | Country | E-mail | Description
Giampaolo Rodola' | Turin (Italy) | g.rodola at gmail dot com | Original pyftpdlib author and main maintainer.
Jay Loden | New Jersey (USA) | jloden at gmail dot com | OS X and Linux platform development/testing
Janos Guljas |  | janos at janos.in dot rs | Debian package maintainer
Silas Sewell | Denver (USA) | silas at sewell dot ch | Fedora package maintainer
Li-Wen Hsu | Taiwan | lwhsu at freebsd dot org | FreeBSD package maintainer
Feedbacks and suggestions are greatly appreciated as well as new testers and coders willing to join the development. For any bug report, patch proposal or feature request, add an entry into the Issue Tracker. In case you're using pyftpdlib into a software or website of yours, please update the pyftpdlib Adoptions List by adding a comment in the Wiki. Thank you. ## Statistics¶
##  | ##  | ##
## Trademarks¶ Some famous trademarks which adopted pyftpdlib (complete list).