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.

ejabberd 21.12 released

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.


Let us know what you think 💬


2 thoughts on “ejabberd 21.12

  1. Hello You need One Big improvement and I will really appreciate it. That’s adding support for signal Protocol and a Server Side Key Store.

  2. Hello You need One Big improvement and I will really appreciate it.
    That’s adding support for Signal Protocol and a Server Side Key Store.

Leave a Comment


This site uses Akismet to reduce spam. Learn how your comment data is processed.