Release Notes ejabberd 2.1.0 ejabberd 2.1.0 is a major new version for ejabberd adding many new features, performance and scalability improvements. ejabberd 2.1.0 includes many new features, improvements and bug fixes. A complete list of changes can be retrieved from: http://redir.process-one.net/ejabberd-2.1.0 The new code can be downloaded from ejabberd download page: http://www.process-one.net/en/ejabberd/ New features and improvements: * Anti-abuse - Captcha support (XEP-0158). The example script uses ImageMagick. - New option: registration_timeout to limit registrations by time - Use send timeout to avoid locking on gen_tcp:send - mod_ip_blacklist: client blacklist support by IP * API - ejabberd_http provides Host, Port, Headers and Protocol in HTTP requests - Export function to create MUC room - New events: s2s_send_packet and s2s_receive_packet - New event: webadmin_user_parse_query when POST in web admin user page - Support distributed hooks over the cluster * Authentification - Extauth responses: log strange responses and add timeout * Binary Installer - Includes exmpp library to support import/export XML files * Caps - Remove useless caps tables entries - mod_caps must handle correctly external contacts with several resources - Complain if mod_caps disabled and mod_pubsub has PEP plugin enabled * Clustering and Architecture * Configuration - Added option access_max_user_messages for mod_offline - Added option define_macro and use_macro - Added option include_config_file to include additional configuration files - Added option max_fsm_queue - Added option outgoing_s2s_options to define IP address families and timeout - Added option registration_timeout to ejabberd.cfg.example - Added option s2s_dns_options to define DNS timeout and retries - Added option ERL_OPTIONS to ejabberdctl.cfg - Added option FIREWALL_WINDOW to ejabberdctl.cfg - Added option EJABBERD_PID_PATH to ejabberdctl.cfg - Deleted option user_max_messages of mod_offline - Check certfiles are readable on server start and listener start - Config file management mix file reading and sanity check - Include example PAM configuration file: ejabberd.pam - New ejabberd listener: ejabberd_stun - Support to bind the same port to multiple interfaces - New syntax to specify the IP address and IPv6 in listeners configuration. The old options {ip,{1,2,3,4}} and inet6 are supported even if they aren't documented. - New syntax to specify the network protocol: tcp or udp - Report error at startup if a listener module isn't available - Only listen in a port when actually ready to serve requests * Core architecture - More verbose error reporting for xml:element_to_string - Deliver messages when first presence is Invisible - Better log message when config file is not found - Include original timestamp on delayed presences * Crypto - Do not ask certificate for client (c2s) - SSL code remove from ejabberd in favor of TLS - Support Zlib compression after STARTTLS encryption - tls v1 client hello * Documentation - Document possible default MUC room options - Document service_check_from in the Guide - Document s2s_default_policy and s2s_host in the Guide - new command and guide instructions to change node name in a Mnesia database * ejabberd commands - ejabberd commands: separate command definition and calling interface - access_commands restricts who can execute what commands and arguments - ejabberdctl script now displays help and categorization of commands * HTTP Binding and HTTP Polling - HTTP-Bind: module optimization and clean-up - HTTP-Bind: allow configuration of max_inactivity timeout - HTTP-Poll: turn session timeout into a config file parameter * Jingle - STUN server that facilitates the client-to-client negotiation process * LDAP - Faster reconnection to LDAP servers - LDAP filter optimisation: Add ability to filter user in ejabberd and not LDAP - LDAP differentiates failed auth and unavailable auth service - Improve LDAP logging - LDAPS support using TLS. * Localization - Use Gettext PO for translators, export to ejabberd MSG - Support translation files for additional projects - Most translations are updated to latest code - New translation to Greek language * Multi-User Chat (MUC) - Allow admins to send messages to rooms - Allow to store room description - Captcha support in MUC: the admin of a room can configure it to require participants to fill a captcha to join the room. - Limit number of characters in Room ID, Name and Description - Prevent unvoiced occupants from changing nick - Support Result Set Management (XEP-0059) for listing rooms - Support for decline of invitation to MUC room - mod_muc_log options: plaintext format; filename with only room name * Performance - Run roster_get_jid_info only if privacy list has subscription or group item - Significant PubSub performance improvements * Publish-Subscribe - Add nodetree filtering/authorization - Add subscription option support for collection nodes - Allow Multiple Subscriptions - Check option of the nodetree instead of checking configuration - Implement whitelist authorize and roster access model - Implicit item deletion is not notified when deleting node - Make PubSub x-data configuration form handles list value - Make default node name convention XEP-compatible, document usage of hierarchy - Send authorization update event (XEP-0060, 8.6) - Support of collection node subscription options - Support ODBC storage. Experimental, needs more testing. * Relational databases: - Added MSSQL 2000 and 2005 - Privacy rules storage in MySQL - Implement reliable ODBC transaction nesting * Source Package - Default installation directories changed. Please see the upgrade notes below. - Allow more environment variable overrides in ejabberdctl - ChangeLog is not edited manually anymore; it's generated automatically. - Install the ejabberd Guide - Install the ejabberd include files - New option for the 'configure' script: --enable-user which installs ejabberd granting permission to manage it to a regular system user; no need to use root account to. - Only try to install epam if pam was enabled in configure script - Spool, config and log dirs: owner writes, group reads, others do nothing. - Provides an example ejabberd.init file * S2S - Option to define s2s outgoing behaviour: IPv4, IPv6 and timeout - DNS timeout and retries, configurable with s2s_dns_options. * Shared rosters - When a member is added/removed to group, send roster upgrade to group members * Users management - When account is deleted, cancel presence subscription for all roster items * XEP Support - Added XEP-0059 Result Set Management (for listing rooms) - Added XEP-0082 Date Time - Added XEP-0085 Chat State Notifications - Added XEP-0157 Contact Addresses for XMPP Services - Added XEP-0158 CAPTCHA Forms (in MUC rooms) - Added STUN server, for XEP-0176: Jingle ICE-UDP Transport Method - Added XEP-0199 XMPP Ping - Added XEP-0202 Entity Time - Added XEP-0203 Delayed Delivery - Added XEP-0227 Portable Import/Export Format for XMPP-IM Servers - Added XEP-0237 Roster Versioning * Web Admin - Display the connection method of user sessions - Cross link of ejabberd users in the list of users and rosters - Improved the browsing menu: don't disappear when browsing a host or node - Include Last-Modified HTTP header in responses to allow caching - Make some Input areas multiline: options of listening ports and modules - Support PUT and DELETE methods in ejabberd_http - WebAdmin serves Guide and links to related sections * Web plugins - mod_http_fileserver: new option directory_indices, and improve logging Important Notes: - ejabberd 2.1.0 requires Erlang R10B-9 or higher. R12B-5 is the recommended version. Support for R13B is experimental. Upgrading From ejabberd 1.x.x: - Check the Release Notes of the intermediate versions for additional information about database or configuration changes. Upgrading From ejabberd 2.0.x: - The database schemas didn't change since ejabberd 1.1.4. Anyway, it is recommended to backup the Mnesia spool directory and your SQL database (if used) before upgrading ejabberd. - The plugin of mod_pubsub "default" is renamed to "flat". You need to edit the ejabberd configuration file and replace those names. - The listener options 'ip' and inet6' are not documented anymore but they are supported and you can continue using them. There is a new syntax to define IP address and IP version. As usual, check the ejabberd Guide for more information. - The log file sasl.log is now called erlang.log - ejabberdctl commands now have _ characters instead of -. For backwards compatibility, it is still supported -. - mod_offline has a new option: access_max_user_messages. The old option user_max_messages is no longer supported. - If you upgrade from ejabberd trunk SVN, you must execute this: $ ejabberdctl rename_default_nodeplugin - Default installation directories changed a bit: * The Mnesia spool files that were previously stored in /var/lib/ejabberd/db/NODENAME/* are now stored in /var/lib/ejabberd/* * The directories /var/lib/ejabberd/ebin /var/lib/ejabberd/priv and their content is now installed as /lib/ejabberd/ebin /lib/ejabberd/priv * There is a new directory with Erlang header files: /lib/ejabberd/include * There is a new directory for ejabberd documentation, which includes the Admin Guide and the release notes:: /share/doc/ejabberd - How to upgrade from previous version to ejabberd 2.1.0: 1. Stop the old instance of ejabberd. 2. Run 'make install' of new ejabberd 2.1.0 to create the new directories. 3. Copy the content of your old directory: /var/lib/ejabberd/db/NODENAME/ to the new location: /var/lib/ejabberd/ so you will have the files like this: /var/lib/ejabberd/acl.DCD ... 4. You can backup the content of those directories and delete them: /var/lib/ejabberd/ebin /var/lib/ejabberd/priv /var/lib/ejabberd/db 5. Now try to start your new ejabberd 2.1.0. Bug reports You can officially report bugs on ProcessOne support site: http://support.process-one.net/