radicale/NEWS.md

494 lines
16 KiB
Markdown
Raw Normal View History

2020-04-26 16:31:52 +02:00
# News
2011-09-27 07:54:26 +02:00
2020-04-26 16:33:01 +02:00
## master
2020-09-14 21:35:24 +02:00
## 3.0.6
* Allow web plugins to handle POST requests
2020-08-31 13:54:50 +02:00
## 3.0.5
* Start storage hook in own process group
* Kill storage hook on error or exit
* Try to kill child processes of storage hook
* Internal Server: Exit immediately when signal is received (do not wait for clients or storage hook to finish)
2020-08-18 22:57:17 +02:00
## 3.0.4
* Fix internal server on FreeBSD
2020-06-06 21:07:27 +02:00
## 3.0.3
* Fix internal server on OpenBSD
2020-05-24 13:47:42 +02:00
## 3.0.2
* Use 403 response for supported-report and valid-sync-token errors
* Internal server: Handle missing IPv6 support
2020-05-22 16:37:27 +02:00
## 3.0.1
* Fix XML error messages
2020-05-19 05:21:17 +02:00
## 3.0.0
2020-04-27 12:29:29 +02:00
This release is incompatible with previous releases.
See the upgrade checklist below.
2020-04-26 16:33:01 +02:00
2020-04-27 12:29:29 +02:00
* Parallel write requests
* Support PyPy
* Protect against XML denial-of-service attacks
* Check for duplicated UIDs in calendars/address books
* Only add missing UIDs for uploaded whole calendars/address books
* Switch from md5 to sha256 for UIDs and tokens
* Code cleanup:
* All plugin interfaces were simplified and are incompatible with
old plugins
* Major refactor
* Never sanitize paths multiple times (check if they are sanitized)
2020-04-26 16:33:01 +02:00
* Config
2020-04-27 12:29:29 +02:00
* Multiple configuration files separated by ``:`` (resp. ``;``
on Windows)
2020-04-26 16:47:11 +02:00
* Optional configuration files by prepending file path with ``?``
2020-04-27 12:29:29 +02:00
* Check validity of every configuration file and command line
arguments separately
* Report the source of invalid configuration parameters in
error messages
2020-04-26 16:33:01 +02:00
* Code cleanup:
* Store configuration as parsed values
2020-04-27 12:29:29 +02:00
* Use Schema that describes configuration and allow plugins to apply
their own schemas
2020-04-26 16:38:21 +02:00
* Mark internal settings with ``_``
2020-04-26 16:33:01 +02:00
* Internal server
* Bind to IPv4 and IPv6 address, when both are available for hostname
* Set default address to ``localhost:5232``
2020-04-27 12:29:29 +02:00
* Remove settings for SSL ciphers and protocol versions (enforce safe
defaults instead)
2020-04-26 16:33:01 +02:00
* Remove settings for file locking because they are of little use
* Remove daemonization (should be handled by service managers)
* Logging
2020-04-27 12:29:29 +02:00
* Replace complex Python logger configuration with simple
``logging.level`` setting
2020-04-26 16:33:01 +02:00
* Write PID and ``threadName`` instead of cryptic id's in log messages
* Use ``wsgi.errors`` for logging (as required by the WSGI spec)
* Code cleanup:
2020-04-27 12:29:29 +02:00
* Don't pass logger object around (use ``logging.getLogger()``
instead)
2020-04-26 16:33:01 +02:00
* Auth
* Use ``md5`` as default for ``htpasswd_encryption`` setting
* Move setting ``realm`` from section ``server`` to ``auth``
* Rights
2020-04-27 12:29:29 +02:00
* Use permissions ``RW`` for non-leaf collections and ``rw`` for
address books/calendars
2020-04-26 16:33:01 +02:00
* New permission ``i`` that only allows access with HTTP method GET
(CalDAV/CardDAV is susceptible to expensive search requests)
* Web
* Add upload dialog for calendars/address books from file
* Show startup loading message
* Show warning if JavaScript is disabled
* Pass HTML Validator
* Storage
2020-04-26 16:47:11 +02:00
* Check for missing UIDs in items
2020-04-26 16:33:01 +02:00
* Check for child collections in address books and calendars
* Code cleanup:
* Split BaseCollection in BaseStorage and BaseCollection
## Upgrade checklist
2020-04-27 12:29:29 +02:00
* Config
2020-04-26 16:33:01 +02:00
* Some settings were removed
* The default of ``auth.htpasswd_encryption`` changed to ``md5``
2020-05-24 10:02:03 +02:00
* The setting ``server.realm`` moved to ``auth.realm``
* The setting ``logging.debug`` was replaced by ``logging.level``
2020-04-26 16:33:01 +02:00
* The format of the ``rights.file`` configuration file changed:
2020-04-26 16:38:21 +02:00
* Permission ``r`` replaced by ``Rr``
* Permission ``w`` replaced by ``Ww``
* New permission ``i`` added as subset of ``r``
2020-04-26 16:33:01 +02:00
* Replaced variable ``%(login)s`` by ``{user}``
* Removed variable ``%(path)s``
2020-04-26 16:38:21 +02:00
* ``{`` must be escaped as ``{{`` and ``}`` as ``}}`` in regexes
2020-04-26 16:47:11 +02:00
* File system storage
2020-04-26 16:33:01 +02:00
* The storage format is compatible with Radicale 2.x.x
2020-05-24 11:42:49 +02:00
* Run ``radicale --verify-storage`` to check for errors
2020-04-26 16:33:01 +02:00
* Custom plugins:
* ``auth`` and ``web`` plugins require minor adjustments
* ``rights`` plugins must be adapted to the new permission model
* ``storage`` plugins require major changes
2020-04-26 16:31:52 +02:00
## 2.1.10 - Wild Radish
2018-08-14 19:35:25 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Update required versions for dependencies
* Get ``RADICALE_CONFIG`` from WSGI environ
* Improve HTTP status codes
* Fix race condition in storage lock creation
* Raise default limits for content length and timeout
* Log output from hook
2018-08-14 19:35:25 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.9 - Wild Radish
2018-04-20 22:53:42 +02:00
2018-04-21 10:45:01 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Specify versions for dependencies
* Move WSGI initialization into module
* Check if ``REPORT`` method is actually supported
* Include ``rights`` file in source distribution
* Specify ``md5`` and ``bcrypt`` as extras
* Improve logging messages
* Windows: Fix crash when item path is a directory
2018-04-20 22:53:42 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.8 - Wild Radish
2017-09-24 02:01:14 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Flush files before fsync'ing
2017-09-24 02:01:14 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.7 - Wild Radish
2017-09-17 14:04:04 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Don't print warning when cache format changes
* Add documentation for ``BaseAuth``
* Add ``is_authenticated2(login, user, password)`` to ``BaseAuth``
* Fix names of custom properties in PROPFIND requests with
``D:propname`` or ``D:allprop``
* Return all properties in PROPFIND requests with ``D:propname`` or
``D:allprop``
* Allow ``D:displayname`` property on all collections
* Answer with ``D:unauthenticated`` for ``D:current-user-principal`` property
when not logged in
* Remove non-existing ``ICAL:calendar-color`` and ``C:calendar-timezone``
properties from PROPFIND requests with ``D:propname`` or ``D:allprop``
* Add ``D:owner`` property to calendar and address book objects
* Remove ``D:getetag`` and ``D:getlastmodified`` properties from regular
collections
## 2.1.6 - Wild Radish
2017-09-11 19:32:34 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Fix content-type of VLIST
* Specify correct COMPONENT in content-type of VCALENDAR
* Cache COMPONENT of calendar objects (improves speed with some clients)
* Stricter parsing of filters
* Improve support for CardDAV filter
* Fix some smaller bugs in CalDAV filter
* Add X-WR-CALNAME and X-WR-CALDESC to calendars downloaded via HTTP/WebDAV
* Use X-WR-CALNAME and X-WR-CALDESC from calendars published via WebDAV
2017-09-11 19:32:34 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.5 - Wild Radish
2017-08-25 19:13:11 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Add ``--verify-storage`` command-line argument
* Allow comments in the htpasswd file
* Don't strip whitespaces from user names and passwords in the htpasswd file
* Remove cookies from logging output
* Allow uploads of whole collections with many components
* Show warning message if server.timeout is used with Python < 3.5.2
2017-08-25 19:13:11 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.4 - Wild Radish
2017-08-04 14:59:03 +02:00
This release is compatible with version 2.0.0.
2017-08-04 14:59:03 +02:00
2020-04-26 16:31:52 +02:00
* Fix incorrect time range matching and calculation for some edge-cases with
rescheduled recurrences
* Fix owner property
2017-08-04 14:59:03 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.3 - Wild Radish
2017-08-01 17:18:13 +02:00
This release is compatible with version 2.0.0.
2017-08-01 17:18:13 +02:00
2020-04-26 16:31:52 +02:00
* Enable timeout for SSL handshakes and move them out of the main thread
* Create cache entries during upload of items
* Stop built-in server on Windows when Ctrl+C is pressed
* Prevent slow down when multiple requests hit a collection during cache warm-up
2017-08-01 17:18:13 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.2 - Wild Radish
2017-07-24 04:22:57 +02:00
This release is compatible with version 2.0.0.
2017-07-24 04:22:57 +02:00
2020-04-26 16:31:52 +02:00
* Remove workarounds for bugs in VObject < 0.9.5
* Error checking of collection tags and associated components
* Improve error checking of uploaded collections and components
* Don't delete empty collection properties implicitly
* Improve logging of VObject serialization
2017-07-24 04:22:57 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.1 - Wild Radish Again
2017-07-01 00:12:04 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Add missing UIDs instead of failing
* Improve error checking of calendar and address book objects
* Fix upload of whole address books
2017-07-01 00:12:04 +02:00
2020-04-26 16:31:52 +02:00
## 2.1.0 - Wild Radish
2017-06-17 01:45:53 +02:00
This release is compatible with version 2.0.0.
2020-04-26 16:31:52 +02:00
* Built-in web interface for creating and managing address books and calendars
* can be extended with web plugins
* Much faster storage backend
* Significant reduction in memory usage
* Improved logging
* Include paths (of invalid items / requests) in log messages
* Include configuration values causing problems in log messages
* Log warning message for invalid requests by clients
* Log error message for invalid files in the storage backend
* No stack traces unless debugging is enabled
* Time range filter also regards overwritten recurrences
* Items that couldn't be filtered because of bugs in VObject are always
returned (and a warning message is logged)
* Basic error checking of configuration files
* File system locking isn't disabled implicitly anymore, instead a new
configuration option gets introduced
* The permissions of the lock file are not changed anymore
* Support for sync-token
* Support for client-side SSL certificates
* Rights plugins can decide if access to an item is granted explicitly
* Respond with 403 instead of 404 for principal collections of non-existing
users when ``owner_only`` plugin is used (information leakage)
* Authentication plugins can provide the login and password from the
environment
* new ``remote_user`` plugin, that gets the login from the ``REMOTE_USER``
environment variable (for WSGI server)
* new ``http_x_remote_user`` plugin, that gets the login from the
``X-Remote-User`` HTTP header (for reverse proxies)
## 2.0.0 - Little Big Radish
2017-04-15 15:51:05 +02:00
2020-03-28 09:36:06 +01:00
This feature is not compatible with the 1.x.x versions. Follow our
[migration guide](https://radicale.org/2.1.html#documentation/migration-from-1xx-to-2xx) if you want to switch from 1.x.x to
2017-04-15 15:51:05 +02:00
2.0.0.
2020-04-26 16:31:52 +02:00
* Support Python 3.3+ only, Python 2 is not supported anymore
* Keep only one simple filesystem-based storage system
* Remove built-in Git support
* Remove built-in authentication modules
* Keep the WSGI interface, use Python HTTP server by default
* Use a real iCal parser, rely on the "vobject" external module
* Add a solid calendar discovery
* Respect the difference between "files" and "folders", don't rely on slashes
* Remove the calendar creation with GET requests
* Be stateless
* Use a file locker
* Add threading
* Get atomic writes
* Support new filters
* Support read-only permissions
* Allow External plugins for authentication, rights management, storage and
version control
2017-04-15 15:51:05 +02:00
2020-04-26 16:31:52 +02:00
## 1.1.4 - Fifth Law of Nature
2017-06-25 09:55:41 +02:00
2020-04-26 16:31:52 +02:00
* Use ``shutil.move`` for ``--export-storage``
2017-06-25 09:55:41 +02:00
2020-04-26 16:31:52 +02:00
## 1.1.3 - Fourth Law of Nature
2017-05-27 11:15:57 +02:00
2020-04-26 16:31:52 +02:00
* Add a ``--export-storage=FOLDER`` command-line argument (by Unrud, see #606)
2017-05-27 11:15:57 +02:00
2020-04-26 16:31:52 +02:00
## 1.1.2 - Third Law of Nature
2017-04-19 14:04:09 +02:00
2020-04-26 16:31:52 +02:00
* **Security fix**: Add a random timer to avoid timing oracles and simple
bruteforce attacks when using the htpasswd authentication method.
* Various minor fixes.
2017-04-19 14:04:09 +02:00
2020-04-26 16:31:52 +02:00
## 1.1.1 - Second Law of Nature
2016-01-07 23:31:19 +01:00
2020-04-26 16:31:52 +02:00
* Fix the owner_write rights rule
2016-01-07 23:31:19 +01:00
2020-04-26 16:31:52 +02:00
## 1.1 - Law of Nature
2015-12-31 12:51:23 +01:00
One feature in this release is **not backward compatible**:
2020-04-26 16:31:52 +02:00
* Use the first matching section for rights (inspired from daald)
2015-12-31 12:51:23 +01:00
Now, the first section matching the path and current user in your custom rights
file is used. In the previous versions, the most permissive rights of all the
matching sections were applied. This new behaviour gives a simple way to make
specific rules at the top of the file independant from the generic ones.
Many **improvements in this release are related to security**, you should
upgrade Radicale as soon as possible:
2020-04-26 16:31:52 +02:00
* Improve the regex used for well-known URIs (by Unrud)
* Prevent regex injection in rights management (by Unrud)
* Prevent crafted HTTP request from calling arbitrary functions (by Unrud)
* Improve URI sanitation and conversion to filesystem path (by Unrud)
* Decouple the daemon from its parent environment (by Unrud)
2015-12-31 12:51:23 +01:00
Some bugs have been fixed and little enhancements have been added:
2020-04-26 16:31:52 +02:00
* Assign new items to corret key (by Unrud)
* Avoid race condition in PID file creation (by Unrud)
* Improve the docker version (by cdpb)
* Encode message and commiter for git commits
* Test with Python 3.5
2015-12-31 12:51:23 +01:00
2020-04-26 16:31:52 +02:00
## 1.0.1 - Sunflower Again
2015-09-21 12:14:51 +02:00
2020-04-26 16:31:52 +02:00
* Update the version because of a **stupid** "feature"™ of PyPI
2015-09-21 12:14:51 +02:00
2020-04-26 16:31:52 +02:00
## 1.0 - Sunflower
2015-02-07 14:39:00 +01:00
2020-04-26 16:31:52 +02:00
* Enhanced performances (by Mathieu Dupuy)
* Add MD5-APR1 and BCRYPT for htpasswd-based authentication (by Jan-Philip Gehrcke)
* Use PAM service (by Stephen Paul Weber)
* Don't discard PROPPATCH on empty collections (by Markus Unterwaditzer)
* Write the path of the collection in the git message (by Matthew Monaco)
* Tests launched on Travis
2015-02-07 14:39:00 +01:00
2020-04-26 16:31:52 +02:00
## 0.10 - Lovely Endless Grass
2014-11-01 15:52:55 +01:00
2020-04-26 16:31:52 +02:00
* Support well-known URLs (by Mathieu Dupuy)
* Fix collection discovery (by Markus Unterwaditzer)
* Reload logger config on SIGHUP (by Élie Bouttier)
* Remove props files when deleting a collection (by Vincent Untz)
* Support salted SHA1 passwords (by Marc Kleine-Budde)
* Don't spam the logs about non-SSL IMAP connections to localhost (by Giel van Schijndel)
2014-11-01 15:52:55 +01:00
2020-04-26 16:31:52 +02:00
## 0.9 - Rivers
2013-08-23 15:58:13 +02:00
2020-04-26 16:31:52 +02:00
* Custom handlers for auth, storage and rights (by Sergey Fursov)
* 1-file-per-event storage (by Jean-Marc Martins)
* Git support for filesystem storages (by Jean-Marc Martins)
* DB storage working with PostgreSQL, MariaDB and SQLite (by Jean-Marc Martins)
* Clean rights manager based on regular expressions (by Sweil)
* Support of contacts for Apple's clients
* Support colors (by Jochen Sprickerhof)
* Decode URLs in XML (by Jean-Marc Martins)
* Fix PAM authentication (by Stepan Henek)
* Use consistent etags (by 9m66p93w)
* Use consistent sorting order (by Daniel Danner)
* Return 401 on unauthorized DELETE requests (by Eduard Braun)
* Move pid file creation in child process (by Mathieu Dupuy)
* Allow requests without base_prefix (by jheidemann)
2013-08-23 15:58:13 +02:00
2020-04-26 16:31:52 +02:00
## 0.8 - Rainbow
2013-07-09 13:08:15 +02:00
2020-04-26 16:31:52 +02:00
* New authentication and rights management modules (by Matthias Jordan)
* Experimental database storage
* Command-line option for custom configuration file (by Mark Adams)
* Root URL not at the root of a domain (by Clint Adams, Fabrice Bellet, Vincent Untz)
* Improved support for iCal, CalDAVSync, CardDAVSync, CalDavZAP and CardDavMATE
* Empty PROPFIND requests handled (by Christoph Polcin)
* Colon allowed in passwords
* Configurable realm message
2013-07-09 13:08:15 +02:00
2020-04-26 16:31:52 +02:00
## 0.7.1 - Waterfalls
2012-08-03 14:37:02 +02:00
2020-04-26 16:31:52 +02:00
* Many address books fixes
* New IMAP ACL (by Daniel Aleksandersen)
* PAM ACL fixed (by Daniel Aleksandersen)
* Courier ACL fixed (by Benjamin Frank)
* Always set display name to collections (by Oskari Timperi)
* Various DELETE responses fixed
2012-08-03 14:37:02 +02:00
2020-04-26 16:31:52 +02:00
## 0.7 - Eternal Sunshine
2011-11-04 01:06:50 +01:00
2020-04-26 16:31:52 +02:00
* Repeating events
* Collection deletion
* Courier and PAM authentication methods
* CardDAV support
* Custom LDAP filters supported
2020-04-26 16:31:52 +02:00
## 0.6.4 - Tulips
2020-04-26 16:31:52 +02:00
* Fix the installation with Python 3.1
2011-11-04 01:06:50 +01:00
2020-04-26 16:31:52 +02:00
## 0.6.3 - Red Roses
2011-10-24 18:05:07 +02:00
2020-04-26 16:31:52 +02:00
* MOVE requests fixed
* Faster REPORT answers
* Executable script moved into the package
2011-10-24 18:05:07 +02:00
2020-04-26 16:31:52 +02:00
## 0.6.2 - Seeds
2011-09-27 07:54:26 +02:00
2020-04-26 16:31:52 +02:00
* iPhone and iPad support fixed
* Backslashes replaced by slashes in PROPFIND answers on Windows
* PyPI archive set as default download URL
2011-09-27 07:54:26 +02:00
2020-04-26 16:31:52 +02:00
## 0.6.1 - Growing Up
2011-08-27 13:29:38 +02:00
2020-04-26 16:31:52 +02:00
* Example files included in the tarball
* htpasswd support fixed
* Redirection loop bug fixed
* Testing message on GET requests
2011-08-27 13:29:38 +02:00
2020-04-26 16:31:52 +02:00
## 0.6 - Sapling
2011-04-02 22:34:04 +02:00
2020-04-26 16:31:52 +02:00
* WSGI support
* IPv6 support
* Smart, verbose and configurable logs
* Apple iCal 4 and iPhone support (by Łukasz Langa)
* KDE KOrganizer support
* LDAP auth backend (by Corentin Le Bail)
* Public and private calendars (by René Neumann)
* PID file
* MOVE requests management
* Journal entries support
* Drop Python 2.5 support
2011-04-02 22:34:04 +02:00
2020-04-26 16:31:52 +02:00
## 0.5 - Historical Artifacts
2010-12-29 18:58:54 +01:00
2020-04-26 16:31:52 +02:00
* Calendar depth
* MacOS and Windows support
* HEAD requests management
* htpasswd user from calendar path
2010-12-29 18:58:54 +01:00
2020-04-26 16:31:52 +02:00
## 0.4 - Hot Days Back
2020-04-26 16:31:52 +02:00
* Personal calendars
* Last-Modified HTTP header
* ``no-ssl`` and ``foreground`` options
* Default configuration file
2020-04-26 16:31:52 +02:00
## 0.3 - Dancing Flowers
2010-04-19 16:07:32 +02:00
2020-04-26 16:31:52 +02:00
* Evolution support
* Version management
2020-04-26 16:31:52 +02:00
## 0.2 - Snowflakes
2010-01-22 21:22:38 +01:00
2020-04-26 16:31:52 +02:00
* Sunbird pre-1.0 support
* SSL connection
* Htpasswd authentication
* Daemon mode
* User configuration
* Twisted dependency removed
* Python 3 support
* Real URLs for PUT and DELETE
* Concurrent modification reported to users
* Many bugs fixed (by Roger Wenham)
2010-01-22 21:22:38 +01:00
2020-04-26 16:31:52 +02:00
## 0.1 - Crazy Vegetables
2009-09-01 15:59:18 +02:00
2020-04-26 16:31:52 +02:00
* First release
* Lightning/Sunbird 0.9 compatibility
* Easy installer