diff --git a/doc/release_notes_2.1.0.txt b/doc/release_notes_2.1.0.txt new file mode 100644 index 000000000..85f2f48ff --- /dev/null +++ b/doc/release_notes_2.1.0.txt @@ -0,0 +1,281 @@ + + 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 backlog for ejabberd_listener to increase TCP backlog +- 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 +- In default config, only local accounts can create rooms and PubSub nodes + +* 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 +- Node names are used verbatim, without separating by slash, unless a + node plugin uses its own separator +- 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 have three changes since ejabberd 2.0.x. + Check the database creation SQL files and update your database. + 1) New table roster_version to support roster versioning. + 2) Six new tables for optional pubsub ODBC storage. + 3) Some tables in the MySQL database have a new created_at column. + +- As usual, it is recommended to backup the Mnesia spool directory and + your SQL database (if used) before upgrading ejabberd. + +- Between ejabberd 2.0.0 and 2.0.5, mod_pubsub used "default" as the + default node plugin. But in 2.1.0 this is renamed to "hometree". + You have to edit your ejabberd config file and replace those names. + If you used ejabberd 2.0.5 or older, the database will be updated + automatically. But if you were using ejabberd from SVN, you must + manually run ejabberdctl with the command: rename_default_nodeplugin. + Running this command on already updated database does nothing. + +- 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/