Skip to content

Releases: esl/MongooseIM

MongooseIM 6.10.0

Choose a tag to compare

@chrzaszcz chrzaszcz released this 15 Oct 10:38

Highlights

  • Introduced a new format for Jingle Message Initiation push notifications.
  • Improved GraphQL metric queries and last-activity results for online users.
  • Hardened atom conversion and Erlang term decoding, and added the SAFE scanner to CI.
  • Fixed connection handling, dynamic-domain S2S routing, and run-time ETS table ownership.

Changed

  • Jingle push notifications carry JMI session data, use data-only MongoosePush requests, and route to APNs topics ending in .voip (#4802)
  • Upgraded fast_scram to 0.7.3 and fast_pbkdf2 to 2.1.0, fixing a potential memory leak (#4816)

Fixed

  • Fixed crashes on unusable PROXY protocol headers, including address-less proxy health checks (#4795)
  • Fixed crashes when an SSE handler terminates before its state is initialized (#4796)
  • Run-time ETS tables now use a dedicated heir process, avoiding unexpected transfer messages to ejabberd_sup (#4798)
  • Fixed GraphQL resolver errors for roster subscription states, large Mnesia integer results and metric queries (#4806)
  • Dynamic domains and their subdomains are now treated as local when checking S2S routing targets (#4809)
  • GraphQL last-activity queries now return the current timestamp and Online status for users with available presence (#4814)
  • Removed a console warning from nodetool (#4817)
  • Prevented possible crash errors logged when a client disconnected too early (#4819)

Removed

  • Removed the unused StatsD reporter dependency and startup code (#4813)
  • Removed unreachable external-authentication cache code and the dead extauth_cache option (#4815)

Other

  • Added the SAFE scanner to CircleCI and GitHub Actions, hardened atom conversion and stored MAM message decoding, introduced ClusterNodeName validation for GraphQL cluster metric queries, and corrected JWT algorithm names (#4783)
  • Replaced MinIO with RustFS in the test infrastructure and updated HTTP upload documentation (#4797, #4808)
  • Expanded unexpected-message tests for gen_server processes (#4800)
  • Fixed unexpected errors in tests (#4804, #4805, #4807, #4810)

Commits, merged PRs and closed issues

Special thanks to our contributors

MongooseIM 6.9.0

Choose a tag to compare

@Premwoik Premwoik released this 10 Sep 13:07

Highlights

  • Added configurable, rule-based push notification handling as an alternative to plugins.
  • Push notifications now use routing-time session state instead of the general presence status.
  • Fixed mod_muc_light preventing the last admin from leaving a room.
  • Tightened GraphQL schema nullability and added a SafeInt scalar for large metric values.

Added

  • Added configurable, rule-based push notification handling as an alternative to plugins, with ordered rules and push/skip actions (#4781)

Changed

  • mod_event_pusher no longer emits received-message events for non-user targets (#4777)
  • Push notifications now also fire for CSI-inactive recipients (#4779)
  • Tightened GraphQL schema nullability across many fields and arguments (#4772)

Fixed

  • Fixed mod_muc_light preventing the last admin from leaving a room when promote_on_last_owner_leave is disabled (#4780)

Other

  • Classified expected errors logged during big test runs (#4778)
  • Fixed s2s DNS lookup tests depending on the local DNS resolver (#4792)
  • CI fixes: a fixed docs build, and an avoided CircleCI timeout in the packages pipeline (#4791, #4793)

Commits, merged PRs and closed issues

MongooseIM 6.8.1

Choose a tag to compare

@chrzaszcz chrzaszcz released this 24 Aug 11:45

Highlights

  • Added configurable default node configuration for the new mod_pubsub.
  • Fixed HTTP authentication handling for unexpected service response codes.
  • Fixed C2S listener shutdown handling.
  • Migrated the documentation build setup to Zensical.
  • Removed the deprecated mod_muc_light legacy mode and its XEP-0045 compatibility codec.

Added

  • Added modules.mod_pubsub.default_node_config.access_model and modules.mod_pubsub.default_node_config.max_items, allowing deployments to choose default configuration for newly created PEP nodes (#4767)

Changed

  • Upgraded CETS to 0.3.2, fixing a long-running retry loop when multiple nodes tried to join at once and failed to acquire the global lock (#4762)
  • Migrated the documentation build setup to Zensical (#4763, #4771, #4775, #4776)

Fixed

  • HTTP authentication now rejects operations cleanly when the auth service returns unexpected status codes, such as 500 or 503, instead of crashing with a case_clause error (#4764)
  • Fixed C2S listener shutdown issues (#4770)

Removed

  • Removed the deprecated legacy_mode option from mod_muc_light, together with the legacy XEP-0045 compatibility codec (#4754)

Other

  • Added big test coverage for HTTP authentication (#4766, #4774)

Commits, merged PRs and closed issues

Special thanks to our contributors

MongooseIM 6.8.0

Choose a tag to compare

@mdbrnowski mdbrnowski released this 04 Aug 13:11

Highlights

  • Security fix: GraphQL requests could skip the use and protected directives, bypassing authorization checks. Deployments exposing the GraphQL API should upgrade.
  • New performance-focused mod_pubsub, implementing PEP with selected parts of XEP-0060. The previous implementation is available as mod_pubsub_old and is deprecated.
  • mod_broadcast lets administrators send announcements to all users of a domain.
  • Support for Erlang/OTP 29, with OTP 26 no longer supported.
  • Multiple MUC and MUC Light improvements, better aligned with XEP-0045.

Added

  • New mod_pubsub implementing PEP, with user/domain removal and GDPR data retrieval. It uses a new schema with no data migration from mod_pubsub_old (#4731, #4738, #4740)
  • Support for max_items in PEP, with the max_items_per_node server-imposed limit (#4741, #4742)
  • mod_broadcast for messaging all users of a domain, managed with the GraphQL Admin API (#4724)
  • listRooms admin GraphQL query in mod_muc_light (#4744)
  • Per-room configuration overrides and the promote_on_last_owner_leave option in mod_muc_light (#4749)
  • Message hints support for push notifications, including basic Jingle message handling (#4739)
  • The tls_cert_remaining_days metric, and support for passing extra arguments to metric probes (#4725)
  • Database migration scripts for this release (#4748)

Changed

  • Added Erlang/OTP 29 support and dropped OTP 26 (#4743)
  • Aligned muc#roomconfig_allowinvites with XEP-0045, gating invitations by role instead of affiliation (#4733)
  • Admins can now change reserved nicknames through the MUC member list (#4735)
  • Bumped supported XEP versions, and unified mod_vcard_ldap behaviour for missing vCards with other backends (#4721)
  • router_no_route_found is now a global metric, and its log is less severe (#4730)
  • Updated mongooseim-docker, where cluster join detection uses a .joined marker instead of Mnesia files (#4719)
  • Updated the exml and erlang_doctor dependencies (#4737, #4755)

Fixed

  • Fixed the default host of mod_http_upload (#4745)
  • Fixed an authorization bypass in the GraphQL API: a named operation submitted without operationName skipped directive processing, so the use and protected checks were never applied (#4734)
  • Added the missing BareJID output conversion in the GraphQL API, removing unnecessary notice logs (#4756)
  • Fixed mod_ping sending pings after ping_interval plus ping_req_timeout instead of just ping_interval (#4761)
  • Fixed a crash when ordering S2S SRV records, which broke outgoing S2S connections (#4760)

Removed

  • Removed mod_muc_log (#4708)
  • Removed system message translation support (#4728)
  • Deprecated mod_pubsub_old, the previous PubSub implementation (#4731)
  • Deprecated the legacy_mode option of mod_muc_light (#4746)

Other

  • Improved test coverage, together with the resulting code fixes (#4720, #4747)
  • CI improvements: big test presets synced with CircleCI, a fixed codecov uploader script, and a pinned zazkia version (#4717, #4727, #4729, #4751)
  • Documentation updates: a Docker guide, improved MUC Light docs, and testing guide fix (#4732, #4752, #4753)

Commits, merged PRs and closed issues

Special thanks to our contributors

MongooseIM 6.7.0

Choose a tag to compare

@kamilwaz kamilwaz released this 13 May 09:56
787748e

Highlights

  • Lightweight and performance-focused implementation of entity capabilities, supporting XEP-0115 and XEP-0390.
  • Migrated project artifacts to trymongoose.im
  • MongooseICE was removed from the documentation and replaced with a guide on integrating MIM with Coturn
  • Cleaned up legacy modules
  • Various enhancements and bug fixes

Added

  • Added dynamic domains support in mod_push_service_mongoosepush (#4686)
  • Introduced the wpool_queue_lengths metric (#4657, #4709)
  • Introduced cross-node error aggregation for better observability (#4680, #4693, #4698, #4701)

Changed

  • Reimplemented mod_caps, supporting XEP-0115 and XEP-0390, and aligning hashing with XEP-0300 and XEP-0414 (#4681)
  • Migrated artifacts to trymongoose.im (#4697, #4702, #4706, #4710, #4712)
  • Improved script portability (#4703)
  • Changed the externalId GQL field type to ID in mod_external_filter (#4684)

Fixed

  • Fixed an issue with removing users from MUC rooms (#4688)

Removed

  • Replaced legacy routing module with mongoose_router (#4695)
  • Removed mod_jingle_sip (#4705)
  • Deprecated mod_muc_log (#4707)
  • Removed MongooseICE from documentation and replaced it with a tutorial on how to integrate MIM with Coturn (#4677, #4694)

Other

  • Updated big test presets (#4682, #4692)
  • Reduced log noise in mongoose_s2s_in (#4689)
  • Coverage is now collected separately on each node (#4690)
  • Updated OTP and dependencies (#4700, #4704)

Commits, merged PRs and closed issues

MongooseIM 6.6.0

Choose a tag to compare

@bartekgorny bartekgorny released this 18 Mar 13:12

Highlights

  • mod_external_filter allows MongooseIM to filter messages by sending GraphQL queries to an external service.
  • mod_blocklist allows administrators to block and unblock selected users.
  • New GraphQL queries provide insight into host types, modules, and services configuration.
  • Added support for XEP-0359, XEP-0431, and XEP-0440.
  • Refreshed audio-video capabilities.
  • Improved event pushing to external services like RabbitMQ and Redis.
  • Removed the deprecated REST API and support for the MS SQL database.

Added

  • GraphQL: allDomains query, listUsers pagination, host types with their configuration, all-stanzas subscription (#4597, #4606, #4607, #4618, #4656)
  • Prometheus support in anonymized Google Analytics (#4609)
  • Event pushing: auto-unarchive broadcast and dynamic domains support in mod_event_pusher (#4610, #4629)
  • Official support for full-text search (XEP-0431) (#4627)
  • SASL Channel-Binding Type Capability (XEP-0440) (#4631)
  • Stable stanza IDs (XEP-0359) (#4633)
  • SSLKEYLOGFILE support (#4634)
  • Blocklist administration module and API expansion (#4645, #4669)
  • External filter module for message delivery checks (#4651, #4658, #4661)
  • Additional validation of database configuration (#4659, #4667)
  • TURN REST API auth support (#4671)

Changed

  • RabbitMQ worker reconnection/refactor and outgoing pool queue limits (#4591, #4594, #4599)
  • TLS keyfile validation (#4595)
  • Redis connection username support (#4616)
  • Docker image improvements (#4617, #4632)
  • Reworked configuration for BOSH and WebSocket (#4623)
  • Enforced user agent for mod_fast_auth_token (#4628)
  • Audio/video capability refresh (#4640, #4650)
  • Deprecated mod_jingle_sip (#4660)

Fixed

  • Privacy blocking IQ should not stop stanzas sent by the server (#4600)
  • GraphQL API fixes for cets and roster (#4614, #4624)
  • Avoided noproc error in mongoose_epmd (#4637)
  • Fixed mongoose certificates (#4647)
  • Fixed global RabbitMQ pool crash (#4648)

Removed

Other

Commits, merged PRs and closed issues

Special thanks to our contributors

MongooseIM 6.5.0

Choose a tag to compare

@pawlooss1 pawlooss1 released this 08 Dec 15:25

Highlights

  • Enhanced and enriched implementation of mod_event_pusher_rabbit
  • Enabled TLS support for Redis and RabbitMQ connections
  • Support for XEP-0402 PEP Native Bookmarks
  • Support for Erlang 28 and dropped support for Erlang 26
  • Various enhancements and bug fixes
  • Refactoring and improvements of tests

Added

  • XEP-0402 PEP Native Bookmarks (#4545)
  • Implement support for blocking a user for any groupchat (#4548)
  • Support Erlang 28 (#4549)
  • Enable selected rabbit exchanges (#4576)
  • Enable TLS connections to Redis (#4579)
  • Support common name prefix/suffix for SASL External (#4580)
  • Support durable exchanges in mod_event_pusher_rabbit (#4582)
  • Support TLS in RabbitMQ connection pools (#4583)
  • Support RabbitMQ virtual hosts (#4585)

Changed

  • Use cached affiliations in MUC Light API (#4552)
  • Refactor logging to use c2s_data consistently in log messages (#4561)
  • Separate certfile and keyfile (#4566)
  • Deprecate MSSQL backend (#4574)
  • Skip all messages without body in mod_event_pusher_rabbit (#4577)
  • Use a hook with handlers in mod_event_pusher (#4578)

Fixed

  • Fix and update GraphiQL (#4543)
  • Strip Acc when it is buffered to save memory (#4544)
  • Fix missing presence unavailable notifications in Stream Management (#4557)
  • Fix missing stream tag for connection-timeout errors (#4559)
  • Fix TLS error logs (#4565)
  • Fix component IsValidFromJid returning non boolean (#4572)
  • Fix colon escaping in Redis session backend (#4584)
  • Fix race condition in mod_mam create_user_archive (#4592)

Removed

  • Drop support for Erlang 26 (#4549)

Other

  • Update Debian release and minor OTP versions (#4555)
  • Rework tests for invalid stream opening tag/element (#4556)
  • Fix documentation of mod_blocking (#4560)
  • Use the PGDATA directory in docker-setup-postgres (#4563)
  • Fix heading levels in mod_inbox doc (#4570)
  • Fix the test runner script (#4573)
  • Refactor mod_muc_api:create_instant_room/3 (#4575)
  • Refactor sasl_external_SUITE (#4581)
  • Enable "Rerun Failed Tests" for Small Tests (#4586)

Commits, merged PRs and closed issues

MongooseIM 6.4.0

Choose a tag to compare

@jacekwegr jacekwegr released this 25 Jun 09:45

Highlights

  • Reworked S2S and component listeners
  • Added TLS 1.3 tls-exporter channel binding
  • Added 0-RTT, and channel binding in FAST authentication
  • Unified connection and TLS handling
  • Improved XMPP traffic shaper configuration with validation and clearer defaults
  • Cleanup of legacy modules and updated dependencies
  • Reworked application startup order (start applications only when needed)
  • Use system CA certificates if not provided in a file
  • Various enhancements and bug fixes

Added

  • Support dynamic domains for components (#4450)
  • TLS listeners for components (#4453)
  • TLS 0-RTT to mod_fast_auth_token (#4478)
  • Channel binding in FAST authentication (#4494)
  • Option to clear inbox after destroying MUC Light room (#4522)

Changed

  • Reworked listeners and TLS (#4452, #4509)
    • Reworked component connection handling (#4442)
    • Changed component listener naming scheme to match XMPP specification (#4451)
    • Reworked S2S listeners (#4455)
    • Unified listener TLS configuration via fast_tls removal and channel binding (#4458)
    • Unified listener handling (#4460)
    • Reworked adding dynamic domains to components (#4461)
    • Improved consistency of just_tls filters (#4467)
    • Reworked S2S incoming connections (#4470, #4513)
    • Reworked S2S outgoing connections (#4479)
    • System certificates are used if CA certs are not provided in a file (#4493)
    • Reorganized S2S configuration options (#4515)
    • Improved instrumentation consistency (#4517)
    • Simplified and unified XMPP metrics (#4520)
    • Minor optimizations and cleanups (#4480, #4512, #4514, #4516)
  • Increased rate for the default normal shaper (#4540)
  • Reworked application startup order and FIPS config (#4524, #4528, #4542)

Fixed

  • XMPP traffic shapers configuration and validation (#4527)
  • max_file_size option in mod_http_upload (#4531)
  • Fixed incorrect xmlns in presences sent by mod_muc (#4539)

Removed

  • Dead max_fsm_queue option (#4521)
  • Last mention of unused EJABBERD_DIR variable (#4533)

Other

  • Upgraded dependencies (#4500, #4519)
  • Updated exometer_labels converter function (#4507)
  • Changed base docker image to ubuntu-noble (#4537)
  • Documentation improvements (#4504, #4506, #4525)
  • Testing and CI improvements/fixes (#4523, #4529, #4532, #4534)
  • Replaced the ubuntu-oracular package with ubuntu-plucky (#4536)

Commits, merged PRs and closed issues

MongooseIM 6.3.3

Choose a tag to compare

@jacekwegr jacekwegr released this 10 Apr 09:40

Highlights

  • Fixed buffer duplication issue in stream management
  • Improved IQ handling for unknown ID formats
  • Restored package support for older systems
  • Various enhancements and bug fixes

Fixed

  • Duplication issue in stream management buffer (#4496, #4498)
  • Stream management stanza counting (#4501)
  • Improper response when receiving IQ with unknown ID format (#4503)
  • Bundled OpenSSL 3.x to restore package support on older systems (#4511)

Removed

  • Call to an unsupported MySQL option (#4508)

Other

  • Minor refactor of mod_stream_management (#4497)
  • Improved type specs for Sid (#4502)
  • Documentation improvements (#4495)
  • Testing improvements (#4505)

Commits, merged PRs and closed issues

MongooseIM 6.3.2

Choose a tag to compare

@jacekwegr jacekwegr released this 24 Feb 14:08

Highlights

  • Added support for XEP-0484: Fast Authentication Streamlining Tokens
  • Upgraded to exml 4.1.1
  • Deprecated fast_tls
  • Improved just_tls with distinct client and server options
  • Various enhancements and bug fixes

Added

  • Distinction between client and server options for just_tls (#4456)
  • XEP-0484: "Fast Authentication Streamlining Tokens" implementation (#4379)

Changed

  • Updated exml to 4.1.1 (#4465, #4471, #4473)
  • Update dependencies: erl_cloud and base16 (#4469)
  • Deprecated fast_tls for C2S (#4468)
  • Behavior of PEP discovery to closely match the XEP specification (#4475)
  • Migrated GraphiQL to V3 (#4474)
  • Translations are now a service (#4481)
  • Cleaned up empty GraphQL queries (#4482)
  • Updated elvis.config to exclude modules that do not match linter standards (#4483)

Fixed

  • Description of log handler migration (#4454)
  • Compilation warnings (#4462)
  • Certificates generations for CockroarchDB (#4466)
  • probe_failed error (#4440)
  • Wrong namespace when removing IQ handlers in mod_sic (#4484)
  • SCRAM hashing issue by upgrading fast_scram library (#4491)

Other

Known issues and upgrade recommendations

  • If you are using MongooseIM 4.1.0 to 6.3.1 with SCRAM authentication and OpenSSL >=3.4.1, hashes for algorithms stronger than SHA-1 are calculated incorrectly. This issue is fixed in this release. See SCRAM hashing issue for details and required actions.
  • OpenSSL versions below 3.0 are no longer supported. If you are using OpenSSL 1.x or older, you must upgrade to OpenSSL 3.x before updating MongooseIM, as older versions will not work.

Commits, merged PRs and closed issues

Special thanks to our contributors