Skip to content

Releases: esl/MongooseIM

MongooseIM 3.3.0

12 Mar 18:53
Compare
Choose a tag to compare

Highlights

  • Finalised RDBMS implementation for PubSub
  • MongooseIM integration with RabbitMQ
  • PKI authentication improvements

All changes

Added

  • PubSub improvements
    • RDBMS backend for pubsub_node table (#2145)
    • mod_pubsub_cache_rdbms implementation (#2144)
    • RDBMS support for subscription options in PubSub (#2165)
    • Generic metrics measuring number of errors and execution time for different PubSub actions based on sent IQs (#2178)
    • Setting subscription options for flat_node (#2165)
  • RabbitMQ layer (#2127, #2216)
    • RabbitMQ backend for event_pusher
    • rabbit worker pool (that can be used for any interaction with RabbitMQ)
    • mongoose_amqp module that deals with AMQP protocol layer
  • Address best practices for using SASL EXTERNAL as defined by XEP-0178 (#2204, #2223, #2231)
  • Upsert API for RDBMS (#2153)
  • gen_mod:opts_for_module/2 which allows you to selectively retrieve opts passed through config to a given module (#1027)
  • Backend functions get a new metric: number of function calls (#2177)
  • mod_vcard calls optional tear_down callback on the backend module (#2152)

Changed

  • Update dependencies:

  • PubSub changes

    • Extract mnesia operations around pubsub_node table to the backend module (#2141)
    • Optimize the way a pubsub node is removed (#2136)
    • Remove pubsub_subscription module, refactor opts forms processing and integrate option storage logic into DB backends (#2148)
    • mnesia cache backend for pubsub_last_item extracted to a separate cache backend module (#2144)
    • Simplified pubsub_index API, removed free function (#2156)
    • Backend modules call pubsub_index when the id is not passed (#2156)
    • Use RDBMS autoincrementing index in place of pubsub_index (#2160)
    • Replace Mnesia's transaction and sync_dirty calls in the RDBMS backend with proper RDBMS equivalents (#2191)
    • Return the index when the node is created (#2160)
    • Parallelised PubSub message broadcast (#2206)
    • Spawn a new process in mod_pubsub:broadcast_stanza/9
  • Change stop_module_keep_config/2 and stop_module/2 to return module opts (#1027)

  • Update snippet to register users (#2181)

  • Use map syntax to pass ranch transport options (#2188)

  • Change the name of the metric responsible for the number of backend function calls (#2193)

  • Replace jsx with jiffy (#2199)

  • Make HTTP headers lowercase to avoid HTTP/2 connection errors (#2211)

Fixed

  • Add mod_pubsub_db_backend:add_item to the tracked functions (#2193)
  • erlcloud_sns:publish content format (#2176)
  • infinity mapped to 0 in the matches option in mod_vcard_ldap (#2179)
  • mod_vcard_ldap ignored ldap_uids formed as {"attribute"} and only parsed {"attribute", "format"} correctly (#2180)
  • Return MAM item-not-found IQ result when a nonexistent message ID is asked for (#2166)
  • Fix mongooseimctl debug command to use correct hostnames (#2201)
  • Use mongooseim-docker with a name flag and nodename fixes (#2205)
  • Fix compilation errors when the compilation directory has whitespaces in it (#2203)
  • Default inbox backend is set to rdbms (#2236)
  • mod_vcard_ldap:eldap_pool_search/6 empty list handling (#2226)
  • lowercase HTTP headers in mod_bosh for HTTP/2 compliance (#2211)

Other

  • Run Travis builds on newer (not newest) Ubuntu LTS version Xenial (16.04) (#2151)
  • Update mongooseim-docker to cc7326bfd0129943206a67e57dd861ff19c403c7 (#2190)
  • Test improvements and refactoring (#2165, #2162, #2164, #2170, #2127, #2142, #2146, #2147)
  • Fix broken or remove outdated links in docs (#2183)
  • Install the most up to date package builder epel-release for centos 7 (#2154)
  • Stabilize the ldap job on travis (#2140)
  • Update find-hooks.awk (#2225, #2232)
  • Update escalus to 8911491 (#2224)
  • Update documentation (#2155, #2163, #2167, #2233, #2227)

Commits, merged PRs and closed issues

Special thanks to our contributors:

MongooseIM 3.2.0

20 Nov 15:39
Compare
Choose a tag to compare

Highlights

  • Client Certificate authentication for Websockets and BOSH
  • Inbox improvements (push notifications integration)
  • Unified outgoing connections pools

All changes

Added

  • Improvements in mod_inbox:
    • User can show only active/all conversations (#2017)
    • Inbox IQ result stanza provides a total unread messages count and an active conversation count (#2047, #2056)
    • If an inbox query is malformed, a descriptive error is returned (#2052)
    • mod_inbox is integrated with mod_event_pusher, so push notifications now include an unread messages count (#2078)
  • SASL EXTERNAL may be used with WebSockets and BOSH (#2093)
  • mongoose_wpool abstraction layer (#2060, #2099, #2117)
  • rdbms, redis, riak, cassandra, http ,generic and elasticsearch pools are started via outgoing_pools config option (#2077, #2079, #2084, #2087, #2101)
  • Self-signed certificates may be used with fast_tls driver (#2102)
  • mongoose_bin module unifies random strings generation API (#2000)
  • Modules may specify "optional" dependencies to enforce the startup order (but not the startup itself) (#2029)
  • Switchable RDBMS backend for mod_pubsub - experimental (#2122, #2113, #2129, #2131, #2134)
  • Changing MUC Light room configurations is possible via REST API (#2030)
  • New Message Archive Management metrics for async writers (#2023)
  • New Makefile target to check code style with Elvis (#2111)

Changed

  • ejabberd.cfg is renamed to mongooseim.cfg
  • OTP versions older than 19.0 are no longer supported (#2002)
  • "ODBC" usage has been clarified and it has been renamed to RDBMS where relevant (#2053)
  • Mongoose accumulator v2.0 is more difficult to abuse and has less implicit logic (#2076)
  • Pre 1.0 XML streams are no longer supported (so is non-SASL authentication) (#1998)
  • Improvements in http backend of mod_event_pusher (#2100)
  • Cassandra layer uses a standard MIM worker pool instead of a custom one (#2043)
  • Deprecated gen_fsm is replaced by gen_fsm_compat (#1996)
  • Updated dependencies:
  • Implementation of MUC Light user affiliation logic is more developer-friendly (#1934)
  • Generation of codecov-compatible coverage report is extracted to rebar3_codecov plugin (#2073)
  • mod_muc uses maps instead of dictionaries ( #1986)
  • Shaper workers are organised under dedicated supervisor (#2130)

Fixed

  • Config reload in cluster had broken verification logic (#2051)
  • fusco clients are now properly closed in mod_revproxy (#2118)
  • Backend proxy modules are loaded only once (#1438)
  • Node cleaners are no longer crashing (#2135)
  • Test runner
    • Tests are counted properly on macOS (#2004)
    • Appropriate error is returned, when there are no test nodes. (#2004)
    • Improved test specs generation and autocompletion (#2036)
  • Minor fixes (#2010, #2046, #2069, #2086, #2123)
  • rebar3 release generation with OTP 21 (update to 3.6.1) (#2037)
  • NkSERVICE cache dir configuration works as expected now (#2058)
  • Dialyzer job on Travis runs with Erlang/OTP 21 and returns no errors (#2075)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors: @getong @igors @justinba1010 !

MongooseIM 3.1.1

24 Jul 12:29
Compare
Choose a tag to compare

Highlights - 3.1.x

  • Inbox extension enters beta stage, improved with MUC, timestamps and MSSQL support
  • Test Runner - comprehensive tool for executing tests locally
  • OTP 21 support
  • ElasticSearch backend for message archive

Patch: 3.1.1

  • Updated exml to 3.0.2, fixing an important security issue.

All changes - 3.1.0

Added

  • mod_inbox enters beta stage
    • Timestamps support (#1970)
    • Classic MUC support (#1961)
    • MSSQL support (#1965)
  • Test Runner (#1973, #1989, #1991)
  • OTP 21 support, OTP 18.x is no longer officially supported (#1947)
  • Jingle/SIP tutorial (#1980)
  • ElasticSearch backend for message archive (#1900)
  • Smack-specific properties support in REST API (#1976)
  • reload_cluster command support for ignorable options (#1948)
  • Jingle/SIP Re-INVITE support (#1903)
  • More meaningful HTTP API errors (#1776)
  • MUC hooks for user join and leave (#1898)
  • Support for result limiting options in mod_mam_meta (#1977)

Changed

  • Message archive async writers no longer synchronise on reading operations (#1919)
  • Replaced bundled LDAP driver with an OTP one (#1216)
  • All worker pools are now based on one library: worker_pool (#1955)
  • Mnesia directory is no longer removed in clustering operations (#1951)
  • Inconsistent Mnesia directory names are no longer an error in clustering operations (#1904)
  • MEDIUMBLOB is used for message archive data by default (#1873)
  • Adding children to main supervisor is now more strictly verified (#1905)
  • Updated dependencies:
    • worker_pool 3.1.1 (#1983)
    • lager 3.6.4 (#1992)
    • jiffy 0.15.2 (#1992)
    • idna 1.5.2 (#1992)
    • uuid 1.7.3 (#1992)
    • lasse 1.1.1 (#1992)
    • escalus e7eece237a56560add06127bc9ed47d423e88dcc (#1947)
  • Removed pooler dependency (#1875)
  • Moved some multi-module MongooseIM components to dedicated subdirectories (#1952)
  • conflict_check_failed log severity changed to "warning" (#1981)
  • Decreased severity of some log messages (#1984)

Fixed

  • mongoose_acc server property scope (#1925)
  • mod_inbox_odbc was reporting false errors on MySQL upserts (#1994)
  • Rosters are properly updated on subscription requests (#1931)
  • DB deadlock is now handled properly in message archive preferences (#1897)
  • Handling of terminating receiver process (#1949)
  • mod_jingle_sip startup for multiple hosts (#1960)
  • Record-Route header generation in Jingle/SIP (#1958)
  • MSSQL transactions are now stable in MUC Light (#1917)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors: @SamuelNichols @Beisenbek @GalaxyGorilla @igors !

MongooseIM 3.0.1

22 May 14:13
Compare
Choose a tag to compare

Highlights - 3.0.x

  • exml 3.0.1, much faster and efficient than previous versions, thanks to a new XML parser: RapidXML
  • Inbox extension - a way to display conversations list in chat application

Patch: 3.0.1

  • Updated exml to 3.0.2, fixing an important security issue.

All changes - 3.0.0

Added

  • Inbox extension - experimental (#1783)
  • Acceptor pool for incoming XMPP TCP/UDP connections (#1849)
  • OTP 20 support in mod_jingle_sip (#1825)

Changed

  • MongooseIM uses exml 3.0.1, based on new XML parser: RapidXML (#1729, #1870)
  • Updated fast_tls to a version that avoids extensive usage of stat function (#1806)
  • User sessions are hibernated (e.g. garbage collected) as frequently as possible (#1821)
  • Cassandra connection pool has been refactored (#1847)
  • Removed support for Message Archive Management v0.2 (#1860)
  • policy-violation check is performed in mod_mam(_muc), not in its backends (#1817)
  • Removed unnecessary -part schemas for MySQL (#1845)
  • mod_jingle_sip uses origin_ acc keys instead of custom ones (#1841)

Fixed

  • ODBC support - replaced ODBC library and refactored RDBMS code (#1816, #1838)
  • mod_muc terminated the room when a cancel form was received for a room in normal state (#1798)
  • C2S process now ignores IQ replies addressed to previous process for the same user session (#1803)
  • Metrics skipping (#1819)

Other

Commits, merged PRs and closed issues

Special thanks to our contributor: @igors !

MongooseIM 2.2.2

17 Apr 10:41
Compare
Choose a tag to compare

Added

  • SASL EXTERNAL authentication method, i.e. auth with certificates (#1735)
  • Jingle/SIP proxy (#1797, #1814)
  • "Hidden" components capability (#1769)
  • Mongoose Services (#1792)
  • Hosts Refresher process for Global Distribution (#1660)
  • advertised_endpoints option for Global Distribution (#1724)
  • Pluggable backends support in mod_muc (#1758)
  • Foreground mode (#1775)
  • Now it is possible to upload test results to Google Drive (#1702)
  • Conditional logging macros (#1707)
  • Extended logging in mod_push_service_mongoosepush (#1777)
  • Extra debug logs in ejabberd_service and mod_websockets (#1697)
  • Extended logging in mod_vcard (#1715)

Changed

  • Refactored MongooseIM header files (#1570)
  • mod_event_pusher and mod_event_pusher_push API has been improved; not backwards compatible (#1796)
  • gen_mod:start,stop no longer allow to start already running and stop already stopped module (#1771)
  • "Big tests" are moved from test.disabled/ejabberd_tests/ to big_tests (#1778)
  • Binary values are now hex-escaped in queries to MySQL (#1678)
  • Updated dependencies: fast_tls @ a166f0e9fe78304e5ca628fd5eff57c850241813 and cache_tab @ 1.0.12 (#1753, #1806)
  • Updated MySQL library to 1.3.2 (#1787)
  • Updated rebar3 to 3.5.0 (#1786)
  • mod_ping no longer pings bare JIDs (#1710)
  • mod_mam no longer uses dynamically compiled module for accessing parameters (#1627)
  • 1-1 messages REST API now uses mongoose_acc structure (#1744)
  • Improved logging in Global Distribution (#1761)

Fixed

  • Under some conditions MongooseIM could enter infinite error routing loop (#1800)
  • mod_mam was handling Unicode data improperly (#1748)
  • mod_event_pusher_push could attempt pushing body-less message (#1726)
  • mod_event_pusher's HTTP backend was escaping data improperly (#1632)
  • A corner case in Global Distribution was present that could lead to broken message order (#1689)
  • Global Distribution was not caching origin info for packets from components (#1695)
  • Race condition was present in outgoing connection pools' initialisation in Global Distribution (#1750)
  • Global Distribution mappings manager sometimes crashed when mongoose_router_external* routers were first in routing chain. (#1763)
  • Admin REST API wasn't working properly with MUC Light + ODBC backend (#1742)
  • mod_mam was calculating complete attribute improperly when paginating backward (#1740)
  • X-OAUTH2 tokens were not deleted properly on user removal (#1746)
  • MAM 0.2 is now properly deprecated (#1807)
  • Received stanza size metric could be highly inaccurate (#1615)
  • Tide address used http instead of https (#1701)
  • MongooseIM could not be deployed in paths with spaces (#1621)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors: @igors @jacksgt @sstrigler @GalaxyGorilla @varnerac!

MongooseIM 2.1.1

16 Jan 15:31
Compare
Choose a tag to compare

Added

  • Event Pusher - a module that unifies all outgoing event channels: HTTP, Push Notifications etc. (#1414)
  • TLS-secured connections to databases (#1545, #1556, #1564, #1578, #1585, #1587)
  • Dedicated API in ejabberd_auth for accessing parameters in auth_opts tuple (#1593)
  • Experimental Global Distribution extension (#1604)
  • Max allowed stanza size may be now configured for mod_websockets (#1641)

Changed

  • Project structure has been transformed to single application layout (#1580, #1590)
  • Message Archive Management v0.2 support is now deprecated and will be removed in 3.0.0beta1 (#1514, #1591)
  • MySQL schema now uses utf8mb4 encoding and ROW_FORMAT=DYNAMIC. MySQL versions older than 5.5.14 are no longer supported. (#1611, #1633)
  • MongooseIM now uses updated and decoupled fork of exometer (#1600)

Fixed

  • User process crash when IQ result/error with Privacy Lists/Blocking Command namespace was received. (#1597)
  • MongooseIM build failed on macOS High Sierra due to old version of fast_tls (#1606)
  • Error type returned when VCard is not found (#1547)
  • Race condition in mod_muc on room PID registration (#1608)
  • Unnecessary transformations in mod_vcard_ldap (#1607)
  • MongooseIM build on 32-bit systems (#1574)
  • One of the hooks in mod_mam_odbc_arch wasn't properly disabled on module stop (#1576)
  • Event Pusher HTTP backend used invalid hostname to fetch options (#1630)
  • mod_websockets:close/1 didn't work. (#1603)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors: @andrewvmail @igors !

MongooseIM 2.1.0

24 Oct 12:02
Compare
Choose a tag to compare

Added

  • OTP 20 compatibility (#1430)
  • Message Archive Management v0.6 support (#1442, #1471)
  • Final stage of Mongoose Accumulators implementation (#1398, #1512)
  • REST API: MUC Light rooms can be created with a specified username part (#1387)
  • REST API: MUC Light rooms can be addressed with a bare JID (not only with their usernames) (#1417)
  • REST API: MUC Light rooms can be destroyed (#1461)
  • MAM can be configured to archive XEP-0333 Chat Markers (#1377)
  • mod_http_upload_s3 can be configured to skip the ACL header (so MIM can integrate with Minio) (#1415)
  • Administration REST API can be protected with the Basic HTTP Authentication (#1453)
  • More configuration options for JWT authentication backend (#1321)
  • (Un)Subscribing to many hooks with a single function call (#1376, #1426)
  • New ejabberd_router:route_error_reply/4 function (#1427)
  • mongoose_commands can accept lists of elements as an argument (#1465)

Changed

  • Switched back to strictly monotonous MAM message IDs (#1372)
  • MongooseIM will not start if the ODBC connection is configured but no ODBC pools are defined (#1455)
  • SASL X-OAUTH mechanism is not advertised if mod_auth_token is not enabled (#1450)
  • ejabberd_auth:authorize/1 is now used for authorisation in client REST API (#1409)
  • DNS lookup is not performed for the S2S connection if the host is already defined in the configuration (#1314)

Fixed

  • Fix RDMBS backoff calculation (#1394)
  • URL escaping and reporting in mod_http_upload (#1391)
  • Fixed Unicode support in the MAM full text search with a Riak backend (#1407)
  • Authentication crash with SASL PLAIN and an invalid password (#1433)
  • Random crashes in tests (#1374, #1428)
  • mongooseim version command was broken (#1457)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors: @Beisenbek, @benkard, @deadjdona, @fblackburn1 !

MongooseIM 2.1.0 beta2

06 Jul 08:33
Compare
Choose a tag to compare
Pre-release

Added

  • Roster management in client REST API (#1286)
  • Silent push notifications (#1287)
  • RSM support in mod_vcard (#978)
  • MAM can be configured to archive (or not) groupchat messages in private archives (#1294)
  • New command in mongooseimctl (#1256)
  • Extended mod_roster backends' API (#1302)
  • A warning is logged, when a module links to caller process on startup (#1247)

Changed

  • now() calls have been replaced with alternatives in p1_time_compat (#1246)
  • Stanza size limit is now checked while parsing the stanza (#1285)
  • mongoose_acc extended lifespan; supported by more hooks. (#1211, #1306)
  • crypto:rand_bytes/1 calls have been replaced with crypto:strong_rand_bytes/1 (#1348)

Fixed

  • Improved error handling in C2S (#1264)
  • MAM + MUC Light integration (#1270)
  • Push nodes discovery and handling in mod_pubsub (#1272)
  • BOSH interleaving logic (#1289)
  • Error presence handling in MUC (#1307)
  • Race condition between mod_caps and PEP (#1301)
  • Minor bugs in Service Discovery (#1303)

Other

Commits, merged PRs and closed issues

Special thanks to our contributors: @astro @strugee @msantos @daniel-e @deadjdona !

MongooseIM 2.1.0 beta1

28 Mar 12:46
Compare
Choose a tag to compare
Pre-release

Added

Changed

  • build system to rebar3 #1033
  • hooks implementation
    • all hooks have now fold semantic (returned value is passed from hendler to handler) #1149
    • result from a hook run is passed between different hooks #1174, #1194, #1202, #1220
  • RDBMS pools configuration: #1217
    • this is backward incompatible - requires change in config file
  • shapers implementation: #1213
    • this lead to some race condition bug fixes

Fixed

  • handling of TLS options for S2S connections #1182
  • deadlock between mod_muc and mod_muc_log #1219
  • fix for uncleaned resumed sessions #1186

Other

Special thanks to our contributors: @astro, @aszlig

This release repo history

MongooseIM 2.0.1

24 Jan 13:38
Compare
Choose a tag to compare

This release includes:

Special thanks to our contributors: @kenstir, @sstrigler, @igors, @bernardd, @msantos

This release repo history