ejabberd 21.12
This new ejabberd 21.12 release comes after five months of work, contains more than one hundred changes, many of them are major improvements or features, and several bug fixes.
When upgrading from previous versions, please notice: there’s a change in mod_register_web
behaviour, and PosgreSQL database, please take a look if they affect your installation.
A more detailed explanation of those topics:
Optimized MucSub and Multicast processing
More efficient processing of MucSub and Multicast (XEP-0033) messages addressed to big number of addresses.
Support MUC Hats
MUC Hats (XEP-0317) defines a more extensible model for roles and affiliations in Multi-User Chat rooms. This protocol was deferred, but it is supported by several clients and servers. ejabberd’s implementation supports both the XEP schema, and also the Conversejs/Prosody custom schema.
New mod_conversejs
This module serves a simple page to allow the Converse.js XMPP web browser client connect to ejabberd. It can use ejabberd’s Websockets or BOSH (HTTP-Bind).
By default this module points to the public online client available at converse.js. Alternatively, you can download the client and host it locally with a configuration like this:
hosts:
- localhost
listen:
-
port: 5280
ip: "::"
module: ejabberd_http
tls: false
request_handlers:
/websocket: ejabberd_http_ws
/conversejs: mod_conversejs
/conversejs_files: mod_http_fileserver
modules:
mod_conversejs:
websocket_url: "ws://localhost:5280/websocket"
conversejs_script: "http://localhost:5280/conversejs_files/converse.min.js"
conversejs_css: "http://localhost:5280/conversejs_files/converse.min.css"
mod_http_fileserver:
docroot: "/home/ejabberd/conversejs-9.0.0/package/dist"
accesslog: "/var/log/ejabberd/fileserver-access.log"
Many PubSub improvements
Add delete_old_pubsub_items
command.
Add a command for keeping only the specified number of items on each node and removing all older items. This might be especially useful if nodes may be configured to have no ‘max_items’ limit.
Add delete_expired_pubsub_items
command
Support XEP-0060’s pubsub#item_expire feature by adding a command for deleting expired PubSub items.
Fix get_max_items_node/1
specification
Make it explicit that the get_max_items_node/1 function returns ?MAXITEMS if the ‘max_items_node’ option isn’t specified. The function didn’t actually fall back to ‘undefined’ (but to the ‘max_items_node’ default; i.e., ?MAXITEMS) anyway. This change just clarifies the behavior and adjusts the function specification accordingly.
Improvements in the ejabberd Documentation web
Added many cross-links between modules, options, and specific sections.
Added a new API Tags page similar to “ejabberdctl help tags”.
Improved the API Reference page, so commands show the tags and the definer module.
Configuration changes
mod_register_web
is now affected by the restrictions that you configure in mod_register
(#3688).
mod_register
gets a new option, allow_modules
, to restrict what modules can register new accounts. This is useful if you want to allow only registration using mod_register_web
, for example.
PosgreSQL changes
Added to PgSQL’s new schema missing SQL migration for table push_session (#3656)
Fixed in PgSQL’s new schema the vcard_search definition (#3695).
How to update an existing database:
ALTER TABLE vcard_search DROP CONSTRAINT vcard_search_pkey;
ALTER TABLE vcard_search ADD PRIMARY KEY (server_host, lusername);
Summary of changes:
Commands
- create_room_with_opts: Fixed when using SQL storage (#3700)
- change_room_option: Add missing fields from config inside mod_muc_admin:change_options
- piefxis: Fixed arguments of all commands
Modules
- mod_caps: Don’t forget caps on XEP-0198 resumption
- mod_conversejs: New module to serve a simple page for Converse.js
- mod_http_upload_quota: Avoid ‘max_days’ race
- mod_muc: Support MUC hats (XEP-0317, conversejs/prosody compatible)
- mod_muc: Optimize MucSub processing
- mod_muc: Fix exception in mucsub {un}subscription events multicast handler
- mod_multicast: Improve and optimize multicast routing code
- mod_offline: Allow storing non-composing x:events in offline
- mod_ping: Send ping from server, not bare user JID (#3658)
- mod_push: Fix handling of MUC/Sub messages (#3651)
- mod_register: New allow_modules option to restrict registration modules
- mod_register_web: Handle unknown host gracefully
- mod_register_web: Use mod_register configured restrictions (#3688)
PubSub
- Add delete_expired_pubsub_items command
- Add delete_old_pubsub_items command
- Optimize publishing on large nodes (SQL)
- Support unlimited number of items
- Support ‘max_items=max’ node configuration (#3666)
- Bump default value for ‘max_items’ limit from 10 to 1000 (#3652)
- Use configured ‘max_items’ by default
- node_flat: Avoid catch-all clauses for RSM
- node_flat_sql: Avoid catch-all clauses for RSM
SQL
- Use INSERT … ON CONFLICT in SQL_UPSERT for PostgreSQL >= 9.5
- mod_mam export: assign MUC entries to the MUC service (#3680)
- MySQL: Fix typo when creating index (#3654)
- PgSQL: Add SASL auth support, PostgreSQL 14 (#3691)
- PgSQL: Add missing SQL migration for table push_session (#3656)
- PgSQL: Fix vcard_search definition in pgsql new schema (#3695)
Other
- captcha-ng.sh: “sort -R” command not POSIX, added “shuf” and “cat” as fallback (#3660)
- Make s2s connection table cleanup more robust
- Update export/import of scram password to XEP-0227 1.1 (#3676)
- Update Jose to 1.11.1 (the last in hex.pm correctly versioned)
ejabberd 21.12 download & feedback
As usual, the release is tagged in the Git source code repository on Github.
The source package and binary installers are available at ejabberd XMPP & MQTT server download page.
If you suspect that you’ve found a bug, please search or fill a bug report on Github.