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
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.