Skip to content

Releases: esl/MongooseIM

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

MongooseIM 4.0.1

17 Nov 16:14
1991140
Compare
Choose a tag to compare

Highlights

  • A new metric now reports the type of configuration file that is being used. The aim is to determine the adoption of the new config file format.
  • Better error messages are reported from wrong TOML configuration files.

All changes

Added

  • User-friendly errors for the TOML configuration file (#2903)
  • Metric to report the type of config file used (#2918)

Removed

  • Removed deprecated mod_http_notifications (#2912)

Changed

  • TOML documentation improvements (#2896, #2898, #2899, #2901, #2905, #2942)
  • Some TOML configuration options have been reformatted (#2909)
  • More prepared queries to improve RDBMS performance (#2924, #2928)
  • Fixed Ubuntu 18.04 and OTP 23.1 for building docker images (#2926)
  • Moving from untyped binaries to proper jid structures (#2895, #2920, #2922)

Other

  • Dependencies update (#2914)
  • REST error handling cleanup (#2908)
  • nksip is started only when used (#2937)
  • RPM package improvements (#2906)
  • CI improvements (#2910, #2934)

Commits, merged PRs and closed issues

MongooseIM 4.0.0

30 Sep 09:58
0677e13
Compare
Choose a tag to compare

Overview

MongooseIM 4.0 is all about putting a friendly face to MongooseIM’s amazing features.
This includes the addition of an Erlang-agnostic configuration allowing a broader pool of developers to benefit from MongooseIM.
Logging and Kubernetes improvements to be more DevOps-friendly and Manager-friendly with load testing enabling managers to see the benefits of MongooseIM easily.

All changes

Added

  • A new configuration file format: MongooseIM can now be configured with an entirely revamped TOML configuration file (#2801)
    • Pesky bugs have been fixed
    • Implementation details have been abstracted away
    • Documentation has been improved
  • Structured logging: the main idea of structured logging is that if we have properties of an event, let’s log them as they are, without losing their structure, and format it in a way that is most appropriate for the system we’re sending them to.
    • Moved to OTP logger from lager (#2810)
    • Moved away from lager, towards OTP logger (#2810)
    • No more logging of man-made strings, we now log structured reports (#2816)
    • logfmt formatter, a log format that's easy to read and write (#2848)
    • JSON formatter, a fully structured format (#2851)
  • XEP-0215 External Service Discovery (#2870)
  • A REST endpoint for admin users which accepts any stanza, provided it has from and to attributes (#2858)
  • erl_crash.dump dumping directory can be explicitly set (#2793)

Changed

  • Archiving messages takes input as a map instead of as many parameters (#2749)
  • Base16 encoding uses a faster algorithm (#2839)

Other

  • OTP-23 compatible (#2840)
  • SCRAM password dumping into RDBMS escapes username correctly (#2842)

Commits, merged PRs and closed issues

Special thanks to our contributors:

  • @balgillo For the small but many important fixes.

MongooseIM 3.7.1

13 Jul 13:50
86baf41
Compare
Choose a tag to compare

Highlights

  • Integration of the highly performant NIFs to compute the SCRAM challenge from esl/fast_scram

All changes

Changed

  • Implementation of the SCRAM challenge algorithm to be NIF-based (#2787)
  • Fix a bug during session resumption, where stanzas were not routed to the user (#2780)
  • Fix AMP logic regarding storage of messages when delivery failed but archiving was successful (#2757)

Other

Commits, merged PRs and closed issues

MongooseIM 3.7.0

20 May 09:14
Compare
Choose a tag to compare

Highlights

  • Authentication methods improvements
    • Support for SCRAM-SHA-256, SCRAM-SHA-512, SCRAM-SHA-224, SCRAM-SHA-384 authentication methods
    • Support for channel binding for all the SCRAM based authentication methods
  • Support for XEP-0424: Message Retraction
  • Support for Proxy Protocol

There were some changes to the database schema so please take a look at the Migration guide when upgrading from a previous version.

All changes

Added

  • Support for new SCRAM based authentication methods:
  • Support for XEP-0424: Message Retraction (#2739)
  • Support for Proxy Protocol (#2674)
  • RDBMS backend for MUC (#2635)
  • Possibility to store MUC messages in offline storage (#2640)
  • Support for MySQL's new authentication methods (#2644)
  • System metrics
    • Type of outgoing pools (#2657)
    • Stanza count (#2672)
  • Chat markers cache (#2676)
  • mongooseimctl bootstrap command which can be run to execute user defined init scripts (#2692)
    • Support for templating the config files before MongooseIM starts (#2712)
  • c2s_remote_hook_call to run a hook in the context of the c2s process (#2700)
  • mongooseimctl http_upload command to help debug HTTP file upload configuration (#2708)

Changed

  • All hooks have been wrapped in the mongooseim_hooks module with proper specs (#2642)
  • Stream error reporting when the server receives unexpected stanza on a given stream state (#2667)
  • Server sent ping scalability improvements (#2531)
  • Docker base image to be based on Ubuntu 18.04 with OpenSSL 1.1 (#2693)
  • HTTP file upload tests with min.io running in the container (#2696)
  • Fixed issue related to passing x-amz-acl header to S3 (#2708)
  • Default format for password storage (#2737)

Removed

  • Support for MySQL versions older then 5.7.9

Other

  • Fix to push notifications integration making sure all parameters are sent in a request to MongoosePush (#2645)
  • Extract jid related functionality to an external library (#2654)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 3.6.2

20 Feb 08:05
Compare
Choose a tag to compare

Highlights

  • Tooling and packages improvements

All changes

Changed

  • Fix a bug in mongooseimctl run as a different user as the current one (#2631)
  • .deb and .rpm build and test scripts improvements (#2629, #2633)

Commits, merged PRs and closed issues