2016-03-10 Juan J. Martinez <juan@memset.com>

 * 0.35
 - Fix in large object support for swiftclient > 2.6.0.
 - Added swiftclient version to the FTP banner.

2015-08-20 Juan J. Martinez <juan@memset.com>

 * 0.34
 - Fixed a bug introduced in 0.33 that was preventing 0 byte files to be
   created. Thanks to Vil for the patch.

2015-07-08 Juan J. Martinez <juan@memset.com>

 * 0.33
 - Fixed a bug in split file support failing to propagate the
   "insecure" option for self-signed certificates. Thanks to "triton7"
   for the patch.
 - Delayed opening connection to Swift when a file is uploaded to avoid
   connection timeouts in ceirtain conditions. Thanks to Vil for the patch.

2015-02-11 Juan J. Martinez <juan@memset.com>

 * 0.32
 - Fixes to hide-part-dir by John Leach to support any segment format.

2014-12-11 Juan J. Martinez <juan@memset.com>

 * 0.31
 - New permit-foreign-addresses configuration token to expose that
   functionality from pyftpdlib. This is useful when the control
   connection is proxified. Check the example configuration file for
   more information. Thanks to Koert van der Veer for the patch.
 - swiftclient requirement updated to be >= 2.1.0.
 - Tokens won't be reused in large files support to avoid broken
   uploads because of expired tokens.
 - Fixed a bug in large files support with UTF-8 encoded filenames.
 - Added error translation in two methods of the file emulation. Accessing
   an unexistent file was resulting in an unhandled exception instead of
   sending an FTP error to the client. Thanks to John Leach for the report.
 - A --config command line option has been added to specify an alternative
   configuration option that will be used instead of the default one in /etc.

2014-10-06 Juan J. Martinez <juan@memset.com>

 * 0.30
 - Migrated to swiftclient >= 2.0.0 and requests. This means older
   versions of the library are not supported, so please upgrade.
 - Added new configuration token "insecure" to allow connections to
   auth servers with invalid SSL certs (eg, self-signed certificates).

   This is a potentially disruptive release, please test before upgrading
   your production systems!

2014-09-19 Juan J. Martinez <juan@memset.com>

 * 0.29
 - Fixed large file support to support non-ascii encodings.

   Thanks to Édouard Puginier for the report!

2014-08-12 Juan J. Martinez <juan@memset.com>

 * 0.28.1
 - Fixed a bug in syslog logging.

2014-08-12 Juan J. Martinez <juan@memset.com>

 * 0.28
 - Better swift connection management avoiding CLOSE_WAIT problems
   with long time FTP sessions.
 - Added new configuration token "rackspace-service-network" to support
   Rackspace's service network as implemented in swiftclient.

2014-05-21 Juan J. Martinez <juan@memset.com>

 * 0.27
 - Added new configuration token "passive-ports" to expose pyftpdlib's
   functionality. Check ftpcloudfs.conf.example for details.
 - Explicitly close connections instead of relying on the garbage
   collector. Some compatibility code has been added for those using
   python-swiftclient < 1.9.0.

2014-05-14 Juan J. Martinez <juan@memset.com>

 * 0.26.2
 - Changed setup.py to force swiftclient 1.9.0 as version 2.x uses
   Requests and we're currently incompatible.

2014-04-10 Juan J. Martinez <juan@memset.com>

 * 0.26.1
 - Fixed a bug in token cache code with auth 2.0 (keystone) when used
   with memcache. The same username in different tenants could get the
   same auth token.

   This bug was introduced in 0.24.

   Thanks to Igor Belikov for the report and the patch!

 - Auth 2.0 support in tests has been improved. 

2014-03-20 Juan J. Martinez <juan@memset.com>

 * 0.26
  This release improves large file support:
  - Large file rename (manifest only, not the parts).
  - Delete large files (manifest and parts are removed).
  - Hide ".part" directory in directory listings.
  - keystone auth support in tests

   Thanks to Sokolov Ilya for his contributions to this release!

2014-02-20 Juan J. Martinez <juan@memset.com>

 * 0.25.3
  This is a small bug-fix release:
  - Added "requests" library support with python-swiftclient >= 2.0.2.
    Thanks to Chmouel Boudjnah for the patch!
  - Fixed a small issue with directory listings and swift 1.9.1, thanks
    to Pedro Perez for the patch!
  - Copyright year bump

2013-12-01 Juan J. Martinez <juan@memset.com>

 * 0.25.1, 0.25.2
  - Fixed a bug in ObjectStorageFS when used in "delayed authentication"
    mode that resulted in a information leak vulnerability in sftp-cloudfs.

    Under certain conditions it was possible to serve a cached directory
    listing from a different user.

2013-11-15 Juan J. Martinez <juan@memset.com>

 * 0.25
  - Large file support added. The server will split big files in parts
    to go over the object size limit of Swift. See 'split-large-files'
    configuration token.

    For further info please read:
  
    http://docs.openstack.org/developer/swift/overview_large_objects.html

2013-11-08 Juan J. Martinez <juan@memset.com>

 * 0.24.3
  - Updated requirements to pyftpdlib >= 1.3.0.

2013-10-17 Juan J. Martinez <juan@memset.com>

 * 0.24.2
  - Fixed a bug in token cache code. The server could get stuck with
    a cached invalid token not requesting a new one.

2013-10-12 Juan J. Martinez <juan@memset.com>

 * 0.24.1
  - Fixed a small bug that prevented users with no privileges to list
    the root directory to access containers with the appropriate ACL.
    This was affecting sftp-cloudfs mainly as some SFTP clients will
    perform 'stat' over a directory before 'cd'. The problem  was
    introduced in 0.23.

2013-10-11 Juan J. Martinez <juan@memset.com>

 * 0.24
  - Introduced an auth token cache when memcache is available.
    Thanks to Vil Surkin for the RFE.

2013-10-02 Juan J. Martinez <juan@memset.com>

 * 0.23.4
  - Fixed a bug listing a directory with more than 10k objects that
    included a virtual directory ('subdir') as last object of a 10k batch.

2013-09-29 Juan J. Martinez <juan@memset.com>

 * 0.23.3
  - Fixed a bug that was preventing non privileged users to log in. That
    was introduced in 0.23.2.

2013-09-29 Juan J. Martinez <juan@memset.com>

 * 0.23.2
  - Fixed a bug that was raising an exception at the first swift operation
    after authentication.

2013-09-08 Juan J. Martinez <juan@memset.com>

 * 0.23.1
  - Fixed a bug that prevented Auth 2.0 (keystone) to work.
    Thanks to Dmitry (cyberflow) for the report.

2013-08-29 Juan J. Martinez <juan@memset.com>

 * 0.23
  ftpcloudfs ported from python-cloudfiles to python-swiftclient
  - Using python-swiftfiles instead of the abandoned python-cloudfiles
  - The code has been tidied up for better maintainability and there are 
    some performance improvements. The functionality should be the same,
	but please test this release before upgrading your production systems!

  From now on the project will focus on OpenStack Object Storage (swift);
  although Rackspace Cloud Files is still compatible.

  If you want to keep using python-cloudfiles, please use ftp-cloudfs 0.22.

2013-07-11 Juan J. Martinez <juan@memset.com>

 * 0.22
  Cache performance improvements
  - Cache management has been improved limiting the calls to memcache
  - Cache entries are now serialized using JSON before being stored in memcache
    (memcache uses pickle by default)
  - Enabled cache compression

 IMPORTANT: this is the last release supporting python-cloudfiles.

2013-06-19 Juan J. Martinez <juan@memset.com>

 * 0.21.1
  Minor fixes and cache regression 
  - Improved logging for socket errors (timeouts mainly)
  - Fixed cache regression that abused cache flushes when using Memcache
  - Proper handling of no user/password logins

2013-06-12 Juan J. Martinez <juan@memset.com>

 * 0.21
  Port to pyftpdlib 1.2.0
  - Using pyftpdlib's MultiprocessFTPServer instead of our pre-fork model.
  - 'workers' configuration token has been removed (it had no effect in new pyftpdlib).
  - fully converted to use unicode (pyftpdlib requirement).

2013-03-15 Juan J. Martinez <juan@memset.com>

  * 0.20.1
  - This will be the last release supporting pyftpdlib <= 0.7.0.
    pyftpdlib 1.0.1 will work with a warning.

2013-02-07 Juan J. Martinez <juan@memset.com>

  * 0.20
  - Auth 2.0 (OpenStack Identity Service 2.0, aka Keystone) support, thanks to
    schuermannkl for his help testing the feature

2013-02-05 Juan J. Martinez <juan@memset.com>

  * 0.19.1
  - Minor release to fix Debian packaging support
  - Copyright year bump

2012-10-30 Juan J. Martinez <juan@memset.com>
  * 0.19
  - Support for manifest file (big files), showing real size/hash
  - Seek support for read operations (FTP REST + RETR support, AKA resume download)

2012-09-12 Juan J. Martinez <juan@memset.com>
  * 0.18
  - Bug fixes in the code to account the max number of connections per IP,
    thanks to Konstantin vz'One Enchant

2012-09-11 Juan J. Martinez <juan@memset.com>
  * 0.17.1
  - Bug fix, code cleaning
   - when the retry code on SSLError fails, an exception was raised making that
     worker crash; thanks to Konstantin vz'One Enchant for the patch

2012-09-07 Juan J. Martinez <juan@memset.com>
  * 0.17
  - Bug fixes from Maxim Mitroshin <mitroshin@selectel.org>
   - Fixed a race condition when checking the max connections per IP
   - More efficient shared cache by limiting the number of Memcache connections

2012-09-04 Juan J. Martinez <juan@memset.com>
  * 0.16
  - Improved logging, including formatting, log in, log out and most important commands

2012-08-31 Juan J. Martinez <juan@memset.com>
  * 0.15
  - Bug fixes
   - Catch SSLErrors on Connection.make_request and retry
   - Added X-Forwarded-For header to PUT requests

2012-06-22 Juan J. Martinez <juan@memset.com>
  * 0.14
   Support for directory listings with more than 10000 objects

2012-06-07 Juan J. Martinez <juan@memset.com>
   * 0.13
    Shared cache bug fixes and improvements
   - Bug fixes
    - the cache failed to invalidate after write operations on the root directory
	- improved cache invalidation
	- tests were modified to run properly with a shared cache enabled server

2012-03-28 Juan J. Martinez <juan@memset.com>
   * 0.12.2
    Minor fix (unrequired cache flush)

2012-03-28 Juan J. Martinez <juan@memset.com>
   * 0.12.1
    Minor fixes (README.rst and version number)

2012-03-27 Juan J. Martinez <juan@memset.com>
   * 0.12
    Small fixes and performance improvements
  - New features
    - Cache code revisited, including support for a shared cache with Memcache

2012-01-03 Juan J. Martinez <juan@memset.com>
   * 0.11
    Fixes and performance improvements
  - Bug fixes
   - use cloudfiles_api_timeout
   - performance improvements on downloads
   - improved logging
   - handle SSL errors

2011-11-24 Juan J. Martinez <juan@memset.com>
   * 0.10
    Fixes, better packaging support and some new features
   - Bug fixes
	   - Fix pypi tarball
	   - Fix debian packaging
   - New features
	   - MD5 FTP extension
	   - Max connections per IP limit
	   - X-Forwarded-For header support in API calls

2011-08-17 Nick Craig-Wood <http://www.craig-wood.com/nick>
   * 0.9
	Mostly bug fixes
   - Bug fixes
       - Fix licence inconsistency
       - Improve cache management to avoid inconsistencies between workers
       - Don't allow DELE on directories
       - Fix masquerade option
       - Fix user and group
       - Fix allowing access to a container even if the root is inaccessible

2011-06-17 Nick Craig-Wood <http://www.craig-wood.com/nick>
   * 0.8
	Lots of fixes and features after extensive load testing
   - Bug fixes
       - Fix cat file bug
       - Fix exceptions on closing files crashing the daemon
       - Fix excessive open files by running garbage collector periodically
       - Fix time parsing (timezone error (times wrong) and floating point parsing)
       - Fix crash on logging unicode strings
       - Fix timeout problems under heavy load
   - New features
       - Daemon improvements: logging, pidfile, drop privileges, syslog, multiple workers
       - Verbose switch
       - Configuration file support
   - Internal reorganisation to make re-usable and testable ftpcloudfs.fs interface

2011-03-18 Chmouel Boudjnah  <chmouel.boudjnah@rackspace.co.uk>
   * 0.7
	A lot of improvement and fixes from Nick Craig-Wood nick@craig-wood.com
	highlights are (see commmit for details) :

   - Pseudo-hierachical folders/directories supported
   - Containers show size in listings
   - Logging in server module
   - Attempt to catch and translate all cloudfiles errors with correct error numbers
   - Rename support
   - Lots of tests

2011-02-19  Chmouel Boudjnah  <chmouel.boudjnah@rackspace.co.uk>
   * 0.6
   - Daemonize ftp-cloudfs with python-daemon.

2011-02-12  Chmouel Boudjnah  <chmouel.boudjnah@rackspace.co.uk>

   * 0.5:
	A lot of improvement and fixes from Nick Craig-Wood nick@craig-wood.com
	highlights are :

	- Make compatible with pyftpd >= 0.6
	- Implement file modification times in RackspaceCloudFilesFS.stat
	- Fix crash if user doesn't have permissions to list containers
	- Remove custom directory list routines and replace with a listdir cache
      to improve compatibility
	- Allow to specify a custom auth url (ie: for OpenStack or UK CloudFiles).

2009-11-02  Chmouel Boudjnah  <chmouel.boudjnah@rackspace.co.uk>

	* server.py (RackspaceCloudAuthorizer.validate_authentication):
	Add servicenet support.

