Version: 0.4.0 - Date: 2008-05-16

Major enhancements

Bugfixes

API changes since 0.3.0

Migration notes

Changes applied to the 0.4.0 trunk are fully compatible with the previous 0.3.0 version. Your existing 0.3.0 based code will most likely work without need to be modified. The new features in this release are detailed below.

IPv6

Starting from version 0.4.0 pyftpdlib supports IPv6 (RFC-2428). If you use IPv6 and want your FTP server to do so just pass a valid IPv6 address to the FTPServer class constructor which now accepts both IPv4 and IPv6 address types. Example:

>>> from pyftpdlib import ftpserver
>>> address = ("::1", 21)  # listen on localhost, port 21
>>> ftpd = ftpserver.FTPServer(address, ftpserver.FTPHandler)
>>> ftpd.serve_forever()
Serving FTP on ::1:21

Real users impersonation

Two new methods have been added to the original DummyAuthorizer class: impersonate_user() and terminate_impersonation().
System dependent authorizers subclassing the dummy authorizer can now assume the id of real users by overriding them as necessary.
Every time the FTP server is going to access the filesystem (e.g. for creating or renaming a file) it will temporarily impersonate the currently logged on user, execute the filesystem call and then switch back to the user who originally started the server.
Example UNIX and Windows FTP servers contained in the demo directory implement real user impersonation.