Releases: esl/MongooseIM
MongooseIM 3.6.1
Highlights
- Tooling and packages improvements
All changes
Changed
- Use
runuser
instead ofsudo
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
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.0cowboy
: 2.7.0epgsql
: 4.3.0mysql
: 1.5.1cache_tab
: 1.0.20stringprep
: 1.0.17erlcloud
: 3.2.13jwerl
: 1.1.0observer_cli
: 1.5.3amqp_client
: 3.8.0wpool
: 4.0.1
- SASL mechanism management simplification (#2519)
- MUCLight room config simplification and unification (#2536)
- Performance improvements:
- 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
andredis
pools to use the incompatibleavailable 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
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:
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:
- Dependencies update (#2351)
lager
: 3.7.0cowboy
: 2.6.3jiffy
: 1.0.1uuid
: 1.7.5fast_tls
: 1.1.1mysql
: 1.5.0cache_tab
: 1.0.19stringprep
: 1.0.16meck
: 0.8.13recon
: 2.5.0erlcloud
: 3.2.7observer_cli
: 1.5.0amqp_client
: 3.7.15eredis
: 1.2.0riakc
: 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 tomongoose_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 whenrooms_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
- Added CircleCI integration (#2372, #2382, #2383, #2414, #2419, #2422, #2439, #2441, #2446, #2447, #2462, #2463)
- CI stabilisation (#2378, #2389, #2392, #2393, #2395, #2396, #2404, #2428, #2429, #2431, #2434, #2437, #2453, #2454, #2455, #2469, #2473, #2474)
- Test improvements and refactoring (#2351, #2381, #2398, #2399, #2403, #2408, #2411, #2417, #2418, #2421, #2424, #2432, #2457, #2458, #2459, #2475)
- Documentation updates (#2247, #2356, #2357, #2376, #2416, #2420, #2436, #2450, #2478, #2479)
- Reduced resource consumption for dev releases (#2400)
- New dev nodes are templated from existing one(s) if possible (#2407)
- Updated
.gitignore
file with new rules for logs (#2385)
Commits, merged PRs and closed issues
Special thanks to our contributors:
3.4.1
MongooseIM 3.4.0
Highlights
- GDPR data retrieval and removal
All changes
Added
- GDPR data retrieval and removal (#2260, #2285, #2286, #2288, #2289, #2293, #2294, #2295, #2296, #2297, #2298, #2299, #2300, #2301, #2302, #2303, #2309, #2310, #2312, #2313, #2314, #2316, #2320, #2323, #2326, #2327, #2328, #2336, #2339, #2341, #2345, #2347, #2349)
- CLI
register
function now generates a safe, random username for a new account (#2262) - It is possible now to change the server name returned in HTTP responses (#2308)
- A new behaviour in case of conflicting component connections:
kick_old
(#2315)
Changed
- When a session gets replaced, the new one waits longer for the old one to close before reporting an error (#2054)
- Authentication backends no longer use a
store_type/1
function (#2254) - Default certificates are now generated faster (#2305)
Fixed
- Some race conditions in Stream Management (#2049)
- faulty script execution of
xep_tools
(#2252) - MUC messages are now archived without an empty
to
attribute (#2220) - "Offline" classic MUC rooms are now properly reported in disco results (#2238)
- Inbox responses are now properly routed to the original requester (#2276)
- Resolved issues with TLS on OTP 20.x (#2332)
Other
- Updated
escalus
to4.1.0
(#2337) - Test improvements and refactoring (#2319)
- Update documentation (#2246, #2259, #2261, #2307, #2346)
Commits, merged PRs and closed issues
Special thanks to our contributors:
MongooseIM 3.3.0
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)
- RDBMS backend for
- 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
- RabbitMQ backend for
- 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 optionaltear_down
callback on the backend module (#2152)
Changed
-
Update dependencies:
lager
3.6.7
(#2138)cowboy
2.6.0
(#2138)idna
6.0.0
(#2138)uuid
1.7.4
(#2138)fast_tls
1.0.26
(#2138, #2203)epgsql
4.2.1
(#2138)cache_tab
1.0.16
(#2138)stringprep
1.0.14
(#2138)proper
1.3.0
(#2138)meck
0.8.12
(#2138)bbmustache
1.6.1
(#2138)erlcloud
3.2.2
(#2138)observer_cli
1.4.1
(#2138)bbmustache
1.6.1
(#2182)jiffy
0.15.2
(#2182)proper
1.3.0
(#2182)escalus
4349a80
(#2182)shotgun
636d14e
(#2182)recon
2.4.0
(#2162)nkpacket
f7c5349
(#2147)
-
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 forpubsub_last_item
extracted to a separate cache backend module (#2144)- Simplified
pubsub_index
API, removedfree
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
andsync_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
- Extract mnesia operations around
-
Change
stop_module_keep_config/2
andstop_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
withjiffy
(#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 to0
in thematches
option inmod_vcard_ldap
(#2179)mod_vcard_ldap
ignoredldap_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
to8911491
(#2224) - Update documentation (#2155, #2163, #2167, #2233, #2227)
Commits, merged PRs and closed issues
Special thanks to our contributors:
MongooseIM 3.2.0
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 withmod_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
andelasticsearch
pools are started viaoutgoing_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 tomongooseim.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 bygen_fsm_compat
(#1996) - Updated dependencies:
fast_tls
1.0.23 (#2002)worker_pool
3.1.1 (#2002)esl/cqerl
master
(#2002)epgsql
4.1.0 (#2002)arcusfelis/eodbc
master
(#2002)tirerl
1.1.0 (#2002)- `cache_tabz 1.0.12 (#2002)
stringprep
1.0.12 (#2002)proper
1.2.0 from hex.pm (#2002)meck
0.8.11 (#2002)erszcz/pa
master
(#2002)bbmustache
1.5.0 (#2002)recon
2.3.6 (#2002)erlcloud
3.1.12 (#2002)jwerl
1.0.0 (#2002)observer_cli
1.3.3 (#2002)eredis
1.1.0lasse
1.2.0 (#2016)cowboy
2.4.0 (#2016, #2088)exml
3.0.2 (#2050)shotgun
9b6c1df
(#2092)escalus
592deba
(#2016, #2092)igors/eredis
e9688a1
(#2042)
- 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 inmod_revproxy
(#2118)- Backend proxy modules are loaded only once (#1438)
- Node cleaners are no longer crashing (#2135)
- Test runner
- 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
- SASL authentication refactored (#2045)
- Build improvements (#1015)
- Documentation fixes and improvements ( #1527, #2024, #2038, #2039, #2012)
- Tests improvements and refactoring (#1448, #1990, #2007, #2048, #2061, #2085, #2120, #2132, #2133)
- Codecov thresholds for a failed build are now set to 0.5% (#1957)
- Minor cleanup (#1553, #2081)
Commits, merged PRs and closed issues
Special thanks to our contributors: @getong @igors @justinba1010 !
MongooseIM 3.1.1
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
to3.0.2
, fixing an important security issue.
All changes - 3.1.0
Added
mod_inbox
enters beta stage- 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:
- 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
- Documentation fixes and improvements (#1906, #1936, #1966)
- Tests improvements and refactoring (#1874, #1879, #1883, #1884, #1885, #1886, #1892, #1893, #1895, #1899, #1908, #1911, #1914, #1916, #1920, #1921, #1922, #1924, #1926, #1932, #1937, #1940, #1943, #1944, #1950, #1953, #1954, #1956, #1962, #1967, #1982, #1990)
- Build improvements (#1915)
- Deps are downloaded with HTTPS (#1929)
- Codecov thresholds for failed build are now set to 0.5% (#1957)
Commits, merged PRs and closed issues
Special thanks to our contributors: @SamuelNichols @Beisenbek @GalaxyGorilla @igors !
MongooseIM 3.0.1
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
to3.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 ofstat
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 inmod_mam(_muc)
, not in its backends (#1817)- Removed unnecessary
-part
schemas for MySQL (#1845) mod_jingle_sip
usesorigin_
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 acancel
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
- Documentation fixes and improvements (#1835, #1851, #1852)
- Tests improvements and refactoring (#1413, #1782, #1808, #1813, #1820, #1823, #1836, #1846)
escalus 4.0.0
- Flexible preset application during test execution (#1802)
- Added packaging tools (#1662)
Commits, merged PRs and closed issues
Special thanks to our contributor: @igors !
MongooseIM 2.2.2
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
andmod_websockets
(#1697) - Extended logging in
mod_vcard
(#1715)
Changed
- Refactored MongooseIM header files (#1570)
mod_event_pusher
andmod_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/
tobig_tests
(#1778) - Binary values are now hex-escaped in queries to MySQL (#1678)
- Updated dependencies:
fast_tls
@a166f0e9fe78304e5ca628fd5eff57c850241813
andcache_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 calculatingcomplete
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 ofhttps
(#1701) - MongooseIM could not be deployed in paths with spaces (#1621)
Other
- Documentation fixes and improvements (#1676, #1696, #1709, #1727)
- Tests improvements and refactoring (#1628, #1637, #1644, #1653, #1663, #1665, #1680, #1681, #1687, #1692, #1706, #1708, #1720, #1736, #1737, #1743, #1745, #1747, #1749, #1756, #1757, #1760, #1768, #1770)
- Removed unused Riak script (#1671)
- Commit messages with Unicode characters are now properly handled (#1675)
Commits, merged PRs and closed issues
Special thanks to our contributors: @igors @jacksgt @sstrigler @GalaxyGorilla @varnerac!