Skip to content

Releases: esl/MongooseIM

MongooseIM 6.3.2

24 Feb 14:08
Compare
Choose a tag to compare

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

MongooseIM 6.3.1

30 Dec 14:45
Compare
Choose a tag to compare

Highlights

  • Better certificate validation
  • Improved CockroachDB support
  • Removed unnecessary components
  • Multiple owner support in MUC Light
  • Packages are now published on GitHub
  • Various improvements and fixes

Added

  • Checking of probe metrics types (#4390)
  • Multiple owner support in MUC Light (#4392)
  • Delays to SM buffer (#4407)
  • Better logging when something takes longer than expected (#4427, #4430)
  • Support open_test_database_shell for CockroachDB (#4438)

Changed

  • Enforced fail_if_no_peer_cert in just_tls for stricter client certificate validation (#4386)
  • Allowed config processor to be a list of functions (#4396)
  • fast_tls to validate CA certificate when verify_mode is set to verify_peer or selfsigned_peer (#4391)
  • Supervisor, listeners, components and types cleanup (#4441)
  • Optimized memory usage in just_tls (#4447)

Fixed

  • MUC room crash when handling old protocol stanza (#4387)
  • CockroachDB consistency (#4402)
  • Shutdown logic to prevent event_not_registered errors by stopping c2s processes before listeners (#4400)
  • Definition of the "protected" GraphQL directive (#4409)
  • GraphQL library is now used as a package (#4405)
  • Package related warning (#4410)
  • IO list handling in jiffy:encode (#4420)
  • Error on startup: "No such file or directory" (#4436)
  • MongooseIM is restarted as a permanent application rather than a temporary one (#4443)

Removed

  • Lager as a dependency (#4393)
  • Goldrush from rebar.lock (#4397)
  • Dead tools and code (#4411)
  • Native code from mam_id (#4412)
  • More complicated dead code (#4422)
  • Base16 library (#4415)

Other

Commits, merged PRs and closed issues

MongooseIM 6.3.0

22 Oct 10:29
Compare
Choose a tag to compare

Highlights

  • Improved instrumentation with better configurability, Prometheus support and user-friendly features
  • Docker images are smaller and free of reported vulnerabilities
  • Improved WebSocket's stream management support
  • Erlang 27 compatibility
  • Added support for CockroachDB as a new RDBMS
  • Various improvements and fixes

Added

Changed

  • Upgraded CETS to the latest version (#4271)
  • Optimized node cleanup for mod_last (#4274)
  • Upgraded test dependencies (#4275)
  • Moved Exometer reporters config to mongooseim.toml (#4326)
  • Upgraded fast_tls (#4330)
  • Privacy IQs sent to users are treated as regular stanzas (#4361)
  • Renaming c2s_state_timeout option (#4363)
  • Moved docker repository to 'erlangsolutions' organization (#4372)
  • Docker image to the one based on Ubuntu 24.10 (#4375)

Fixed

  • Starting CETS for persistent_cluster_id (#4245)
  • Package building scripts (#4273)
  • S2S DNS discovery (#4278)
  • Timestamps for MUC legacy messages (#4294)
  • Improved stream management support for WebSockets (#4303)
  • GraphQL SSE crash with large stanza payloads (#4364)
  • Double message in MAM bug (#4374)
  • Building docker image locally (#4377)

Removed

  • CentOS support (#4314)
  • geas dependency of GraphQL (#4332)
  • Old mongoose_metrics module (#4353)

Other

Commits, merged PRs and closed issues

MongooseIM 6.2.1

12 Apr 10:15
Compare
Choose a tag to compare

Highlights

  • Enhanced CETS
  • Pools configuration
  • Traffic shapers update
  • Support for MAM v1.1.0
  • More reliable testing
  • Various improvements and fixes

All changes

Added

  • RDBMS backend for mod_caps (#4211)
  • Commit hash to GraphQL server status (#4221, #4262)
  • Erlang Doctor debugging tool (#4248)
  • Pools:
    • By host type (#4229)
    • By host config (#4235)
    • Names to mongoose_rdbms (#4231)

Changed

  • Improved shapers (#4187, #4203, #4213)
  • Enhanced discovery requests handling (#4194)
  • User-friendly errors for internal databases in the GraphQL API (#4192)
  • Increase idle_timeout for SSE (#4196)
  • Presence management refactor (#4207)
  • MAM implementation update to version 1.1.0 (#4218, #4225)
  • Roster management refactor (#4209)

Fixed

  • CETS improvements:
  • MAM lookup error handling (#4191)
  • MUC Light id definition for MariaDB (#4195)
  • max_stanza_size issue (#4197)
  • Duplicate migration files (#4230)
  • Invalid MAM IDs parsing and overflow (#4242)
  • Certificate options verification on HTTPS (#4236)
  • GitHub Actions status badge (#4261)

Other

Commits, merged PRs and closed issues

MongooseIM 6.2.0

13 Dec 10:22
Compare
Choose a tag to compare

Highlights

  • Introduced CETS as an alternative internal database to Mnesia
  • Updated many XEP implementations to the newest version
  • Implemented partial support for XEP-0386: Bind 2 and XEP-0388: Extensible SASL Profile
  • Support for Erlang 26
  • Removed support for Riak
  • Various improvements and fixes

Added

  • CETS
    • CETS backend for session management and stream management (#3629, #4075, #4143)
    • Add GraphQL handler for CETS info (#4015, #4116)
    • RDBMS discovery backend for CETS (#4022, #4042, #4108, #4049, #4165, #4182)
    • CETS backend for mod_bosh (#4050)
    • CETS support for components (#4047)
    • CETS support for S2S (#4046)
    • CETS backend for mod_muc (#4066)
    • CETS backend for mod_jingle_sip (#4076)
    • CETS backend for mongoose_cluster_id (#4136)
    • Add CETS backend for mod_keystore (#4140)
    • Remove mnesia from mod_register (#4146)
    • Anonymous auth supports mnesia and CETS backends (#4148)
    • Custom EPMD module (#4179)
  • Unified XEP list for xmpp.org (#4021, #4024, #4025, #4123)
  • Reporting to Google Analytics 4 (#4040, #4061)
  • Add config option to limit the number of users per domain (#4059)
  • XEP-0386: Bind 2 and XEP-0388: Extensible SASL Profile
  • Log internal-server-errors in mod_privacy (#4139)

Changed

  • XEP updates
    • Implement XEP-0004: Data Forms in a separate module (#4028, #4031)
    • Update XEP-0016: Privacy Lists (#4038)
    • Update XEP-0030: Service Discovery (#4039)
    • Update XEP-0050: Ad-Hoc Commands (#4043, #4048)
    • Update XEP-0363: HTTP File Upload(#4053)
    • Update attributes for XEP-0178 and add for XEP-0220 (#4057)
    • Update XEP-0045: Multi-User Chat (#4054)
    • Update XEPs: XEP-0082, XEP-0115, XEP-0124, XEP-0157, XEP-0160, XEP-0163, XEP-0199, XEP-0248, XEP-0277 (#4060)
    • Update XEP-0280 (#4083)
    • Update XEP-0060: Publish-Subscribe (#4092)
    • Update XEP-0215: External Service Discovery (#4120)
    • Advertise support for XEP-0249: Direct MUC Invitations (#4168)
  • Upgrade segmented_cache library and its telemetry events (#4041)
  • Improved Metrics initialization (#4070)
  • Initialise domain workers in the supervision tree instead of manually (#4069)
  • Config in one persistent term (#4093)
  • C2S features optimisations (#4094)
  • Patch ejabberd_sm (#4096)
  • Use jid:make_bare/2 instead of jid:make/3 where appropiate (#4109)
  • Unify auth_module and info in c2s_data record (#4110)
  • Simplify specs for ejabberd_sup and let workers terminate (#4117)
  • Raise an error if mnesia:create_table/2 fails (#4138)

Fixed

  • Fix mod_event_pusher:push_event/3 (#3939)
  • Removing incorrect CORS headers (#4006)
  • Fix handling of the undefined host type for stream errors (#4052)
  • Put reporter init after app startup (#4085)
  • Fix slow getaddrs call in global distribution (#4086)
  • C2S fixes (#4095, #4129)
  • Fix invalid username in scram authentication (#4118)
  • Return a proper type from mod_muc:node_cleanup_for_host_type/3 (#4122)
  • Correctly handle the case when TLS is disabled (#4150)
  • Fix error on ping timeout with stream management (#4153)
  • Update epgsql to fix an issue with Erlang/OTP 26 (#4169)
  • mod_muc_light config fix (#4178)
  • Change domain validation logic (#4184)
  • Require 'cacertfile' for just_tls when verify_mode = 'peer' (#4189)

Removed

  • Remove riak (#4035)
  • Remove legacy CLI commands (#4160)

Performance improvements

  • Cache router, filter, and process handlers into funs (#4068)
  • C2S features small optimisation (#4077)
  • Replace erlang:apply with explicit function calls for hooks (#4073)
  • Avoid calling ejabberd_sm_backend:get_sessions/3 second time when routing presences (#4089)
  • Put hooks into persistent_term using batching (#3878)

Other

Commits, merged PRs and closed issues

MongooseIM 6.1.0

10 May 09:39
7c57e02
Compare
Choose a tag to compare

Highlights

  • Reworked C2S architecture
  • Docker image for arm64
  • Update of Universal Analytics to Google Analytics 4
  • Dialyzer types fix
  • Deprecation of Riak
  • More reliable test suites
  • Various improvements and fixes

All changes

Added

Changed

Fixed

  • Issues with GitHub actions (#3992, #4003)
  • Status badges (#3975)
  • Announcing session establishment (#3970)
  • Input for mam errors (#4008)
  • Issue with certificate verification for Google Analytics (#3978)
  • Incremental removal query (#3924)
  • Unknown types in Dialyzer (#3929)
  • Scram invalid xml response (#4020)

Removed

  • Legacy C2S implementation (#3805, #3860)
  • Some of the hooks with no handlers (#3990)
  • Incorrect CORS headers (#4005)
  • Riak is now deprecated (#3981)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 5.1.1

27 Jan 12:14
0fd5932
Compare
Choose a tag to compare

What's Changed

  • dependencies update (PR #3938)

Full Changelog: 5.1.0...5.1.1

MongooseIM 5.0.1

27 Jan 12:15
918f38e
Compare
Choose a tag to compare

What's Changed

  • fix of errors in mod_event_pusher for muc/muc_light notifications (issue #3407, PR #3939)
  • dependencies update (PR #3939)

Full Changelog: 5.0.0...5.0.1

MongooseIM 6.0.0

19 Dec 11:41
Compare
Choose a tag to compare

Highlights

  • GraphQL API and Command Line Interface (CLI) with many new commands
  • Unified and reworked REST API
  • Incremental and asynchronous dynamic domain deletion
  • Full pagination support with RSM for Inbox
  • Significant code refactoring
  • Various improvements and fixes

All changes

Added

Removed

  • Legacy hooks module (#3892)
  • Legacy REST API command registry (#3697, #3759)

Changed

Fixed

  • Cassandra authentication issue (#3872)
  • Message sent to oneself was stored twice (#3859)
  • DB aggregator could stop working after an error (#3757)
  • Unexpected errors in logs (#3695, #3743)
  • Minor issues with MAM result paging (#3734)
  • Incorrect optimization flags passed to asynchronous workers (#3727)
  • Invalid format of the JWT secret (#3716)
  • Persistent rooms were not stored in the DB (#3707)
  • Issues with the anonymous login (#3706)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 5.1.0

08 Jun 17:39
Compare
Choose a tag to compare

Highlights

  • Internal configuration rework
  • Inbox functionality and performance improvements
  • Remove the dynamically compiled modules
  • The new OTP 25 support
  • Miscellaneous enhancements, optimizations & improvements

All changes

Added

  • Cache consistency. Use segmented_cache as a cache backend and have all caches use it (#3330)
  • Persistent term config. Replace ejabberd_config with new persistent terms mongoose_config(#3367, #3338, #3343, #3356)
  • Create async pools basing on the MAM async workers concept (#3433)
  • Add new ensure_subscribed_metric/3 to mongoose metrics module (#3353)
  • Add some property based tests for MAM's is_archivable_message/4 (#3450)
  • Create SECURITY.md (#3562)
  • Allow to use podman instead of docker (#3522, #3543)
  • Support the new OTP 25 (#3667)

Removed

  • Hook handler records don't need the key field (#3342)
  • Remove dead code (#3451)
  • Remove deprecated mod_aws_sns (#3607)
  • Remove deprecated mod_revproxy (#3617)
  • Remove custom eldap.hrl (#3647)
  • Removed in internal configuration rework
    • Remove all calls to gen_mod:set_module_opt from modules, making the module config constant(#3389)
    • Remove calls to gen_mod:set_module_opt(s) in big tests (#3398)
    • Remove gen_mod:set_module_opt(s) (#3468)
    • Remove the ETS table from gen_mod (#3484)
    • Eliminate gen_mod:get_opt_subhost (#3626)
  • Remove dynamically compiled modules (#3394)
    • POC module mod_private (#3323)
    • Remove ejabberd_rdbms and mongoose_rdbms_type (#3392)
    • Allow global to be passed into mongoose_backend as an arg (#3386)
    • MAM cassandra backend without dynamically compiled modules (#3373)
    • Use persistent terms to store backend_module in ejabberd_sm (#3379)
    • Add mongoose_backend:get_backend_name (#3345)
    • mod_auth_token (#3336)
    • mod_last (#3339)
    • mod_event_pusher_push (#3340, #3348)
    • mod_privacy (#3347)
    • mod_muc (#3349)
    • mod_inbox (#3350, #3362, #3440)
    • mod_muc_light (#3351, #3418)
    • mod_offline (#3352, #3371)
    • mod_smart_markers (#3357)
    • mod_vcard (#3358)
    • mod_roster (#3364)
    • mod_pubsub (#3368)
    • mod_http_upload (#3372)
    • mod_keystore (#3375)
    • mongoose_rdbms (#3390)
    • ejabberd_router(#3381)
    • mod_global_distrib_mapping (#3582)

Changed

  • Hook functions (#3331)
  • Extend safely module API (#3337, #3341)
  • Make mongoose_commands errors human-readable (#3346)
  • Add the accumulator to the is_muc_room_owner and can_access_room room hooks (#3417)
  • Worker pool cleanups (#3419)
  • Upgrade mongoose JID (#3525)
  • Add backend logic to mod_stream_management (#3556)
  • Don't use Mnesia for IQ response tracking (#3560)
  • Use dynamic aware check for global domains in ACL module (#3327, #3332)
  • Store ACL specs in the global config (#3335)
  • Allow skipping cover compilation for small tests (#3382)
  • REST /commands endpoint now lists commands with more detailed info (#3391)
  • Revert scope to global for all global distributed Redis presets (#3393)
  • Refactor some usage of stanza types in ejabberd_sm (#3396)
  • Simplify stream management suite (#3453)
  • Performance and metrics touch on async workers (#3502, #3514, #3529)
  • Use ETS backend in mongoose_router instead of Mnesia (#3505)
  • Refactor can_change_ra function in mod_muc (#3581)
  • Reconfigure supervision flags in pools (#3593)
  • Install a hook to filter messages being buffered (#3654)
  • Make RDBMS asynchronous
    • Add RDBMS execute_cast to use when the return value is not needed (#3485)
    • Add async RDBMS order (#3611)
    • Add RDBMS transaction async requests (#3643)
  • Perf optimizations
    • Pre-build metric prefixes and fetch-or-rebuild when needed (#3634, #3649)
    • Pattern matches the map key for more efficiency (#3635)
    • Skip pretty-printing of unused accumulator field (#3637)
  • Message Archive Management improvements
    • Use mongoose_acc timestamp in MAM (#3320)
    • Same stanza id for peers (#3376)
    • Retract on stanza ids (#3377, #3384, #3385)
    • Retraction events (#3497, #3498, #3513)
    • Report wrong stanza id more friendly (#3591)
    • Make MAM return timestamps in microseconds (#3595)
    • Reorder MAM's filter_local_packet hook order (#3623)
    • MAM shaper improvements (#3641)
  • Smart markers improvements (#3590)
    • Implement all the automatic removals (e.g. remove_domain) for the smart markers (#3544)
    • Prepare a documentation page for smart markers (#3535)
    • Implement all configurations for the smart markers (#3546, #3592)
    • Do not display a warning when processing a message with repeated markers (#3673)
  • Inbox improvements (#3359, #3596, #3604)
    • Improve types for dialyzer and log errors when they happen (#3366)
    • Simplify time-unit conversions (#3405)
    • Fix inbox filter bug that puts unnecessary load on the auth backend (#3449)
    • Refactor Inbox tests (#3452)
    • Use async pools in inbox (#3462, #3500)
    • Fix queryid (#3494)
    • Extend queries (#3597)
    • Implement boxes that allow the classifying of entries (#3608)
    • Add async removes - make asynchronous inbox consistent (#3616, #3670)
  • Internal config rework
    • Simplify MUC Light config (#3387)
    • Unfold global options without the temporary functions (#3406)
    • Prepare tests for config defaults (#3408)
    • Introduce config defaults for the 'general' section (#3409)
    • Replace local_config records with key-value pairs (#3410)
    • Add an option to format a section/list as a map (#3420)
    • Move auth config spec to auth backend modules (#3437)
    • Introduce defaults in the auth section (#3439)
    • Section-based auth config (#3446)
    • Introduce default values for auth methods (#3458)
    • Auth password section config rework (#3463)
    • Store module config in a map and keep it updated (#3469, #3488)
    • Use dynamic_modules in big tests (#3481)
    • Store listener config in a map (#3495)
    • Keep ACL conditions as maps (#3501, #3504)
    • Test config parsing with post-processing (#3507)
    • Move domain_certfile to the 'general' section (#3512)
    • Keep s2s options: 'outgoing', 'dns', 'address' in maps (#3516)
    • Put all s2s options in a map and allow specifying them globally or per host-type (#3523)
    • Module config as a map (#3534)
    • Allow customizing auth module list per listener (#3539)
    • Migrate segmented cache to maps (#3572, #3594)
    • Test config metrics (#3613)
    • Put mod_adhoc opts in a map with defaults (#3537)
    • Put mod_bosh opts in a map with defaults (#3540)
    • Put outgoing_pools opts in a map with defaults (#3541)
    • Put mod_inbox opts in a map with defaults (#3547)
    • Put mod_private opts in a map with defaults (#3549)
    • Put mod_disco opts in a map with defaults (#3550)
    • Put mod_version opts in a map with defaults (#3552)
    • Put mod_vcard opts in a map with defaults (#3553)
    • Put mod_time opts in a map with defaults (#3554)
    • Put gen_mod_deps opts in a map with defaults (#3555)
    • Put mod_last opts in a map with defaults (#3557)
    • Put mod_mam opts in a map with defaults (#3559)
    • Put mod_shared_roster_ldap opts in a map with defaults (#3558)
    • Put mod_privacy opts in a map with defaults (#3567)
    • Put mod_sic opts in a map with defaults (#3568)
    • Put mod_roster opts in a map with defaults (#3569)
    • Put mod_stream_management opts in a map with defaults (#3571)
    • Put mod_muc opts in a map with defaults (#3575)
    • Put mod_push_service_mongoosepush opts in a map with defaults (#3577)
    • Put mod_pubsub opts in a map with defaults (#3578)
    • Put mod_ping opts in a map with defaults (#3579)
    • Put mod_muc_light opts in a map with defaults (#3580)
    • Put mod_global_distrib opts in a map with defaults (#3587)
    • Put mod_offline opts in a map with defaults (#3589)
    • Put mod_caps opts in a map with defaults (#3598)
    • Put mod_keystore opts in a map with defaults (#3599)
    • Put mod_jingle_sip opts in a map with defaults (#3600)
    • Put mod_carboncopy opts in a map with defaults (#3602)
    • Put mod_event_pusher opts in a map with defaults (#3603)
    • Put mod_csi opts in a map with defaults (#3605)
    • Put mod_register opts in a map with defaults (#3606)
    • Put mod_offline_chatmarkers opts in a map with defaults (#3609)
    • Put mod_http_upload opts in a map with defaults (#3614)
    • Rework service configuration and management (#3620)
    • Store service options in maps with defaults (#3624)
    • Service and module options only in maps (#3625)
    • Listener configuration rework (#3628)
    • Rework HTTP handler configuration (#3636)
    • Use maps for mongoose_wpool options (#3645)
    • TLS config rework (#3653)
    • Use format_items = map by default for config sections (#3655)
    • Access commands in maps (#3656)
    • Final internal config cleanup (#3659)

Fixed

  • Edoc generation (#3333)
  • Rest admin API - return 404 when command not found instead of 500 (#3383)
  • Identify only stored users on offline routing (#3395)
  • Fix typos (#3475, #3621)
  • Fix certs (#3447, #3435, #3447, #3632, #3640)
  • Fix print-dots for Mac OS Monterey (#3480)
  • Add a newline after module options to improve config readability (#3402)
  • Correctly pass connection options to Fusco (#3426)
  • Fix Github Actions CI - run MSSQL as root again (#3456)
  • Fix ejabberd_c2s - don't drop the host type in update_stanza (#3464)
  • Adding queryId to archived inbox messages (#3482, #3492)
  • MAM - Avoid asking for user exist with a room (#3470)
  • Fix starting new caches (#3508, #3518)
  • Add server_name_indication_host config option (#3510)
  • Less MIM compiler warnings (#3524)
  • Add config flag to be able to set sni hostn...
Read more