Skip to content

Releases: esl/MongooseIM

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

MongooseIM 5.0.0

07 Oct 12:41
Compare
Choose a tag to compare

Highlights

  • Support for dynamic domains
  • Documentation improvements and reorganization
  • Miscellaneous enhancements & improvements

All changes

Added

Removed

Changed

Fixed

  • Start only used metrics (#3096)
  • Prevent infinite loop when domain isolation is on on both domains (#3110)
  • Prepared query in mongoose_cluster_id causes errors on startup (#3112)
  • Tag should be an atom in ldap types (#3178)
  • Missing or not working xref (#3179)
  • Occuring mongoose_metric_hooks error (#3184)
  • FTBFS on implicit declaration of function erts_exit (#3222)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • @imcyee Add thread and thread parent to client api messages (#3236)

MongooseIM 4.2.0

20 Apr 09:42
Compare
Choose a tag to compare

Highlights

  • Prepared queries introduced
  • Inbox extensions
  • Miscellaneous enhancements & improvements

All changes

Added

  • Documentation for mod_offline.store_groupchat_messages option (#2992)
  • Support of MS SQL and MySQL in mod_auth_token (#3059)
  • Inbox extensions to set entries as archived, muted or read (#3067)
  • mod_domain_isolation module to limit message passing between domains (#3070)

Removed

  • Usage of deprecated http_uri in ejabberd_auth_http and mod_muc_room modules (#3026)
  • Config reload functionality with the flat config format (#3030)
  • Outdated and unsupported azuresql.sql file (#3086)

Changed

Fixed

  • Creation of modMucMamFlushed metric (#3023)
  • Starting backend containers for Mac OS X (#3033)
  • Minor issues with GitHub Actions (#3045)
  • Crash during session handover (#3056)
  • Type declaration in mod_muc_light.hrl (#3057)
  • Test summary is no longer printed when CT directory is not created (#3069)
  • Explicit preset_not_found error when running tests with nonexistent preset (#3072)
  • Set mod_mam_meta.pm.archive_groupchats to false by default (#3082)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 4.1.0

03 Feb 12:26
Compare
Choose a tag to compare

Highlights

  • Major configuration rework: the TOML format is now the only one supported
  • Documentation enhancements
  • Performance improvements

All changes

Added

  • Full support of TOML configuration format (#2929)
  • Prepared queries for mod_vcard (#2939)
  • Humio support (#2952)
  • GitHub actions for MongooseIM CI workflow (#2990, #2993)
  • Usage of fast_scram library (#3003)
  • Documentation for MongooseIM cluster's rolling upgrade (#3012)
  • PEP publish options (#3017)

Removed

  • Support of old *.cfg configuration format (#2929)
  • Support of HTTP File Upload 0.2.5 (#2989)
  • Unused katt_helper (#2999)

Changed

  • Moved documentation from readthedocs to gh-pages and its face lifting (#2946, #2960, #2963, #2966, #2969)
  • Helper script in small tests uses python3 instead of python2 (#2957)
  • Use tools/wait_for_service.sh instead of netcat to ensure the main minio container is started (#2979)
  • Reduced stringprepping in roster hooks, privacy modules and mod_offline (#2997, #3005, #3009)

Fixed

  • The response of locked MUC room to disco#info (#2956)
  • ct_mongoose_log_hook initialization error (#2964)
  • Catching log formatter errors to avoid death spiral of logging (#2968, #2978)
  • The way big tests detect minio in CI (#2998)
  • Connection issues with Cassandra (#3006)

Other

  • Added rebar3 clean call to Makefile (#2932)
  • Minor docs improvements (#2945, #2981, #3000, #3013, #3020)
  • Parallel loading of nksip in tests (#2947)
  • CI improvements (#2949, #2972)
  • Usage of integer_to_binary/1 instead of list_to_integer(binary_to_list/1) (#3008)
  • Removed archive_groupchats warning (#3016)

Commits, merged PRs and closed issues