ReleaseNotes06

ReleaseNotes06 pyftpdlib 0.6.x series release notes. # Version: 0.6.0 - Date: 2010-01-24¶ ## Enhancements¶ Issue 68: added full FTPS (FTP over SSL/TLS) support. Issue 86: pyftpdlib now reports all ls and MDTM timestamps as GMT times, as recommended in RFC-3659. A `FTPHandler.use_gmt_times` attributed has been added and can be set to False in case local times are desired instead. Issue 124: pyftpdlib now accepts command line options to configure a stand alone anonymous FTP server when running pyftpdlib with python's -m option. Issue 127: `added FTPHandler.masquerade_address_map` option which allows you to define multiple 1 to 1 mappings in case you run a FTP server with multiple private IP addresses behind a NAT firewall with multiple public IP addresses. Issue 128: files and directories owner and group names and `os.readlink` are now resolved via `AbstractedFS` methods instead of in `format_list()`. Issue 129: added 3 new callbacks to `FTPHandler` class: `on_incomplete_file_sent()`, `on_incomplete_file_received()` and `on_login()`. Issue 130: added `UnixAuthorizer` and `WindowsAuthorizer` classes defined in the new `pyftpdlib.contrib.authorizers` module. Issue 131: pyftpdlib is now able to serve both IPv4 and IPv6 at the same time by using a single socket. Issue 133: `AbstractedFS` constructor now accepts two argumets: `root` and `cmd_channel` breaking compatibility with previous version. Also, `root` and `cwd` attributes became properties. The previous bug consisting in re-setting the root from the ftp handler after user login has been fixed to ease the development of subclasses. Issue 134: enabled TCP_NODELAY socket option for the FTP command channels resulting in pyftpdlib being twice faster. Issue 135: Python 2.3 support has been removed. Issue 137: added new `pyftpdlib.contrib.filesystems` module within `UnixFilesystem` class which permits the client to escape its home directory and navigate the real filesystem. Issue 138: added `DTPHandler.get_elapsed_time()` method which returns the transfer elapsed time in seconds. ## Bugfixes¶ Issue 120: an `ActiveDTP` instance is not garbage collected in case a client issuing PORT disconnects before establishing the data connection. Issue 122: a wrong variable name was used in `AbstractedFS.validpath` method. Issue 123: PORT command doesn't bind to correct address in case an alias is created for the local network interface. Issue 140: pathnames returned in PWD response should have double-quotes '"' escaped. ## API changes since 0.5.2¶ removed support for Python 2.3. all classes are now new-style classes. Added a new package in pyftpdlib namespace: "contrib". Modules (and classes) defined here: `pyftpdlib.contrib.handlers.py` (`TLS_FTPHandler`, `TLS_FTPHandlerFactory`) `pyftpdlib.contrib.authorizers.py` (`UnixAuthorizer`, `WindowsAuthorizer`) `pyftpdlib.contrib.filesystems` (`UnixFilesystem`) `AbstractedFS` class: `__init__` method now accepts two arguments: `root` and `cmd_channel`. `root` and `cwd` attributes are now read-only properties. 3 new methods have been added: `get_user_by_uid()` `get_group_by_gid()` `readlink()` `FTPHandler` class: new class attributes: `use_gmt_times` `tcp_no_delay` `masquerade_address_map` new methods: `on_incomplete_file_sent()` `on_incomplete_file_received()` `on_login()` `proto_cmds` class attribute has been added. The `FTPHandler` class no longer relies on `ftpserver.proto_cmds` global dictionary but on `ftpserver.FTPHandler.proto_cmds` instead. `FTPServer` class: `max_cons` attribute defaults to 512 by default instead of 0 (unlimited). `DummyAuthorizer` class: `ValueError` exceptions are now raised instead of `AuthorizerError` `DTPHandler` class: `get_elapsed_time()` method has been added. ## Migration notes¶ Some of the changes introduced in 0.6.0 break compatibility with previous 0.5.x serie. In particular you should be careful in case you're using a customized file system class defining an `__init__` method since `AbstractedFS` constructor now expects two arguments.