Changelog History
Page 1
-
v22.05 Changes
Core
- C2S: Don't expect that socket will be available in
c2s_terminated
hook - Event handling process hook tracing
- Guard against
erlang:system_info(logical_processors)
not always returning a number domain_balancing
: Allow for specifyingtype
only, without specifyingcomponent_number
MQTT
- β Add TLS certificate authentication for MQTT connections
- π Fix login when generating client id, keep connection record (#3593)
- π Pass property name as expected in mqtt_codec (fixes login using MQTT 5)
- π Support MQTT subscriptions spread over the cluster (#3750)
MUC
- Attach meta field with real jid to mucsub subscription events
- π Handle user removal
- Stop empty MUC rooms 30 seconds after creation
default_room_options
: Update options configurablesubscribe_room_many_max_users
: New option inmod_muc_admin
mod_conversejs
- π Improved options to support
@HOST@
andauto
values - π§ Set
auth
andregister
options based on ejabberd configuration conversejs_options
: New optionconversejs_resources
: New option
PubSub
mod_pubsub
: Allow for limitingitem_expire
valuemod_pubsub
: Unsubscribe JID on whitelist removalnode_pep
: Add config-node and multi-items features (#3714)
SQL
- π Improve compatibility with various db engine versions
- π Sync old-to-new schema script with reality (#3790)
- β Slight improvement in MSSQL testing support, but not yet complete
Other Modules
auth_jwt
: Checking if an user is active in SM for a JWT authenticated user (#3795)mod_configure
: Implement Get List of Registered/Online Users from XEP-0133mod_host_meta
: New module to serve host-meta files, see XEP-0156mod_mam
: Store all mucsub notifications not only message notificationsmod_ping
: Delete ping timer if resource is gone after the ping has been sentmod_ping
: Don't send ping if resource is gonemod_push
: Fix notifications for pending sessions (XEP-0198)mod_push
: Keep push session ID on session resumemod_shared_roster
: Adjust special group cache sizemod_shared_roster
: Normalize JID on unset_presence (#3752)mod_stun_disco
: Fix parsing of IPv6 listeners
Dependencies
- π autoconf: Supported from 2.59 to the new 2.71
- β‘οΈ fast_tls: Update to 1.1.14 to support OpenSSL 3
- β‘οΈ jiffy: Update to 1.1.1 to support Erlang/OTP 25.0-rc1
- β‘οΈ luerl: Update to 1.0.0, now available in hex.pm
- lager: This dependency is used only when Erlang is older than 22
- β‘οΈ rebar2: Updated binary to work from Erlang/OTP 22 to 25
- β‘οΈ rebar3: Updated binary to work from Erlang/OTP 22 to 25
- β‘οΈ
make update
: Fix when used with rebar 3.18
Compile
- π
mix release
: Copyinclude/
files for ejabberd, deps and otp, inmix.exs
- π
rebar3 release
: Fix ERTS path inejabberdctl
- π§
configure.ac
: Set default ejabberd version number when not using git - π
mix.exs
: Move some dependencies as optional - π
mix.exs
: No need to use Distillery, Elixir has built-in support for OTP releases (#3788) - π§
tools/make-binaries
: New script for building Linux binaries - π
tools/make-installers
: New script for building command line installers
Start
- π New
make relive
similar toejabberdctl live
without installing - β
ejabberdctl
: Fix some warnings detected by ShellCheck ejabberdctl
: Mention in the help:etop
,ping
andstarted
/stopped
- π
make rel
: Switch to paths:conf/
,database/
,logs/
mix.exs
: Add-boot
and-boot_var
inejabberdctl
instead of addingvm.args
- β
tools/captcha.sh
: Fix some warnings detected by ShellCheck
Commands
- Accept more types of ejabberdctl commands arguments as JSON-encoded
delete_old_mam_messages_batch
: New command with rate limitdelete_old_messages_batch
: New command with rate limitget_room_occupants_number
: Don't request the whole MUC room state (#3684, #1964)- π
get_vcard
: Add support for MUC room vCard oauth_revoke_token
: Add support to work with all backendsroom_unused_*
: Optimize commands in SQL by reusingcreated_at
rooms_unused_...
: Letget_all_rooms
handleglobal
argument (#3726)stop|restart
: Terminate ejabberd_sm before everything else to ensure sessions closing (#3641)subscribe_room_many
: New command
π Translations
- β‘οΈ Updated Catalan
- β‘οΈ Updated French
- β‘οΈ Updated German
- β‘οΈ Updated Portuguese
- β‘οΈ Updated Portuguese (Brazil)
- β‘οΈ Updated Spanish
Workflows
- π CI: Publish CT logs and Cover on failure to an external GH Pages repo
- β CI: Test shell scripts using ShellCheck (#3738)
- π Container: New workflow to build and publish containers
- π Installers: Add job to create draft release
- π Installers: New workflow to build binary packages
- β Runtime: New workflow to test compilation, rel, starting and ejabberdctl
- C2S: Don't expect that socket will be available in
-
v21.12 Changes
Commands
create_room_with_opts
: Fixed when using SQL storagechange_room_option
: Add missing fields from config insidemod_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
- mod_push: Fix handling of MUC/Sub messages
- 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
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 - β¬οΈ Bump default value for
max_items
limit from 10 to 1000 - π§ 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
- MySQL: Fix typo when creating index
- π PgSQL: Add SASL auth support, PostgreSQL 14
- PgSQL: Add missing SQL migration for table
push_session
- PgSQL: Fix
vcard_search
definition in pgsql new schema
Other
captcha-ng.sh
: "sort -R" command not POSIX, added "shuf" and "cat" as fallback- π Make s2s connection table cleanup more robust
- β‘οΈ Update export/import of scram password to XEP-0227 1.1
- β‘οΈ Update Jose to 1.11.1 (the last in hex.pm correctly versioned)
-
v21.07 Changes
Compilation
- β Add rebar3 3.15.2 binary
- β Add support for mix to:
./configure --enable-rebar=mix
- π Improved
make rel
to work with rebar3 and mix - β Add
make dev
to build a development release with rebar3 or mix - π¦ Hex: Add
sql/
andvars.config
to Hex package files - β‘οΈ Hex: Update mix applications list to fix error
p1_utils is listed as both...
- There are so many targets in Makefile... add
make help
- π Fix extauth.py failure in test suite with Python 3
- β Added experimental support for GitHub Codespaces
- β Switch test service from TravisCI to GitHub Actions
Commands:
- Display extended error message in ejabberdctl
- β Remove SMP option from ejabberdctl.cfg,
-smp
was removed in OTP 21 create_room
: After creating room, store in DB if it's persistenthelp
: Major changes in its usage and output- β‘οΈ
srg_create
: Update to uselabel
parameter instead ofname
Modules:
- ejabberd_listener: New
send_timeout
option - β‘οΈ mod_mix: Improvements to update to 0.14.1
- mod_muc_room: Don't leak owner JIDs
- mod_multicast: Routing for more MUC packets
- mod_multicast: Correctly strip only other bcc addresses
- mod_mqtt: Allow shared roster group placeholder in mqtt topic
- π mod_pubsub: Several fixes when using PubSub with RSM
- mod_push: Handle MUC/Sub events correctly
- mod_shared_roster: Delete cache after performing change to be sure that in cache will be up to date data
- mod_shared_roster: Improve database and caching
- mod_shared_roster: Reconfigure cache when options change
- mod_vcard: Fix invalid_encoding error when using extended plane characters in vcard
- β‘οΈ mod_vcard: Update econf:vcard() to generate correct vcard_temp record
- WebAdmin: New simple pages to view mnesia tables information and content
- βοΈ WebSocket: Fix typos
SQL:
- MySQL Backend Patch for scram-sha512
- SQLite: When exporting for SQLite, use its specific escape options
- SQLite: Minor fixes for new_sql_schema support
- mod_privacy: Cast as boolean when exporting privacy_list_data to PostgreSQL
- mod_mqtt: Add mqtt_pub table definition for MSSQL
- mod_shared_roster: Add missing indexes to
sr_group
tables in all SQL databases
-
v21.04 Changes
API Commands:
add_rosteritem/...
: Add argument guards to roster commands- π
get_user_subscriptions
: New command for MUC/Sub remove_mam_for_user_with_peer
: Fix when removing room archivesend_message
: Fix bug introduced in ejabberd 21.01set_vcard
: Return modules errors
π Build and setup:
- π Allow ejabberd to be compatible as a dependency for an Erlang project using rebar3
- CAPTCHA: New question/answer-based CAPTCHA script
- π§
--enable-lua
: new configure option for luerl instead of --enable-tools - β Remove support for HiPE, it was experimental and Erlang/OTP 24 removes it
- β‘οΈ Update
sql_query
record to handle the Erlang/OTP 24 compiler reports - β‘οΈ Updated dependencies to fix Dialyzer warnings
Miscellaneous:
- β‘οΈ CAPTCHA: Update
FORM_TYPE
from captcha to register - LDAP: fix eldap certificate verification
- MySQL: Fix for "specified key was too long"
- β‘οΈ Translations: updated the Esperanto, Greek, and Japanese translations
- Websocket: Fix PONG responses
Modules:
mod_block_strangers
: If stanza is type error, allow it passingmod_caps
: Don't request roster when not neededmod_caps
: Skip reading roster in one more case- π
mod_mam
: Removequeryid
from MAM fin element mod_mqtt
: When deregistering XMPP account, close its MQTT sessionsmod_muc
: Take in account subscriber's affiliation when checking access to moderated roommod_muc
: Use monitors to track online and hard-killed rooms- π
mod_muc
: When occupant is banned, remove his subscriptions too mod_privacy
: Make fetching roster lazymod_pubsub
: Don't fail on PEP unsubscribemod_pubsub
: Fixgen_pubsub_node:get_state
return valuemod_vcard
: Obtain and provide photo type in vCard LDAP
-
v21.01 Changes
Miscellaneous changes:
log_rotate_size
option: Fix handling of βinfinityβ valuemod_time
: Fix invalid timezone- Auth JWT: New
check_decoded_jwt
hook runs the default JWT verifier - MUC: Allow non-occupant non-subscribed service admin send private MUC message
- MUC: New
max_password
andmax_captcha_whitelist
options - OAuth: New
oauth_cache_rest_failure_life_time
option - PEP: Skip reading pep nodes that we know wonβt be requested due to caps
- SQL: Add sql script to migrate mysql from old schema to new
- SQL: Donβt use REPLACE for upsert when there are β-β fields.
- π Shared Rosters LDAP: Add multi-domain support (and flexibility)
- Sqlite3: Fix dependency version
- 0οΈβ£ Stun: Block loopback addresses by default
- π Several documentation fixes and clarifications
Commands:
- π
decide_room
: Use better fallback value for room activity time when skipping room delete_old_message
: Fix when using sqlite spool tablemodule_install
: Make ext_mod compile module with debug_info flagsroom_unused_*
: Donβt fetch subscribers listsend_message
: Donβt include empty in messagesset_room_affiliation
: Validate affiliations
β Running:
- π³ Docker: New
Dockerfile
anddevcontainer.json
- π New
ejabberdctl foreground-quiet
- Systemd: Allow for listening on privileged ports
- Systemd: Integrate nicely with systemd
π Translations:
- π Moved gettext PO files to a new
ejabberd-po
repository - π Improved several translations: Catalan, Chinese, German, Greek, Indonesian, Norwegian, Portuguese (Brazil), Spanish.
-
v20.12 Changes
- β Add support for
SCRAM-SHA-{256,512}-{PLUS}
authentication - Don't use same value in cache for user don't exist and wrong password
outgoing_s2s_ipv*_address
: New options to set ipv4/ipv6 outbound s2s out interface- s2s_send_packet: this hook now filters outgoing s2s stanzas
- start_room: new hook runs when a room process is started
check_decoded_jwt: new hook to check decoded JWT after success authentication
Admin
π³ Docker: Fix DB initialization
New sql_odbc_driver option: choose the mssql ODBC driver
π§ Rebar3: Fully supported. Enable with
./configure --with-rebar=/path/to/rebar3
systemd: start ejabberd in foreground
Modules:
MAM: Make sure that jid used as base in mam xml_compress is bare
π MAM: Support for MAM Flipped Pages
MUC: Always show MucSub subscribers nicks
MUC: Don't forget not-persistent rooms in load_permanent_rooms
π MUC Admin: Better error reporting
MUC Admin: Fix commands with hibernated rooms
MUC Admin: Many improvements in rooms_unused_list/destroy
MUC Admin: create_room_with_opts Store options only if room starts
π Pubsub: Remove 'dag' node plugin documentation
Push: Fix API call return type on error
π Push: Support cache config changes on reload
Register: Allow for account-removal-only setup again
π Roster: Make roster subscriptions work better with invalid roster state in db
Vcard: Fix vCard search by User when using Mnesia
WebAdmin: Allow vhost admins to view WebAdmin menus
WebAdmin: Don't do double utf-8 conversion on translated strings
WebAdmin: Mark dangerous buttons with CSS
WebSocket: Make websocket send put back pressure on c2s process
- β Add support for
-
v20.07 Changes
- π Changes in this version
- β Add support for using unix sockets in listeners.
- π Make this version compatible with erlang R23
- π Make room permissions checks more strict for subscribers
- π Fix problem with muc rooms crashing when using muc logger with some locales
- Limit stat calls that logger module issues
- Don't throw errors when using user_regexp acl rule and having non-matching host
- π Fix problem with leaving old data when updating shared rosters
- π Fix edge case that caused failure of resuming old sessions with stream management.
- π Fix crash when room that was started with logging enabled was later changed to logging disabled
- 0οΈβ£ Increase default shaper limits (this should help with delays for clients that are using jingle)
- π Fix couple compatibility problems which prevented working on erlang R19
- π Fix sending presence unavailable when session terminates for clients that only send directed presences (helps with sometimes not leaving muc rooms on disconnect).
- Prevent supervisor errors for sockets that were closed before they were passed to handler modules
- π Make stun module work better with ipv6 addresses
-
v20.03 Changes
March 25, 2020- π Changes in this version
- β Add support of ssl connection when connection to mysql
database (configured with
sql_ssl: true
option) - π§ Experimental support for cockroachdb when configured with postgres connector
- Add cache and optimize queries issued by
mod_shared_roster
, this should greatly improve performance of this module when used withsql
backend - π Fix problem with accessing webadmin
- π Make webadmin work even when url is missing trailing slash
- When compiling external modules with ext_mod, use flags that were detected during compilation of ejabberd
- β‘οΈ Make config changed to ldap options be updated when issued
reload_config
command - Fix
room_empty_destory
command - π Fix reporting errors in
send_stanza
command when xml passed to it couldn't be passed correctly
-
v20.02 Changes
February 25, 2020- π Changes in this version
- π Fix problems when trying to use string format with unicode values directly in xmpp nodes
- β Add missing oauth_client table declaration in lite.new.sql
- π Improve compatibility with CocroachDB
- π Fix importing of piefxis files that did use scram passwords
- π Fix importing of piefxis files that had multiple includes in them
- β‘οΈ Update jiffy dependency
- π Allow storage of emojis when using mssql database (Thanks to Christoph Scholz)
- Make ejabberd_auth_http be able to use auth_opts
- π Make custom_headers options in http modules correctly override built-in values
- Fix return value of reload_config and dump_config commands
-
v20.01 Changes
January 17, 2020- π New features
- Implement OAUTH authentication for clients
- Implement OAUTH authentication in mqtt
- π² Make logging infrastructure use new logger introduced introduced in Erlang (requires OTP22)
- π New configuration parser/validator
- π Initial work on being able to use CockroachDB as database backend
- β Add gc command
- β Add option to disable using prepared statements on Postgresql
- Implement routine for converting password to SCRAM format for all backends not only SQL
- β Add infrastructure for having module documentation directly in individual module source code
- Generate man page automaticaly
Implement copy feature in mod_carboncopy
π Fixes
π§ Make webadmin work with configurable paths
π Fix handling of result in xmlrpc module
π Make webadmin work even when accessed through not declared domain
π Better error reporting in xmlrpc
Limit ammount of results returned by disco queries to pubsub nodes
π Improve validation of configured JWT keys
π Fix race condition in Redis/SQL startup
π Fix loading order of third party modules
π Fix reloading of ACL rules
π Make account removal requests properly route response
π Improve handling of malformed inputs in send_message command
Omit push notification if storing message in offline storage failed
π Fix crash in stream management when timeout was not set