All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Own module
mod_auth_socket, duplicating most ofmod_auth_external, but without requiring manual rename. Just use it instead ofmod_auth_external. It is configurable withsocket_auth_*instead ofexternal_auth_*, but already preconfigured to talk to@localhost:23663. Note thatexternal_auth_commandis nowsocket_auth_connection; all others are renamed 1:1.
- Port numbers in Prosody documentation
- Ejabberd cache documentation reference
xcrefreshrosterto clear a faulty roster cache.xcdeluserto clear most user-specific information maintained byxcauth(Nextcloud and ejabberd also maintain their own).xcdelgroupto delete a group fromxcauthand ejabberd.xcdelhostto delete all entries of a virtual host fromxcauth.
The four entries above are meant to clean entries for privacy, e.g. related to GDPR. They only clean information inxcauth, not in Nextcloud or ejabberd. More information intools/README.md.
- Handle empty roster information
- Handle interactive sessions again
- Group names ending in U+200B (Zero Width Space) are ignored. This allows the Nextcloud admin to blacklist some of the groups (typically large ones).
- Handles underlying file rotation for the log file (not the error file)
- Logrotate: Restart
xcauth(the name of the process when installed using the.debpackage)
- Internal state about roster groups was not updated correctly. This could have lead to wrong group memberships.
- Symlinks to
ejabberdctldo not work as expected, so changed documentation intools/xcejabberdctl.shfor the case thatejabberdctlis not installed as/usr/sbin/ejabberdctl. xcejabberdctlnow no longer requires a sudo password- Files in Debian packages are now installed with the correct build time
make testsruns the Perl online tests (again)
- Renamed
asynctoasync_for Python 3.7 compatibility (#71, #72) - Now full names for ejabberd are set whenever the user's name in Nextcloud has changed; as soon as that user or any of his group members logs in again. It used to be that it was (essentially) only set once. See jsxc/jsxc#655. We consider this to be the best compromise between automation (the user does not need to care) and leaving the user in charge of his/her ejabberd vCard, as changing the full name in Nextcloud should be rare (typically, when the user really has a legal name change).
- Have a valid default
type=in/etc/xcauth.confto reduce required configuration steps xcrestartstopsxcauth.serviceas well before restarting the socketsxcrestarttries to fix permission problems (xcauthis sometimes manually before it as a test, creating DB and log with the wrong user ID)xcrestartis more verbose on what it does, as a weak replacement for a man page- Support for running
ejabberdctlthroughsudo(to allow userxcauthto modify the shared roster related stuff) - Prosody modules are installed "almost ready" in
/usr/lib/prosody/modules(pseudolpty.luaready for action, ourmod_auth_external.luaas*-xcauth-versionas not to interfere with Prosody's version. To activate it, the admin needs to rename it. - ejabberd example configuration files from our
Debian setup, not only for the Raspberry Pi
are now installed as
/etc/ejabberd/*-xcauth-exampleto simplify the installation.
- Changed permissions for
/var/log/xcauth(logrotatewould refuse to work on it) - Add dependency on
python3-bsddb3andpyton3-systemd
- Obsoleted
install.sh
- Added documentation in the wiki how to achieve 100% Compliance on the Conversations XMPP tests
- Deprecation version numbers in the 2.0.0 changelog entry have been fixed.
- Added
Makefile, especially themake installtarget - Added support for
debpackaging (now the recommended installation type) - Added support for inetd-style servers (acceptor(!) socket as fd 0)
- Added
tools/xcauth.logrotate(see tools/README.md - Added quick setup instructions for existing Prosody or ejabberd setups
- Added support for fewer bcrypt() rounds for in-memory databases (please perform your own security/risk analysis before using it)
- Changed away from multiple
dbmstorages, due to corruption/locking problems and the growing number of partially-related databases. The database is nowsqlite. - DEPRECATED the following. As these options will be removed in 2.1,
please remove these options from your configuration after
converting to the
sqlite, which happens when launching this version for the first time.xcdbm.pyis no longer needed. Usesqlite3to manipulate the database contents--domain-db,--cache-db, and--shared-roster-dbare only used for the database upconversion and should be removed afterward.- The presence of the above options previously also enabled the use
of that database. This is now handled as follows:
- The domain database is always consulted. It will be empty initially.
- The use of the cache is controlled with the new
--cache-storageoption (one of 'none' (default), 'memory', 'db').
For 'memory', you might consider lowering--cache-bcrypt-roundssignificantly, based on your threat/risk analysis. - The use of the shared roster is enabled when
--ejabberdctlis set.
- There is a new option
--db, defaulting to/var/lib/xcauth/xcauth.sqlite.
- As a result, upgrades from <2.0 to >=2.1 will need to go over an intermediate step of 2.0.x for the automatic database conversion process to kick in.
- Explain
socketsetup for more efficient multi-domain hosting - Retired
xcauth.sh(ejabberd versions requiring this should no longer be around)
- Support systemd socket activation
- Now supports Postfix Virtual Mailbox mode
- Incorporated Prosody upstream mod_auth_external.lua fixes
- Starting from systemd is now the recommended mode
- Authentication against multiple cloud instances based on a dynamic database
- Support for saslauthd protocol
- Credentails caching
- Tool to manually create a time-limited token for debugging of that mechanism (
xclib/tests/generateTimeLimitedToken) - Connection/request timeout option (default: 5s)
- Support for managed servers: Externally callable
verify_with_isuser()function, differing XMPP and authentication domains - Support for creating/updating ejabberd shared roster
- Automatically on every login (after 0.5s, background the roster update)
- Trigger manually from the command line (
--update-roster)
external_cloud.*has been renamed toxcauth.*everywhere.⚠️ You will also need to rename your configuration file, the old name is deprecated and disappear soon.xcauth.confin the installation directory will no longer be considered- Now runs under user
xcauthwith directories/var/log/xcauthand/var/cache/xcauth - Removed support for
--per-domain-config. The more powerful--domain-dbremains - No longer load configuration from
/etc/external_cloud.conf - Improved test coverage
- Can now authenticate against multiple cloud instances
- Experimental support for talking over a socket
- systemd configuration files for sending the authentication requests/responses over a socket
with
multi-user.targetdepending on it - "quit" and "exit" commands (useful, when used behind a socket)
- Now requires "configargparse"
- Use HTTP/1.1 persistent connections for higher throughput
- The new
-t generic(equivalent to-t prosody) is now default (simplifies interactive testing) - Some refactoring
- Step-by-step installation and configuration instructions in the wiki
- Added the Prosody module (again) with better terminal handling (#21)
- Meaningful error messages when using old SSL library (#18)
- Information that leaking API secrets on the command line or in a world-readable configuration file is a security risk.
- Typos (#17)
- Improved documentation (SSL proxy, Prosody support, …)
- Cleanup: The default configuration method is now via configuration file. Removed own version of Prosody module with command-line parameter handling, no longer necessary with configuration file. (#2)
- Debugging output more consistent
- Transmit domain to JSXC externalApi.php (necessary for cloud accounts of the form user@domain) (#13)
- Support for a configuration file when ConfigArgParse python module
is installed (
external_cloud.confin/etcor the installation dir)
- No longer die without explanation on SSL errors caused by old libraries. Upgrading your Python libraries would be the actual fix. (#17)
- When the configuration file is for all options, no command line
parameters are necessary. Then, the modified
mod_auth_external.luaprosody module does not need to be installed. - Old-style configuration (parameters on the command line, no configuration file) is now deprecated.
- Minor debug output corrections
- Clarifications in the
--helpoutput
- One-shot auth and isuser tests
- Support for running under downloaded ejabberd*.deb (
xmpp-cloud-auth.sh)
- Allow passwords with colons
- Internal cleanup
- better logging
- generator functions
- Initial release