2024-12-18 16:50:02 +01:00
## Version 24.12
#### Miscelanea
- Elixir: support loading Elixir modules for auth ([#4315](https://github.com/processone/ejabberd/issues/4315))
- Environment variables `EJABBERD_MACRO` to define macros
- Fix problem starting ejabberd when first host uses SQL, other one mnesia
- HTTP Websocket: Enable `allow_unencrypted_sasl2` on websockets ([#4323](https://github.com/processone/ejabberd/issues/4323))
- Relax checks for channels bindings for connections using external encryption
- Redis: Add support for unix domain socket ([#4318](https://github.com/processone/ejabberd/issues/4318))
- Redis: Use eredis 1.7.1 from Nordix when using mix/rebar3 and Erlang 21+
- `mod_auth_fast` : New module with support XEP-0484: Fast Authentication Streamlining Tokens
- `mod_http_api` : Fix crash when module not enabled (for example, in CT tests)
- `mod_http_api` : New option `default_version`
- `mod_muc` : Make rsm handling in disco items, correctly count skipped rooms
- `mod_offline` : Only delete offline msgs when user has MAM enabled ([#4287](https://github.com/processone/ejabberd/issues/4287))
- `mod_priviled` : Handle properly roster iq
- `mod_pubsub` : Send notifications on PEP item retract
- `mod_s2s_bidi` : Catch extra case in check for s2s bidi element
- `mod_scram_upgrade` : Don't abort the upgrade
- `mod_shared_roster` : The name of a new group is lowercased
- `mod_shared_roster` : Get back support for `groupid@vhost` in `displayed`
2024-12-19 10:45:19 +01:00
- `mod_stun_disco` : Fix syntax of credentials response
2024-12-18 16:50:02 +01:00
#### Commands API
- Change arguments and result to consistent names (API v3)
- `create_rooms_file` : Improve to support vhosts with different config
- `evacuate_kindly` : New command to kick users and prevent login ([#4309](https://github.com/processone/ejabberd/issues/4309))
- `join_cluster` : Explain that this returns immediately (since 5a34020, 24.06)
- `mod_muc_admin` : Rename argument `name` to `room` for consistency
#### Documentation
- Fix some documentation syntax, add links to toplevel, modules and API
- `CONTAINER.md` : Add kubernetes yaml examples to use with podman
- `SECURITY.md` : Add security policy and reporting guidelines
- `ejabberd.service` : Disable the systemd watchdog by default
- `ejabberd.yml.example` : Use non-standard STUN port
#### WebAdmin
- Shared group names are case sensitive, use original case instead of lowercase
- Use lowercase username and server authentication credentials
- Fix calculation of node's uptime days
- Fix link to displayed group when it is from another vhost
2024-10-28 15:36:15 +01:00
## Version 24.10
#### Miscelanea
- `ejabberd_c2s` : Optionally allow unencrypted SASL2
- `ejabberd_system_monitor` : Handle call by `gen_event:swap_handler` ([#4233](https://github.com/processone/ejabberd/issues/4233))
- `ejabberd_http_ws` : Remove support for old websocket connection protocol
- `ejabberd_stun` : Omit `auth_realm` log message
- `ext_mod` : Handle `info` message when contrib module transfers table ownership
- `mod_block_strangers` : Add feature announcement to disco-info ([#4039](https://github.com/processone/ejabberd/issues/4039))
- `mod_mam` : Advertise XEP-0424 feature in server disco-info ([#3340](https://github.com/processone/ejabberd/issues/3340))
- `mod_muc_admin` : Better handling of malformed jids in `send_direct_invitation` command
- `mod_muc_rtbl` : Fix call to `gen_server:stop` ([#4260](https://github.com/processone/ejabberd/issues/4260))
- `mod_privilege` : Support "IQ permission" from XEP-0356 0.4.1 ([#3889](https://github.com/processone/ejabberd/issues/3889))
- `mod_pubsub` : Don't blindly echo PEP notification
- `mod_pubsub` : Skip non-delivery errors for local pubsub generated notifications
- `mod_pubsub` : Fall back to default plugin options
- `mod_pubsub` : Fix choice of node config defaults
- `mod_pubsub` : Fix merging of default node options
- `mod_pubsub` : Fix default node config parsing
- `mod_register` : Support to block IPs in a vhost using `append_host_config` ([#4038](https://github.com/processone/ejabberd/issues/4038))
- `mod_s2s_bidi` : Add support for S2S Bidirectional
- `mod_scram_upgrade` : Add support for SCRAM upgrade tasks
- `mod_vcard` : Return error stanza when storage doesn't support vcard update ([#4266](https://github.com/processone/ejabberd/issues/4266))
- `mod_vcard` : Return explicit error stanza when user attempts to modify other's vcard
- Minor improvements to support `mod_tombstones` (#2456)
- Update `fast_xml` to use `use_maps` and remove obsolete elixir files
- Update `fast_tls` and `xmpp` to improve s2s fallback for invalid direct tls connections
- `make-binaries` : Bump dependency versions: Elixir 1.17.2, OpenSSL 3.3.2, ...
#### Administration
2024-12-18 16:50:02 +01:00
2024-10-28 15:36:15 +01:00
- `ejabberdctl` : If `ERLANG_NODE` lacks host, add hostname ([#4288](https://github.com/processone/ejabberd/issues/4288))
- `ejabberd_app` : At server start, log Erlang and Elixir versions
- MySQL: Fix column type in the schema update of `archive` table in schema update
#### Commands API
2024-12-18 16:50:02 +01:00
2024-10-28 15:36:15 +01:00
- `get_mam_count` : New command to get number of archived messages for an account
- `set_presence` : Return error when session not found
- `update` : Fix command output
- Add `mam` and `offline` tags to the related purge commands
#### Code Quality
2024-12-18 16:50:02 +01:00
2024-10-28 15:36:15 +01:00
- Fix warnings about unused macro definitions reported by Erlang LS
- Fix Elvis report: Fix dollar space syntax
- Fix Elvis report: Remove spaces in weird places
- Fix Elvis report: Don't use ignored variables
- Fix Elvis report: Remove trailing whitespace characters
- Define the types of options that `opt_type.sh` cannot derive automatically
- `ejabberd_http_ws` : Fix dialyzer warnings
- `mod_matrix_gw` : Remove useless option `persist`
- `mod_privilege` : Replace `try...catch` with a clean alternative
#### Development Help
2024-12-18 16:50:02 +01:00
2024-10-28 15:36:15 +01:00
- `elvis.config` : Fix file syntax, set vim mode, disable many tests
- `erlang_ls.config` : Let it find paths, update to Erlang 26, enable crossref
- `hooks_deps` : Hide false-positive warnings about `gen_mod`
- `Makefile` : Add support for `make elvis` when using rebar3
- `.vscode/launch.json` : Experimental support for debugging with Neovim
- CI: Add Elvis tests
- CI: Add XMPP Interop tests
- Runtime: Cache hex.pm archive from rebar3 and mix
#### Documentation
2024-12-18 16:50:02 +01:00
2024-10-28 15:36:15 +01:00
- Add links in top-level options documentation to their Docs website sections
- Document which SQL servers can really use `update_sql_schema`
- Improve documentation of `ldap_servers` and `ldap_backups` options ([#3977](https://github.com/processone/ejabberd/issues/3977))
- `mod_register` : Document behavior when `access` is set to `none` ([#4078](https://github.com/processone/ejabberd/issues/4078))
#### Elixir
2024-12-18 16:50:02 +01:00
2024-10-28 15:36:15 +01:00
- Handle case when elixir support is enabled but not available
- Start ExSync manually to ensure it's started if (and only if) Relive
- `mix.exs` : Fix `mix release` error: `logger` being regular and included application ([#4265](https://github.com/processone/ejabberd/issues/4265))
- `mix.exs` : Remove from `extra_applications` the apps already defined in `deps` ([#4265](https://github.com/processone/ejabberd/issues/4265))
#### WebAdmin
2024-12-18 16:50:02 +01:00
2024-10-28 15:36:15 +01:00
- Add links in user page to offline and roster pages
- Add new "MAM Archive" page to webadmin
- Improve many pages to handle when modules are disabled
- `mod_admin_extra` : Move some webadmin pages to their modules
2024-07-18 11:09:39 +02:00
## Version 24.07
#### Core
- `ejabberd_options` : Add trailing `@` to `@VERSION@` parsing
- `mod_http_api` : Fix problem parsing tuples when using OTP 27 json library ([#4242](https://github.com/processone/ejabberd/issues/4242))
- `mod_http_api` : Restore args conversion of `{"k":"v"}` to tuple lists
- `mod_matrix_gw` : Add misc:json_encode_With_kv_lists and use it in matrix sign function
- `mod_muc` : Output `muc#roominfo_avatarhash` in room disco info as per updated XEP-0486 ([#4234](https://github.com/processone/ejabberd/issues/4234))
- `mod_muc` : Improve cross version handling of muc retractions
- `node_pep` : Add missing feature `item-ids` to node_pep
- `mod_register` : Send welcome message as `chat` too ([#4246](https://github.com/processone/ejabberd/issues/4246))
- `ejabberd_hooks` : Support for ejabberd hook subscribers, useful for [mod_prometheus ](https://github.com/processone/ejabberd-contrib/tree/master/mod_prometheus )
- `ejabberd.app` : Don't add `iex` to included_applications
- `make-installers` : Fix path in scripts in regular user install ([#4258](https://github.com/processone/ejabberd/issues/4258))
- Test: New tests for API commands
#### Documentation
- `mod_matrix_gw` : Fix `matrix_id_as_jid` option documentation
- `mod_register` : Add example configuration of `welcome_message` option
- `mix.exs` : Add ejabberd example config files to the hex package
- Update `CODE_OF_CONDUCT.md`
#### ext_mod
- Fetch dependencies from hex.pm when mix is available
- files_to_path is deprecated, use compile_to_path
- Compile all Elixir files in a library with one function call
- Improve error result when problem compiling elixir file
- Handle case when contrib module has no `*.ex` and no `*.erl`
- `mix.exs` : Include Elixir's Logger in the OTP release, useful for [mod_libcluster ](https://github.com/processone/ejabberd-contrib/tree/master/mod_libcluster )
#### Logs
- Print message when starting ejabberd application fails
- Use error_logger when printing startup failure message
- Use proper format depending on the formatter ([#4256](https://github.com/processone/ejabberd/issues/4256))
#### SQL
- Add option `update_sql_schema_timeout` to allow schema update use longer timeouts
- Add ability to specify custom timeout for sql operations
- Allow to configure number of restart in `sql_transaction()`
- Make sql query in testsuite compatible with pg9.1
- In `mysql.sql` , fix update instructions for the `archive` table, `origin_id` column ([#4259](https://github.com/processone/ejabberd/issues/4259))
#### WebAdmin
- `ejabberd.yml.example` : Add `api_permissions` group for webadmin ([#4249](https://github.com/processone/ejabberd/issues/4249))
- Don't use host from url in webadmin, prefer host used for authentication
- Fix number of accounts shown in the online-users page
- Fix crash when viewing old shared roster groups ([#4245](https://github.com/processone/ejabberd/issues/4245))
- Support groupid with spaces when making shared roster result ([#4245](https://github.com/processone/ejabberd/issues/4245))
2024-06-27 15:12:29 +02:00
## Version 24.06
#### Core
- `econf` : Add ability to use additional custom errors when parsing options
- `ejabberd_logger` : Reloading configuration will update logger settings
- `gen_mod` : Add support to specify a hook global, not vhost-specific
2024-07-16 13:24:18 +02:00
- `mod_configure` : Retract `Get User Password` command to update XEP-0133 1.3.0
- `mod_conversejs` : Simplify support for `@HOST@` in `default_domain` option ([#4167](https://github.com/processone/ejabberd/issues/4167))
- `mod_mam` : Document that XEP-0441 is implemented as well
- `mod_mam` : Update support for XEP-0425 version 0.3.0, keep supporting 0.2.1 ([#4193](https://github.com/processone/ejabberd/issues/4193))
- `mod_matrix_gw` : Fix support for `@HOST@` in `matrix_domain` option ([#4167](https://github.com/processone/ejabberd/issues/4167))
- `mod_muc_log` : Hide join/leave lines, add method to show them
- `mod_muc_log` : Support `allowpm` introduced in 2bd61ab
- `mod_muc_room` : Use ejabberd hooks instead of function calls to `mod_muc_log` ([#4191](https://github.com/processone/ejabberd/issues/4191))
- `mod_private` ): Cope with bookmark decoding errors
- `mod_vcard_xupdate` : Send hash after avatar get set for first time
2024-07-16 13:18:12 +02:00
- `prosody2ejabberd` : Handle the `approved` attribute. As feature isn't implemented, discard it ([#4188](https://github.com/processone/ejabberd/issues/4188))
2024-06-27 15:12:29 +02:00
#### SQL
2024-07-16 13:24:18 +02:00
- `update_sql_schema` : Enable this option by default
2024-06-27 15:12:29 +02:00
- CI: Don't load database schema files for mysql and pgsql
2024-07-16 13:18:12 +02:00
- Support Unix Domain Socket with updated p1_pgsql and p1_mysql ([#3716](https://github.com/processone/ejabberd/issues/3716))
2024-06-27 15:12:29 +02:00
- Fix handling of `mqtt_pub` table definition from `mysql.sql` and fix `should_update_schema/1` in `ejabberd_sql_schema.erl`
- Don't start sql connection pools for unknown hosts
- Add `update_primary_key` command to sql schema updater
2024-07-16 13:24:18 +02:00
- Fix crash running `export2sql` when MAM enabled but MUC disabled
2024-06-27 15:12:29 +02:00
- Improve detection of types in odbc
#### Commands API
2024-07-16 13:18:12 +02:00
- New ban commands use private storage to keep ban information ([#4201](https://github.com/processone/ejabberd/issues/4201))
2024-07-16 13:24:18 +02:00
- `join_cluster_here` : New command to join a remote node into our local cluster
2024-07-16 13:18:12 +02:00
- Don't name integer and string results in API examples ([#4198](https://github.com/processone/ejabberd/issues/4198))
2024-07-16 13:24:18 +02:00
- `get_user_subscriptions` : Fix validation of user field in that command
- `mod_admin_extra` : Handle case when `mod_private` is not enabled ([#4201](https://github.com/processone/ejabberd/issues/4201))
- `mod_muc_admin` : Improve validation of arguments in several commands
2024-06-27 15:12:29 +02:00
#### Compile
2024-07-16 13:18:12 +02:00
- `ejabberdctl` : Comment ERTS_VSN variable when not used ([#4194](https://github.com/processone/ejabberd/issues/4194))
2024-06-27 15:12:29 +02:00
- `ejabberdctl` : Fix iexlive after `make prod` when using Elixir
2024-07-16 13:18:12 +02:00
- `ejabberdctl` : If `INET_DIST_INTERFACE` is IPv6, set required option ([#4189](https://github.com/processone/ejabberd/issues/4189))
2024-06-27 15:12:29 +02:00
- `ejabberdctl` : Make native dynamic node names work when using fully qualified domain names
2024-07-16 13:18:12 +02:00
- `rebar.config.script` : Support relaxed dependency version ([#4192](https://github.com/processone/ejabberd/issues/4192))
2024-06-27 15:12:29 +02:00
- `rebar.config` : Update deps version to rebar3's relaxed versioning
- `rebar.lock` : Track file, now that rebar3 uses loose dependency versioning
2024-07-16 13:18:12 +02:00
- `configure.ac` : When using rebar3, unlock dependencies that are disabled ([#4212](https://github.com/processone/ejabberd/issues/4212))
- `configure.ac` : When using rebar3 with old Erlang, unlock some dependencies ([#4213](https://github.com/processone/ejabberd/issues/4213))
2024-06-27 15:12:29 +02:00
- `mix:exs` : Move `xmpp` from `included_applications` to `applications`
#### Dependencies
- Base64url: Use only when using rebar2 and Erlang lower than 24
- Idna: Bump from 6.0.0 to 6.1.1
- Jiffy: Use Json module when Erlang/OTP 27, jiffy with older ones
- Jose: Update to the new 1.11.10 for Erlang/OTP higher than 23
- Luerl: Update to 1.2.0 when OTP same or higher than 20, simplifies commit a09f222
2024-07-16 13:18:12 +02:00
- P1_acme: Update to support Jose 1.11.10 and Ipv6 support ([#4170](https://github.com/processone/ejabberd/issues/4170))
2024-06-27 15:12:29 +02:00
- P1_acme: Update to use Erlang's json library instead of jiffy when OTP 27
- Port_compiler: Update to 1.15.0 that supports Erlang/OTP 27.0
#### Development Help
- `.gitignore` : Ignore ctags/etags files
- `make dialyzer` : Add support to run Dialyzer with Mix
- `make format|indent` : New targets to format and indent source code
- `make relive` : Add Sync tool with Rebar3, ExSync with Mix
- `hook_deps` : Use precise name: hooks are added and later deleted, not removed
- `hook_deps` : Fix to handle FileNo as tuple `{FileNumber, CharacterPosition}`
- Add support to test also EUnit suite
- Fix `code:lib_dir` call to work with Erlang/OTP 27.0-rc2
- Set process flags when Erlang/OTP 27 to help debugging
- Test retractions in mam_tests
#### Documentation
- Add some XEPs support that was forgotten
- Fix documentation links to new URLs generated by MkDocs
- Remove `...` in example configuration: it is assumed and reduces verbosity
- Support for version note in modules too
- Mark toplevel options, commands and modules that changed in latest version
- Now modules themselves can have version annotations in `note`
#### Installers and Container
- make-binaries: Bump Erlang/OTP to 26.2.5 and Elixir 1.16.3
- make-binaries: Bump OpenSSL to 3.3.1
- make-binaries: Bump Linux-PAM to 1.6.1
- make-binaries: Bump Expat to 2.6.2
2024-07-16 13:18:12 +02:00
- make-binaries: Revert temporarily an OTP commit that breaks MSSQL ([#4178](https://github.com/processone/ejabberd/issues/4178))
2024-06-27 15:12:29 +02:00
- CONTAINER.md: Invalid `CTL_ON_CREATE` usage in docker-compose example
#### WebAdmin
- ejabberd_ctl: Improve parsing of commas in arguments
- ejabberd_ctl: Fix output of UTF-8-encoded binaries
- WebAdmin: Remove webadmin_view for now, as commands allow more fine-grained permissions
- WebAdmin: Unauthorized response: include some text to direct to the logs
- WebAdmin: Improve home page
- WebAdmin: Sort alphabetically the menu items, except the most used ones
- WebAdmin: New login box in the left menu bar
- WebAdmin: Add make_command functions to produce HTML command element
- Document 'any' argument and result type, useful for internal commands
- Commands with 'internal' tag: don't list and block execution by frontends
- WebAdmin: Move content to commands; new pages; hook changes; new commands
2024-02-24 17:40:03 +01:00
## Version 24.02
2024-01-23 14:41:23 +01:00
2024-03-14 11:35:49 +01:00
#### Core:
2024-02-26 12:42:56 +01:00
- Added Matrix gateway in `mod_matrix_gw`
2024-01-23 14:41:23 +01:00
- Support SASL2 and Bind2
- Support tls-server-end-point channel binding and sasl2 codec
- Support tls-exporter channel binding
- Support XEP-0474: SASL SCRAM Downgrade Protection
- Fix presenting features and returning results of inline bind2 elements
2024-07-16 13:24:18 +02:00
- `disable_sasl_scram_downgrade_protection` : New option to disable XEP-0474
- `negotiation_timeout` : Increase default value from 30s to 2m
2024-01-23 14:41:23 +01:00
- mod_carboncopy: Teach how to interact with bind2 inline requests
2024-03-14 11:35:49 +01:00
#### Other:
2024-01-23 14:41:23 +01:00
- ejabberdctl: Fix startup problem when having set `EJABBERD_OPTS` and logger options
2024-02-26 12:42:56 +01:00
- ejabberdctl: Set EJABBERD_OPTS back to `""` , and use previous flags as example
2024-01-23 14:41:23 +01:00
- eldap: Change logic for `eldap tls_verify=soft` and `false`
- eldap: Don't set `fail_if_no_peer_cert` for eldap ssl client connections
2024-02-26 12:42:56 +01:00
- Ignore hints when checking for chat states
2024-01-23 14:41:23 +01:00
- mod_mam: Support XEP-0424 Message Retraction
2024-02-26 12:42:56 +01:00
- mod_mam: Fix XEP-0425: Message Moderation with SQL storage
2024-01-23 14:41:23 +01:00
- mod_ping: Support XEP-0198 pings when stream management is enabled
- mod_pubsub: Normalize pubsub `max_items` node options on read
- mod_pubsub: PEP nodetree: Fix reversed logic in node fixup function
- mod_pubsub: Only care about PEP bookmarks options when creating node from scratch
2024-03-14 11:35:49 +01:00
#### SQL:
2024-01-23 14:41:23 +01:00
- MySQL: Support `sha256_password` auth plugin
- ejabberd_sql_schema: Use the first unique index as a primary key
- Update SQL schema files for MAM's XEP-0424
- New option [`sql_flags` ](https://docs.ejabberd.im/admin/configuration/toplevel/#sql-flags ): right now only useful to enable `mysql_alternative_upsert`
2024-03-14 11:35:49 +01:00
#### Installers and Container:
2024-02-26 12:42:56 +01:00
- Container: Add ability to ignore failures in execution of `CTL_ON_*` commands
- Container: Update to Erlang/OTP 26.2, Elixir 1.16.1 and Alpine 3.19
- Container: Update this custom ejabberdctl to match the main one
- make-binaries: Bump OpenSSL 3.2.1, Erlang/OTP 26.2.2, Elixir 1.16.1
- make-binaries: Bump many dependency versions
2024-03-14 11:35:49 +01:00
#### Commands API:
2024-02-26 12:42:56 +01:00
- `print_sql_schema` : New command available in ejabberdctl command-line script
- ejabberdctl: Rework temporary node name generation
- ejabberdctl: Print argument description, examples and note in help
- ejabberdctl: Document exclusive ejabberdctl commands like all the others
2024-07-16 13:24:18 +02:00
- Commands: Add a new `muc_sub` tag to all the relevant commands
2024-01-23 14:41:23 +01:00
- Commands: Improve syntax of many commands documentation
- Commands: Use list arguments in many commands that used separators
2024-07-16 13:24:18 +02:00
- Commands: `set_presence` : switch priority argument from string to integer
2024-01-23 14:41:23 +01:00
- ejabberd_commands: Add the command API version as [a tag `vX` ](https://docs.ejabberd.im/developer/ejabberd-api/admin-tags/#v1 )
- ejabberd_ctl: Add support for list and tuple arguments
- ejabberd_xmlrpc: Fix support for restuple error response
- mod_http_api: When no specific API version is requested, use the latest
2024-03-14 11:35:49 +01:00
#### Compilation with Rebar3/Elixir/Mix:
2024-02-26 12:42:56 +01:00
- Fix compilation with Erlang/OTP 27: don't use the reserved word 'maybe'
- configure: Fix explanation of `--enable-group` option ([#4135](https://github.com/processone/ejabberd/issues/4135))
2024-01-23 14:41:23 +01:00
- Add observer and runtime_tools in releases when `--enable-tools`
2024-02-26 12:42:56 +01:00
- Update "make translations" to reduce build requirements
- Use Luerl 1.0 for Erlang 20, 1.1.1 for 21-26, and temporary fork for 27
2024-01-23 14:41:23 +01:00
- Makefile: Add `install-rel` and `uninstall-rel`
- Makefile: Rename `make rel` to `make prod`
2024-02-26 12:42:56 +01:00
- Makefile: Update `make edoc` to use ExDoc, requires mix
- Makefile: No need to use `escript` to run rebar|rebar3|mix
- configure: If `--with-rebar=rebar3` but rebar3 not system-installed, use local one
2024-01-23 14:41:23 +01:00
- configure: Use Mix or Rebar3 by default instead of Rebar2 to compile ejabberd
2024-02-26 12:42:56 +01:00
- ejabberdctl: Detect problem running iex or etop and show explanation
2024-01-23 14:41:23 +01:00
- Rebar3: Include Elixir files when making a release
- Rebar3: Workaround to fix protocol consolidation
- Rebar3: Add support to compile Elixir dependencies
- Rebar3: Compile explicitly our Elixir files when `--enable-elixir`
2024-02-26 12:42:56 +01:00
- Rebar3: Provide proper path to `iex`
- Rebar/Rebar3: Update binaries to work with Erlang/OTP 24-27
2024-01-23 14:41:23 +01:00
- Rebar/Rebar3: Remove Elixir as a rebar dependency
2024-02-26 12:42:56 +01:00
- Rebar3/Mix: If `dev` profile/environment, enable tools automatically
2024-01-23 14:41:23 +01:00
- Elixir: Fix compiling ejabberd as a dependency ([#4128](https://github.com/processone/ejabberd/issues/4128))
- Elixir: Fix ejabberdctl start/live when installed
2024-02-26 12:42:56 +01:00
- Elixir: Fix: `FORMATTER ERROR: bad return value` ([#4087](https://github.com/processone/ejabberd/issues/4087))
2024-02-23 19:02:06 +01:00
- Elixir: Fix: Couldn't find file `Elixir Hex API`
2024-01-23 14:41:23 +01:00
- Mix: Enable stun by default when `vars.config` not found
- Mix: New option `vars_config_path` to set path to `vars.config` ([#4128](https://github.com/processone/ejabberd/issues/4128))
- Mix: Fix ejabberdctl iexlive problem locating iex in an OTP release
2024-02-23 17:01:26 +01:00
## Version 23.10
2023-10-17 15:29:20 +02:00
2024-03-14 11:35:49 +01:00
#### Compilation:
2023-10-17 15:29:20 +02:00
- Erlang/OTP: Raise the requirement to Erlang/OTP 20.0 as a minimum
- CI: Update tests to Erlang/OTP 26 and recent Elixir
- Move Xref and Dialyzer options from workflows to `rebar.config`
- Add sections to `rebar.config` to organize its content
- Dialyzer dirty workarounds because `re:mp()` is not an exported type
- When installing module already configured, keep config as example
- Elixir 1.15 removed support for `--app`
- Elixir: Improve support to stop external modules written in Elixir
- Elixir: Update syntax of function calls as recommended by Elixir compiler
- Elixir: When building OTP release with mix, keep `ERLANG_NODE=ejabberd@localhost`
- `ejabberdctl` : Pass `ERLANG_OPTS` when calling `erl` to parse the `INET_DIST_INTERFACE` ([#4066](https://github.com/processone/ejabberd/issues/#4066)
2024-03-14 11:35:49 +01:00
#### Commands:
2023-10-17 15:29:20 +02:00
- `create_room_with_opts` : Fix typo and move examples to `args_example` ([#4080](https://github.com/processone/ejabberd/issues/#4080))
- `etop` : Let `ejabberdctl etop` work in a release (if `observer` application is available)
- `get_roster` : Command now returns groups in a list instead of newlines ([#4088](https://github.com/processone/ejabberd/issues/#4088))
- `halt` : New command to halt ejabberd abruptly with an error status code
- `ejabberdctl` : Fix calling ejabberdctl command with wrong number of arguments with Erlang 26
- `ejabberdctl` : Improve printing lists in results
- `ejabberdctl` : Support `policy=user` in the help and return proper arguments
- `ejabberdctl` : Document how to stop a debug shell: control+g
2024-03-14 11:35:49 +01:00
#### Container:
2023-10-17 15:29:20 +02:00
- Dockerfile: Add missing dependency for mssql databases
- Dockerfile: Reorder stages and steps for consistency
- Dockerfile: Use Alpine as base for `METHOD=package`
- Dockerfile: Rename packages to improve compatibility
- Dockerfile: Provide specific OTP and elixir vsn for direct compilation
- Halt ejabberd if a command in `CTL_ON_` fails during ejabberd startup
2024-03-14 11:35:49 +01:00
#### Core:
2023-10-17 15:29:20 +02:00
- `auth_external_user_exists_check` : New option ([#3377](https://github.com/processone/ejabberd/issues/#3377))
- `gen_mod` : Extend `gen_mod` API to simplify hooks and IQ handlers registration
- `gen_mod` : Add shorter forms for `gen_mod` hook/`iq_handler` API
- `gen_mod` : Update modules to the new `gen_mod` API
- `install_contrib_modules` : New option to define contrib modules to install automatically
- `unix_socket` : New listener option, useful when setting unix socket files ([#4059](https://github.com/processone/ejabberd/issues/#4059))
- `ejabberd_systemd` : Add a few debug messages
- `ejabberd_systemd` : Avoid using `gen_server` timeout ([#4054](https://github.com/processone/ejabberd/issues/#4054))([#4058](https://github.com/processone/ejabberd/issues/#4058))
- `ejabberd_listener` : Increase default listen queue backlog value to 128, which is the default value on both Linux and FreeBSD ([#4025](https://github.com/processone/ejabberd/issues/#4025))
- OAuth: Handle `badpass` error message
- When sending message on behalf of user, trigger `user_send_packet` ([#3990](https://github.com/processone/ejabberd/issues/#3990))
- Web Admin: In roster page move the `AddJID` textbox to top ([#4067](https://github.com/processone/ejabberd/issues/#4067))
- Web Admin: Show a warning when visiting webadmin with non-privileged account ([#4089](https://github.com/processone/ejabberd/issues/#4089))
2024-03-14 11:35:49 +01:00
#### Docs:
2023-10-17 15:29:20 +02:00
- Example configuration: clarify 5223 tls options; specify s2s shaper
- Make sure that `policy=user` commands have `host` instead of `server` arg in docs
- Improve syntax of many command descriptions for the Docs site
- Move example Perl extauth script from ejabberd git to Docs site
- Remove obsolete example files, and add link in Docs to the archived copies
2024-03-14 11:35:49 +01:00
#### Installers (`make-binaries`):
2023-10-17 15:29:20 +02:00
- Bump Erlang/OTP version to 26.1.1, and other dependencies
- Remove outdated workaround
- Don't build Linux-PAM examples
- Fix check for current Expat version
- Apply minor simplifications
- Don't duplicate config entries
- Don't hard-code musl version
- Omit unnecessary glibc setting
- Set kernel version for all builds
- Let curl fail on HTTP errors
2024-03-14 11:35:49 +01:00
#### Modules:
2023-10-17 15:29:20 +02:00
- `mod_muc_log` : Add trailing backslash to URLs shown in disco info
- `mod_muc_occupantid` : New module with support for XEP-0421 Occupant Id ([#3397](https://github.com/processone/ejabberd/issues/#3397))
- `mod_muc_rtbl` : Better error handling in ([#4050](https://github.com/processone/ejabberd/issues/#4050))
- `mod_private` : Add support for XEP-0402 PEP Native Bookmarks
- `mod_privilege` : Don't fail to edit roster ([#3942](https://github.com/processone/ejabberd/issues/#3942))
- `mod_pubsub` : Fix usage of `plugins` option, which produced `default_node_config` ignore ([#4070](https://github.com/processone/ejabberd/issues/#4070))
- `mod_pubsub` : Add `pubsub_delete_item` hook
- `mod_pubsub` : Report support of `config-node-max` in pep
- `mod_pubsub` : Relay pubsub iq queries to muc members without using bare jid ([#4093](https://github.com/processone/ejabberd/issues/#4093))
- `mod_pubsub` : Allow pubsub node owner to overwrite items published by other persons
- `mod_push_keepalive` : Delay `wake_on_start`
- `mod_push_keepalive` : Don't let hook crash
- `mod_push` : Add `notify_on` option
- `mod_push` : Set `last-message-sender` to bare JID
- `mod_register_web` : Make redirect to page that end with `/` ([#3177](https://github.com/processone/ejabberd/issues/#3177))
- `mod_shared_roster_ldap` : Don't crash in `get_member_jid` on empty output ([#3614](https://github.com/processone/ejabberd/issues/#3614))
2024-03-14 11:35:49 +01:00
#### MUC:
2023-10-17 15:29:20 +02:00
- Add support to register nick in a room ([#3455](https://github.com/processone/ejabberd/issues/#3455))
- Convert `allow_private_message` MUC room option to `allowpm` ([#3736](https://github.com/processone/ejabberd/issues/#3736))
- Update xmpp version to send `roomconfig_changesubject` in disco#info ([#4085](https://github.com/processone/ejabberd/issues/#4085))
- Fix crash when loading room from DB older than ffa07c6, 23.04
- Fix support to retract a MUC room message
- Don't always store messages passed through `muc_filter_message` ([#4083](https://github.com/processone/ejabberd/issues/#4083))
- Pass also MUC room retract messages over the `muc_filter_message` ([#3397](https://github.com/processone/ejabberd/issues/#3397))
- Pass MUC room private messages over the `muc_filter_message` too ([#3397](https://github.com/processone/ejabberd/issues/#3397))
- Store the subject author JID, and run `muc_filter_message` when sending subject ([#3397](https://github.com/processone/ejabberd/issues/#3397))
- Remove existing role information for users that are kicked from room ([#4035](https://github.com/processone/ejabberd/issues/#4035))
- Expand rule "mucsub subscribers are members in members only rooms" to more places
2024-03-14 11:35:49 +01:00
#### SQL:
2023-10-17 15:29:20 +02:00
- Add ability to force alternative upsert implementation in mysql
- Properly parse mysql version even if it doesn't have type tag
- Use prepared statement with mysql
- Add alternate version of mysql upsert
- `ejabberd_auth_sql` : Reset scram fields when setting plain password
- `mod_privacy_sql` : Fix return values from `calculate_diff`
- `mod_privacy_sql` : Optimize `set_list`
- `mod_privacy_sql` : Use more efficient way to calculate changes in `set_privacy_list`
2024-02-23 17:01:26 +01:00
## Version 23.04
2023-04-18 11:11:08 +02:00
2024-03-14 11:35:49 +01:00
#### General:
2023-04-18 11:11:08 +02:00
- New `s2s_out_bounce_packet` hook
- Re-allow anonymous connection for connection without client certificates ([#3985](https://github.com/processone/ejabberd/issues/3985))
- Stop `ejabberd_system_monitor` before stopping node
- `captcha_url` option now accepts `auto` value, and it's the default
- `mod_mam` : Add support for XEP-0425: Message Moderation
- `mod_mam_sql` : Fix problem with results of mam queries using rsm with max and before
- `mod_muc_rtbl` : New module for Real-Time Block List for MUC rooms ([#4017](https://github.com/processone/ejabberd/issues/4017))
- `mod_roster` : Set roster name from XEP-0172, or the stored one ([#1611](https://github.com/processone/ejabberd/issues/1611))
- `mod_roster` : Preliminary support to store extra elements in subscription request ([#840](https://github.com/processone/ejabberd/issues/840))
- `mod_pubsub` : Pubsub xdata fields `max_item/item_expira/children_max` use `max` not `infinity`
- `mod_vcard_xupdate` : Invalidate `vcard_xupdate` cache on all nodes when vcard is updated
2024-03-14 11:35:49 +01:00
#### Admin:
2023-04-18 11:11:08 +02:00
- `ext_mod` : Improve support for loading `*.so` files from `ext_mod` dependencies
- Improve output in `gen_html_doc_for_commands` command
- Fix ejabberdctl output formatting ([#3979](https://github.com/processone/ejabberd/issues/3979))
- Log HTTP handler exceptions
2024-03-14 11:35:49 +01:00
#### MUC:
2023-04-18 11:11:08 +02:00
- New command `get_room_history`
- Persist `none` role for outcasts
- Try to populate room history from mam when unhibernating
- Make `mod_muc_room:set_opts` process persistent flag first
- Allow passing affiliations and subscribers to `create_room_with_opts` command
- Store state in db in `mod_muc:create_room()`
- Make subscribers members by default
2024-03-14 11:35:49 +01:00
#### SQL schemas:
2023-04-18 11:11:08 +02:00
- Fix a long standing bug in new schema migration
- `update_sql` command: Many improvements in new schema migration
- `update_sql` command: Add support to migrate MySQL too
- Change PostgreSQL SERIAL to BIGSERIAL columns
- Fix minor SQL schema inconsistencies
- Remove unnecessary indexes
- New SQL schema migrate fix
2024-03-14 11:35:49 +01:00
#### MS SQL:
2023-04-18 11:11:08 +02:00
- MS SQL schema fixes
- Add `new` schema for MS SQL
- Add MS SQL support for new schema migration
- Minor MS SQL improvements
- Fix MS SQL error caused by `ORDER BY` in subquery
2024-03-14 11:35:49 +01:00
#### SQL Tests:
2023-04-18 11:11:08 +02:00
- Add support for running tests on MS SQL
- Add ability to run tests on upgraded DB
- Un-deprecate `ejabberd_config:set_option/2`
- Use python3 to run `extauth.py` for tests
- Correct README for creating test docker MS SQL DB
- Fix TSQLlint warnings in MSSQL test script
2024-03-14 11:35:49 +01:00
#### Testing:
2023-04-18 11:11:08 +02:00
- Fix Shellcheck warnings in shell scripts
- Fix Remark-lint warnings
- Fix Prospector and Pylint warnings in test `extauth.py`
- Stop testing ejabberd with Erlang/OTP 19.3, as Github Actions no longer supports ubuntu-18.04
- Test only with oldest OTP supported (20.0), newest stable (25.3) and bleeding edge (26.0-rc2)
- Upload Common Test logs as artifact in case of failure
2024-03-14 11:35:49 +01:00
#### `ecs` container image:
2023-04-18 11:11:08 +02:00
- Update Alpine to 3.17 to get Erlang/OTP 25 and Elixir 1.14
- Add `tini` as runtime init
- Set `ERLANG_NODE` fixed to `ejabberd@localhost`
- Upload images as artifacts to Github Actions
- Publish tag images automatically to ghcr.io
2024-03-14 11:35:49 +01:00
#### `ejabberd` container image:
2023-04-18 11:11:08 +02:00
- Update Alpine to 3.17 to get Erlang/OTP 25 and Elixir 1.14
- Add `METHOD` to build container using packages ([#3983](https://github.com/processone/ejabberd/issues/3983))
- Add `tini` as runtime init
- Detect runtime dependencies automatically
- Remove unused Mix stuff: ejabberd script and static COOKIE
- Copy captcha scripts to `/opt/ejabberd-*/lib` like the installers
- Expose only `HOME` volume, it contains all the required subdirs
- ejabberdctl: Don't use `.../releases/COOKIE` , it's no longer included
2024-03-14 11:35:49 +01:00
#### Installers:
2023-04-18 11:11:08 +02:00
- make-binaries: Bump versions, e.g. erlang/otp to 25.3
- make-binaries: Fix building with erlang/otp v25.x
- make-packages: Fix for installers workflow, which didn't find lynx
2024-02-23 17:01:26 +01:00
## Version 23.01
2023-01-16 15:20:16 +01:00
2024-03-14 11:35:49 +01:00
#### General:
2023-01-16 15:20:16 +01:00
- Add `misc:uri_parse/2` to allow declaring default ports for protocols
- CAPTCHA: Add support to define module instead of path to script
- Clustering: Handle `mnesia_system_event mnesia_up` when other node joins this ([#3842](https://github.com/processone/ejabberd/issues/3842))
- ConverseJS: Don't set i18n option because Converse enforces it instead of browser lang ([#3951](https://github.com/processone/ejabberd/issues/3951))
- ConverseJS: Try to redirect access to files `mod_conversejs` to CDN when there is no local copies
- ext_mod: compile C files and install them in ejabberd's `priv`
- ext_mod: Support to get module status from Elixir modules
- make-binaries: reduce log output
- make-binaries: Bump zlib version to 1.2.13
- MUC: Don't store mucsub presence events in offline storage
- MUC: `hibernation_time` is not an option worth storing in room state ([#3946](https://github.com/processone/ejabberd/issues/3946))
- Multicast: Jid format when `multicastc` was cached ([#3950](https://github.com/processone/ejabberd/issues/3950))
- mysql: Pass `ssl` options to mysql driver
- pgsql: Do not set `standard_conforming_strings` to `off` ([#3944](https://github.com/processone/ejabberd/issues/3944))
- OAuth: Accept `jid` as a HTTP URL query argument
- OAuth: Handle when client is not identified
- PubSub: Expose the `pubsub#type` field in `disco#info` query to the node ([#3914](https://github.com/processone/ejabberd/issues/3914))
- Translations: Update German translation
2024-03-14 11:35:49 +01:00
#### Admin:
2023-01-16 15:20:16 +01:00
- `api_permissions` : Fix option crash when doesn't have `who:` section
- `log_modules_fully` : New option to list modules that will log everything
- `outgoing_s2s_families` : Changed option's default to IPv6, and fall back to IPv4
- Fix bash completion when using Relive or other install methods
- Fix portability issue with some shells ([#3970](https://github.com/processone/ejabberd/issues/3970))
- Allow admin command to subscribe new users to `members_only` rooms
- Use alternative `split/2` function that works with Erlang/OTP as old as 19.3
- Silent warning in OTP24 about not specified `cacerts` in SQL connections
- Fix compilation warnings with Elixir 1.14
2024-03-14 11:35:49 +01:00
#### DOAP:
2023-01-16 15:20:16 +01:00
- Support extended `-protocol` erlang attribute
- Add extended RFCs and XEP details to some protocol attributes
2023-01-16 18:22:25 +01:00
- `tools/generate-doap.sh` : New script to generate DOAP file, add `make doap` ([#3915](https://github.com/processone/ejabberd/issues/3915))
2023-01-16 15:20:16 +01:00
- `ejabberd.doap` : New DOAP file describing ejabberd supported protocols
2024-03-14 11:35:49 +01:00
#### MQTT:
2023-01-16 15:20:16 +01:00
- Add MQTT bridge module
- Add support for certificate authentication in MQTT bridge
- Implement reload in MQTT bridge
- Add support for websockets to MQTT bridge
- Recognize ws5/wss5 urls in MQTT bridge
- `mqtt_publish` : New hook for MQTT publish event
- `mqtt_(un)subscribe` : New hooks for MQTT subscribe & unsubscribe events
2024-03-14 11:35:49 +01:00
#### VSCode:
2023-01-16 15:20:16 +01:00
- Improve `.devcontainer` to use use devcontainer image and `.vscode`
- Add `.vscode` files to instruct VSCode how to run ejabberd
- Add Erlang LS default configuration
- Add Elvis default configuration
2024-02-23 17:01:26 +01:00
## Version 22.10
2022-10-18 18:59:28 +02:00
2024-03-14 11:35:49 +01:00
#### Core:
2022-10-18 18:59:28 +02:00
- Add `log_burst_limit_*` options ([#3865](https://github.com/processone/ejabberd/issues/3865))
- Support `ERL_DIST_PORT` option to work without epmd
- Auth JWT: Catch all errors from `jose_jwt:verify` and log debugging details ([#3890](https://github.com/processone/ejabberd/issues/3890))
2022-10-25 12:07:41 +02:00
- CAPTCHA: Support `@VERSION@` and `@SEMVER@` in `captcha_cmd` option ([#3835](https://github.com/processone/ejabberd/issues/3835))
2022-10-18 18:59:28 +02:00
- HTTP: Fix unix socket support ([#3894](https://github.com/processone/ejabberd/issues/3894))
- HTTP: Handle invalid values in `X-Forwarded-For` header more gracefuly
- Listeners: Let module take over socket
- Listeners: Don't register listeners that failed to start in config reload
- `mod_admin_extra` : Handle empty roster group names
- `mod_conversejs` : Fix crash when mod_register not enabled ([#3824](https://github.com/processone/ejabberd/issues/3824))
- `mod_host_meta` : Complain at start if listener is not encrypted
- `mod_ping` : Fix regression on `stop_ping` in clustering context ([#3817](https://github.com/processone/ejabberd/issues/3817))
- `mod_pubsub` : Don't crash on command failures
- `mod_shared_roster` : Fix cache invalidation
- `mod_shared_roster_ldap` : Update roster_get hook to use `#roster_item{}`
- `prosody2ejabberd` : Fix parsing of scram password from prosody
2024-03-14 11:35:49 +01:00
#### MIX:
2022-10-18 18:59:28 +02:00
- Fix MIX's filter_nodes
- Return user jid on join
- `mod_mix_pam` : Add new MIX namespaces to disco features
- `mod_mix_pam` : Add handling of IQs with newer MIX namespaces
- `mod_mix_pam` : Do roster pushes on join/leave
- `mod_mix_pam` : Parse sub elements of the mix join remote result
- `mod_mix_pam` : Provide MIX channels as roster entries via hook
- `mod_mix_pam` : Display joined channels on webadmin page
- `mod_mix_pam` : Adapt to renaming of `participant-id` from mix_roster_channel record
- `mod_roster` : Change hook type from `#roster{}` to `#roster_item{}`
- `mod_roster` : Respect MIX `<annotate/>` setting
- `mod_roster` : Adapt to change of mix_annotate type to boolean in roster_query
- `mod_shared_roster` : Fix wrong hook type `#roster{}` (now `#roster_item{}` )
2024-03-14 11:35:49 +01:00
#### MUC:
2022-10-18 18:59:28 +02:00
- Store role, and use it when joining a moderated room ([#3330](https://github.com/processone/ejabberd/issues/3330))
- Don't persist `none` role ([#3330](https://github.com/processone/ejabberd/issues/3330))
- Allow MUC service admins to bypass max_user_conferences limitation
- Show allow_query_users room option in disco info ([#3830](https://github.com/processone/ejabberd/issues/3830))
2024-02-23 19:02:06 +01:00
- mod_muc_room: Don't set affiliation to `none` if it's already `none` in `process_item_change/3`
2022-10-18 18:59:28 +02:00
- Fix mucsub unsubscribe notification payload to have muc_unsubcribe in it
- Allow muc_{un}subscribe hooks to modify sent packets
- Pass room state to muc_{un}subscribed hook
- The archive_msg export fun requires MUC Service for room archives
- Export `mod_muc_admin:get_room_pid/2`
- Export function for getting room diagnostics
2024-03-14 11:35:49 +01:00
#### SQL:
2022-10-18 18:59:28 +02:00
- Handle errors reported from begin/commit inside transaction
- Make connection close errors bubble up from inside sql transaction
- Make first sql reconnect wait shorter time
- React to sql driver process exit earlier
- Skip connection exit message when we triggered reconnection
- Add syntax_tools to applications, required when using ejabberd_sql_pt ([#3869](https://github.com/processone/ejabberd/issues/3869))
- Fix mam delete_old_messages_batch for sql backend
- Use `INSERT ... ON DUPLICATE KEY UPDATE` for upsert on mysql
- Update mysql library
- Catch mysql connection being close earlier
2024-03-14 11:35:49 +01:00
#### Build:
2022-10-18 18:59:28 +02:00
- `make all` : Generate start scripts here, not in `make install` ([#3821](https://github.com/processone/ejabberd/issues/3821))
- `make clean` : Improve this and "distclean"
- `make deps` : Ensure deps configuration is ran when getting deps ([#3823](https://github.com/processone/ejabberd/issues/3823))
- `make help` : Update with recent changes
- `make install` : Don't leak DESTDIR in files copied by 'make install'
- `make options` : Fix error reporting on OTP24+
- `make update` : configure also in this case, similarly to `make deps`
- Add definition to detect OTP older than 25, used by ejabberd_auth_http
- Configure eimp with mix to detect image convert properly ([#3823](https://github.com/processone/ejabberd/issues/3823))
- Remove unused macro definitions detected by rebar3_hank
- Remove unused header files which content is already in xmpp library
2024-03-14 11:35:49 +01:00
#### Container:
2022-10-18 18:59:28 +02:00
- Get ejabberd-contrib sources to include them
- Copy `.ejabberd-modules` directory if available
- Do not clone repo inside container build
- Use `make deps` , which performs additional steps ([#3823](https://github.com/processone/ejabberd/issues/3823))
- Support `ERL_DIST_PORT` option to work without epmd
- Copy `ejabberd-docker-install.bat` from docker-ejabberd git and rename it
- Set a less frequent healthcheck to reduce CPU usage ([#3826](https://github.com/processone/ejabberd/issues/3826))
- Fix build instructions, add more podman examples
2024-03-14 11:35:49 +01:00
#### Installers:
2022-10-18 18:59:28 +02:00
- make-binaries: Include CAPTCHA script with release
- make-binaries: Edit rebar.config more carefully
- make-binaries: Fix linking of EIMP dependencies
- make-binaries: Fix GitHub release version checks
- make-binaries: Adjust Mnesia spool directory path
- make-binaries: Bump Erlang/OTP version to 24.3.4.5
- make-binaries: Bump Expat and libpng versions
- make-packages: Include systemd unit with RPM
- make-packages: Fix permissions on RPM systems
- make-installers: Support non-root installation
- make-installers: Override code on upgrade
- make-installers: Apply cosmetic changes
2024-03-14 11:35:49 +01:00
#### External modules:
2022-10-18 18:59:28 +02:00
- ext_mod: Support managing remote nodes in the cluster
- ext_mod: Handle correctly when COMMIT.json not found
- Don't bother with COMMIT.json user-friendly feature in automated user case
- Handle not found COMMIT.json, for example in GH Actions
- Add WebAdmin page for managing external modules
2024-03-14 11:35:49 +01:00
#### Workflows Actions:
2022-10-18 18:59:28 +02:00
- Update workflows to Erlang 25
- Update workflows: Ubuntu 18 is deprecated and 22 is added
- CI: Remove syntax_tools from applications, as fast_xml fails Dialyzer
- Runtime: Add Xref options to be as strict as CI
2024-02-23 17:01:26 +01:00
## Version 22.05
2022-05-06 10:52:11 +02:00
2024-03-14 11:35:49 +01:00
#### Core
2022-05-06 10:52:11 +02:00
- C2S: Don't expect that socket will be available in `c2s_terminated` hook
- Event handling process hook tracing
2022-05-17 11:15:48 +02:00
- Guard against `erlang:system_info(logical_processors)` not always returning a number
2022-05-06 10:52:11 +02:00
- `domain_balancing` : Allow for specifying `type` only, without specifying `component_number`
2024-03-14 11:35:49 +01:00
#### MQTT
2022-05-06 10:52:11 +02:00
- 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)
2024-03-14 11:35:49 +01:00
#### MUC
2022-05-06 10:52:11 +02:00
- 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 configurable
- `subscribe_room_many_max_users` : New option in `mod_muc_admin`
2024-03-14 11:35:49 +01:00
#### mod_conversejs
2022-05-06 10:52:11 +02:00
- Improved options to support `@HOST@` and `auto` values
- Set `auth` and `register` options based on ejabberd configuration
- `conversejs_options` : New option
- `conversejs_resources` : New option
2024-03-14 11:35:49 +01:00
#### PubSub
2022-05-06 10:52:11 +02:00
- `mod_pubsub` : Allow for limiting `item_expire` value
- `mod_pubsub` : Unsubscribe JID on whitelist removal
- `node_pep` : Add config-node and multi-items features (#3714)
2024-03-14 11:35:49 +01:00
#### SQL
2022-05-06 10:52:11 +02:00
- 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
2024-03-14 11:35:49 +01:00
#### Other Modules
2022-05-17 11:15:48 +02:00
- `auth_jwt` : Checking if an user is active in SM for a JWT authenticated user (#3795)
2022-05-06 10:52:11 +02:00
- `mod_configure` : Implement Get List of Registered/Online Users from XEP-0133
- `mod_host_meta` : New module to serve host-meta files, see XEP-0156
- `mod_mam` : Store all mucsub notifications not only message notifications
- `mod_ping` : Delete ping timer if resource is gone after the ping has been sent
- `mod_ping` : Don't send ping if resource is gone
- `mod_push` : Fix notifications for pending sessions (XEP-0198)
- `mod_push` : Keep push session ID on session resume
- `mod_shared_roster` : Adjust special group cache size
- `mod_shared_roster` : Normalize JID on unset_presence (#3752)
- `mod_stun_disco` : Fix parsing of IPv6 listeners
2024-03-14 11:35:49 +01:00
#### Dependencies
2022-05-06 10:52:11 +02:00
- 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
2024-03-14 11:35:49 +01:00
#### Compile
2022-05-06 10:52:11 +02:00
- `mix release` : Copy `include/` files for ejabberd, deps and otp, in `mix.exs`
- `rebar3 release` : Fix ERTS path in `ejabberdctl`
- `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
2024-03-14 11:35:49 +01:00
#### Start
2022-05-06 10:52:11 +02:00
- New `make relive` similar to `ejabberdctl live` without installing
- `ejabberdctl` : Fix some warnings detected by ShellCheck
- `ejabberdctl` : Mention in the help: `etop` , `ping` and `started` /`stopped`
- `make rel` : Switch to paths: `conf/` , `database/` , `logs/`
- `mix.exs` : Add `-boot` and `-boot_var` in `ejabberdctl` instead of adding `vm.args`
- `tools/captcha.sh` : Fix some warnings detected by ShellCheck
2024-03-14 11:35:49 +01:00
#### Commands
2022-05-06 10:52:11 +02:00
- Accept more types of ejabberdctl commands arguments as JSON-encoded
- `delete_old_mam_messages_batch` : New command with rate limit
- `delete_old_messages_batch` : New command with rate limit
- `get_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 backends
- `room_unused_*` : Optimize commands in SQL by reusing `created_at`
- `rooms_unused_...` : Let `get_all_rooms` handle `global` argument (#3726)
- `stop|restart` : Terminate ejabberd_sm before everything else to ensure sessions closing (#3641)
- `subscribe_room_many` : New command
2024-03-14 11:35:49 +01:00
#### Translations
2022-05-06 10:52:11 +02:00
- Updated Catalan
- Updated French
- Updated German
- Updated Portuguese
- Updated Portuguese (Brazil)
- Updated Spanish
2024-03-14 11:35:49 +01:00
#### Workflows
2022-05-06 10:52:11 +02:00
- 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
2024-02-23 17:01:26 +01:00
## Version 21.12
2021-12-09 11:07:43 +01:00
2024-03-14 11:35:49 +01:00
#### Commands
2021-12-09 11:07:43 +01:00
- `create_room_with_opts` : Fixed when using SQL storage
- `change_room_option` : Add missing fields from config inside `mod_muc_admin:change_options`
- piefxis: Fixed arguments of all commands
2024-03-14 11:35:49 +01:00
#### Modules
2021-12-09 11:07:43 +01:00
- 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
2024-03-14 11:35:49 +01:00
#### PubSub
2021-12-09 11:07:43 +01:00
- 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
2024-03-14 11:35:49 +01:00
#### SQL
2021-12-09 11:07:43 +01:00
- 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
2024-03-14 11:35:49 +01:00
#### Other
2021-12-09 11:07:43 +01:00
- `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)
2024-02-23 17:01:26 +01:00
## Version 21.07
2021-07-21 17:42:13 +02:00
2024-03-14 11:35:49 +01:00
#### Compilation
2021-07-21 17:42:13 +02:00
- 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/` and `vars.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
2024-03-14 11:35:49 +01:00
#### Commands:
2021-07-21 17:42:13 +02:00
- 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 persistent
- `help` : Major changes in its usage and output
- `srg_create` : Update to use `label` parameter instead of `name`
2024-03-14 11:35:49 +01:00
#### Modules:
2021-07-21 17:42:13 +02:00
- 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
2024-03-14 11:35:49 +01:00
#### SQL:
2021-07-21 17:42:13 +02:00
- 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
2024-02-23 17:01:26 +01:00
## Version 21.04
2021-07-19 17:22:20 +02:00
2024-03-14 11:35:49 +01:00
#### API Commands:
2021-07-19 17:22:20 +02:00
- `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 archive
- `send_message` : Fix bug introduced in ejabberd 21.01
- `set_vcard` : Return modules errors
2024-03-14 11:35:49 +01:00
#### Build and setup:
2021-07-19 17:22:20 +02:00
- 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
2024-03-14 11:35:49 +01:00
#### Miscellaneous:
2021-07-19 17:22:20 +02:00
- 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
2024-03-14 11:35:49 +01:00
#### Modules:
2021-07-19 17:22:20 +02:00
- `mod_block_strangers` : If stanza is type error, allow it passing
- `mod_caps` : Don't request roster when not needed
- `mod_caps` : Skip reading roster in one more case
- `mod_mam` : Remove `queryid` from MAM fin element
- `mod_mqtt` : When deregistering XMPP account, close its MQTT sessions
- `mod_muc` : Take in account subscriber's affiliation when checking access to moderated room
- `mod_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 lazy
- `mod_pubsub` : Don't fail on PEP unsubscribe
- `mod_pubsub` : Fix `gen_pubsub_node:get_state` return value
- `mod_vcard` : Obtain and provide photo type in vCard LDAP
2024-02-23 17:01:26 +01:00
## Version 21.01
2021-07-19 17:22:20 +02:00
2024-03-14 11:35:49 +01:00
#### Miscellaneous changes:
2021-07-19 17:22:20 +02:00
- `log_rotate_size` option: Fix handling of ‘ infinity’ value
- `mod_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` and `max_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
- Stun: Block loopback addresses by default
- Several documentation fixes and clarifications
2024-03-14 11:35:49 +01:00
#### Commands:
2021-07-19 17:22:20 +02:00
- `decide_room` : Use better fallback value for room activity time when skipping room
- `delete_old_message` : Fix when using sqlite spool table
- `module_install` : Make ext_mod compile module with debug_info flags
- `room_unused_*` : Don’ t fetch subscribers list
- `send_message` : Don’ t include empty in messages
- `set_room_affiliation` : Validate affiliations
2024-03-14 11:35:49 +01:00
#### Running:
2021-07-19 17:22:20 +02:00
- Docker: New `Dockerfile` and `devcontainer.json`
- New `ejabberdctl foreground-quiet`
- Systemd: Allow for listening on privileged ports
- Systemd: Integrate nicely with systemd
2024-03-14 11:35:49 +01:00
#### Translations:
2021-07-19 17:22:20 +02:00
- Moved gettext PO files to a new `ejabberd-po` repository
- Improved several translations: Catalan, Chinese, German, Greek, Indonesian, Norwegian, Portuguese (Brazil), Spanish.
2024-02-23 17:01:26 +01:00
## Version 20.12
2020-12-15 15:26:23 +01:00
- Add support for `SCRAM-SHA-{256,512}-{PLUS}` authentication
- Don't use same value in cache for user don't exist and wrong password
2021-07-19 17:22:20 +02:00
- `outgoing_s2s_ipv*_address` : New options to set ipv4/ipv6 outbound s2s out interface
2020-12-15 15:26:23 +01:00
- 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
2024-03-14 11:35:49 +01:00
#### Admin
2020-12-15 15:26:23 +01:00
- Docker: Fix DB initialization
- New sql_odbc_driver option: choose the mssql ODBC driver
2021-07-19 17:22:20 +02:00
- Rebar3: Fully supported. Enable with `./configure --with-rebar=/path/to/rebar3`
2020-12-15 15:26:23 +01:00
- systemd: start ejabberd in foreground
2024-03-14 11:35:49 +01:00
#### Modules:
2020-12-15 15:26:23 +01:00
- 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
2024-02-23 17:01:26 +01:00
## Version 20.07
2020-07-28 13:25:27 +02:00
2024-03-14 11:35:49 +01:00
#### Changes in this version
2020-07-28 13:25:27 +02:00
- 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.
2022-01-24 01:01:39 +01:00
- Fix crash when room that was started with logging enabled was later
2020-07-28 13:25:27 +02:00
changed to logging disabled
- Increase default shaper limits (this should help with delays for
clients that are using jingle)
2023-02-14 16:12:18 +01:00
- Fix couple compatibility problems which prevented working on
2020-07-28 13:25:27 +02:00
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
2024-02-23 17:01:26 +01:00
## Version 20.03
2020-03-23 17:55:11 +01:00
2024-03-14 11:35:49 +01:00
#### Changes in this version
2020-03-23 17:55:11 +01:00
- Add support of ssl connection when connection to mysql
database (configured with `sql_ssl: true` option)
- Experimental support for cockroachdb when configured
2023-02-14 16:12:18 +01:00
with postgres connector
2020-03-23 17:55:11 +01:00
- Add cache and optimize queries issued by `mod_shared_roster` ,
this should greatly improve performance of this module when
used with `sql` 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
2024-02-23 17:01:26 +01:00
## Version 20.02
2020-02-25 14:30:06 +01:00
2024-03-14 11:35:49 +01:00
#### Changes in this version
2020-02-25 14:30:06 +01:00
- 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
2024-02-23 17:01:26 +01:00
## Version 20.01
2020-01-17 12:05:36 +01:00
2024-03-14 11:35:49 +01:00
#### New features
2020-01-17 12:05:36 +01:00
- Implement OAUTH authentication in mqtt
2020-01-21 12:31:04 +01:00
- Make logging infrastructure use new logger introduced
2020-01-17 12:05:36 +01:00
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
2022-01-24 01:01:39 +01:00
- Generate man page automatically
2020-01-17 12:05:36 +01:00
- Implement copy feature in mod_carboncopy
2024-03-14 11:35:49 +01:00
#### Fixes
2020-01-17 12:05:36 +01:00
- 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
2022-01-24 01:01:39 +01:00
- Limit amount of results returned by disco queries to pubsub nodes
2020-01-17 12:05:36 +01:00
- 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
2024-02-23 17:01:26 +01:00
## Version 19.09
2019-09-24 18:30:10 +02:00
2024-03-14 11:35:49 +01:00
#### Admin
2019-09-24 18:30:10 +02:00
- The minimum required Erlang/OTP version is now 19.3
- Fix API call using OAuth (#2982)
- Rename MUC command arguments from Host to Service (#2976)
2024-03-14 11:35:49 +01:00
#### Webadmin
2019-09-24 18:30:10 +02:00
- Don't treat 'Host' header as a virtual XMPP host (#2989)
- Fix some links to Guide in WebAdmin and add new ones (#3003)
- Use select fields to input host in WebAdmin Backup (#3000)
- Check account auth provided in WebAdmin is a local host (#3000)
2024-03-14 11:35:49 +01:00
#### ACME
2019-09-24 18:30:10 +02:00
- Improve ACME implementation
- Fix IDA support in ACME requests
- Fix unicode formatting in ACME module
- Log an error message on IDNA failure
- Support IDN hostnames in ACME requests
- Don't attempt to create ACME directory on ejabberd startup
- Don't allow requesting certificates for localhost or IP-like domains
- Don't auto request certificate for localhost and IP-like domains
- Add listener for ACME challenge in example config
2024-03-14 11:35:49 +01:00
#### Authentication
2019-09-24 18:30:10 +02:00
- JWT-only authentication for some users (#3012)
2024-03-14 11:35:49 +01:00
#### MUC
2019-09-24 18:30:10 +02:00
- Apply default role after revoking admin affiliation (#3023)
- Custom exit message is not broadcast (#3004)
- Revert "Affiliations other than admin and owner cannot invite to members_only rooms" (#2987)
- When join new room with password, set pass and password_protected (#2668)
- Improve rooms_* commands to accept 'global' as MUC service argument (#2976)
- Rename MUC command arguments from Host to Service (#2976)
2024-03-14 11:35:49 +01:00
#### SQL
2019-09-24 18:30:10 +02:00
- Fix transactions for Microsoft SQL Server (#2978)
- Spawn SQL connections on demand only
2024-03-14 11:35:49 +01:00
#### Misc
2019-09-24 18:30:10 +02:00
- Add support for XEP-0328: JID Prep
- Added gsfonts for captcha
- Log Mnesia table type on creation
- Replicate Mnesia 'bosh' table when nodes are joined
- Fix certificate selection for s2s (#3015)
- Provide meaningful error when adding non-local users to shared roster (#3000)
- Websocket: don't treat 'Host' header as a virtual XMPP host (#2989)
- Fix sm ack related c2s error (#2984)
- Don't hide the reason why c2s connection has failed
- Unicode support
- Correctly handle unicode in log messages
- Fix unicode processing in ejabberd.yml
2024-02-23 17:01:26 +01:00
## Version 19.08
2019-08-05 14:36:45 +02:00
2024-03-14 11:35:49 +01:00
#### Administration
2019-08-05 14:36:45 +02:00
- Improve ejabberd halting procedure
- Process unexpected erlang messages uniformly: logging a warning
- mod_configure: Remove modules management
2024-03-14 11:35:49 +01:00
#### Configuration
2019-08-05 14:36:45 +02:00
- Use new configuration validator
- ejabberd_http: Use correct virtual host when consulting trusted_proxies
- Fix Elixir modules detection in the configuration file
- Make option 'validate_stream' global
- Allow multiple definitions of host_config and append_host_config
- Introduce option 'captcha_url'
- mod_stream_mgmt: Allow flexible timeout format
- mod_mqtt: Allow flexible timeout format in session_expiry option
2024-03-14 11:35:49 +01:00
#### Misc
2019-08-05 14:36:45 +02:00
- Fix SQL connections leakage
- New authentication method using JWT tokens
- extauth: Add 'certauth' command
- Improve SQL pool logic
- Add and improve type specs
- Improve extraction of translated strings
- Improve error handling/reporting when loading language translations
- Improve hooks validator and fix bugs related to hooks registration
- Gracefully close inbound s2s connections
- mod_mqtt: Fix usage of TLS
- mod_offline: Make count_offline_messages cache work when using mam for storage
- mod_privacy: Don't attempt to query 'undefined' active list
- mod_privacy: Fix race condition
2024-03-14 11:35:49 +01:00
#### MUC
2019-08-05 14:36:45 +02:00
- Add code for hibernating inactive muc_room processes
- Improve handling of unexpected iq in mod_muc_room
- Attach mod_muc_room processes to a supervisor
- Restore room when receiving message or generic iq for not started room
2022-01-24 01:01:39 +01:00
- Distribute routing of MUC messages across all CPU cores
2019-08-05 14:36:45 +02:00
2024-03-14 11:35:49 +01:00
#### PubSub
2019-08-05 14:36:45 +02:00
- Fix pending nodes retrieval for SQL backend
- Check access_model when publishing PEP
- Remove deprecated pubsub plugins
- Expose access_model and publish_model in pubsub#metadata
2018-12-07 10:28:56 +01:00
2024-02-23 17:01:26 +01:00
## Version 19.05
2019-05-23 13:42:50 +02:00
2024-03-14 11:35:49 +01:00
#### Admin
2019-02-28 01:08:52 +01:00
- The minimum required Erlang/OTP version is now 19.1
2019-05-23 13:42:50 +02:00
- Provide a suggestion when unknown command, module, option or request handler is detected
- Deprecate some listening options: captcha, register, web_admin, http_bind and xmlrpc
- Add commands to get Mnesia info: mnesia_info and mnesia_table_info
- Fix Register command to respect mod_register's Access option
- Fixes in Prosody import: privacy and rooms
- Remove TLS options from the example config
- Improve request_handlers validator
- Fix syntax in example Elixir config file
2024-03-14 11:35:49 +01:00
#### Auth
2019-05-23 13:42:50 +02:00
- Correctly support cache tags in ejabberd_auth
- Don't process failed EXTERNAL authentication by mod_fail2ban
- Don't call to mod_register when it's not loaded
- Make anonymous auth don't {de}register user when there are other resources
2024-03-14 11:35:49 +01:00
#### Developer
2019-05-23 13:42:50 +02:00
- Rename listening callback from start/2 to start/3
- New hook called when room gets destroyed: room_destroyed
- New hooks for tracking mucsub subscriptions changes: muc_subscribed, muc_unsubscribed
- Make static hooks analyzer working again
2019-02-28 01:08:52 +01:00
2024-03-14 11:35:49 +01:00
#### MUC
2022-01-24 01:01:39 +01:00
- Service admins are allowed to recreate room even if archive is nonempty
2019-05-23 13:42:50 +02:00
- New option user_mucsub_from_muc_archive
- Avoid late arrival of get_disco_item response
- Handle get_subscribed_rooms call from mod_muc_room pid
- Fix room state cleanup from db on change of persistent option change
- Make get_subscribed_rooms work even for non-persistant rooms
- Allow non-moderator subscribers to get list of room subscribers
2024-03-14 11:35:49 +01:00
#### Offline
2019-05-23 13:42:50 +02:00
- New option bounce_groupchat: make it not bounce mucsub/groupchat messages
- New option use_mam_for_storage: fetch data from mam instead of spool table
- When applying limit of max msgs in spool check only spool size
- Do not store mucsub wrapped messages with no-store hint in offline storage
- Always store ActivityMarker messages
- Don't issue count/message fetch queries for offline from mam when not needed
- Properly handle infinity as max number of message in mam offline storage
- Sort messages by stanza_id when using mam storage in mod_offline
- Return correct value from count_offline_messages with mam storage option
- Make mod_offline put msg ignored by mam in spool when mam storage is on
2024-03-14 11:35:49 +01:00
#### SQL:
2019-05-23 13:42:50 +02:00
- Add SQL schemas for MQTT tables
- Report better errors on SQL terms decode failure
- Fix PostgreSQL compatibility in mod_offline_sql:remove_old_messages
- Fix handling of list arguments on pgsql
- Preliminary support for SQL in process_rosteritems command
2024-03-14 11:35:49 +01:00
#### Tests
2019-05-23 13:42:50 +02:00
- Add tests for user mucsub mam from muc mam
- Add tests for offline with mam storage
- Add tests for offline use_mam_for_storage
- Initial Docker environment to run ejabberd test suite
- Test offline:use_mam_for_storage, mam:user_mucsub_from_muc_archive used together
2024-03-14 11:35:49 +01:00
#### Websocket
2019-05-23 13:42:50 +02:00
- Add WebSockets support to mod_mqtt
- Return "Bad request" error when origin in websocket connection doesn't match
- Fix RFC6454 violation on websocket connection when validating Origin header
- Origin header validation on websocket connection
2024-03-14 11:35:49 +01:00
#### Other modules
2019-05-23 13:42:50 +02:00
- mod_adhoc: Use xml:lang from stanza when it's missing in < command /> element
- mod_announce: Add 'sessionid' attribute when required
- mod_bosh: Don't put duplicate polling attribute in bosh payload
- mod_http_api: Improve argument error messages and log messages
- mod_http_upload: Feed whole image to eimp:identify/1
- mod_http_upload: Log nicer warning on unknown host
- mod_http_upload: Case-insensitive host comparison
- mod_mqtt: Support other socket modules
- mod_push: Check for payload in encrypted messages
2019-03-01 21:41:53 +01:00
2024-02-23 17:01:26 +01:00
## Version 19.02
2019-02-26 14:40:21 +01:00
2024-03-14 11:35:49 +01:00
#### Admin
2019-02-26 14:40:21 +01:00
- Fix in configure.ac the Erlang/OTP version: from 17.5 to 19.0
- reload_config command: Fix crash when sql_pool_size option is used
- reload_config command: Fix crash when SQL is not configured
- rooms_empty_destroy command: Several fixes to behave more conservative
- Fix serverhost->host parameter name for muc_(un)register_nick API
2024-03-14 11:35:49 +01:00
#### Configuration
2019-02-26 14:40:21 +01:00
- Allow specifying tag for listener for api_permission purposes
- Change default ciphers to intermediate
- Define default ciphers/protocol_option in example config
- Don't crash on malformed 'modules' section
- mod_mam: New option clear_archive_on_room_destroy to prevent archive removal on room destroy
- mod_mam: New option access_preferences to restrict who can modify the MAM preferences
- mod_muc: New option access_mam to restrict who can modify that room option
- mod_offline: New option store_groupchat to allow storing group chat messages
2024-03-14 11:35:49 +01:00
#### Core
2019-02-26 14:40:21 +01:00
- Add MQTT protocol support
- Fix (un)setting of priority
- Use OTP application startup infrastructure for starting dependencies
- Improve starting order of several dependencies
2024-03-14 11:35:49 +01:00
#### MAM
2019-02-26 14:40:21 +01:00
- mod_mam_mnesia/sql: Improve check for empty archive
- disallow room creation if archive not empty and clear_archive_on_room_destroy is false
- allow check if archive is empty for or user or room
- Additional checks for database failures
2024-03-14 11:35:49 +01:00
#### MUC
2019-02-26 14:40:21 +01:00
- Make sure that room_destroyed is called even when some code throws in terminate
- Update muc room state after adding extra access field to it
- MUC/Sub: Send mucsub subscriber notification events with from set to room jid
2024-03-14 11:35:49 +01:00
#### Shared Roster
2019-02-26 14:40:21 +01:00
- Don't perform roster push for non-local contacts
- Handle versioning result when shared roster group has remote account
- Fix SQL queries
2024-03-14 11:35:49 +01:00
#### Miscelanea
2019-02-26 14:40:21 +01:00
- CAPTCHA: Add no-store hint to CAPTCHA challenge stanzas
- HTTP: Reject http_api request with malformed Authentication header
- mod_carboncopy: Don't lose carbons on presence change or session resumption
- mod_mix: Fix submission-id and channel resource
- mod_ping: Fix ping IQ reply/timeout processing (17.x regression)
- mod_private: Hardcode item ID for PEP bookmarks
- mod_push: Improve notification error handling
- PIEFXIS: Fix user export when password is scrammed
- Prosody: Improve import of roster items, rooms and attributes
- Translations: fixed "make translations"
- WebAdmin: Fix support to restart module with new options
2018-12-07 10:28:56 +01:00
2024-02-23 17:01:26 +01:00
## Version 18.12
2018-12-07 10:28:56 +01:00
2024-03-14 11:35:49 +01:00
- MAM data store compression
- Proxy protocol support
- MUC Self-Ping optimization (XEP-0410)
- Bookmarks conversion (XEP-0411)