ejabberd 17.06-beta
ejabberd 17.06-beta includes a lot of improvements over the previous 17.04 release. To name the most important ones: new caching system, Riak support for several modules and introduction of Certificate Manager.
Certificate Manager is a feature that has been requested by many organisations, allowing administrators to manage their certificate more easily. From now, starting ejabberd with an invalid certificate will dump a clear entry in ejabberd log file, explaining what’s wrong. Upcoming ACME support will further refine these improvements we’ve worked on early this year to give our users a great experience with certificate management.
The new cache system is also a new component that allows fine tuning of ejabberd performance for either small systems or large scale servers. To use data cache for a supported module, you need to set the module option use_cache
. You also have the possibility to define a maximum number of cache entries and/or maximum life time of cached data, so you keep control on your memory use. Example:
modules:
mod_roster:
use_cache: true
cache_size: 10000
cache_life_time: 3600 # 1 hour
The cleanup tasks on all ejabberd API also continue, consider checking against few methods rename.
Some features and fixes are missing from the 17.06 milestone, and will be worked on the next couple of weeks.
Changes
API
- Deprecate
misc:encode_base64/1
andmisc:decode_base64/1
- Rename
is_user_exists
function touser_exists
- Allow api access on both ipv4 and 6 loopback addresses
Admin
- Refactor ejabberdctl
- Improve ejabberdctl parameters parsing
Configuration
- Validate module options on start_module/2
- Validate new options before module reloading
- Validate second-level options
- Introduce
iqdisc
global option - stream_management listen option deprecated, use mod_stream_mgmt
- Check presence of some files during option validation
- Speedup configuration options lookup
- Validate all certfiles on startup
- Only validate certfiles if
public_key:short_name_hash/1
is available - Introduce Certficate Manager
Commands
- Add clear_cache admin command
- Parse correctly presence_broadcast option in change_room_option command
- Describe command arguments and results in
mod_muc_admin
- Improve export2sql explanation; remove obsolete and duplicated command
- Fix and document
push_roster_all
command
Compilation
- Erlang 17.5 or higher is required
- Add
--enable-system-deps
configure option - Add
--enable-stun
and--enable-sip
configure options
Core
- Speedup Mnesia tables initialization
- Improve Mnesia tables creation and transformation
- Improve
ejabberd_c2s:close()
- ejabberd_c2s: Don’t close session on stream resume
- Speedup loading of translation files
- Fix
ejabberd_router:is_my_route/1
Databases
- New
sql_connect_timeout
option - New
sql_query_timeout
option - Get rid of sql_queries.erl
- Use round-robin algorithm when selecting worker from DB pool
- Add Riak as BOSH RAM backend
- Add Riak as mod_proxy65 RAM backend
- Add Riak as mod_carboncopy RAM backend
- Add Riak as router RAM backend
- Add Riak as session manager RAM backend
- Fix cleaning of Riak route table
Cache
- Implement cache for mod_announce
- Implement cache for mod_private
- Implement cache for mod_privacy/mod_blocking
- Implement cache for mod_last
- Implement cache for mod_vcard and mod_vcard_xupdate
- Implement cache for roster
- Add cache options to the validator
- Use cache for authentication backends
- Use new cache API in mod_shared_roster_ldap
- Use new cache API in ejabberd_oauth
- Use new cache API in mod_mam
- Use new cache API in mod_caps
- Use cache in front of Redis/SQL RAM backends
Modules
- mod_http_upload: Add support for HTTP File Upload 0.3.0
- mod_mam: Added export function
- mod_metrics: Don’t leak with UDP sockets
- mod_metrics: New options ip and port
- mod_muc: Allow a room admin to un/subscribe another JID
- mod_offline: Don’t store messages via a single process
- mod_offline: Make sure only jabber:x:event tag is present in offline event
- mod_register: New option ‘access_remove’ ACL
- mod_stream_mgmt: Preserve stanza count on timeout
- mod_vcard_ldap: Parse
ldap_uids
like in eldap_utils
Elixir
- Update elixir to v1.4.4
Installer
- Upgrade OTP to 19.3
Feedback
As usual, the release is tagged in the Git source code repository on Github.
The source package and binary installers are available at ejabberd XMPP & MQTT server download page.
If you suspect that you’ve found a bug, please search or fill a bug report on Github.