This release contains **BREAKING CHANGES!**
- Improve configuration:<br>
[(See details)](http://wsgidav.readthedocs.io/en/latest/user_guide_configure.html)
- **Rename some options**, e.g. `acceptDigest` => `http_authenticator.accept_digest`
- WsgiDAVApp constructor now assumes default settings. The passed options
override those.
- Log format is configurable
- Remove option `dir_browser.enabled` (modify `middleware_stack` instead)
- CLI supports `--server=gevent` (gevent must be installed separately)
- SSL paths are evaluated relative to the config file, if any
- Refactor middleware stack
- RequestResolver and WsgiDavDirBrowser are now simple members of `middleware_stack`
and not specially treated
- `middleware_stack` entries can also be strings or dicts that are
evaluated to import and instantiate middleware classes. This allows to
define and configure external middleware in YAML and JSON config files.
- provider_mapping option now supports configuration of custom providers
- Windows XP (Microsoft-WebDAV-MiniRedir/5.1.2600) had a bug
when accessing a share '/dav/': XP sometimes sends digests for '/'.
In v.2.4 a hotfix was also accept '/' instead of the real share.
This is now disabled by default, but can be re-enabled with
hotfixes.winxp_accept_root_share_login: true.
- Refactor code base:
- **Rename methods** according to PEP 8, e.g.
`provider.getResourceInst()` => `provider.get_resource_inst()`.
- **Rename methods arguments** according to PEP 8, e.g.
`provider.set_last_modified(self, destPath, timeStamp, dryRun)`
=> `provider.set_last_modified(self, dest_path, time_stamp, dry_run)`
- Enforce [Black code style](https://github.com/ambv/black)
- Move some modules to separate packages
- Use utf-8 directive in source files (-_- coding: utf-8 -_-)
- Refactor domain_controller and authentication:
- Renamed environ["http_authenticator.realm"], environ["http_authenticator.user_name"]
=> environ["wsgidav.auth.realm"], environ["wsgidav.auth.user_name"]
- DC may define environ["wsgidav.auth.roles"] and environ["wsgidav.auth.permissions"]
- A common base class simplifies implementation of custom DCs.
- New [PAMDomainController](https://en.wikipedia.org/wiki/Pluggable_authentication_module)
allows to authenticate system users on Linux and macOS, for example.
- Digest hash generation is now delegated to DomainControllers. This allows
to implement DomainControllers that support digest access authentication
even if plain-text passwords are not accessible, but stored hashes are.
- Every domain controller now has a config section of its own. E.g.
the `user_mapping` option for `SimpleDomainController` was moved to
`simple_dc.user_mapping`.
- `SimpleDomainController` no longer allows anonymous access by default.
It is now required to pass `simple_dc.user_mapping: "share1": True`.
Also a new pseudo-share `"*"` can be used to define defaults.
A new command line option `--auth` allows quick-configuration of DCs
- Refactor WsgiDirBrowser:
- Use Jinja2 and load static assets through own WsgiDAV provider
- Move to `wsgidav.dir_browser` package
- Option 'dir_browser.ms_sharepoint_support' replaces ms_sharepoint_plugin and ms_sharepoint_urls
- Automated [Docker builds](https://hub.docker.com/r/mar10/wsgidav/)
- MSI installer
- uses Cheroot/6.4 Python 3.6
- Includes NTDomainController
- 112: Added limited support for Microsoft's Win32LastModified property.
- Fix 123: HEAD request on DirBrowser folder
- Fix 141: issue when 'sys.stdout' is none