Skip to content

Releases: esl/MongooseIM

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

MongooseIM 3.6.1

11 Feb 13:33
Compare
Choose a tag to compare

Highlights

  • Tooling and packages improvements

All changes

Changed

  • Use runuser instead of sudo in scripts managing MongooseIM (#2617)
  • Install pid and status directory explicitly (#2618)
  • Massive rework of scripts building .deb and .rpm packages (#2626)
  • Remove redundant time conversions in shapers (#2545)

Commits, merged PRs and closed issues

MongooseIM 3.6.0

29 Jan 13:24
Compare
Choose a tag to compare

Highlights

  • Push notifications improvements
    • Possibility to configure push notifications without real PubSub
    • Immediate push notifications to disconnected device in resume state
  • Gathering of system metrics
  • Support for the last two major OTP versions only: 21 and 22
  • Performance improvements

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

All changes

Added

  • System metrics gathering (#2523, #2532, #2550, #2571, #2578, #2580, #2586, #2591, #2594, #2598, #2601, #2603, #2607, #2610, #2612)
  • MAM disco#info to MUC and MUCLight rooms (#2272)
  • Chat markers support for the room's REST API (#2274)
  • Possibility to close malicious connections without revealing service details (#2304)
  • Ping response time metrics (#2527)
  • Emoji support in VCard's nickname field (#2539)
  • Swagger documentation hosted by MongooseIM (#2543, #2556)
  • Persistent fields from accumulator to offline storage (#2587)
    • This requires a new column in RDBMS, see the migration guide

Changed

  • Push notifications
    • Immediate push notification to a connection in resume state (#2018, #2593)
    • RDBMS backend for mod_event_pusher_push (#2526)
    • PubSub-less push notifications (#2554)
    • Integration with MongoosePush API v3 (#2549)
    • Expired device_id removal (#2555)
    • Details from the push enable stanza are stored in session info now (#2568)
    • The push notification's priority can be set with enable stanza (#2569)
    • An unacknowledged_message hook is fired when a session is in resume state and a new message arrives (#2589)
    • Documentation update and rework (#2611)
  • Riak bucket types are now configurable (#2490)
  • Dependencies update:
    • lager: 3.8.0
    • cowboy: 2.7.0
    • epgsql: 4.3.0
    • mysql: 1.5.1
    • cache_tab: 1.0.20
    • stringprep: 1.0.17
    • erlcloud: 3.2.13
    • jwerl: 1.1.0
    • observer_cli: 1.5.3
    • amqp_client: 3.8.0
    • wpool: 4.0.1
  • SASL mechanism management simplification (#2519)
  • MUCLight room config simplification and unification (#2536)
  • Performance improvements:
    • jid parsing in NIF (#2544)
    • use built-in base64 encoding (#2547)
    • C/C++ optimisations (#2604)
  • ejabberd_sm improvements (#2566, #2582)

Removed

  • get_stactrace calls (#2494)
  • Support for MAM v0.3 (#2496)
  • Usage of p1_time_compat (#2498)
  • mod_push (#2553)

Other

  • Pass the original accumulator when sending out a stanza (#2158, #2528)
  • Remove sender related data from the accumulator before passing it further (#2510)
  • Do not allow riak and redis pools to use the incompatible available worker strategy (#2243)
  • Fix for connection crash when the client enables stream management but it's not available (#2482)
  • Fix for REST API crash when user's JID is empty (#2543)
  • Return Bad Request status when malformed JSON is passed to REST API (#2557)
  • Possibility to call external HTTP auth backend to get valid user's certificates (#2044)
  • Fix for last activity error iq responses (#2570)
  • Fix c2s message bouncing issue (#2579)
  • Fix for wrong namespace in ringing stanza (#2584)
  • Fix warning for .deb packages (#2609)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 3.5.0

03 Oct 14:22
Compare
Choose a tag to compare

Highlights

  • Reworked LDAP layer
  • New method of resetting Inbox
  • OTP < 21.2 support is deprecated

All changes

Added

  • A new dedicated stanza for resetting the Inbox (#2452)
  • New metrics:
    • clusterSize, as seen by each MIM node individually (#2322)
    • tcpPortsUsed (#2359, #2374)

Changed

  • Multiple improvements in the LDAP layer (#2388)
    • They are now configured like the other outgoing connections.
    • LDAP+TLS support.
    • LDAP authentication backend may be used with SASL EXTERNAL
  • GDPR removal and retrieval do not query disabled backends and modules anymore (#2435)
  • Push notifications are no longer sent for messages with empty body (#2394)
  • Stream Management implementation has been updated to match XEP-0198 v1.6 (#2468, #2472)
  • Deprecations:
    • OTP older than 21.2 (#2465)
    • XEP-0313 Message Archive Management v0.3 (#2466)
    • TLS older than 1.2 (#2377)
  • Dependencies update (#2351)
    • lager: 3.7.0
    • cowboy: 2.6.3
    • jiffy: 1.0.1
    • uuid: 1.7.5
    • fast_tls: 1.1.1
    • mysql: 1.5.0
    • cache_tab: 1.0.19
    • stringprep: 1.0.16
    • meck: 0.8.13
    • recon: 2.5.0
    • erlcloud: 3.2.7
    • observer_cli: 1.5.0
    • amqp_client: 3.7.15
    • eredis: 1.2.0
    • riakc: 2.5.3 - no change here but downloaded from a repo now (#2397)
  • Clustering operations are now protected by a global transaction (#2470)
  • Client XML namespace is no longer stripped in the messages received from a client (#2423)
  • mongooseimctl script is more robust (#2409)
  • scram module has been renamed to mongoose_scram (#2401)

Fixed

  • binary_to_atom vulnerability (#2444)
  • push PubSub node implementation had a bug in the affiliation check (#2438)
  • The unread messages count for push notifications was retrieved improperly and triggered an error (#2481)
  • Chat markers were improperly handled by Inbox (#2449)
  • It is again possible to configure an idle connection timeout for Websockets (#2480)
  • MUC Light role is now properly archived (#2268)
  • Chat markers are now properly stored by the MUC archive (#2271)
  • Inbox recognises MUC Light system messages more reliably (#2290)
  • disco#info request no longer causes a crash when rooms_in_rosters is enabled (#2354)
  • Mnesia backend for PubSub used to break the transaction restart logic in some operations (#2390)
  • Some REST commands were unusable due to a bug in REST implementation (#2426)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors:

3.4.1

13 Sep 08:58
f496c62
Compare
Choose a tag to compare

Fixed

  • Vulnerability related to erlang:binary_to_existing_atom with latin1 encoding (#2445)