diff --git a/doc/guide.html b/doc/guide.html index fd3f0a75a..3c03f28ce 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -4058,9 +4058,6 @@ Binary Installer - New binary installer for Windows including all requirements. - Improved installers for Linux and MacOSX (PowerPC) - -- Anonymous login bugfixes. - XMPP Compliancy - Some protocol compliance fix have been added, after the Portland XMPP @@ -4076,6 +4073,7 @@ Miscelanous Bugfixes + - Anonymous login bugfixes. - Please refer to the ChangeLog file supplied with this release regarding all improvements in ejabberd. diff --git a/doc/release_notes_1.1.2.txt b/doc/release_notes_1.1.2.txt index bca68127d..e7c8f3551 100644 --- a/doc/release_notes_1.1.2.txt +++ b/doc/release_notes_1.1.2.txt @@ -63,9 +63,6 @@ Binary Installer - New binary installer for Windows including all requirements. - Improved installers for Linux and MacOSX (PowerPC) - -- Anonymous login bugfixes. - XMPP Compliancy - Some protocol compliance fix have been added, after the Portland XMPP @@ -81,6 +78,7 @@ Miscelanous Bugfixes + - Anonymous login bugfixes. - Please refer to the ChangeLog file supplied with this release regarding all improvements in ejabberd. diff --git a/ejabberd-1.1.2/COPYING b/ejabberd-1.1.2/COPYING deleted file mode 100644 index 8b325f530..000000000 --- a/ejabberd-1.1.2/COPYING +++ /dev/null @@ -1,343 +0,0 @@ -As a special exception, the authors give permission to link this program -with the OpenSSL library and distribute the resulting binary. - - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/ejabberd-1.1.2/ChangeLog b/ejabberd-1.1.2/ChangeLog deleted file mode 100644 index 17c093ceb..000000000 --- a/ejabberd-1.1.2/ChangeLog +++ /dev/null @@ -1,3393 +0,0 @@ -2006-09-27 Mickael Remond - - * doc/release_notes_1.1.2.txt: Minor fixes. - - * doc/guide.tex: Fixed Latexish typos. - -2006-09-26 Mickael Remond - - * doc/release_notes_1.1.2.txt: Draft release notes. - - * src/msgs/pl.msg: Updated (thanks to Andrzej Smyk). - - * src/ejabberd_s2s.erl: Added incoming-s2s-number and - outgoing-s2s-number ejabberdctl commands - - * src/mod_muc/mod_muc_room.erl: Minor english update. - * src/msgs/pl.msg: Likewise. - * src/msgs/uk.msg: Likewise. - * src/msgs/pt-br.msg: Likewise. - * src/msgs/cs.msg: Likewise. - * src/msgs/ru.msg: Likewise. - * src/msgs/es.msg: Likewise. - * src/msgs/fr.msg: Likewise. - * src/msgs/de.msg: Likewise. - * src/msgs/nl.msg: Likewise. - - * src/msgs/pt-br.msg: Updated Brazilian translation (thanks to - Renato Botelho) and clean-up. - -2006-09-25 Mickael Remond - - * src/msgs/de.msg: Updated German translation (thanks to Nikolaus - Polak). - - * src/ejabberd.app: Version update for ejabberd 1.1.2. - - * src/msgs/pl.msg: Updated Polish translation (thanks to Zbyszek - Zolkiewski). - - * src/msgs/de.msg: Updated German translation (thanks to Marvin - Preuss). - - * src/msgs/nl.msg: Updated Dutch translation (thanks to Sander - Devrieze). - - * src/msgs/cs.msg: Updated Czech translation and removed unused - strings. - - * doc/introduction.tex: Minor doc updates for release 1.1.2. - -2006-09-24 Mickael Remond - - * src/msgs/es.msg: Updated Spanish translation (thanks to Badlop). - - * src/mod_muc/mod_muc_room.erl: Strings update (thanks to Serguei - Golovan). - * src/msgs/ru.msg: Updated Russian translation (thanks to Serguei - Golovan). - * src/msgs/uk.msg: Updated Ukrainian translation (thanks to Serguei - Golovan). - * src/msgs/fr.msg: Updated French translation. - - * src/doc/guide.html: Minor W3C compliance fix in an Hevea - generated URL. - - * src/doc/features.html: Added to be consistent (guide.html is in the - repository to make Latex optional, but still allow access to the doc). - -2006-09-23 Mickael Remond - - * src/ejabberd.hrl: Updated to version 1.1.2 - -2006-09-23 Alexey Shchepin - - * src/eldap/eldap.erl: Enable the keepalive socket option (thanks - to Evgeniy Khramtsov) - - * src/ejabberd_auth_ldap.erl: Now uses two LDAP connections - (thanks to Evgeniy Khramtsov) - - * src/eldap/eldap_filter.erl: Bugfix (thanks to Evgeniy Khramtsov) - * src/mod_vcard_ldap.erl: Likewise - -2006-09-22 Mickael Remond - - * src/msgs/cs.msg: Added Czech translation (thanks to Milos Svasek). - - * src/mod_muc/mod_muc.erl: Component name is now more user friendly - (thanks to Badlop). - * src/mod_irc/mod_irc.erl: Likewise. - * src/mod_pubsub/mod_pubsub.erl: Likewise. - - * src/msgs/fr.msg: updated French translation. - - * doc/guide.tex: Large improvements for ejabberd 1.1.2 (thanks to - Sander Devrieze) - * doc/version.tex: Likewise. - * doc/features.tex: Likewise. - * doc/Makefile: Likewise. - * doc/dev.tex: Likewise. - -2006-09-14 Mickael Remond - - * doc/guide.tex: Minor fix on index generation. - -2006-09-14 Alexey Shchepin - - * doc/guide.tex: Updated (thanks to Evgeniy Khramtsov) - - * src/ejabberd_auth_ldap.erl: Better LDAP support (thanks to - Evgeniy Khramtsov) - * src/mod_vcard_ldap.erl: Likewise - * src/eldap/eldap_filter.erl: Likewise - -2006-09-11 Mickael Remond - - * src/odbc/mssql.sql: Removed unused fields. - -2006-09-10 Alexey Shchepin - - * src/ejd2odbc.erl: Updated - - * src/mod_muc/mod_muc_log.erl: Fixed html special characters - escaping, added new image buttons, chatroom titles now point to - xmpp: URIs (thanks to Badlop) - -2006-09-05 Mickael Remond - - * src/mod_muc/mod_muc.erl: It is now possible to configure the MUC room - history feature. A new option has been added in ejabberd muc module - configuration (history_size) to define the size of the history. 0 is - used to disable the feature. - * src/mod_muc/mod_muc_room.erl: Likewise. - * doc/guide.tex: Likewise. - -2006-09-05 Alexey Shchepin - - * src/mod_shared_roster.erl: Bugfix - - * src/mod_roster_odbc.erl: Bugfix - -2006-09-03 Mickael Remond - - * src/odbc/odbc_queries.erl: Support for Microsoft SQL Server as a - database backend (via ODBC). - * src/odbc/ejabberd_odbc.erl: Likewise. - * src/odbc/mssql.sql: Likewise. - * src/odbc/Makefile.in: Likewise. - * src/ejabberd_auth_odbc.erl: Likewise. - * src/mod_offline_odbc.erl: Likewise. - * src/mod_roster_odbc.erl: Likewise. - * src/mod_last_odbc.erl: Likewise. - * src/configure.ac: Likewise - * doc/guide.tex: Likewise. - * doc/introduction.tex: Likewise. - * src/odbc/pg.sql: Minor fix. - -2006-08-28 Mickael Remond - - * Makefile.in: Fix for MacOSX compilation. - * ejabberd_zlib/Makefile.in: Likewise. - * mod_irc/Makefile.in: Likewise. - * stringprep/Makefile.in: Likewise. - * tls/Makefile.in: Likewise. - - * src/ejabberd.app: Updated to the current version. - -2006-08-27 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Fixed logging configuring - permission check - -2006-08-14 Alexey Shchepin - - * src/ejabberd_router.erl: Now filter_packet hook works in - 'global' context - -2006-08-04 Alexey Shchepin - - * src/tls/tls_drv.c: Report OpenSSL error messages (thanks to - Magnus Henoch) - - * src/mod_muc/mod_muc_room.erl: Use standardized MUC room - configuration fields (thanks to Magnus Henoch and Andy Turner) - -2006-08-02 Alexey Shchepin - - * src/mod_roster_odbc.erl: Bugfix - -2006-07-28 Mickael Remond - - * src/ejabberd_c2s.erl: Bugfix: added a missing catch and fixed the - error code used on unknown namespace. - * src/ejabberd_s2s_out.erl: Improved s2s connection negociation - (dialback namespace usage) when using tls. - * src/ejabberd_sm.erl: Fixed the error code used on unknown namespace. - * src/mod_register.erl: ejabberd now sends iq result and stream end on - user remove. - -2006-07-16 Mickael Remond - - * src/acl.erl: The server does not crash anymore on wrong acl rule. Add - rule error message in log file. - -2006-07-07 Mickael Remond - - * src/web/ejabberd_web_admin.erl: User creation form now creates the - user for the current virual host only and does not require to type - the hostname. - * src/jlib.erl: String to JID conversion now returns an error if the - JID string contains two arobases. - -2006-07-06 Mickael Remond - - * src/mod_shared_roster.erl: Shared roster entries can now be moved or - rename from a client without breaking current presence status. - * src/mod_roster.erl: Likewise. - * src/mod_roster_odbc.erl: Likewise. - - * src/mod_muc/mod_muc_room.erl: Fixed the order in which room presence - packets are sent (First existing presence to new occupant, then new - occupant presence to existing users. - -2006-07-05 Mickael Remond - - * src/web/ejabberd_web_admin.erl: More flexible parsing the shared - roster members list from the configuration form. - * src/mod_shared_roster.erl: Deletng a shared roster group now - correctly deletes its user entries. - - * src/mod_shared_roster.erl: The logged user (self) is now removed from - the shared roster list. - * src/ejabberd_auth.erl: Better handling of errors when the server for - authentication is unknown. - -2006-06-19 Alexey Shchepin - - * src/ejabberd_s2s_in.erl: Removed needless check for xmlns:db - when starttls is enabled - -2006-06-15 Mickael Remond - - * src/web/ejabberd_http_poll.erl: Bugfix: using tuple instead of a Pid - to send Erlang messages in a rarely used case. - -2006-06-13 Mickael Remond - - * src/ejabberd_auth.erl: Fixed broken multiple connection with - anonymous login problem. - * src/ejabberd_auth_anonymous.erl: Likewise. - -2006-06-07 Mickael Remond - - * src/mod_pubsub/mod_pubsub.erl: Support for pubsub node creation - ACL. It is now possible to limit the node creation rights using an - ACL from ejabberd config file (Thanks to Christophe Romain). - * doc/guide.tex: Likewise. - * src/ejabberd.cfg.example. - - * src/mod_pubsub/mod_pubsub.erl: Discovery query on an item does - no more return an "item not found error". Discovery stop correctly - at the item level (Thanks to Christophe Romain). - -2006-06-02 Mickael Remond - - * src/web/ejabberd_http_poll.erl: Messages polled between the - the last client request and the polling timeout were lost. Those - messages are now resent using ejabberd routing mechanisms. - - * src/web/ejabberd_http.erl: The web module now accepts HTTP - absolute URL (used behind a proxy). This apply to HTTP polling and - to the web interface (Thanks to Jean-Sebastien Pedron). - -2006-05-29 Mickael Remond - - * src/mod_roster.erl: According to RFC3921 section 9.2, outbound - subscribe presence packets must be sent, even if the user has already - asked for subcription previously (subscription: none and pending: out). - The mod_roster now conforms to this behaviour. - * src/mod_roster_odbc.erl: Likewise. - -2006-05-27 Mickael Remond - - * src/configure.ac: Added an optional check for krb5.h in - configure. ejabberd can now be build directly on RedHat and - OpenBSD. - -2006-05-27 Alexey Shchepin - - * src/msgs/sk.msg: Slovak translation (thanks to Juraj Michalek - and SkLUG) - -2006-05-26 Alexey Shchepin - - * src/odbc/pg.sql: Updated - - * src/mod_shared_roster.erl: Updated - - * src/ejabberd_sm.erl: Bugfix - - * src/mod_roster.erl: Bugfix - * src/mod_roster_odbc.erl: Likewise - -2006-05-23 Mickael Remond - - * src/mod_roster.erl: The subscribe request are now resend at login as - long as they have not been answered. mod_roster do no more depends on - mod_offline. - * src/ejabberd_sm.erl: Likewise. - * src/ejabberd_c2s.erl: Likewise. - * src/mod_roster_odbc.erl: Likewise (The ODBC/relational support has - not yet been tested). - * src/mod_roster.hrl: Likewise. - * src/mod_offline.erl: Likewise. - * src/mod_offline_odbc.erl: Likewise. - * odbc/pg.sql: Likewise. - * odbc/mysql.sql: Likewise. - -2006-05-22 Mickael Remond - - * src/ejabberd_sm.erl: The max_user_sessions has been moved to - host configuration. - * src/ejabberd.cfg.example: Likewise. - * doc/guide.tex: Likewise. - -2006-05-21 Mickael Remond - - * src/ejabberd_sm.erl: An option to limit the number of opened sessions - for a given user have been added. As a default, a given user can only - log in 10 times with different resources. After that, new connections - replace the older ones. - * src/ejabberd.cfg.example: Likewise. - * doc/guide.tex: Likewise. - -2006-05-15 Mickael Remond - - * src/web/ejabberd_http_poll.erl: Timeout disconnection were not - properly handled after "active once" migration. This is now fixed. - -2006-05-07 Mickael Remond - - * src/mod_configure.erl: Unknown tables or tables from now unused - modules are ignored during restore. The restore can now be performed in - such case. - * src/web/ejabberd_web_admin.erl: Likewise. - * src/ejabberd_admin.erl: Code refactoring. Common Mnesia database - restore function. - - * src/ejabberd_ctl.erl: Now prints a user-friendly when trying to - restore a backup from a non-existent file. - - * src/ejabberd_ctl.erl: Added a way to delete the older message - from the offline message table. This function is only available if - offline message queue is stored in Mnesia internal database. The - function delete_old_messages is not available in mod_offline_odbc. - -2006-05-01 Mickael Remond - - * src/ejabberd_ctl.erl: Unknown tables or tables from now unused - modules are ignored during restore. The restore can now be performed in - such case. - -2006-04-28 Mickael Remond - - * src/ejabberd.hrl: release 1.1.1 - * doc/version.tex: Likewise - * doc/guide.tex: Likewise - -2006-04-28 Alexey Shchepin - - * src/cyrsasl.erl: Bugfix: anonymous authentication was always - enabled - -2006-04-27 Mickael Remond - - * src/ejabberd_ctl.erl: The status now only returns "started" if - ejabberd is started and ready to accept requests. - -2006-04-24 Alexey Shchepin - - * doc/guide.tex: Added a documentation for max_stanza_size option - -2006-04-24 Mickael Remond - - * src/ejabberd.hrl: Updated for version 1.1.0. - -2006-04-23 Alexey Shchepin - - * src/configure: Removed '==' bashism (thanks to Magnus Henoch) - * src/aclocal.m4: Likewise - - * src/ejabberd_c2s.erl: Resend messages when leaving negative - presence state (thanks to Magnus Henoch) - -2006-04-23 Mickael Remond - - * src/msgs/fr.msg: Updated - * src/msgs/de.msg: Updated (thanks to Nikolaus Polak) - * src/ejabberd_sm.erl: Now delivering messages to all resources with - max equal priority when this priority is non-negative. - - * src/guide.tex: Added documentation for native database configuration. - -2006-04-22 Alexey Shchepin - - * src/msgs/pt-br.msg: Updated (thanks to Lucius Curado) - - * src/xml_stream.erl: Support for stanza size limit (thanks to - Igor Goryachev) - * src/ejabberd_receiver.erl: Likewise - * src/ejabberd_c2s.erl: Likewise - * src/ejabberd_s2s_in.erl: Likewise - * src/ejabberd.cfg.example: Updated - - * src/ejabberd_auth.erl: Fixed try_register/3 behaviour - -2006-04-20 Mickael Remond - - * src/ejabberd.cfg.example: Update of the example for anonymous. - Removed unnecessary parameter. - * src/ejabberd_auth_anonymous.erl: Removed unnecessary parameter / - bugfix. - * src/ejabberd_auth.erl: Bugfix: We now are forced to check is an - anonymous user is log under a given user name before trying to - register it. - * doc/guide.tex: Updated (SASL anonymous and anonymous login). - -2006-04-19 Alexey Shchepin - - * src/msgs/pl.msg: Updated (thanks to Andrzej Smyk) - -2006-04-13 Alexey Shchepin - - * src/xml_stream.erl: Cleanup - - * src/ejabberd_service.erl: Updated to use ejabberd_receiver - -2006-04-12 Alexey Shchepin - - * src/ejabberd_c2s.erl: Minor fix - - * src/ejabberd_c2s.erl: Bugfix (thanks to Sergei Golovan) - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - - * src/msgs/nl.msg: Updated (thanks to Sander Devrieze) - -2006-04-11 Alexey Shchepin - - * src/msgs/es.msg: Updated (thanks to Badlop) - - * src/ejabberd.cfg.example: Updated (thanks to Badlop) - - * doc/guide.tex: Updated (thanks to Badlop) - -2006-04-07 Mickael Remond - - * src/mod_pubsub/mod_pubsub.erl: Fixed pubsub root node creation - (conflict error was send on node creation) - -2006-04-07 Alexey Shchepin - - * src/ejabberd_sm.erl: SASL Anonymous + Anonymous login support - (thanks to Mickael Remond and Magnus Henoch) - * src/ejabberd_c2s.erl: Likewise - * src/ejabberd_auth.erl: Likewise - * src/ejabberd_auth_anonymous.erl: Likewise - * src/cyrsasl.erl: Likewise - * src/cyrsasl_anonymous.erl: Likewise - * src/ejabberd.cfg.example: Likewise - -2006-04-06 Alexey Shchepin - - * src/expat_erl.c: Use binaries for CDATA - * src/xml.erl: Likewise - -2006-04-02 Alexey Shchepin - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * src/mod_configure.erl: Updated translation strings (thanks to - Sergei Golovan) - * src/web/ejabberd_web_admin.erl: Likewise - - * src/ejabberd_s2s_in.erl: Changed a path to PKIX includes (thanks - to Sergei Golovan) - -2006-04-01 Mickael Remond - - * src/Makefile.in: Added an option to compile ejabberd with debug - print-out (make ejabberd_debug=true). - * src/ejabberd_c2s.erl: Added a new debug printout: We can now print - the XML packets send by the server. - -2006-03-31 Alexey Shchepin - - * src/ejabberd_c2s.erl: Bugfix - -2006-03-25 Alexey Shchepin - - * src/ejabberd_c2s.erl: Enable zlib only over TCP - -2006-03-18 Alexey Shchepin - - * src/ejabberd_c2s.erl: Bugfix (thanks to Sergei Golovan) - -2006-03-17 Alexey Shchepin - - * src/mod_privacy.erl: Fixed privacy list pushing (thanks to - Sergei Golovan) - * src/ejabberd_c2s.erl: Likewise - -2006-03-16 Mickael Remond - - * src/ejabberd_sm.erl: Remove unnecessary use delete_object, which can, - in some context break indexes, when used on non bag table. - -2006-03-16 Alexey Shchepin - - * src/ejabberd_c2s.erl: Bugfix - -2006-03-14 Alexey Shchepin - - * src/xml_stream.erl: Added catching of gen_fsm:send_event errors - - * src/ejabberd_s2s_out.erl: Better support for multiple SRV - records (thanks to Sergei Golovan) - - * src/mod_muc/mod_muc_log.erl: Support for chatroom logging - (thanks to Badlop) - * src/mod_muc/mod_muc_room.erl: Likewise - * src/mod_muc/Makefile.in: Likewise - * src/mod_muc/Makefile.win32: Likewise - -2006-03-11 Alexey Shchepin - - * src/gen_iq_handler.erl: Added support for {queues, N} IQ handler - type - -2006-03-06 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Bugfix - -2006-03-05 Alexey Shchepin - - * src/ejabberd_c2s.erl: Bugfix - - * src/ejabberd_auth_odbc.erl: Bugfix - -2006-03-04 Mickael Remond - - * src/ejabberd_logger_h.erl: reopen-log function now rename the log - file if it has not been already renamed by a logrotate process. This - change allow ejabberd administrators to rotate log files on Windows - (EJAB-52). - -2006-02-27 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Added a interface for node - updating - * src/ejabberd_update.erl: Added function update_info/0 - -2006-02-25 Alexey Shchepin - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * contrib/extract_translations/extract_translations.erl: Minor - update (thanks to Sergei Golovan) - - * src/ejabberd_zlib/Makefile.win32: Zlib support for Windows build - (thanks to Sergei Golovan) - * src/Makefile.win32: Likewise - * src/configure.erl: Likewise - -2006-02-20 Alexey Shchepin - - * src/ejabberd_ctl.erl: Added API for virtual host specific - commands, removed registered-users command - * src/ejabberd_auth.erl: Added processing of registered-users - command - * src/ejabberd_auth_internal.erl: Likewise - * src/ejabberd_auth_ldap.erl: Likewise - * src/ejabberd_auth_odbc.erl: Likewise - * src/ejabberd_app.erl: Added inititalization of ejabberd_ctl - * src/ejabberd_sm.erl: Minor update - -2006-02-18 Alexey Shchepin - - * src/mod_irc/mod_irc_connection.erl: Added handling for "%", "&" - and "~" prefixes in IRC nicknames (thanks to Vladimir Kulev) - - * src/mod_irc/mod_irc_connection.erl: Added /msg and /ctcp - commands, improved handling of channel topic and kick, mirc colors - now filtered, other minor improvements (thanks to Oleg V. Motienko - and Magnus Henoch) - - * src/mod_configure.erl: Improved strings (thanks to Sander - Devrieze) - * src/mod_vcard.erl: Likewise - * src/mod_vcard_ldap.erl: Likewise - * src/mod_vcard_odbc.erl: Likewise - * src/web/ejabberd_web_admin.erl: Likewise - -2006-02-15 Alexey Shchepin - - * src/mod_service_log.erl: Bugfix (thanks to Badlop) - - * src/jd2ejd.erl: Use mod_vcard_odbc if it is loaded (thanks to - Tomasz Sterna) - -2006-02-14 Alexey Shchepin - - * src/ejabberd_sm.erl: Added a few ejabberdctl commands - - * src/ejabberd_ctl.erl: New interface for command registration - -2006-02-13 Alexey Shchepin - - * src/ejabberd_ctl.erl: Partially rewritten - * src/ejabberd_ctl.hrl: Definitions of exit status codes moved - here - -2006-02-12 Alexey Shchepin - - * src/mod_roster_odbc.erl: Bugfix - -2006-02-08 Alexey Shchepin - - * src/odbc/ejabberd_odbc.erl: Reconnect on ODBC connection closing - -2006-02-07 Mickael Remond - - * src/ejabberd_auth.erl: plugin authentication modules can now - be used in the configuration file: {auth_method, module} will now - use the module ejabberd_auth_module.erl for authentication. - -2006-02-05 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Kick non-members when room - reconfigured to be member-only or when membership is revoked in - member-only room, allowed "true" and "false" in x:data forms - (thanks to Sergei Golovan) - - * src/mod_configure.erl: Added "Host" parameter to get_form and - set_form functions (thanks to Sergei Golovan) - - * src/ejabberd_s2s_out.erl: Bugfix - - * src/msgs/es.msg: Updated (thanks to Badlop) - - * src/web/ejabberd_web.erl: Bugfix (thanks to Badlop) - - * src/mod_irc/mod_irc.erl: Updated copyright dates - * src/mod_muc/mod_muc.erl: Likewise - * src/mod_pubsub/mod_pubsub.erl: Likewise - * src/mod_vcard.erl: Likewise - * src/mod_vcard_ldap.erl: Likewise - * src/mod_vcard_odbc.erl: Likewise - * src/web/ejabberd_web_admin.erl: Likewise - -2006-02-03 Alexey Shchepin - - * src/ejabberd_auth_odbc.erl: Added ejabberd_odbc_sup to ejabberd - supervision tree - - * src/web/ejabberd_http.erl: Authentication check moved to - ejabberd_web.erl - * src/web/ejabberd_web.erl: Likewise - - * src/web/Makefile.in: Added ejabberd_http.hrl dependency - - * src/web/ejabberd_http_poll.erl: Updated to use {active, once} - socket mode - - * src/mod_irc/mod_irc.erl: Updated to use gen_server behaviour and - ejabberd supervision tree - * src/mod_irc/mod_irc_connection.erl: Likewise - -2006-02-02 Mickael Remond - - * src/configure.ac: --prefix option can now override the default - install dir - * src/configure: Likewise - * src/Makefile.in: Likewise - -2006-02-02 Alexey Shchepin - - * src/mod_pubsub/mod_pubsub.erl: Updated to use gen_server - behaviour and ejabberd supervision tree - * src/mod_echo.erl: Likewise - -2006-02-01 Alexey Shchepin - - * src/mod_muc/mod_muc.erl: Added a supervisor for conference room - processes - * src/mod_muc/mod_muc_room.erl: Likewise - -2006-01-29 Alexey Shchepin - - * src/odbc/pg.sql: Fixed syntax error - -2006-01-28 Alexey Shchepin - - * src/ejabberd_router.erl: Updated to use gen_server behaviour - * src/ejabberd_sm.erl: Likewise - * src/ejabberd_s2s.erl: Likewise - * src/gen_iq_handler.erl: Likewise - - * src/ejabberd_sup.erl: Added supervisor for ejabberd_receiver - * src/ejabberd_receiver.erl: Updated - -2006-01-27 Alexey Shchepin - - * src/ejabberd_update.erl: Support for run-time ejabberd updating - (not completed) - * src/ejabberd_c2s.erl: Added 'update_info' module attribute for - testing ejabberd_update - -2006-01-25 Alexey Shchepin - - * src/ejabberd_c2s.erl: Remove top-level xmlns from incoming - stanzas - * src/ejabberd_s2s_in.erl: Likewise - * src/ejabberd_service.erl: Likewise - - * src/ejabberd_c2s.erl: Better error handling for stream - compression support (thanks to Sergei Golovan) - -2006-01-24 Alexey Shchepin - - * src/mod_roster_odbc.erl: Bugfix - -2006-01-23 Alexey Shchepin - - * src/ejabberd_sm.erl: Partially rewritten to work more - efficiently and avoid race conditions - * src/ejabberd_c2s.erl: Likewise - -2006-01-21 Alexey Shchepin - - * src/mod_irc/mod_irc_connection.erl: Cleanup - -2006-01-20 Mickael Remond - - * src/ejabberd_receiver.erl: Added new debugging trace: It is now - possible to dump the XML stream received from a client (usefull for - client debugging). - -2006-01-19 Alexey Shchepin - - * src/aclocal.m4: Updated for zlib support - * src/configure.ac: Likewise - - * src/mod_muc/mod_muc_room.erl: Weakened presence filtering, added - warning in non-anonymous rooms, room destroying updated to latest - JEP-0045, added a number of occupants and room name in room's - disco#info reply, miscellaneous internal changes (thanks to Sergei - Golovan) - - * src/mod_muc/mod_muc.erl: Better support for nick unregistration - (thanks to Sergei Golovan) - - * src/ejabberd_zlib/ejabberd_zlib.erl: Zlib support (thanks to - Sergei Golovan) - * src/ejabberd_zlib/ejabberd_zlib_drv.c: Likewise - * src/ejabberd_zlib/Makefile.in: Likewise - * src/ejabberd_c2s.erl: Stream compression support (JEP-0138) - * src/ejabberd_receiver.erl: Likewise - - * src/mod_disco.erl: Don't split node name before calling hooks - (thanks to Sergei Golovan) - - * src/mod_configure.erl: Support for configuration using ad-hoc - commands (thanks to Sergei Golovan) - - * src/mod_announce.erl: Support for sending announce messages - using ad-hoc commands (thanks to Sergei Golovan) - - * src/mod_adhoc.erl: Ad-hoc support (JEP-0050) (thanks to Magnus - Henoch) - * src/adhoc.erl: Likewise - * src/adhoc.hrl: Likewise - - * src/jlib.hrl: Updated (thanks to Sergei Golovan) - - * src/gen_mod.erl: Added function is_loaded/2 (thanks to Sergei - Golovan) - - * src/ejabberd_service.erl: Changed error message on handshake - error (thanks to Sergei Golovan) - - * src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan) - -2006-01-13 Mickael Remond - - * src/odbc/ejabberd_odbc.erl: underscore and percent are now only - escaped in like queries. MySQL where not escaping those escaped - characters in other context. - * src/mod_vcard_odbc.erl: likewise. - * src/odbc/mysql.sql: Fixed MySQL database creation script: Was - not properly working with all MySQL version. - * src/odbc/ejabberd_odbc.erl: Added a way to retry database - connection connect for 5 minutes when the connection is lost. No - further connection is retry after. - * src/odbc/ejabberd_odbc_sup.erl: likewise. - -2006-01-13 Alexey Shchepin - - * src/ejabberd_service.erl: Bugfix - - * src/ejabberd_receiver.erl: Rewritten to use {active, once} mode - for socket - * src/ejabberd_c2s.erl: Update - * src/ejabberd_listener.erl: Likewise - * src/ejabberd_s2s_in.erl: Likewise - * src/ejabberd_s2s_out.erl: Likewise - * src/ejabberd_service.erl: Likewise - * src/shaper.erl: Likewise - * src/tls/tls.erl: Likewise - * src/web/ejabberd_http.erl: Likewise - -2006-01-02 Mickael Remond - - * src/odbc/ejabberd_odbc.erl: Native MySQL support - -2005-12-24 Alexey Shchepin - - * src/ejabberd_logger_h.erl: Speed optimizations - -2005-12-22 Alexey Shchepin - - * src/Makefile.in: Clean results of ASN.1 compiler (thanks to - Sergei Golovan) - - * src/win32/ejabberd.nsh: Removed (thanks to Sergei Golovan) - -2005-12-22 Mickael Remond - - * src/odbc/ejabberd_odbc.erl: Added error message on ODBC - connection to help ODBC configuration troubleshooting. - -2005-12-22 Alexey Shchepin - - * src/Makefile.win32: Updated (thanks to Sergei Golovan) - * src/configure.erl: Likewise - * src/win32/CheckReqs.ini: Likewise - * src/win32/CheckReqs1.ini: Likewise - * src/win32/CheckReqs1H.ini: Likewise - * src/win32/ejabberd.nsh: Likewise - * src/win32/ejabberd.nsi: Likewise - - * src/odbc/ejabberd_odbc.erl: Bugfix - -2005-12-21 Mickael Remond - - * src/odbc/mysql.sql: Database description for MySQL Database 4.1 - (Max version, with Innodb) - * src/ejabberd_auth_odbc.erl: MySQL ODBC support - * src/mod_offline_odbc.erl: Likewise - * src/mod_vcard_odbc.erl: Likewsie - * src/mod_roster_odbc.erl: Likewise - * src/odbc/ejabberd_odbc.erl: Likewise - * src/mod_last_odbc.erl: Likewise - -2005-12-16 Mickael Remond - - * doc/Makefile: Added helper to generate the docs (Thanks to Sander - Devrieze) - * doc/guide.tex: Added ejabberd 1.0.0 release notes. - * doc/dev.tex: Code clean-up (Thanks to Sander Devrieze) - -2005-12-16 Alexey Shchepin - - * doc/features.tex: Added feature sheet (Thanks to Sander - Devrieze) - -2005-12-14 Alexey Shchepin - - * src/mod_irc/iconv_erl.c: Bugfix (thanks to Tomas Janousek) - -2005-12-13 Alexey Shchepin - - * src/win32/ejabberd.nsi: Updated (thanks to Maxim Ryazanov) - - * src/ejabberd.hrl: Updated version - * src/ejabberd.app: Likewise - * doc/version.tex: Likewise - -2005-12-13 Mickael Remond - - * doc/release_notes_1.0.0.txt: Added preliminary version of ejabberd - 1.0.0 release notes. - * doc/guide.html: Generated the updated HTML version of the documentation. - -2005-12-11 Alexey Shchepin - - * src/mod_roster.erl: Workaround for gateway subscriptions now - should be enabled with --enable-roster-gateway-workaround - * src/mod_roster_odbc.erl: Likewise - * src/configure.ac: Likewise - * src/Makefile.in: Likewise - -2005-12-10 Alexey Shchepin - - * src/ejabberd_service.erl: Added logging of termination - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * src/msgs/*.msg: Updated (thanks to Badlop) - -2005-12-08 Mickael Remond - - * contribs/contrib/extract_translations/prepare-translation.sh: - Small improvements. - * src/msgs/fr.msg: Updated - -2005-12-07 Alexey Shchepin - - * src/msgs/pl.msg: Fixed syntax error - - * src/mod_offline.erl: Don't store headline messages - * src/mod_offline_odbc.erl: Likewise - -2005-12-06 Alexey Shchepin - - * doc/guide.tex: Updated - -2005-12-06 Mickael Remond - - * src/ejabberd.cfg.example: Updated - - * src/Makefile.*: Can now be build when the Erlang environment is - not Erlang/OTP but the Erlang REPOS CDROM. Still compatible with - standard Erlang/OTP install - * aclocal.m4: Likewise - * src/Makefile.*: Can now be build with Erlang debug_info with - 'make debug=true' - -2005-12-06 Alexey Shchepin - - * src/msgs/pt-br.msg: Updated (thanks to Victor Hugo dos Santos) - - * src/msgs/pl.msg: Updated (thanks to Andrzej Smyk) - - * src/msgs/sv.msg: Updated (thanks to Magnus Henoch) - - * src/msgs/de.msg: Updated (thanks to Patrick Dreker) - -2005-11-30 Mickael Remond - - * doc/yozhikheader.png: Added feature sheet header (Thanks to Sander - Devrieze) - -2005-11-28 Mickael Remond - - * doc/guide.tex: Improved and updated documentation (Thanks to Sander - Devrieze) - * doc/guide.html: Likewise - * doc/features.tex: Likewise - * doc/introduction.tex: Likewise - * doc/version.tex: Likewise - * doc/logo.png: New logo for ejabberd doc (Thanks to Sander Devrieze) - -2005-11-26 Alexey Shchepin - - * src/web/ejabberd_http.erl: Now web interface is compliant to - XHTML 1.0 Transitional (thanks to Sander Devrieze) - * src/web/ejabberd_web_admin.erl: Likewise - -2005-11-25 Alexey Shchepin - - * doc/Makefile: Now really added - -2005-11-22 Alexey Shchepin - - * src/mod_roster.erl: The "id" attribute of roster push packet was - missed (thanks to Maxim Ryazanov) - * src/mod_roster_odbc.erl: Likewise - - * src/web/ejabberd_web_admin.erl: Fixed encoding of user names in - URLs - - * src/web/ejabberd_http.erl: Added url_encode function from yaws - - * src/ejabberd_c2s.erl: Send stream error when connection is - replaced (thanks to Maxim Ryazanov) - -2005-11-19 Mickael Remond - - * contrib/extract_translations/prepare-translation.sh: Added - wrapper to extract_translation.erl (thanks to Badlop) - -2005-11-19 Alexey Shchepin - - * src/mod_vcard.erl: Fixed xmlns in disco items replies (thanks to - Maxim Ryazanov) - * src/mod_vcard_ldap.erl: Likewise - * src/mod_vcard_odbc.erl: Likewise - - * src/tls/Makefile.in: Use CPPFLAGS (thanks to Magnus Henoch) - -2005-11-17 Alexey Shchepin - - * src/ejabberd_s2s_in.erl: Support for dNSName certificate field - and DNS name matching - * src/XmppAddr.asn1: Moved here from src/tls/XmppAddr.asn1 - * src/tls/XmppAddr.asn1: Likewise - * src/Makefile.in: Updated - * src/tls/Makefile.in: Updated - -2005-11-16 Alexey Shchepin - - * src/odbc/ejabberd_odbc.erl: Support for mnesia-like transaction - interface - * src/mod_roster_odbc.erl: Updated to use - ejabberd_odbc:sql_transaction/2 - -2005-11-12 Alexey Shchepin - - * src/ejabberd_s2s_out.erl: Fixed invalid behaviour upon - connecting to host with invalid domain - * src/ejabberd_s2s.erl: Likewise - -2005-11-05 Alexey Shchepin - - * src/ejabberd_config.erl: Support for per host certificates - * src/ejabberd_c2s.erl: Likewise - * src/ejabberd_s2s_out.erl: Likewise - * src/ejabberd.cfg.example: Updated - - * src/ejabberd_s2s_in.erl: Fixed id-on-xmppAddr processing - -2005-11-03 Alexey Shchepin - - * src/mod_disco.erl: Fixed extra_domains option processing - - * src/ejabberd_s2s_out.erl: Support for STARTTLS+SASL EXTERNAL - (not well-tested yet) - * src/ejabberd_s2s_in.erl: Likewise - * src/tls/tls.erl: Likewise - * src/tls/tls_drv.c: Likewise - * src/tls/XmppAddr.asn1: Likewise - * src/tls/Makefile.in: Likewise - -2005-10-30 Alexey Shchepin - - * src/mod_disco.erl: Minor fix - -2005-10-29 Alexey Shchepin - - * src/mod_roster_odbc.erl: Bugfix - -2005-10-25 Alexey Shchepin - - * src/tls/tls.erl: Accept {error,already_loaded} from - erl_ddll:load_driver/2 - * src/stringprep/stringprep.erl: Likewise - * src/mod_irc/iconv.erl: Likewise - * src/ejabberd_app.erl: Likewise - - * src/tls/tls_drv.c: Support for "connect" method - * src/tls/tls.erl: Likewise - - * src/ejabberd_s2s_in.erl: Support for STARTTLS+Dialback - * src/ejabberd_s2s_out.erl: Likewise - * src/ejabberd_receiver.erl: Added a few hacks ({active,once} mode - should be used instead of recv/3 call to avoid them) - * src/ejabberd_config.erl: Added s2s_use_starttls and s2s_certfile - options - * src/ejabberd.cfg.example: Likewise - -2005-10-22 Alexey Shchepin - - * src/ejabberd_app.erl: Try to load tls_drv at startup to avoid - unloading of libssl (thanks to Brian Campbell) - -2005-10-20 Alexey Shchepin - - * src/odbc/pg.sql: Added spool.seq field for offline messages - sorting - * src/mod_offline_odbc.erl: Likewise - -2005-10-18 Alexey Shchepin - - * src/mod_roster_odbc.erl: Bugfix - -2005-10-16 Alexey Shchepin - - * src/gen_iq_handler.erl: Bugfix - -2005-10-15 Alexey Shchepin - - * src/ejabberd_auth_odbc.erl: Minor fix - - * src/odbc/ejabberd_odbc.erl: Updated pgsql support - - * src/mod_roster_odbc.erl: Bugfix - - * src/ejabberd_c2s.erl: Updated to work correctly with - mod_vcard_odbc - -2005-10-13 Alexey Shchepin - - * src/odbc/ejabberd_odbc.erl: Experimental support for pgsql - library - - * src/ejabberd_auth_odbc.erl: Bugfix - - * src/mod_roster_odbc.erl: Bugfix - -2005-10-07 Alexey Shchepin - - * src/ejd2odbc.erl: Added vCard converter - - * src/mod_vcard_odbc.erl: vCard support via ODBC - - * src/odbc/pg.sql: Updated - -2005-09-18 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Updated API for better - integration with J-EAI web interface - - * src/mod_shared_roster.erl: Now possible to specify all users on - virtual host in group - * src/web/ejabberd_web_admin.erl: Likewise - -2005-09-15 Alexey Shchepin - - * src/jlib.erl: Bugfix - -2005-09-10 Alexey Shchepin - - * src/ejd2odbc.erl: Updated - -2005-09-04 Alexey Shchepin - - * src/mod_disco.erl: Disco publishing support (thanks to Magnus - Henoch) - - * src/mod_disco.erl: Functions register_sm_feature and - register_sm_node replaced with hooks (thanks to Sergei Golovan) - * src/mod_vcard.erl: Updated - * src/mod_vcard_ldap.erl: Likewise - - * src/mod_disco.erl: Now mod_disco doesn't depend on mod_configure - (thanks to Sergei Golovan) - * src/mod_configure.erl: Likewise - -2005-08-29 Alexey Shchepin - - * src/ejd2odbc.erl: Converter from mnesia to ODBC - - * src/mod_offline_odbc.erl: Minor fix - -2005-08-25 Alexey Shchepin - - * src/mod_vcard_ldap.erl: Bugfix - - * src/mod_vcard.erl: Bugfix - -2005-08-23 Alexey Shchepin - - * src/ejabberd_auth_odbc.erl: Bugfix - -2005-08-21 Alexey Shchepin - - * doc/dev.tex: Updated - -2005-08-11 Alexey Shchepin - - * src/cyrsasl_digest.erl: Fixed challenge/response parsing (thanks - to Martin Pokorny) - -2005-08-07 Alexey Shchepin - - * src/msgs/pl.msg: Updated (thanks to Andrew Smyk) - - * src/web/ejabberd_web_admin.erl: Bugfix (thanks to Badlop) - -2005-08-05 Alexey Shchepin - - * src/win32/inetrc: Added (thanks to Sergei Golovan) - - * src/Makefile.win32: Updated (thanks to Sergei Golovan) - * src/win32/ejabberd.cfg: Likewise - * src/win32/ejabberd.nsi: Likewise - - * doc/guide.tex: Updated - - * src/ejabberd.hrl: Updated version - -2005-08-01 Alexey Shchepin - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * src/msgs/es.msg: Updated (thanks to Badlop) - - * src/msgs/nl.msg: Updated (thanks to Sander Devrieze) - -2005-08-01 Mickael Remond - - * (all): ejabberd-0.9.8 released - - * src/msgs/fr.msg: Updated - -2005-07-31 Alexey Shchepin - - * src/ejabberd_config.erl: Added host_config option - * doc/guide.tex: Updated - - * src/ejabberd_auth_ldap.erl: Bugfix - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * src/msgs/de.msg: Updated (thanks to Torsten Werner) - - * src/web/ejabberd_web_admin.erl: Fixed CSS style sheet to be - standards compliant (thanks to Sander Devrieze) - -2005-07-29 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Added "Virtual Hosts" page - -2005-07-27 Alexey Shchepin - - * src/ejabberd_router.erl: Added filter_packet hook - -2005-07-26 Alexey Shchepin - - * src/jd2ejd.erl: Updated to work with ODBC - - * src/mod_roster_odbc.erl: Updated - -2005-07-22 Alexey Shchepin - - * src/mod_offline_odbc.erl: Bugfix - - * src/mod_last_odbc.erl: Bugfix - -2005-07-20 Alexey Shchepin - - * src/mod_pubsub/mod_pubsub.erl: Updated to J-EAI version - -2005-07-15 Alexey Shchepin - - * src/acl.erl: Slightly changed "access" option processing - - * src/mod_disco.erl: Fixed processing of host features and - extra_domains option - - * src/ejabberd_c2s.erl: Processing of jabber:iq:register totally - moved to mod_register.erl (thanks to Sergei Golovan) - * src/mod_register.erl: Likewise - - * src/win32/ejabberd.nsi: Added two pictures in installer (thanks - to Maxim Ryazanov) - * src/win32/ejabberd_header.bmp: Likewise - * src/win32/ejabberd_intro.bmp: Likewise - - * src/web/ejabberd_web_admin.erl: Fixed spelling of word - "authentication" - * src/ejabberd_c2s.erl: Likewise - -2005-07-13 Alexey Shchepin - - * src/mod_register.erl: Bugfix - - * src/mod_vcard.erl: Bugfix - - * src/ejabberd_app.erl: Updated to allow different authentication - methods for different virtual hosts - * src/ejabberd_auth.erl: Likewise - * src/ejabberd_auth_external.erl: Likewise - * src/ejabberd_auth_internal.erl: Likewise - * src/ejabberd_auth_ldap.erl: Likewise - * src/ejabberd_auth_odbc.erl: Likewise - * src/cyrsasl.erl: Likewise - * src/cyrsasl_digest.erl: Likewise - * src/cyrsasl_plain.erl: Likewise - * src/ejabberd_c2s.erl: Likewise - * src/ejabberd_config.erl: Likewise - * src/extauth.erl: Likewise - * src/mod_last_odbc.erl: Likewise - * src/mod_offline_odbc.erl: Likewise - * src/mod_roster_odbc.erl: Likewise - * src/odbc/ejabberd_odbc.erl: Likewise - * src/odbc/ejabberd_odbc_sup.erl: Likewise - -2005-07-03 Alexey Shchepin - - * src/ejabberd_app.erl: Bugfix - - * src/ejabberd_config.erl: Bugfix - -2005-06-30 Alexey Shchepin - - * src/mod_offline.erl: Bugfix - -2005-06-20 Alexey Shchepin - - * (all): Enhanced virtual hosting support - -2005-05-28 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Bugfix - -2005-05-25 Alexey Shchepin - - * src/msgs/pt-br.msg: New Brazilian Portuguese translation (thanks - to Felipe Brito Vasconcellos) - -2005-05-23 Alexey Shchepin - - * (all): ejabberd-0.9.1 released - - * src/msgs/fr.msg: Updated (thanks to Mickael Remond) - - * src/odbc/Makefile.in: Added - - * src/configure.ac: Updated for odbc support - * src/Makefile.in: Likewise - - * src/aclocal.m4: Bugfix - - * src/mod_last_odbc.erl: Added store_last_info/4 function (thanks - to Sergei Golovan) - * src/mod_last.erl: Likewise - - * src/jd2ejd.erl: Support for exporting iq:last information, - better error handling (thanks to Sergei Golovan) - - * src/ejabberd_ctl.erl: Added "import-file" and "import-dir" - commands (thanks to Sergei Golovan) - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - * doc/dev.tex: Likewise - * doc/disco.png: Likewise - * doc/discorus.png: Likewise - * doc/webadmin.png: Likewise - * doc/webadminru.png: Likewise - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * src/web/ejabberd_web_admin.erl: Updated CSS, added modules - management, fixed bug with configuring of listened ports on - different nodes (thanks to Sergei Golovan) - - * src/gen_mod.erl: Added function loaded_modules_with_opts/0, new - API for module stopping (thanks to Sergei Golovan) - * src/mod_muc/mod_muc.erl: Moved a process name to a macros, - updated module stopping (thanks to Sergei Golovan) - * src/mod_irc/mod_irc.erl: Likewise - * src/mod_pubsub/mod_pubsub.erl: Likewise - * src/mod_announce.erl: Updated module stopping (thanks to Sergei - Golovan) - * src/mod_echo.erl: Likewise - * src/mod_offline.erl: Likewise - - * src/web/ejabberd_http.erl: "Connection:" header value now - matched case-insensitive, and returned to client, replaced - duplicate is_space($\r) with is_space($\t) (thanks to Maxim - Ryazanov) - -2005-05-21 Alexey Shchepin - - * src/mod_pubsub/mod_pubsub.erl: Fixed XML element name for - pubsub#event namespace (thanks to Magnus Henoch) - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * src/msgs/es.msg: Updated (thanks to Badlop) - -2005-05-19 Alexey Shchepin - - * src/mod_pubsub/mod_pubsub.erl: Now possible to subscribe to a - pubsub node with a JID that includes a resource (thanks to Martijn - van Beers) - - * src/stringprep/uni_parse2.tcl: Bugfix - * src/stringprep/stringprep_drv.c: Likewise - * src/stringprep/uni_norm.c: Regenerated - -2005-05-18 Alexey Shchepin - - * src/mod_irc/mod_irc_connection.erl: Added support for WHOIS - requests and reply to USERINFO (thanks to Oleg V. Motienko) - -2005-05-17 Alexey Shchepin - - * src/stringprep/stringprep_drv.c: Bugfix - -2005-05-16 Alexey Shchepin - - * src/win32/ejabberd.cfg: Updated (thanks to Sergei Golovan) - - * src/odbc/Makefile.win32: Added (thanks to Sergei Golovan) - - * src/Makefile.win32: Updated (thanks to Sergei Golovan) - -2005-05-15 Alexey Shchepin - - * src/jd2ejd.erl: Fixed private xml setting - - * src/mod_last.erl: Bugfix - * src/mod_last_odbc.erl: Likewise - - * src/mod_pubsub/mod_pubsub.erl: Fixed service stopping - -2005-05-09 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Fixed bug with storing - affiliations of invited users in members-only room (thanks to - Sergei Golovan) - - * src/ejabberd_c2s.erl: Fixed starttls_required behaviour for - legacy connections (thanks to Brian Campbell) - - * src/web/ejabberd_web_admin.erl: Images now specified via CSS, - design slightly updated, added last activity statistics (thanks to - Sergei Golovan) - -2005-05-07 Alexey Shchepin - - * src/stringprep/stringprep_drv.c: Added check for bidi - - * src/stringprep/uni_parse.tcl: Now handle all Unicode code points - up to U+10FFFF - * src/stringprep/uni_parse2.tcl: Likewise - * src/stringprep/uni_data.c: Regenerated - * src/stringprep/uni_norm.c: Likewise - -2005-05-06 Alexey Shchepin - - * src/stringprep/uni_norm.c: Regenerated with Unicode 3.2 tables - as required by RFC3454 - - * src/stringprep/uni_parse2.tcl: Bugfixes - - * src/stringprep/stringprep_drv.c: Bugfixes, added hangul - composition - -2005-05-05 Mickael Remond - - * src/msgs/fr.msg: Added missing version 0.9 fields and removed unused - ones. - -2005-05-04 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Store ban reasons for outcast - items, updated affiliation matching rules to latest JEP-0045 - -2005-05-02 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Updated changing roles and - affiliations tables to latest JEP-0045 - -2005-05-01 Mickael Remond - - * src/msgs/fr.msg: Updated - -2005-05-01 Alexey Shchepin - - * src/msgs/sw.msg: Renamed to sv.msg - * src/msgs/sv.msg: Likewise - - * src/msgs/pl.msg: Updated (thanks to Andrew Smyk) - - * contrib/extract_translations/README: Better phrasing (thanks to - Sergei Golovan) - - * contrib/extract_translations/extract_translations.erl: Fix to - avoid duplication of lines (thanks to Sergei Golovan) - - * src/msgs/sw.msg: New Swedish translation (thanks to Magnus - Henoch) - - * src/msgs/pt.msg: New Portuguese translation (thanks to iceburn) - - * src/msgs/es.msg: Updated (thanks to Badlop) - - * src/msgs/nl.msg: Updated (thanks to Sander Devrieze) - -2005-04-27 Alexey Shchepin - - * src/ejabberd_auth_ldap.erl: Added listing of users support - - * src/ejabberd.cfg.example: Updated LDAP options - - * src/ejabberd_ctl.erl: Better spelling, now prints full file - paths, fixed checking of mnesia:install_fallback result, now - "dump" command dumps only persistent tables - - * contrib/extract_translations/: A tool for extracting of - translation strings from ejabberd code (thanks to Sergei Golovan) - -2005-04-26 Alexey Shchepin - - * src/mod_vcard_ldap.erl: Bugfix (thanks to Mickael Remond) - -2005-04-24 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Added translation to submit - button and "shared roster groups" header (thanks to iceburn and - Sergei Golovan) - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - * src/msgs/uk.msg: Likewise - - * src/mod_muc/mod_muc_room.erl: Minor update to simplify - translation (thanks to Sergei Golovan) - - * src/tls/tls_drv.c: Reverted previous patch - -2005-04-22 Alexey Shchepin - - * doc/guide.tex: Added mod_shared_roster documentation - - * src/ejabberd.hrl: Updated version - -2005-04-21 Alexey Shchepin - - * src/jd2ejd.erl: Bugfix - -2005-04-20 Alexey Shchepin - - * src/ejabberd_auth.erl: Added check for domain of registered user - - * src/web/ejabberd_web_admin.erl: Fixed user registration via web - interface, fixed path to user's offline messages (thanks to - Mickael Remond) - - * src/mod_disco.erl: Fixed domain listing when one virtual host is - a subdomain of another - -2005-04-18 Alexey Shchepin - - * (all): ejabberd-0.9 released - - * src/web/ejabberd_web_admin.erl: Added link to shared roster page - - * src/odbc/ejabberd_odbc.erl: ODBC connection string can be - specified via odbc_server option now - * src/ejabberd.cfg.example: Added ODBC usage example - - * doc/guide.tex: Updated - - * src/msgs/pl.msg: New Polish translation (thanks to Andrew Smyk) - -2005-04-17 Alexey Shchepin - - * (all): Merged virtual hosting support - -2005-04-09 Alexey Shchepin - - * src/ejabberd_c2s.erl: Send new id for each new stream inside one - session (thanks to Maxim Ryazanov) - - * src/tls/tls_drv.c: Now reads all certificates from certificate - file instead of reading only first one (thanks to Karl-Johan - Karlsson) - -2005-04-06 Alexey Shchepin - - * examples/transport-configs/init-scripts/jabber-gg-transport: - Fixed typo (thanks to Sander Devrieze) - -2005-04-05 Alexey Shchepin - - * examples/transport-configs/configs/msn-transport.xml: Fixed typo - (thanks to Sander Devrieze) - -2005-04-02 Alexey Shchepin - - * examples/transport-configs/: Updated (thanks to Sander Devrieze) - -2005-03-31 Alexey Shchepin - - * src/ejabberd_ctl.erl: Bugfix - -2005-03-17 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Bugfix - -2005-03-15 Alexey Shchepin - - * src/ejabberd_sm.erl: Bugfix - -2005-03-12 Alexey Shchepin - - * src/ejabberd_router.erl: Bugfix - -2005-01-14 Alexey Shchepin - - * src/mod_irc/mod_irc_connection.erl: Added filtering of quit - status - -2005-01-04 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Copyright update - * src/mod_vcard_ldap.erl: Likewise - * src/mod_vcard.erl: Likewise - * src/mod_pubsub/mod_pubsub.erl: Likewise - * src/mod_muc/mod_muc.erl: Likewise - * src/mod_irc/mod_irc.erl: Likewise - -2004-12-30 Alexey Shchepin - - * src/odbc/ejabberd_odbc.erl: Load-balance ODBC requests between - several connections - - * src/odbc/ejabberd_odbc_sup.erl: Supervisor for ODBC connections - - * src/mod_muc/mod_muc_room.erl: Added missed type='form' attribute - in room configuration response (thanks to Badlop) - -2004-12-19 Alexey Shchepin - - * src/mod_roster_odbc.erl: Roster support via ODBC (not completed) - - * src/ejabberd_auth_internal.erl: Added remove_user hook - * src/ejabberd_auth_odbc.erl: Likewise - * src/mod_roster.erl: Use remove_user hook - * src/mod_offline.erl: Likewise - * src/mod_offline_odbc.erl: Likewise - * src/mod_last.erl: Likewise - * src/mod_last_odbc.erl: Likewise - * src/mod_vcard.erl: Likewise - * src/mod_private.erl: Likewise - - * src/mod_roster.erl: Added hooks for functions exported by - mod_roster - * src/ejabberd_c2s.erl: Likewise - * src/ejabberd_sm.erl: Likewise - * src/mod_privacy.erl: Likewise - * src/mod_last.erl: Likewise - * src/mod_last_odbc.erl: Likewise - -2004-12-14 Alexey Shchepin - - * src/ejabberd_sm.erl: Updated missed message passing from - previous patch - -2004-12-13 Alexey Shchepin - - * src/odbc/pg.sql: DB creation script for postgres - - * src/odbc/ejabberd_odbc.erl: Experimental support for ODBC - * src/mod_last_odbc.erl: Likewise - * src/mod_offline_odbc.erl: Likewise - * src/ejabberd_auth_odbc.erl: Likewise - * src/ejabberd_auth.erl: Likewise - -2004-12-12 Alexey Shchepin - - * src/mod_stats.erl: Minor optimizations - - * src/ejabberd_sm.erl: Added unset_presence_hook - * src/mod_last.erl: Use unset_presence_hook instead of direct call - - * src/ejabberd_auth.erl: Splitted into ejabberd_auth_internal.erl, - ejabberd_auth_ldap.erl, and ejabberd_auth_external.erl, - * src/ejabberd_auth_internal.erl: Likewise - * src/ejabberd_auth_ldap.erl: Likewise - * src/ejabberd_auth_external.erl: Likewise - -2004-12-05 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Changed type of password field - to "password" - - * src/jlib.hrl: More stream error defines (thanks to Sergei - Golovan) - - * src/ejabberd_c2s.erl: Support for starttls_required option - (thanks to Sergei Golovan) - - * src/mod_muc/mod_muc_room.erl: Fixed mistake in case condition - (thanks to Sergei Golovan) - - * src/xml_stream.erl: Added function parse_element/1 - - * src/expat_erl.c: Added PARSE_FINAL_COMMAND - -2004-12-03 Alexey Shchepin - - * src/ejabberd_listener.erl: Enable keepalive option - - * src/xml_stream.erl: Added API for managing xml streams without - creating process - * src/ejabberd_receiver.erl: Use this API, now 2 processes are - created per C2S connection - -2004-12-01 Alexey Shchepin - - * src/expat_erl.c: Now uses port control instead of port output - * src/xml_stream.erl: Likewise - -2004-11-30 Alexey Shchepin - - * src/stringprep/stringprep.erl: Now register port instead of - storing it in ets table - -2004-11-28 Alexey Shchepin - - * doc/guide.tex: Updated URLs to R10C release - -2004-11-20 Alexey Shchepin - - * src/mod_vcard.erl: Added missed index - -2004-11-08 Alexey Shchepin - - * doc/guide.tex: Updated (thanks to Sander Devrieze) - -2004-11-05 Alexey Shchepin - - * src/aclocal.m4: Fixed headers detecting in AM_WITH_OPENSSL - (thanks to Leif Johansson) - - * src/ejabberd_auth.erl: Added support for ldap_rootdn and - ldap_password options (thanks to Stefan de Konink) - * src/mod_vcard_ldap.erl: Likewise - - * src/ejabberd_router.erl: Now possible to route packet via - function call instead of message sending - * src/ejabberd_sm.erl: Added function route/3, use it in route - table - * src/ejabberd_local.erl: Likewise - * src/ejabberd_s2s.erl: Likewise - -2004-10-23 Alexey Shchepin - - * (all): Fixed spelling of word "authentication" - - * src/*/Makefile.in: Replaced erlc with @ERLC@ - -2004-10-15 Alexey Shchepin - - * src/ejabberd_s2s.erl: Added remove_connection/1 - * src/ejabberd_s2s_out.erl: Use ejabberd_s2s:remove_connection/1 - - * src/ejabberd_s2s_in.erl: Minor cleanup - - * examples/transport-configs/: Transport config examples (thanks - to Sander Devrieze) - - * src/msgs/de.msg: German translation (thanks to Marina Hahn) - -2004-10-12 Alexey Shchepin - - * src/win32/: Updated (thanks to Sergei Golovan) - - * src/msgs/es.msg: Updated (thanks to Badlop) - - * src/mod_irc/iconv_erl.c: Bugfix (thanks to Jacek Konieczny) - -2004-10-10 Alexey Shchepin - - * (all): ejabberd-0.7.5 released - - * src/tls/Makefile.win32: Added (thanks to Sergei Golovan) - - * src/win32/: Updated (thanks to Sergei Golovan) - -2004-10-09 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Fixed user listing - - * src/msgs/uk.msg: Updated (thanks to Sergei Golovan) - - * src/msgs/nl.msg: Updated (thanks to Sander Devrieze) - - * src/msgs/ua.msg: Renamed to uk.msg - - * COPYING: Added permission to link with OpenSSL - -2004-10-08 Alexey Shchepin - - * src/msgs/ua.msg: Updated (thanks to Sergei Golovan) - - * src/mod_muc/mod_muc_room.erl: Fixed room destroying - - * src/ejabberd.cfg.example: Updated - - * src/ejabberd_sm.erl: Fixed message routing when all resources - have negative priority - - * src/msgs/*.msg: Updated (thanks to Sergei Golovan) - - * src/web/ejabberd_web_admin.erl: Table titles now bold (thanks to - Sergei Golovan) - -2004-10-06 Alexey Shchepin - - * doc/guide.tex: Updated - - * src/ejabberd_s2s_out.erl: Fixed socket closing condition - -2004-10-05 Alexey Shchepin - - * src/web/ejabberd_http_poll.erl: Properly handle bad requests - - * src/web/ejabberd_web_admin.erl: Ported features from J-EAI - -2004-09-30 Alexey Shchepin - - * src/web/ejabberd_http.erl: Fixed processing of POST body for - HTTP Polling - - * src/web/ejabberd_http.erl: Support for "Connection" HTTP header - (thanks to Sergei Golovan) - - * src/translate.erl: Much better handling of xml:lang (thanks to - Sergei Golovan) - -2004-09-29 Alexey Shchepin - - * src/ejabberd_listener.erl: Check result of controlling_process - - * src/web/ejabberd_http.erl: Bugfix - -2004-09-27 Alexey Shchepin - - * src/Makefile.in: Updated (thanks to Badlop) - -2004-09-26 Alexey Shchepin - - * src/aclocal.m4: Better expat and openssl detection (thanks to - Anton Vanin) - - * src/**/Makefile.in: Updated (thanks to Anton Vanin) - * src/configure.ac: Likewise - -2004-09-25 Alexey Shchepin - - * src/jlib.hrl: Added namespace for iq-register stream feature - * src/ejabberd_c2s.erl: Send iq-register feature - - * src/ejabberd_config.erl: Config file can be configured via - environment variable (thanks to Mickael Remond) - - * src/web/ejabberd_http.erl: Added SSL support (thanks to Sergei - Golovan) - - * src/msgs/*.msg: Updated (thanks to Sergei Golovan) - - * src/jlib.hrl: Updated error codes (thanks to Sergei Golovan) - * src/ejabberd_c2s.erl: Likewise - -2004-09-17 Alexey Shchepin - - * src/mod_muc/mod_muc_room.erl: Send password in room invitation - (thanks to Sergei Golovan) - - * src/mod_disco.erl: Added registration of sm features and nodes - (thanks to Sergei Golovan) - * src/mod_vcard.erl: Register vcard-temp feature (thanks to Sergei - Golovan) - - * src/jlib.erl: Added functions now_to_utc_string/1, - now_to_local_string/1, and datetime_string_to_timestamp/1 (thanks - to Sergei Golovan) - * src/mod_muc/mod_muc_room.erl: Use time parsing functions from - jlib (thanks to Sergei Golovan) - -2004-09-16 Alexey Shchepin - - * ejabberd/src/mod_pubsub/mod_pubsub.erl: Bugfix (thanks to - Mickael Remond) - -2004-09-15 Alexey Shchepin - - * src/mod_pubsub/mod_pubsub.erl: Bugfix - -2004-09-10 Alexey Shchepin - - * tools/ejabberdctl: Added call to "exec" (thanks to Sergei - Golovan) - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/mod_vcard.erl: Support for searching of prefix substring and - limiting of result items (thanks to Sergei Golovan) - - * src/mod_offline.erl: Support for message expiration (JEP-0023) - (thanks to Sergei Golovan) - * src/jlib.hrl: Added NS_EXPIRE macros (thanks to Sergei Golovan) - - * src/ejabberd_logger_h.erl: Added reopen_log/0 (thanks to Sergei - Golovan) - - * src/ejabberd_ctl.erl: Added return codes, updated "reopen-log" - command, added "delete-expired-messages" and "status" commands - (thanks to Sergei Golovan) - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - -2004-09-04 Alexey Shchepin - - * src/mod_roster.erl: Removed useless transactions - -2004-08-28 Alexey Shchepin - - * doc/guide.tex: Fix (thanks to Sander Devrieze) - -2004-08-27 Alexey Shchepin - - * src/xml_stream.erl: Few optimizations - -2004-08-24 Alexey Shchepin - - * src/mod_service_log.erl: Support for logging of user packets via - external service (e.g. bandersnatch) - * doc/guide.tex: Updated - -2004-08-23 Alexey Shchepin - - * src/mod_offline.erl: Added entire table locking on large message - queue - - * src/ejabberd_sm.erl: Added offline_subscription_hook - * src/mod_offline.erl: Use offline_subscription_hook - - * src/configure.erl: Updated (thanks to Sergei Golovan) - * src/Makefile.win32: Likewise - * src/tls/Makefile.win32: Likewise - * src/win32/: Likewise - - * src/mod_announce.erl: Added announce to all users (thanks to - Sergei Golovan) - * doc/guide.tex: Updated (thanks to Sergei Golovan) - -2004-08-14 Alexey Shchepin - - * src/msgs/nl.msg: Updated (thanks to Sander Devrieze) - - * src/web/ejabberd_http_poll.erl: Fixed sending of Set-Cookie - header - -2004-08-12 Alexey Shchepin - - * src/ejabberd_c2s.erl: Bugfix in resend_offline_messages/1 - - * src/mod_announce.erl: New module to manage announce messages - (thanks to Sergei Golovan) - - * src/ejabberd_local.erl: Moved processing of announce messages to - mod_announce (thanks to Sergei Golovan) - - * src/ejabberd_c2s.erl: Added several hooks - - * src/ejabberd_hooks.erl: Fixed run_fold (thanks to Sergei - Golovan) - - * src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan) - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - -2004-08-08 Alexey Shchepin - - * src/ejabberd_c2s.erl: Use resend_offline_messages_hook to fetch - offline messages - * src/mod_offline.erl: Likewise - - * src/mod_offline.erl: Added table locking in - remove_old_messages/1 - - * src/ejabberd_sm.erl: Use offline_message_hook to store offline - messages - * src/mod_offline.erl: Likewise - - * src/ejabberd_hooks.erl: Hooks support - * src/ejabberd_sup.erl: Added ejabberd_hooks - - * doc/guide.tex: Updated - - * src/ejabberd.cfg.example: Updated - - * src/ejabberd_c2s.erl: Changed TLS options (thanks to Sergei - Golovan) - -2004-08-05 Alexey Shchepin - - * src/aclocal.m4: Updated to check for openssl library (thanks to - AV) - * src/configure.ac: Likewise - * src/configure: Likewise - * src/Makefile.in: Likewise - * src/tls/Makefile.in: Likewise - -2004-08-03 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Added user's roster page - - * src/mod_irc/mod_irc_connection.erl: Bugfix - -2004-08-01 Alexey Shchepin - - * src/tls/tls.erl: Added recv_data/2 function - - * src/jlib.erl: Added NS_TLS macro - - * src/ejabberd_receiver.erl: Support for STARTTLS - * src/ejabberd_c2s.erl: Likewise - -2004-07-30 Alexey Shchepin - - * examples/extauth/check_pass_null.pl: A reference "null" - implementation of external authentication script (thanks to Leif - Johansson) - - * src/extauth.erl: Support for external authentication - (thanks to Leif Johansson) - * src/ejabberd_auth.erl: Likewise - - * src/mod_vcard_ldap.erl: A drop-in replacement for mod_vcard.erl - which uses ldap for JUD and vCard (thanks to Leif Johansson) - -2004-07-28 Alexey Shchepin - - * src/tls/tls_drv.c: Added freeing of SSL stuff - - * src/xml_stream.erl: Added start/2 function - * src/ejabberd_receiver.erl: Now using xml_stream:start/2 - -2004-07-27 Alexey Shchepin - - * src/ejabberd_c2s.erl: Support for TLS library (not completed) - - * src/tls/tls_drv.c: Updated to return binaries instead of lists - * src/tls/tls.erl: Likewise - -2004-07-26 Alexey Shchepin - - * src/tls/tls.erl: Updated - -2004-07-25 Alexey Shchepin - - * src/tls/: Library for TLS support (not completed) - - * src/ejabberd_auth.erl: Now uses two LDAP connections - - * src/ejabberd_c2s.erl: Return resource on get_presence request - (thanks to Mickael Remond) - - * src/mod_configure2.erl: Bugfix (thanks to Sergei Golovan) - - * src/msgs/ua.msg: New Ukrainian translation (thanks to usercard) - - * src/msgs/nl.msg: Updated (thanks to Sander Devrieze) - -2004-07-23 Alexey Shchepin - - * src/eldap/eldap.erl: Bugfix - -2004-07-13 Alexey Shchepin - - * (all): ejabberd-0.7 released - - * src/web/ejabberd_web_admin.erl: Better i18n support (thanks to - Sergei Golovan) - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/msgs/fr.msg: Added missed entries (thanks to Sergei Golovan) - * src/msgs/nl.msg: Likewise - - * src/msgs/es.msg: New spanish translation (thanks to Badlop) - -2004-07-11 Alexey Shchepin - - * src/mod_last.erl: Supprot for storing status from latest - unavailable presence (thanks to Sergei Golovan) - * src/ejabberd_sm.erl: Likewise - * src/ejabberd_c2s.erl: Likewise - - * src/mod_vcard.erl: Minor update (thanks to Sergei Golovan) - - * src/mod_register.erl: Added "access" option (thanks to Sergei - Golovan) - * src/mod_irc/mod_irc.erl: Likewise - * src/ejabberd.cfg.example: Updated - * src/win32/ejabberd.cfg: Likewise - - * src/mod_privacy.erl: Fixed module stopping (thanks to Sergei - Golovan) - * src/mod_private.erl: Likewise - - * src/gen_mod.erl: Added function get_module_opt/3 (thanks to - Sergei Golovan) - - * src/ejabberd_local.erl: Minor fix (thanks to Sergei Golovan) - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - -2004-07-10 Alexey Shchepin - - * src/mod_roster.erl: Removed superfluous include_lib line - - * doc/guide.tex: Updated - - * src/msgs/fr.msg: Updated (thanks to Sergei Golovan) - - * src/mod_irc/mod_irc.erl: Added handler for disco items requests - (thanks to Sergei Golovan) - - * src/mod_vcard.erl: Added option for JUD disabling (thanks to - Sergei Golovan) - - * src/mod_configure2.erl: Fixed module stopping (thanks to Sergei - Golovan) - * src/mod_last.erl: Likewise - * src/mod_privacy.erl: Likewise - * src/mod_register.erl: Likewise - * src/mod_roster.erl: Likewise - * src/mod_vcard.erl: Likewise - - * src/jd2ejd.erl: Added emergency catches (thanks to Sergei - Golovan) - * src/mod_last.erl: Likewise - - * src/ejabberd_sm.erl: Removed needless call to - mod_disco:unregister_feature (thanks to Sergei Golovan) - - * src/ejabberd_local.erl: Better support for mod_disco (thanks to - Sergei Golovan) - * src/mod_disco.erl: Likewise - - * src/translate.erl: Suport for "default language" option (thanks - to Sergei Golovan) - * src/ejabberd_config.erl: Likewise - * src/ejabberd_c2s.erl: Likewise - * src/ejabberd.hrl: Added 'MYLANG' macros - - * src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan) - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - -2004-07-09 Alexey Shchepin - - * src/win32/ejabberd.cfg: Updated (thanks to Sergei Golovan) - -2004-07-07 Alexey Shchepin - - * src/Makefile.win32: Updated (thanks to Sergei Golovan) - - * src/Makefile.in: Added installation of ejabberd.cfg (thanks to - Sergei Golovan) - - * src/web/ejabberd_http.erl: Fixed support for HTTP/1.0 clients - -2004-07-06 Alexey Shchepin - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - - * src/ejabberd_auth.erl: Minor fix - - * src/ejabberd_c2s.erl: Fixed sending of presence to own resources - -2004-06-18 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Added configuration of listened - ports - * src/ejabberd_listener.erl: Added API for configuration of port - listeners - - * src/web/ejabberd_web_admin.erl: Fixed "Stop" button on node - management page - -2004-05-22 Alexey Shchepin - - * src/msgs/nl.msg: Dutch translation (thanks to Sander Devrieze) - - * src/web/ejabberd_http.erl: Added options for enabling HTTP - polling and admin interface - * src/web/ejabberd_web.erl: Likewise - * src/ejabberd.cfg.example: Updated - - * src/web/ejabberd_web_admin.erl: Updated - - * doc/guide.tex: Updated - -2004-05-17 Alexey Shchepin - - * src/mod_muc/mod_muc.erl: Added access rules for using serveice - and creating rooms (thanks to Sergei Golovan) - - * src/win32/ejabberd.nsi: Updated (thanks to Sergei Golovan) - * src/win32/CheckUserH.ini: Likewise - - * src/translate.erl: Search translations in priv_dir instead of - lib_dir (thanks to Sergei Golovan) - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/ejabberd.cfg.example: Updated (thanks to Sergei Golovan) - - * src/**/Makefile.in: Updated (thanks to Sergei Golovan) - * src/**/Makefile.win32: Likewise - -2004-05-16 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Updated - -2004-05-14 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Updated - -2004-05-09 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Updated - - * src/ejabberd_listener.erl: Added API for adding/removing - listeners - -2004-05-08 Alexey Shchepin - - * doc/guide.tex: Updated - - * src/ejabberd_listener.erl: Now possible to specify interface on - which one socket will be listened, also added another way to - specify SSL options - * src/ejabberd.cfg.example: Updated - -2004-05-07 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Updated (thanks to Andrey - Zamaraev) - -2004-05-05 Alexey Shchepin - - * src/ejabberd_ctl.erl: Added command for listing all registered - users - - * src/ejabberd_ctl.erl: Bugfix, support for text-load and restore - (thanks to Leif Johansson) - -2004-05-04 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Updated - -2004-05-01 Alexey Shchepin - - * src/web/ejabberd_http.erl: 'Accept-Language' header support - * src/web/ejabberd_web_admin.erl: Likewise - * src/msgs/ru.msg: Updated - - * src/mod_muc/mod_muc_room.erl: Send status code "201" on room - creation - -2004-04-27 Alexey Shchepin - - * src/translate.erl: Search translations directory in priv_dir - instead of lib_dir (thanks to Sergei Golovan) - - * src/**/Makefile.in: Updated (thanks to Sergei Golovan) - - * src/win32/: Win32 installer stuff (thanks to Sergei Golovan) - - * src/**/Makefile.win32: Updated (thanks to Sergei Golovan) - * src/configure.bat: Likewise - * src/configure.erl: Likewise - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - -2004-04-26 Alexey Shchepin - - * src/web/ejabberd_web_admin.erl: Better design for administration - interface (not completed) (thanks to Andrey Zamaraev) - * src/web/ejabberd_http.erl: Updated - * src/web/ejabberd_web.erl: Likewise - -2004-04-17 Alexey Shchepin - - * src/web/ejabberd_http.erl: Increased receive buffer - - * src/mod_irc/mod_irc_connection.erl: Support for "/quote" command - -2004-04-15 Alexey Shchepin - - * src/ejabberd.erl: Added searching of files in code:priv_lib - (thanks to Sergei Golovan) - * src/translate.erl: Likewise - - * src/ejabberd_app.erl: Added "log_path" configuration parameter - (thanks to Sergei Golovan) - - * src/**/Makefile.win32: Updated (thanks to Sergei Golovan) - - * src/**/*.c: Updated (thanks to Sergei Golovan) - - * src/configure.erl: Added writing of version to Makefile.inc - (thanks to Sergei Golovan) - - * doc/guide.tex: Updated link to expat (thanks to Sergei Golovan) - -2004-04-10 Alexey Shchepin - - * src/idna.erl: Support for IDNA (RFC3490) - * src/ejabberd_s2s_out.erl: Likewise - -2004-04-03 Alexey Shchepin - - * src/xml.erl: element_to_string/1 and crypt/1 now returns deep - list - * src/mod_muc/mod_muc_room.erl (add_message_to_history): Replaced - string:len with lists:flatlength - -2004-03-21 Alexey Shchepin - - * (all): Updated win32 stuff (thanks to Sergei Golovan) - - * src/web/ejabberd_web.erl: Added interface for access rules - configuration - -2004-03-20 Alexey Shchepin - - * doc/guide.tex: Updated - - * src/web/ejabberd_web.erl: Updated - - * src/web/ejabberd_http.erl: Bugfix - -2004-03-16 Alexey Shchepin - - * src/mod_roster.erl: Bugfix - - * src/ejabberd_s2s.erl: More verbose error handling - -2004-03-15 Alexey Shchepin - - * src/web/ejabberd_web.erl: Minor update - -2004-03-14 Alexey Shchepin - - * src/web/ejabberd_web.erl: Added interface for users listsing and - statistics - -2004-03-13 Alexey Shchepin - - * src/web/ejabberd_web.erl: New interface for ACLs editing - - * src/web/ejabberd_http_poll.erl: Fixed "Content-Type" header, - "Set-Cookie" is included only in first response in session, added - missed behaviour definition - - * src/web/ejabberd_http.erl: "Content-Type" header now can be - changed - -2004-03-12 Alexey Shchepin - - * src/web/ejabberd_web.erl: Experiments with web-interface - - * src/configure.ac: Updated - * src/Makefile.in: Likewise - -2004-03-10 Alexey Shchepin - - * src/web/ejabberd_http.erl: Removed debugging output - - * src/ejabberd_c2s.erl: Fixed processing of get_presence request - (thanks to Mickael Remond) - -2004-03-08 Alexey Shchepin - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/mod_muc/mod_muc_room.erl: Now private conferences are - visible to admins and owners of this conference (thanks to Sergei - Golovan) - - * src/mod_muc/mod_muc.erl: More xml:lang support (thanks to Sergei - Golovan) - - * src/mod_vcard.erl: Better processing of EMAIL tag (thanks to - Sergei Golovan) - - * src/ejabberd_s2s_out.erl: Added "catch" to "open_socket" (thanks - to Sergei Golovan) - -2004-03-07 Alexey Shchepin - - * src/web/ejabberd_http_poll.erl: Completed - -2004-03-06 Alexey Shchepin - - * src/web/: Support for HTTP Polling (JEP-0025) (almost complete) - -2004-03-04 Alexey Shchepin - - * src/web/: Updated - -2004-03-03 Alexey Shchepin - - * src/web/: Minor update - -2004-03-02 Alexey Shchepin - - * src/web/: Small HTTP server and admin web-interface to ejabberd - (not completed yet) - * src/ejabberd_sup.erl: Added HTTP processes supervisor - - * src/ejabberd_c2s.erl: Added API to ask presence (thanks to - Mickael Remond) - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/mod_muc/mod_muc_room.erl: Updated date parser (thanks to - Sergei Golovan) - - * src/mod_muc/mod_muc.erl: Added error descriptions (thanks to - Sergei Golovan) - * src/mod_muc/mod_muc_room.erl: Likewise - - * src/mod_vcard.erl: Fixed vCard tag (thanks to Sergei Golovan) - * src/mod_irc/mod_irc.erl: Likewise - * src/mod_pubsub/mod_pubsub.erl: Likewise - - * src/jlib.hrl: Added macros for errors with (thanks to - Sergei Golovan) - -2004-02-26 Alexey Shchepin - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/mod_muc/mod_muc_room.erl: Updated error codes, removed - trailing "-" in history. updated subject sending, added - in configuration form (thanks to Sergei Golovan) - - * src/mod_irc/mod_irc.erl: Added vCard, ejabberd:configure - replaced with jabber:iq:register (thanks to Sergei Golovan) - - * src/mod_configure.erl: Updated "xml:lang" usage, updated some - messages (thanks to Sergei Golovan) - * src/mod_configure2.erl: Likewise - * src/mod_disco.erl: Likewise - * src/mod_register.erl: Likewise - * src/mod_vcard.erl: Likewise - * src/mod_irc/mod_irc.erl: Likewise - * src/mod_muc/mod_muc.erl: Likewise - * src/mod_muc/mod_muc_room.erl: Likewise - * src/mod_pubsub/mod_pubsub.erl: Likewise - - * src/jlib.hrl: Added "lang" field in "iq" record (thanks to - Sergei Golovan) - * src/jlib.erl: Likewise - - * src/ejabberd_c2s.erl: Updated to latest JEP-0078 (thanks to - Sergei Golovan) - -2004-02-18 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_sm.erl: Bugfix - -2004-02-15 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Support for history management - (thanks to Sergei Golovan) - - * src/mod_stats.erl: Updated error codes (thanks to Sergei - Golovan) - * src/mod_irc/mod_irc.erl: Likewise - - * src/mod_configure.erl: "jabber:iq:data" replaced with - "ejabberd:config" namespace (thanks to Sergei Golovan) - * src/mod_disco.erl: Likewise - -2004-02-12 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Added <session/> to stream features - -2004-02-10 Alexey Shchepin <alexey@sevcom.net> - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/mod_irc/mod_irc.erl: Now uses "ejabberd:config" namespace - (thanks to Sergei Golovan) - - * src/mod_disco.erl: Fixed disco category and type (thanks to - Sergei Golovan) - * src/mod_pubsub/mod_pubsub.erl: Likewise - - * src/jlib.hrl: Added "ejabberd:config" namespace (thanks to - Sergei Golovan) - -2004-01-27 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_ctl.erl: Added command for log reopening - -2004-01-18 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_ctl.erl: Added commands for backup processing - - * src/ejabberd_c2s.erl: Added processing of xml:lang according to - latest XMPP-IM draft - - * src/xml.erl: Added replace_tag_attr/3 function - - * src/mod_roster.erl: Added auto-reply on incoming subscription - request according to latest XMPP-IM draft - - * src/mod_offline.erl: Added pop_offline_messages/1 function - * src/ejabberd_c2s.erl: Updated sending of offline messages - -2004-01-17 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Bugfix, updated error codes - (thanks to Sergei Golovan) - - * src/jlib.hrl: Updated error codes (thanks to Sergei Golovan) - -2004-01-11 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Fixed bind namespace - - * src/ejabberd_ctl.erl: New module for ejabberd administration - * tools/ejabberdctl: Shell script for ejabberd administration - - * src/mod_vcard.erl: Copyright update - - * src/ejabberd_service.erl: Now possible to specify access rules - for service - * src/ejabberd.cfg.example: Updated - -2004-01-06 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_router.erl: Added monitoring of processess that - serve domains - - * src/ejabberd_app.erl: Bugfix - -2004-01-03 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_router.erl (do_route/3): Slightly changed behaviour - -2004-01-01 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_sm.erl (do_route/3): Minor fix - - * src/ejabberd_sm.erl (route_message/3): Minor changes - -2003-12-28 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_app.erl: Now possible to specify path to log file - via "EJABBERD_LOG_PATH" environment variable - - * src/translate.erl: Now possible to specify path to "msgs" - directory via "EJABBERD_MSGS_PATH" environment variable - - * src/ejabberd.erl: Added get_so_path/0 function - * src/ejabberd_app.erl: Use ejabberd:get_so_path/0 to load .so - * src/mod_irc/iconv.erl: Likewise - * src/stringprep/stringprep.erl: Likewise - -2003-12-24 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Presence probe now sended from full JID - - * src/mod_roster.erl: Bugfix - -2003-12-23 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Bugfix - -2003-12-21 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_roster.erl: Added workaround for legacy gateways - (passing of "subscribed" presence) - - * src/ejabberd_sm.erl: Minor fix in subscription processing - -2003-12-17 Alexey Shchepin <alexey@sevcom.net> - - * src/jlib.hrl: Added declaration of "iq" record - * (all): Updated to use "iq" record - -2003-12-14 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_local.erl: Replaced register_local_route to - register_route - * src/ejabberd_service.erl: Likewise - * src/mod_echo.erl: Likewise - * src/mod_vcard.erl: Likewise - - * src/ejabberd_router.erl: Partially rewrited - * src/ejabberd_sm.erl: Likewise - -2003-12-13 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s.erl: Partially rewrited - - * src/mod_roster.erl: Removed debugging code - -2003-12-12 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s_out.erl: Bugfix - -2003-12-11 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_roster.erl: Updated subscription handling to latest - XMPP-IM draft - -2003-12-06 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s_in.erl: Changed timeout processing, bugfix - - * src/ejabberd_s2s_out.erl: Changed timeout processing - - * src/msgs/ru.msg: Updated (thanks to Sergei Golovan) - - * src/mod_muc/mod_muc.erl: Better i18n support, added support for - <registered/> field in iq:register replies (thanks to Sergei - Golovan) - - * src/mod_register.erl: More i18n support (thanks to Sergei - Golovan) - -2003-12-02 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Bugfix in processing of connection - replacement - -2003-11-28 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Added workaround for some Java clients - -2003-11-27 Alexey Shchepin <alexey@sevcom.net> - - * examples/mtr/ejabberd.cfg: Updated (thanks to Marshall T. Rose) - - * src/ejabberd_auth.erl: LDAP attribute that holds user ID now - configurable - * src/ejabberd.cfg.example: Updated - -2003-11-26 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Fixed processing of presence probe from - client - -2003-11-23 Alexey Shchepin <alexey@sevcom.net> - - * src/cyrsasl_digest.erl: Bugfix (thanks to Sergei Golovan) - - * src/ejabberd.cfg.example: Updated - - * src/ejabberd_auth.erl: Support for LDAP authentication - * src/cyrsasl_digest.erl: Likewise - * src/mod_register.erl: Likewise - * src/ejabberd_c2s.erl: Likewise - - * src/eldap/: Imported "eldap" package - - * src/ejabberd_sm.erl: Bugfix - -2003-11-16 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Bugfixes - - * (all): Version 0.5 released - -2003-11-13 Alexey Shchepin <alexey@sevcom.net> - - * examples/mtr/ejabberd: Updated (thanks to Marshall T. Rose) - - * src/Makefile.in: Added installation of msgs/ directory - -2003-11-11 Alexey Shchepin <alexey@sevcom.net> - - * doc/dev.tex: Developers documentation (not completed) - - * src/ejabberd_c2s.erl: Better handling of malformed JIDs - - * src/mod_register.erl (try_register/2): Now returns "jid - malformed" error if user name is invalid - -2003-11-10 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd.cfg.example: Updated - - * src/ejabberd_s2s_in.erl: Added support for shapers - - * src/ejabberd_c2s.erl: Moved receiver functions to - ejabberd_receiver module - * src/ejabberd_s2s_in.erl: Likewise - * src/ejabberd_receiver.erl: Likewise - - * src/mod_muc/mod_muc_room.erl: Bugfix - - * src/ejabberd_sm.erl (route_message/3): Bugfix - -2003-11-09 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_sm.erl: Bugfix for previous resource handling - change - - * src/mod_configure.erl: Password changing now implemented - -2003-11-07 Alexey Shchepin <alexey@sevcom.net> - - * src/cyrsasl.erl: Updated SASL authentication - * src/ejabberd_c2s.erl: Likewise - - * src/ejabberd_sm.erl: Better resource handling - - * src/jlib.hrl: Added NS_BIND macros - -2003-11-06 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_configure2.erl: Added reporting of outgoing S2S - connections number - - * src/mod_disco.erl (get_outgoing_s2s): Minor fix - -2003-11-02 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_configure2.erl: Yet another configure interface (not - completed yet) - -2003-11-01 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_last.erl: Added remove_user/1 function - - * src/mod_configure.erl: Removing of user's stuff moved to - ejabberd_auth - * src/ejabberd_auth.erl: Likewise - -2003-10-31 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/mod_irc_connection.erl: Updated to work more - correctly with latest jlib - -2003-10-30 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: More strong check for authenticated JID - - * src/mod_roster.erl: Bugfix - -2003-10-29 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_listener.erl: Fixed starting of SSL connection - - * src/ejabberd_s2s_in.erl: Partially rewriten - - * src/ejabberd_router.erl: More verbose error report - * src/ejabberd_local.erl: Likewise - * src/ejabberd_sm.erl: Likewise - - * src/ejabberd_s2s_out.erl: Updated to be compatible with R9C - - * src/ejabberd_c2s.erl: Minor fix - -2003-10-28 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_listener.erl: Added handling of accept errors, - added timeout value to ssl:accept - - * src/mod_vcard.erl: Added checks for all empty input fields - - * src/mod_offline.erl: More strong checks for stored packets - - * src/ejabberd_sm.erl: Bugfix - -2003-10-27 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_auth.erl: Minor change in check_password/4 - - * src/mod_roster.erl: Workaround for PSI bug with roster - - * src/ejabberd_logger_h.erl: Added support for log rotation - -2003-10-24 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_offline.erl: Added function remove_old_messages/1 - - * src/mod_last.erl: jabber:iq:last support (JEP-0012) - * src/ejabberd_sm.erl: Likewise - - * src/jlib.hrl: Added NS_LAST macros - -2003-10-23 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_logger_h.erl: New error_logger handler - * src/ejabberd_app.erl: Now uses ejabberd_logger_h.erl - -2003-10-21 Alexey Shchepin <alexey@sevcom.net> - - * src/Makefile.in: Added install rule - - * src/jlib.erl: Added checks for JID parts length - -2003-10-20 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_vcard.erl: Added checks for stringprep results - - * src/expat_erl.c: Workaround for EI encode_string bug - - * src/xml_stream.erl: Slightly changed protocol to expat driver - * src/expat_erl.c: Likewise - - * src/mod_configure.erl: Minor fix - -2003-10-19 Alexey Shchepin <alexey@sevcom.net> - - * doc/guide.tex: Fixed typo - - * src/ejabberd_local.erl: Added support for announce/online - messages - - * src/ejabberd.cfg.example: Updated - - * src/mod_register.erl: Added support for sending registration - notifications - -2003-10-18 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_service.erl: Added supports for multiple hosts per - service - - * src/Makefile.in: Minor fix - -2003-10-17 Alexey Shchepin <alexey@sevcom.net> - - * src/configure.ac: Build system now done using autoconf (thanks - to Balabanov Dmitry) - * src/aclocal.m4: Likewise - * src/**/Makefile.in: Likewise - - * src/mod_roster.erl (process_item_set_t): Slightly improved - performance - - * src/jd2ejd.erl: Added missed closing of XML stream process, - removed timeout value from import_file/1 - - * src/ejabberd_auth.erl: Added checks for invalid user name - -2003-10-16 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_configure.erl: Fixed some error codes - - * src/cyrsasl_digest.erl: Bugfix (thanks to Justin Karneges) - -2003-10-14 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_local.erl: Bugfix - - * src/mod_register.erl: Added support for sending of "welcome" - message - * src/ejabberd.cfg.example: Updated - - * src/ejabberd_s2s_out.erl: Replaced "_jabber-server" with - "_xmpp-server" - -2003-10-12 Alexey Shchepin <alexey@sevcom.net> - - * doc/guide.tex: Updated - - * src/ejabberd_s2s_out.erl: Added support for IPv6 and - "_jabber-server.tcp" lookups - - * src/jlib.erl (string_to_jid1): Bugfix - - * src/ejabberd_config.erl: Now possible to specify path to config - file in command line - -2003-10-11 Alexey Shchepin <alexey@sevcom.net> - - * doc/guide.tex: Updated - - * src/ejabberd.cfg: Added "register" rule, added some comments, - this file renamed to ejabberd.cfg.example - - * src/mod_register.erl (try_register): Fixed error reply, added - check for "register" access rule - -2003-10-10 Alexey Shchepin <alexey@sevcom.net> - - * src/stringprep/Makefile.win32: Added Makefile for Win32 (thanks - to Sergei Golovan) - - * src/stringprep/stringprep_drv.c: Removed needless iconv.h - include - - * src/ejabberd_c2s.erl: Added filtering of presence packets with - privacy rules - - * src/mod_roster.erl (get_jid_info): Bugfix - - * src/ejabberd_app.erl: Removed periodical dumping of opened ports - -2003-10-09 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Added authentication logging - - * src/ejabberd_listener.erl: Added logging of accepted connections - - * src/stringprep/stringprep_drv.c: Cleanup - - * src/jd2ejd.erl: Added support for iq:private importing - - * src/mod_configure.erl: Fixed user removal - - * src/mod_private.erl: Added remove_user/1 - - * doc/guide.tex: Updated - - * src/mod_disco.erl: Added "extra_domains" option - -2003-10-08 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Added support for "jid-malformed" error - - * src/stringprep/stringprep_drv.c: Bugfix - -2003-10-07 Alexey Shchepin <alexey@sevcom.net> - - * (all): Changed JID storage format, added support for stringprep - - * src/stringprep/: Added support for Unicode normalization form KC - -2003-10-05 Alexey Shchepin <alexey@sevcom.net> - - * src/stringprep/: Added support for case convertion to multiple - characters - - * src/cyrsasl_digest.erl: Temporary removed "auth-int" QOP - -2003-09-28 Alexey Shchepin <alexey@sevcom.net> - - * src/stringprep/stringprep_drv.c: Added support for nameprep, - nodeprep and resourceprep - * src/stringprep/stringprep.erl: Likewise - - * src/ejabberd_sup.erl: Added loading of stringprep - - * src/ejabberd_sm.erl: Cleanup - -2003-09-26 Alexey Shchepin <alexey@sevcom.net> - - * src/stringprep/: Support for stringprep (not completed yet) - -2003-09-24 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc.erl: Replaced io:format calls to ?DEBUG ones - -2003-09-19 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Debug output switched off - - * src/mod_disco.erl: Server identity changed to "service/im" - - * src/mod_register.erl: Fixed jabber:iq:register handler - registration, fixed registration removal processing - -2003-09-16 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_disco.erl: Now only admin can discovery some nodes, - fixed "node" attribute in replies - -2003-09-10 Alexey Shchepin <alexey@sevcom.net> - - * examples/mtr/ejabberd.cfg: Updated (thanks to Marshall T. Rose) - * examples/mtr/ejabberd: Likewise - -2003-09-06 Alexey Shchepin <alexey@sevcom.net> - - * examples/mtr/ejabberd.cfg: Updated (thanks to Marshall T. Rose) - -2003-09-04 Alexey Shchepin <alexey@sevcom.net> - - * examples/mtr/*: Example config and scripts for NetBSD (thanks to - Marshall T. Rose) - -2003-09-03 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s_in.erl: Fixed "id" attribute processing - * src/ejabberd_s2s_out.erl: Likewise - - * src/ejabberd_c2s.erl: Added sending of empty <stream:features/> - element after opening of authenticated stream - -2003-09-02 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s_in.erl: Temporary hack for "id" attribute - processing - * src/ejabberd_s2s_out.erl: Likewise - -2003-08-30 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_listener.erl: Fixed SSL options - -2003-08-18 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Support for filtering of incoming messages - and IQs, presence filtering will be after some xmpp-im - clarifications - -2003-08-15 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc.erl: Fixed handling of room names with - uppercase letters - - * src/mod_muc/mod_muc_room.erl: Added support for - password-protected rooms - -2003-08-12 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/mod_irc_connection.erl: Added handling for - jabber:iq:version and jabber:iq:time requests, participant address - now added to presence status - -2003-08-03 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_privacy.erl: Privacy rules support (not completed yet) - * src/ejabberd_c2s.erl: Likewise - * src/mod_roster.erl: Likewise - -2003-07-27 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_pubsub/mod_pubsub.erl (create_new_node): Bugfix - -2003-07-21 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_vcard.erl: Bugfix - - * src/mod_roster.erl: Bugfix - - * src/jlib.hrl: Added iq:privacy namespace - - * src/mod_irc/mod_irc_connection.erl: Added support for NOTICE and - CODEPAGE commands, better support for QUIT and PART commands - (thanks to Oleg V. Motienko) - -2003-07-20 Alexey Shchepin <alexey@sevcom.net> - - * (all): Reorganized supervision tree - -2003-07-19 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_register.erl: Bugfix - -2003-07-14 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s_out.erl: Close connection after key - verification - - * src/ejabberd_c2s.erl: start replaced with start_link - * src/ejabberd_s2s_in.erl: Likewise - * src/ejabberd_s2s_out.erl: Likewise - * src/ejabberd_service.erl: Likewise - - * src/ejabberd_listener.erl: Now uses proc_lib to spawn listeners, - removed 3rd parameter in listener configuration (assumed to equal - start_link) - - * src/ejabberd.rel: Updated - - * doc/guide.tex: Small changes - - * doc/Makefile: Added implicit charset specification to hevea - -2003-07-12 Alexey Shchepin <alexey@sevcom.net> - - * doc/guide.tex: Updated (thanks to Sergei Golovan) - - * src/expat_erl.c: Added #ifdef for WIN32 (thanks to Sergei - Golovan) - * src/mod_irc/iconv_erl.c: Likewise - - * src/configure.erl: Defines ERLANG_DIR variable (thanks to Sergei - Golovan) - * **/Makefile: Use ERLANG_DIR (thanks to Sergei Golovan) - - * **/Makefile.win32: Makefiles for windows build (thanks to Sergei - Golovan) - * src/configure.bat: Configuration script for windows (thanks to - Sergei Golovan) - -2003-07-09 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_pubsub/mod_pubsub.erl: Added suport for meta-node - "pubsub/nodes" - -2003-07-08 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_pubsub/mod_pubsub.erl: Most of functions now works - -2003-07-07 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_pubsub/mod_pubsub.erl: Pub/sub implementation (not - completed yet) - -2003-07-05 Alexey Shchepin <alexey@sevcom.net> - - * src/jlib.hrl: Added pub/sub namespaces - -2003-07-03 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/iconv_erl.c (iconv_erl_control): Bugfix - -2003-06-30 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Fixed room destroying - * src/mod_muc/mod_muc.erl: Likewise - -2003-06-29 Alexey Shchepin <alexey@sevcom.net> - - * src/jlib.hrl: Error stanzas updated to confirm latest xmpp-core - -2003-06-20 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Returned stream restarting - -2003-06-10 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Removed stream restarting - -2003-06-07 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: SASL support updated to xmpp-core-13 - -2003-06-06 Alexey Shchepin <alexey@sevcom.net> - - * src/cyrsasl*.erl: Support for authzid - -2003-06-03 Alexey Shchepin <alexey@sevcom.net> - - * src/msgs/fr.msg: New french translation (thanks to Vincent Ricard) - -2003-05-31 Alexey Shchepin <alexey@sevcom.net> - - * src/jlib.hrl: Updated SASL namespace - -2003-05-29 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_service.erl: Proper handling of bad XML - - * src/mod_muc/mod_muc_room.erl: Append number of participants in - disco replies if requester allowed to see participant list - - * src/mod_muc/mod_muc.erl (iq_disco_items): Pass requester JID to - room process - - * src/mod_irc/mod_irc_connection.erl: Exit on receiving of - presence or message error - - * src/mod_irc/mod_irc_connection.erl (handle_info): Return - "feature not implemented" on iq request with unknown namespace - -2003-05-18 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc.erl: Now body of message from admin to MUC - service is broadcasted to all conferences - * src/mod_muc/mod_muc_room.erl: Likewise - -2003-05-15 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s.erl: Added error catching for do_route/3 - * src/ejabberd_local.erl: Likewise for do_route/4 - - * src/msgs/ru.msg: Updated - - * src/mod_muc/mod_muc_room.erl: New option to allow to view list - of participants for non-ones via disco#items - - * src/mod_muc/mod_muc_room.erl: Store room subject with - configuration options - -2003-05-14 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Remove user from room on receiving - of message or presence error from him - -2003-05-12 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s_out.erl: Fixed error replies, added timeouts - * src/ejabberd_s2s_in.erl: Likewise - -2003-05-09 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_local.erl: Updated missed errors to new style - * src/mod_register.erl: Likewise - * src/mod_version.erl: Likewise - * src/mod_time.erl: Likewise - * src/mod_stats.erl: Likewise - * src/mod_register.erl: Likewise - * src/mod_private.erl: Likewise - * src/mod_configure.erl: Likewise - * src/ejabberd_sm.erl: Likewise - * src/ejabberd_service.erl: Likewise - * src/ejabberd_c2s.erl: Likewise - * src/ejabberd_s2s_out.erl: Likewise - * src/mod_vcard.erl: Likewise - * src/mod_roster.erl: Likewise - - * src/mod_muc/mod_muc.erl: Added vcard to mod_muc module - - * src/ejabberd_app.erl: Dump list of opened ports every hour - - * src/ejabberd.hrl: Added INFO_MSG macros, ERROR_LOG_PATH renamed - to LOG_PATH - -2003-05-08 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc.erl: Denied usage of empty nick - -2003-05-07 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc.erl: Return bad-request if no x:data form - submited with nick registration - - * src/mod_muc/mod_muc_room.erl: Don't check permissions on disco - info query processing - -2003-04-29 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Workaround to make SSL work properly - -2003-04-28 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/mod_irc_connection.erl: Fixed URL to ejabberd - -2003-04-17 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc.erl: Support for nick registration - -2003-04-15 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Some fixes in work with socket - -2003-04-13 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Support for members-only - conferences, invitations. Bugfix in affiliation change processing - - * src/jlib.hrl: Added jabber:x:conference namespace definition - -2003-04-07 Alexey Shchepin <alexey@sevcom.net> - - * src/jlib.hrl: Added jaber:iq:auth:error namespace and - appropriate errors - * src/ejabberd_c2s.erl: Use auth:error in appropriate places - - * src/jlib.hrl: Changed stream error and stanza error namespace - names due to last XMPP Core changes - -2003-03-28 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/mod_muc_room.erl: Added support for grant/revoke - administrative/owner priveledges, fixed work with affiliations - -2003-03-27 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd.cfg: Updated - - * src/mod_muc/mod_muc_room.erl: Support for service admin, - kick/ban reasons, more options - - * src/msgs/ru.msg: Added translations for MUC messages - - * src/ejabberd_s2s_in.erl: Bugfix - - * src/mod_muc/: Small fixes in discovering - -2003-03-26 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/: Support for discovering service and more - configuration options - -2003-03-25 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/: Support for more configuration options and - persistent rooms - -2003-03-23 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_muc/: MUC support (not completed yet) - -2003-03-15 Alexey Shchepin <alexey@sevcom.net> - - * src/xml_stream.erl: Removed "link" which cause not improper - closing of xml connections - -2003-03-14 Alexey Shchepin <alexey@sevcom.net> - - * src/jlib.hrl: Added "invalid-namespace" error - * src/ejabberd_c2s.erl: Likewise - -2003-03-12 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_s2s_out.erl: Fixed ports leak - * src/ejabberd_listener.erl: Likewise - - * src/ejabberd_c2s.erl: Fixes for SASL support - - * src/cyrsasl.erl: Fixes - - * src/cyrsasl_digest.erl: DIGEST-MD5 SASL mechanism support - -2003-03-09 Alexey Shchepin <alexey@sevcom.net> - - * src/cyrsasl*.erl: SASL support (currently support only PLAIN - mechanism) - * src/ejabberd_c2s.erl: Likewise - - (all): Support for new-style error elements (except old errors - "Not Acceptable", "Not Found", "Invalid Namespace" and "Server - Connect Failed", so ejabberd may work unstable) - -2003-03-02 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: More correct stream closing - -2003-02-27 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/mod_irc_connection.erl: Support for topic changes - -2003-02-24 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/mod_irc_connection.erl: /kick support - -2003-02-23 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/: Added configuration interface - - * src/mod_configure.erl: Use jabber:iq:data instead of - jabber:x:data - * src/mod_disco.erl: Likewise - -2003-02-22 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_configure.erl: Backup management support - * src/mod_disco.erl: Likewise - -2003-02-21 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_offline.erl: Now possible to unload this module - * src/ejabberd_sm.erl: Added checks to work correctly when - mod_offline not loaded - * src/ejabberd_c2s.erl: Likewise - - * src/mod_register.erl: Added support for users removal - - * src/ejabberd_auth.erl: Added function to remove user only if - specified password correct - - * src/mod_irc/mod_irc_connection.erl: Fixed bug with changing - availability status, added processing of "QUIT" message - -2003-02-20 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_roster.erl: Fixed bug with handling of roster set - stanzas which contains CDATA - - * src/mod_irc/mod_irc_connection.erl (handle_info/3): Fixed - parsing of string that have "\n" line separators (not "\r\n") - -2003-02-18 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/: Added support for private chats, nicks changes and - error handling - -2003-02-17 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/: Still not completed... - -2003-02-16 Alexey Shchepin <alexey@sevcom.net> - - * src/mod_irc/: New IRC transport (not completed yet) - -2003-02-14 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_service.erl: Answer "Bad Request" on unknown tags - -2003-02-13 Alexey Shchepin <alexey@sevcom.net> - - * src/ejabberd_c2s.erl: Bugfix: close socket when stream is closed - - * src/mod_offline.erl: Now all offline packets processed in - separate queue to avoid delaying of other packets transmission. - Also all packets in queue processed in one transaction. - -2003-02-11 Alexey Shchepin <alexey@sevcom.net> - - * (all): Version 0.1-alpha released - diff --git a/ejabberd-1.1.2/TODO b/ejabberd-1.1.2/TODO deleted file mode 100644 index a98d63f0a..000000000 --- a/ejabberd-1.1.2/TODO +++ /dev/null @@ -1,14 +0,0 @@ -Win32 build: Make it possible to compile with +debug_info flag. - -admin interface - users management - statistics about each user - statistics about each connection - -S2S: - check "id" attributes in db:verify packets - -make roster set to work in one transaction -add traffic shapers to c2s connection before authentification -more traffic shapers -SNMP diff --git a/ejabberd-1.1.2/contrib/extract_translations/README b/ejabberd-1.1.2/contrib/extract_translations/README deleted file mode 100644 index 9278dd106..000000000 --- a/ejabberd-1.1.2/contrib/extract_translations/README +++ /dev/null @@ -1,21 +0,0 @@ -extract_translations - auxiliary tool that extracts lines to be translated -from ejabberd source tree. - -Building: - erlc extract_translations.erl - -Invoking 1: - erl -noinput -s extract_translations -extra dirname message_file - - where dirname is the directory "src" in ejabberd's source tree root, - message_file is a file with translated messages (src/msgs/*.msg). - - Result is a list of messages from source files which aren't contained in - message file. - -Invoking 2: - erl -noinput -s extract_translations -extra -unused dirname message_file - - Result is a list of messages from message file which aren't in source - files anymore. - diff --git a/ejabberd-1.1.2/contrib/extract_translations/extract_translations.erl b/ejabberd-1.1.2/contrib/extract_translations/extract_translations.erl deleted file mode 100644 index 01788c504..000000000 --- a/ejabberd-1.1.2/contrib/extract_translations/extract_translations.erl +++ /dev/null @@ -1,190 +0,0 @@ -%%%---------------------------------------------------------------------- -%%% File : extract_translations.erl -%%% Author : Sergei Golovan <sgolovan@nes.ru> -%%% Purpose : Auxiliary tool for interface/messages translators -%%% Created : 23 Apr 2005 by Sergei Golovan <sgolovan@nes.ru> -%%% Id : $Id$ -%%%---------------------------------------------------------------------- - --module(extract_translations). --author('sgolovan@nes.ru'). - --export([start/0]). - --define(STATUS_SUCCESS, 0). --define(STATUS_ERROR, 1). --define(STATUS_USAGE, 2). - --include_lib("kernel/include/file.hrl"). - - -start() -> - ets:new(translations, [named_table, public]), - ets:new(files, [named_table, public]), - ets:new(vars, [named_table, public]), - case init:get_plain_arguments() of - ["-unused", Dir, File] -> - Status = process(Dir, File, unused), - halt(Status); - [Dir, File] -> - Status = process(Dir, File, used), - halt(Status); - _ -> - print_usage(), - halt(?STATUS_USAGE) - end. - - -process(Dir, File, Used) -> - case load_file(File) of - {error, Reason} -> - io:format("~s: ~s~n", [File, file:format_error(Reason)]), - ?STATUS_ERROR; - _ -> - FileList = find_src_files(Dir), - lists:foreach( - fun(F) -> - parse_file(Dir, F, Used) - end, FileList), - case Used of - unused -> - ets:foldl(fun({Key, _}, _) -> - io:format("~p~n", [Key]) - end, ok, translations); - _ -> - ok - end, - ?STATUS_SUCCESS - end. - -parse_file(Dir, File, Used) -> - ets:delete_all_objects(vars), - case epp:parse_file(File, [Dir, filename:dirname(File)], []) of - {ok, Forms} -> - lists:foreach( - fun(F) -> - parse_form(Dir, File, F, Used) - end, Forms); - _ -> - ok - end. - -parse_form(Dir, File, Form, Used) -> - case Form of - {call, - _, - {remote, _, {atom, _, translate}, {atom, _, translate}}, - [_, {string, _, Str}] - } -> - process_string(Dir, File, Str, Used); - {call, - _, - {remote, _, {atom, _, translate}, {atom, _, translate}}, - [_, {var, _, Name}] - } -> - case ets:lookup(vars, Name) of - [{_Name, Value}] -> - process_string(Dir, File, Value, Used); - _ -> - ok - end; - {match, - _, - {var, _, Name}, - {string, _, Value} - } -> - ets:insert(vars, {Name, Value}); - L when is_list(L) -> - lists:foreach( - fun(F) -> - parse_form(Dir, File, F, Used) - end, L); - T when is_tuple(T) -> - lists:foreach( - fun(F) -> - parse_form(Dir, File, F, Used) - end, tuple_to_list(T)); - _ -> - ok - end. - -process_string(_Dir, File, Str, Used) -> - case {ets:lookup(translations, Str), Used} of - {[{_Key, _Trans}], unused} -> - ets:delete(translations, Str); - {[{_Key, _Trans}], used} -> - ok; - {_, used} -> - case ets:lookup(files, File) of - [{_}] -> - ok; - _ -> - io:format("~n% ~s~n", [File]), - ets:insert(files, {File}) - end, - io:format("{~p, \"\"}.~n", [Str]), - ets:insert(translations, {Str, ""}); - _ -> - ok - end. - -load_file(File) -> - case file:consult(File) of - {ok, Terms} -> - lists:foreach( - fun({Orig, Trans}) -> - case Trans of - "" -> - ok; - _ -> - ets:insert(translations, {Orig, Trans}) - end - end, Terms); - Err -> - Err - end. - -find_src_files(Dir) -> - case file:list_dir(Dir) of - {ok, FileList} -> - recurse_filelist( - lists:map( - fun(F) -> - filename:join(Dir, F) - end, FileList)); - _ -> - [] - end. - -recurse_filelist(FileList) -> - recurse_filelist(FileList, []). - -recurse_filelist([], Acc) -> - lists:reverse(Acc); - -recurse_filelist([H | T], Acc) -> - case file:read_file_info(H) of - {ok, #file_info{type = directory}} -> - recurse_filelist(T, lists:reverse(find_src_files(H)) ++ Acc); - {ok, #file_info{type = regular}} -> - case string:substr(H, string:len(H) - 3) of - ".erl" -> - recurse_filelist(T, [H | Acc]); - ".hrl" -> - recurse_filelist(T, [H | Acc]); - _ -> - recurse_filelist(T, Acc) - end; - _ -> - recurse_filelist(T, Acc) - end. - - -print_usage() -> - io:format( - "Usage: extract_translations [-unused] dir file~n" - "~n" - "Example:~n" - " extract_translations . ./msgs/ru.msg~n" - ). - diff --git a/ejabberd-1.1.2/contrib/extract_translations/prepare-translation.sh b/ejabberd-1.1.2/contrib/extract_translations/prepare-translation.sh deleted file mode 100755 index 64bd03993..000000000 --- a/ejabberd-1.1.2/contrib/extract_translations/prepare-translation.sh +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash - -# Frontend for ejabberd's extract_translations.erl -# by Badlop -# last updated: 8 December 2005 - -while [ "$1" != "" ] -do - case "$1" in - -help) - echo "Options:" - echo " -lang LANGUAGE" - echo " -src FULL_PATH_EJABBERD" - echo "" - echo "Example:" - echo " ./prepare-translation.sh -lang es -src /home/admin/ejabberd" - exit 0 - ;; - -lang) - # This is the language to be extracted - LANGU=$2 - shift - shift - ;; - -src) - # This is the path to the ejabberd source dir - EJA_DIR=$2 - shift - shift - ;; - *) - echo "unknown option: '$1 $2'" - shift - shift - ;; - esac -done - -# Where is Erlang binary -ERL=`which erl` - -EXTRACT_DIR=$EJA_DIR/contrib/extract_translations/ -EXTRACT_ERL=extract_translations.erl -EXTRACT_BEAM=extract_translations.beam -SRC_DIR=$EJA_DIR/src -MSGS_DIR=$SRC_DIR/msgs -MSGS_FILE=$LANGU.msg -MSGS_FILE2=$LANGU.msg.translate -MSGS_PATH=$MSGS_DIR/$MSGS_FILE -MSGS_PATH2=$MSGS_DIR/$MSGS_FILE2 - -if !([[ -n $EJA_DIR ]]) -then -echo "ejabberd dir does not exist: $EJA_DIR" -fi - -if !([[ -x $EXTRACT_BEAM ]]) -then -echo -n "Compiling extract_translations.erl: " -sh -c "cd $EXTRACT_DIR; $ERL -compile $EXTRACT_ERL" -fi - -echo "" -echo -n "Extracting language strings for '$LANGU':" - -echo -n " new..." -$ERL -pa $EXTRACT_DIR -noinput -noshell -s extract_translations -s init stop -extra $SRC_DIR $MSGS_PATH >$MSGS_PATH.new - -echo -n " old..." -$ERL -pa $EXTRACT_DIR -noinput -noshell -s extract_translations -s init stop -extra -unused $SRC_DIR $MSGS_PATH >$MSGS_PATH.unused - -cat $MSGS_PATH >$MSGS_PATH2 - -echo "" >>$MSGS_PATH2 - -cat $MSGS_PATH.new >>$MSGS_PATH2 -rm $MSGS_PATH.new -echo "" >>$MSGS_PATH2 - -cat $MSGS_PATH.unused >>$MSGS_PATH2 -rm $MSGS_PATH.unused - -echo " ok" - -echo "" -echo "Process completed." - -echo "" -echo " A new file has been created for you, with the current, the new and the deprecated strings:" -echo " $MSGS_PATH2" -echo "" -echo " At the end of that file you will find the strings you must update:" -echo " - Untranslated strings are like this: {"March", ""}." -echo " To translate the string, add the text inside the commas. Example:" -echo " {"March", "Marzo"}." -echo " - Old strings that are not used: "Woowoa"" -echo " Search the entire file for those strings and remove them" -echo "" -echo " Once you have translated all the strings and removed all the old ones," -echo " rename the file to overwrite the previous one:" -echo " $MSGS_PATH" diff --git a/ejabberd-1.1.2/doc/Makefile b/ejabberd-1.1.2/doc/Makefile deleted file mode 100644 index 7736855f3..000000000 --- a/ejabberd-1.1.2/doc/Makefile +++ /dev/null @@ -1,46 +0,0 @@ -# $Id$ - -all: release pdf html - -release: - @echo "Notes for the releaser:" - @echo "* Do not forget to add a link to the release notes in guide.tex" - @echo "* Do not forget to change the version number in version.tex" - @echo "* Do not forget to update the features in introduction.tex (including \new{} and \improved{} tags)." - @read -p "press any key to continue" - -html: guide.html dev.html features.html - -pdf: guide.pdf features.pdf - -clean: - rm -f *.aux - rm -f *.haux - rm -f *.html - rm -f *.htoc - rm -f *.idx - rm -f *.ilg - rm -f *.ind - rm -f *.log - rm -f *.out - rm -f *.pdf - rm -f *.toc - -guide.html: guide.tex - hevea -fix -noiso -pedantic guide.tex - -dev.html: dev.tex - hevea -fix -noiso -pedantic dev.tex - -features.html: features.tex - hevea -fix -noiso -pedantic features.tex - -guide.pdf: guide.tex - pdflatex guide.tex - pdflatex guide.tex - pdflatex guide.tex - makeindex guide.idx - pdflatex guide.tex - -features.pdf: features.tex - pdflatex features.tex diff --git a/ejabberd-1.1.2/doc/dev.html b/ejabberd-1.1.2/doc/dev.html deleted file mode 100644 index 0c0472f76..000000000 --- a/ejabberd-1.1.2/doc/dev.html +++ /dev/null @@ -1,449 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" - "http://www.w3.org/TR/REC-html40/loose.dtd"> -<HTML> - -<HEAD> - -<TITLE>Ejabberd 1.1.2 Developers Guide - - - - - - - - - - - - - -
-
- - - - -
-

Ejabberd 1.1.2 Developers Guide

-

Alexey Shchepin
-mailto:alexey@sevcom.net
-xmpp:aleksey@jabber.ru


-
-
- - logo.png - - -
-
- -
-
I can thoroughly recommend ejabberd for ease of setup – - Kevin Smith, Current maintainer of the Psi project
- - -

Contents

- - - - - -

1  Introduction

- - - -ejabberd is a free and open source instant messaging server written in Erlang.
-
-ejabberd is cross-platform, distributed, fault-tolerant, and based on open standards to achieve real-time communication.
-
-ejabberd is designed to be a rock-solid and feature rich XMPP server.
-
-ejabberd is suitable for small deployments, whether they need to be scalable or not, as well as extremely big deployments.
-
- - -

1.1  Key Features

- - - -ejabberd is: -
  • -Cross-platform: ejabberd runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.
    -
    -
  • Distributed: You can run ejabberd on a cluster of machines and all of them will serve the same Jabber domain(s). When you need more capacity you can simply add a new cheap node to your cluster. Accordingly, you do not need to buy an expensive high-end machine to support tens of thousands concurrent users.
    -
    -
  • Fault-tolerant: You can deploy an ejabberd cluster so that all the information required for a properly working service will be replicated permanently on all nodes. This means that if one of the nodes crashes, the others will continue working without disruption. In addition, nodes also can be added or replaced `on the fly'.
    -
    -
  • Administrator Friendly: ejabberd is built on top of the Open Source Erlang. As a result you do not need to install an external database, an external web server, amongst others because everything is already included, and ready to run out of the box. Other administrator benefits include: -
    • -Comprehensive documentation. -
    • Straightforward installers for Linux, Mac OS X, and Windows. -
    • Web interface for administration tasks. -
    • Shared Roster Groups. -
    • Command line administration tool. -
    • Can integrate with existing authentication mechanisms. -
    • Capability to send announce messages. -

    -
    -
  • Internationalized: ejabberd leads in internationalization. Hence it is very well suited in a globalized world. Related features are: -
    • -Translated in 12 languages. -
    • Support for IDNA. -

    -
    -
  • Open Standards: ejabberd is the first Open Source Jabber server claiming to fully comply to the XMPP standard. -
- - -

1.2  Additional Features

- - - -Moreover, ejabberd comes with a wide range of other state-of-the-art features: -
  • -Modular -
    • -Load only the modules you want. -
    • Extend ejabberd with your own custom modules. -
    -
  • Security -
    • -SASL and STARTTLS for c2s and s2s connections. -
    • STARTTLS and Dialback s2s connections. -
    • Web interface accessible via HTTPS secure access. -
    -
  • Databases -
    • -Native MySQL support. -
    • Native PostgreSQL support. -
    • Mnesia. -
    • ODBC data storage support. -
    • Microsoft SQL Server support. -
    -
  • Authentication -
    • -LDAP and ODBC. -
    • External Authentication script. -
    • Internal Authentication. -
    -
  • Others -
    • -Compressing XML streams with Stream Compression (JEP-0138). -
    • Interface with networks such as AIM, ICQ and MSN. -
    • Statistics via Statistics Gathering (JEP-0039). -
    • IPv6 support both for c2s and s2s connections. -
    • Multi-User Chat module with logging. -
    • Users Directory based on users vCards. -
    • Publish-Subscribe component. -
    • Support for virtual hosting. -
    • HTTP Polling service. -
    • IRC transport. -
    -
- - -

2  How it Works

- - -A Jabber domain is served by one or more ejabberd nodes. These nodes can -be run on different machines that are connected via a network. They all must -have the ability to connect to port 4369 of all another nodes, and must have -the same magic cookie (see Erlang/OTP documentation, in other words the file -~ejabberd/.erlang.cookie must be the same on all nodes). This is -needed because all nodes exchange information about connected users, S2S -connections, registered services, etc...
-
-Each ejabberd node have following modules: -
  • -router; -
  • local router. -
  • session manager; -
  • S2S manager; -
- - -

2.1  Router

- -This module is the main router of Jabber packets on each node. It routes -them based on their destinations domains. It has two tables: local and global -routes. First, domain of packet destination searched in local table, and if it -found, then the packet is routed to appropriate process. If no, then it -searches in global table, and is routed to the appropriate ejabberd node or -process. If it does not exists in either tables, then it sent to the S2S -manager.
-
- - -

2.2  Local Router

- -This module routes packets which have a destination domain equal to this server -name. If destination JID has a non-empty user part, then it routed to the -session manager, else it is processed depending on it's content.
-
- - -

2.3  Session Manager

- -This module routes packets to local users. It searches for what user resource -packet must be sended via presence table. If this resource is connected to -this node, it is routed to C2S process, if it connected via another node, then -the packet is sent to session manager on that node.
-
- - -

2.4  S2S Manager

- -This module routes packets to other Jabber servers. First, it checks if an -open S2S connection from the domain of the packet source to the domain of -packet destination already exists. If it is open on another node, then it -routes the packet to S2S manager on that node, if it is open on this node, then -it is routed to the process that serves this connection, and if a connection -does not exist, then it is opened and registered.
-
- - -

3  XML Representation

- - -Each XML stanza is represented as the following tuple: -
-XMLElement = {xmlelement, Name, Attrs, [ElementOrCDATA]}
-        Name = string()
-        Attrs = [Attr]
-        Attr = {Key, Val}
-        Key = string()
-        Val = string()
-        ElementOrCDATA = XMLElement | CDATA
-        CDATA = {xmlcdata, string()}
-
E. g. this stanza: -
-<message to='test@conference.example.org' type='groupchat'>
-  <body>test</body>
-</message>
-
is represented as the following structure: -
-{xmlelement, "message",
-    [{"to", "test@conference.example.org"},
-     {"type", "groupchat"}],
-    [{xmlelement, "body",
-         [],
-         [{xmlcdata, "test"}]}]}}
-
- - -

4  Module xml

- - -
element_to_string(El) -> string() -
-El = XMLElement
-
Returns string representation of XML stanza El.
-
-
crypt(S) -> string() -
-S = string()
-
Returns string which correspond to S with encoded XML special - characters.
-
-
remove_cdata(ECList) -> EList -
-ECList = [ElementOrCDATA]
-EList = [XMLElement]
-
EList is a list of all non-CDATA elements of ECList.
-
-
get_path_s(El, Path) -> Res -
-El = XMLElement
-Path = [PathItem]
-PathItem = PathElem | PathAttr | PathCDATA
-PathElem = {elem, Name}
-PathAttr = {attr, Name}
-PathCDATA = cdata
-Name = string()
-Res = string() | XMLElement
-
If Path is empty, then returns El. Else sequentially - consider elements of Path. Each element is one of: -
{elem, Name} Name is name of subelement of - El, if such element exists, then this element considered in - following steps, else returns empty string. -
{attr, Name} If El have attribute Name, then - returns value of this attribute, else returns empty string. -
cdata Returns CDATA of El. -

-
-
TODO: -
-         get_cdata/1, get_tag_cdata/1
-         get_attr/2, get_attr_s/2
-         get_tag_attr/2, get_tag_attr_s/2
-         get_subtag/2
-
- - -

5  Module xml_stream

- - -
parse_element(Str) -> XMLElement | {error, Err} -
-Str = string()
-Err = term()
-
Parses Str using XML parser, returns either parsed element or error - tuple. -
- - -

6  Modules

- - - - -

6.1  Module gen_iq_handler

- - -The module gen_iq_handler allows to easily write handlers for IQ packets -of particular XML namespaces that addressed to server or to users bare JIDs.
-
-In this module the following functions are defined: -
add_iq_handler(Component, Host, NS, Module, Function, Type) -
-Component = Module = Function = atom()
-Host = NS = string()
-Type = no_queue | one_queue | parallel
-
Registers function Module:Function as handler for IQ packets on - virtual host Host that contain child of namespace NS in - Component. Queueing discipline is Type. There are at least - two components defined: -
ejabberd_local Handles packets that addressed to server JID; -
ejabberd_sm Handles packets that addressed to users bare JIDs. -
-
remove_iq_handler(Component, Host, NS) -
-Component = atom()
-Host = NS = string()
-
Removes IQ handler on virtual host Host for namespace NS from - Component. -
-Handler function must have the following type: -
Module:Function(From, To, IQ) -
-From = To = jid()
-
-
--module(mod_cputime).
-
--behaviour(gen_mod).
-
--export([start/2,
-         stop/1,
-         process_local_iq/3]).
-
--include("ejabberd.hrl").
--include("jlib.hrl").
-
--define(NS_CPUTIME, "ejabberd:cputime").
-
-start(Host, Opts) ->
-    IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue),
-    gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_CPUTIME,
-                                  ?MODULE, process_local_iq, IQDisc).
-
-stop(Host) ->
-    gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_CPUTIME).
-
-process_local_iq(From, To, {iq, ID, Type, XMLNS, SubEl}) ->
-    case Type of
-        set ->
-            {iq, ID, error, XMLNS,
-             [SubEl, ?ERR_NOT_ALLOWED]};
-        get ->
-            CPUTime = element(1, erlang:statistics(runtime))/1000,
-            SCPUTime = lists:flatten(io_lib:format("~.3f", CPUTime)),
-            {iq, ID, result, XMLNS,
-             [{xmlelement, "query",
-               [{"xmlns", ?NS_CPUTIME}],
-               [{xmlelement, "cputime", [], [{xmlcdata, SCPUTime}]}]}]}
-    end.
-
- - -

6.2  Services

- - -
--module(mod_echo).
-
--behaviour(gen_mod).
-
--export([start/2, init/1, stop/1]).
-
--include("ejabberd.hrl").
--include("jlib.hrl").
-
-start(Host, Opts) ->
-    MyHost = gen_mod:get_opt(host, Opts, "echo." ++ Host),
-    register(gen_mod:get_module_proc(Host, ?PROCNAME),
-             spawn(?MODULE, init, [MyHost])).
-
-init(Host) ->
-    ejabberd_router:register_local_route(Host),
-    loop(Host).
-
-loop(Host) ->
-    receive
-        {route, From, To, Packet} ->
-            ejabberd_router:route(To, From, Packet),
-            loop(Host);
-        stop ->
-            ejabberd_router:unregister_route(Host),
-            ok;
-        _ ->
-            loop(Host)
-    end.
-
-stop(Host) ->
-    Proc = gen_mod:get_module_proc(Host, ?PROCNAME),
-    Proc ! stop,
-    {wait, Proc}.
-
- - - -
This document was translated from LATEX by -HEVEA.
- diff --git a/ejabberd-1.1.2/doc/dev.tex b/ejabberd-1.1.2/doc/dev.tex deleted file mode 100644 index 3b0764311..000000000 --- a/ejabberd-1.1.2/doc/dev.tex +++ /dev/null @@ -1,398 +0,0 @@ -\documentclass[a4paper,10pt]{article} - -%% Packages -\usepackage{graphics} -\usepackage{hevea} -\usepackage{makeidx} -\usepackage{verbatim} - -%% Index -\makeindex -% Remove the index anchors from the HTML version to save size and bandwith. -\newcommand{\ind}[1]{\begin{latexonly}\index{#1}\end{latexonly}} - -%% Images -\newcommand{\logoscale}{0.7} -\newcommand{\imgscale}{0.58} -\newcommand{\insimg}[1]{\insscaleimg{\imgscale}{#1}} -\newcommand{\insscaleimg}[2]{ - \imgsrc{#2}{} - \begin{latexonly} - \scalebox{#1}{\includegraphics{#2}} - \end{latexonly} -} - -%% Various -\newcommand{\ns}[1]{\texttt{#1}} -\newcommand{\ejabberd}{\texttt{ejabberd}} -\newcommand{\Jabber}{Jabber} - -%% Modules -\newcommand{\module}[1]{\texttt{#1}} -\newcommand{\modadhoc}{\module{mod\_adhoc}} -\newcommand{\modannounce}{\module{mod\_announce}} -\newcommand{\modconfigure}{\module{mod\_configure}} -\newcommand{\moddisco}{\module{mod\_disco}} -\newcommand{\modecho}{\module{mod\_echo}} -\newcommand{\modirc}{\module{mod\_irc}} -\newcommand{\modlast}{\module{mod\_last}} -\newcommand{\modlastodbc}{\module{mod\_last\_odbc}} -\newcommand{\modmuc}{\module{mod\_muc}} -\newcommand{\modmuclog}{\module{mod\_muc\_log}} -\newcommand{\modoffline}{\module{mod\_offline}} -\newcommand{\modofflineodbc}{\module{mod\_offline\_odbc}} -\newcommand{\modprivacy}{\module{mod\_privacy}} -\newcommand{\modprivate}{\module{mod\_private}} -\newcommand{\modpubsub}{\module{mod\_pubsub}} -\newcommand{\modregister}{\module{mod\_register}} -\newcommand{\modroster}{\module{mod\_roster}} -\newcommand{\modrosterodbc}{\module{mod\_roster\_odbc}} -\newcommand{\modservicelog}{\module{mod\_service\_log}} -\newcommand{\modsharedroster}{\module{mod\_shared\_roster}} -\newcommand{\modstats}{\module{mod\_stats}} -\newcommand{\modtime}{\module{mod\_time}} -\newcommand{\modvcard}{\module{mod\_vcard}} -\newcommand{\modvcardldap}{\module{mod\_vcard\_ldap}} -\newcommand{\modvcardodbc}{\module{mod\_vcard\_odbc}} -\newcommand{\modversion}{\module{mod\_version}} - -%% Title page -\include{version} -\title{Ejabberd \version\ Developers Guide} -\author{Alexey Shchepin \\ - \ahrefurl{mailto:alexey@sevcom.net} \\ - \ahrefurl{xmpp:aleksey@jabber.ru}} - -%% Options -\newcommand{\marking}[1]{#1} % Marking disabled -\newcommand{\quoting}[2][yozhik]{} % Quotes disabled -\newcommand{\new}{\begin{latexonly}\marginpar{\textsc{new}}\end{latexonly}} % Highlight new features -\newcommand{\improved}{\begin{latexonly}\marginpar{\textsc{improved}}\end{latexonly}} % Highlight improved features -\newcommand{\moreinfo}[1]{} % Hide details - -%% Footnotes -\newcommand{\tjepref}[2]{\footahref{http://www.jabber.org/jeps/jep-#1.html}{#2}} -\newcommand{\jepref}[1]{\tjepref{#1}{JEP-#1}} - -\begin{document} - -\label{sec:titlepage} -\begin{titlepage} - \maketitle{} - - \begin{center} - {\insscaleimg{\logoscale}{logo.png} - \par - } - \end{center} - - \begin{quotation}\textit{I can thoroughly recommend ejabberd for ease of setup -- - Kevin Smith, Current maintainer of the Psi project}\end{quotation} - -\end{titlepage} - -\tableofcontents{} - -% Input introduction.tex -\input{introduction} - -\section{How it Works} -\label{sec:howitworks} - - -A \Jabber{} domain is served by one or more \ejabberd{} nodes. These nodes can -be run on different machines that are connected via a network. They all must -have the ability to connect to port 4369 of all another nodes, and must have -the same magic cookie (see Erlang/OTP documentation, in other words the file -\texttt{\~{}ejabberd/.erlang.cookie} must be the same on all nodes). This is -needed because all nodes exchange information about connected users, S2S -connections, registered services, etc\ldots - - - -Each \ejabberd{} node have following modules: -\begin{itemize} -\item router; -\item local router. -\item session manager; -\item S2S manager; -\end{itemize} - - -\subsection{Router} - -This module is the main router of \Jabber{} packets on each node. It routes -them based on their destinations domains. It has two tables: local and global -routes. First, domain of packet destination searched in local table, and if it -found, then the packet is routed to appropriate process. If no, then it -searches in global table, and is routed to the appropriate \ejabberd{} node or -process. If it does not exists in either tables, then it sent to the S2S -manager. - - -\subsection{Local Router} - -This module routes packets which have a destination domain equal to this server -name. If destination JID has a non-empty user part, then it routed to the -session manager, else it is processed depending on it's content. - - -\subsection{Session Manager} - -This module routes packets to local users. It searches for what user resource -packet must be sended via presence table. If this resource is connected to -this node, it is routed to C2S process, if it connected via another node, then -the packet is sent to session manager on that node. - - -\subsection{S2S Manager} - -This module routes packets to other \Jabber{} servers. First, it checks if an -open S2S connection from the domain of the packet source to the domain of -packet destination already exists. If it is open on another node, then it -routes the packet to S2S manager on that node, if it is open on this node, then -it is routed to the process that serves this connection, and if a connection -does not exist, then it is opened and registered. - - - - -\section{XML Representation} -\label{sec:xmlrepr} - -Each XML stanza is represented as the following tuple: -\begin{verbatim} -XMLElement = {xmlelement, Name, Attrs, [ElementOrCDATA]} - Name = string() - Attrs = [Attr] - Attr = {Key, Val} - Key = string() - Val = string() - ElementOrCDATA = XMLElement | CDATA - CDATA = {xmlcdata, string()} -\end{verbatim} -E.\,g. this stanza: -\begin{verbatim} - - test - -\end{verbatim} -is represented as the following structure: -\begin{verbatim} -{xmlelement, "message", - [{"to", "test@conference.example.org"}, - {"type", "groupchat"}], - [{xmlelement, "body", - [], - [{xmlcdata, "test"}]}]}} -\end{verbatim} - - - -\section{Module \texttt{xml}} -\label{sec:xmlmod} - -\begin{description} -\item{\verb|element_to_string(El) -> string()|} -\begin{verbatim} -El = XMLElement -\end{verbatim} - Returns string representation of XML stanza \texttt{El}. - -\item{\verb|crypt(S) -> string()|} -\begin{verbatim} -S = string() -\end{verbatim} - Returns string which correspond to \texttt{S} with encoded XML special - characters. - -\item{\verb|remove_cdata(ECList) -> EList|} -\begin{verbatim} -ECList = [ElementOrCDATA] -EList = [XMLElement] -\end{verbatim} - \texttt{EList} is a list of all non-CDATA elements of ECList. - - - -\item{\verb|get_path_s(El, Path) -> Res|} -\begin{verbatim} -El = XMLElement -Path = [PathItem] -PathItem = PathElem | PathAttr | PathCDATA -PathElem = {elem, Name} -PathAttr = {attr, Name} -PathCDATA = cdata -Name = string() -Res = string() | XMLElement -\end{verbatim} - If \texttt{Path} is empty, then returns \texttt{El}. Else sequentially - consider elements of \texttt{Path}. Each element is one of: - \begin{description} - \item{\verb|{elem, Name}|} \texttt{Name} is name of subelement of - \texttt{El}, if such element exists, then this element considered in - following steps, else returns empty string. - \item{\verb|{attr, Name}|} If \texttt{El} have attribute \texttt{Name}, then - returns value of this attribute, else returns empty string. - \item{\verb|cdata|} Returns CDATA of \texttt{El}. - \end{description} - -\item{TODO:} -\begin{verbatim} - get_cdata/1, get_tag_cdata/1 - get_attr/2, get_attr_s/2 - get_tag_attr/2, get_tag_attr_s/2 - get_subtag/2 -\end{verbatim} -\end{description} - - -\section{Module \texttt{xml\_stream}} -\label{sec:xmlstreammod} - -\begin{description} -\item{\verb!parse_element(Str) -> XMLElement | {error, Err}!} -\begin{verbatim} -Str = string() -Err = term() -\end{verbatim} - Parses \texttt{Str} using XML parser, returns either parsed element or error - tuple. -\end{description} - - -\section{Modules} -\label{sec:emods} - - -%\subsection{gen\_mod behaviour} -%\label{sec:genmod} - -%TBD - -\subsection{Module gen\_iq\_handler} -\label{sec:geniqhandl} - -The module \verb|gen_iq_handler| allows to easily write handlers for IQ packets -of particular XML namespaces that addressed to server or to users bare JIDs. - -In this module the following functions are defined: -\begin{description} -\item{\verb|add_iq_handler(Component, Host, NS, Module, Function, Type)|} -\begin{verbatim} -Component = Module = Function = atom() -Host = NS = string() -Type = no_queue | one_queue | parallel -\end{verbatim} - Registers function \verb|Module:Function| as handler for IQ packets on - virtual host \verb|Host| that contain child of namespace \verb|NS| in - \verb|Component|. Queueing discipline is \verb|Type|. There are at least - two components defined: - \begin{description} - \item{\verb|ejabberd_local|} Handles packets that addressed to server JID; - \item{\verb|ejabberd_sm|} Handles packets that addressed to users bare JIDs. - \end{description} -\item{\verb|remove_iq_handler(Component, Host, NS)|} -\begin{verbatim} -Component = atom() -Host = NS = string() -\end{verbatim} - Removes IQ handler on virtual host \verb|Host| for namespace \verb|NS| from - \verb|Component|. -\end{description} - -Handler function must have the following type: -\begin{description} -\item{\verb|Module:Function(From, To, IQ)|} -\begin{verbatim} -From = To = jid() -\end{verbatim} -\end{description} - - - -\begin{verbatim} --module(mod_cputime). - --behaviour(gen_mod). - --export([start/2, - stop/1, - process_local_iq/3]). - --include("ejabberd.hrl"). --include("jlib.hrl"). - --define(NS_CPUTIME, "ejabberd:cputime"). - -start(Host, Opts) -> - IQDisc = gen_mod:get_opt(iqdisc, Opts, one_queue), - gen_iq_handler:add_iq_handler(ejabberd_local, Host, ?NS_CPUTIME, - ?MODULE, process_local_iq, IQDisc). - -stop(Host) -> - gen_iq_handler:remove_iq_handler(ejabberd_local, Host, ?NS_CPUTIME). - -process_local_iq(From, To, {iq, ID, Type, XMLNS, SubEl}) -> - case Type of - set -> - {iq, ID, error, XMLNS, - [SubEl, ?ERR_NOT_ALLOWED]}; - get -> - CPUTime = element(1, erlang:statistics(runtime))/1000, - SCPUTime = lists:flatten(io_lib:format("~.3f", CPUTime)), - {iq, ID, result, XMLNS, - [{xmlelement, "query", - [{"xmlns", ?NS_CPUTIME}], - [{xmlelement, "cputime", [], [{xmlcdata, SCPUTime}]}]}]} - end. -\end{verbatim} - - -\subsection{Services} -\label{sec:services} - -%TBD - - -%TODO: use \verb|proc_lib| -\begin{verbatim} --module(mod_echo). - --behaviour(gen_mod). - --export([start/2, init/1, stop/1]). - --include("ejabberd.hrl"). --include("jlib.hrl"). - -start(Host, Opts) -> - MyHost = gen_mod:get_opt(host, Opts, "echo." ++ Host), - register(gen_mod:get_module_proc(Host, ?PROCNAME), - spawn(?MODULE, init, [MyHost])). - -init(Host) -> - ejabberd_router:register_local_route(Host), - loop(Host). - -loop(Host) -> - receive - {route, From, To, Packet} -> - ejabberd_router:route(To, From, Packet), - loop(Host); - stop -> - ejabberd_router:unregister_route(Host), - ok; - _ -> - loop(Host) - end. - -stop(Host) -> - Proc = gen_mod:get_module_proc(Host, ?PROCNAME), - Proc ! stop, - {wait, Proc}. -\end{verbatim} - - - -\end{document} diff --git a/ejabberd-1.1.2/doc/disco.png b/ejabberd-1.1.2/doc/disco.png deleted file mode 100644 index 6e6d2a702..000000000 Binary files a/ejabberd-1.1.2/doc/disco.png and /dev/null differ diff --git a/ejabberd-1.1.2/doc/discorus.png b/ejabberd-1.1.2/doc/discorus.png deleted file mode 100644 index 982f88182..000000000 Binary files a/ejabberd-1.1.2/doc/discorus.png and /dev/null differ diff --git a/ejabberd-1.1.2/doc/features.html b/ejabberd-1.1.2/doc/features.html deleted file mode 100644 index 0904a2969..000000000 --- a/ejabberd-1.1.2/doc/features.html +++ /dev/null @@ -1,163 +0,0 @@ - - - - - -Ejabberd 1.1.2 Feature Sheet - - - - - - - - - - - - - -
-
- - - - -
-

Ejabberd 1.1.2 Feature Sheet

-

Sander Devrieze
-mailto:s.devrieze@pandora.be
-xmpp:sander@devrieze.dyndns.org


-
-
- - logo.png - - -
-
- -
-
I can thoroughly recommend ejabberd for ease of setup – - Kevin Smith, Current maintainer of the Psi project
- - -

Introduction

- - -
I just tried out ejabberd and was impressed both by ejabberd itself and the language it is written in, Erlang. — -Joeri
-ejabberd is a free and open source instant messaging server written in Erlang.
-
-ejabberd is cross-platform, distributed, fault-tolerant, and based on open standards to achieve real-time communication.
-
-ejabberd is designed to be a rock-solid and feature rich XMPP server.
-
-ejabberd is suitable for small deployments, whether they need to be scalable or not, as well as extremely big deployments.
-
- - -

Key Features

- - - -
Erlang seems to be tailor-made for writing stable, robust servers. — -Peter Saint-André, Executive Director of the Jabber Software Foundation
-ejabberd is: -
  • -Cross-platform: ejabberd runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.
    -
    -
  • Distributed: You can run ejabberd on a cluster of machines and all of them will serve the same Jabber domain(s). When you need more capacity you can simply add a new cheap node to your cluster. Accordingly, you do not need to buy an expensive high-end machine to support tens of thousands concurrent users.
    -
    -
  • Fault-tolerant: You can deploy an ejabberd cluster so that all the information required for a properly working service will be replicated permanently on all nodes. This means that if one of the nodes crashes, the others will continue working without disruption. In addition, nodes also can be added or replaced `on the fly'.
    -
    -
  • Administrator Friendly: ejabberd is built on top of the Open Source Erlang. As a result you do not need to install an external database, an external web server, amongst others because everything is already included, and ready to run out of the box. Other administrator benefits include: -
    • -Comprehensive documentation. -
    • Straightforward installers for Linux, Mac OS X, and Windows.improved -
    • Web interface for administration tasks. -
    • Shared Roster Groups. -
    • Command line administration tool.improved -
    • Can integrate with existing authentication mechanisms. -
    • Capability to send announce messages. -

    -
    -
  • Internationalized: ejabberd leads in internationalization. Hence it is very well suited in a globalized world. Related features are: -
    • -Translated in 12 languages.improved -
    • Support for IDNA. -

    -
    -
  • Open Standards: ejabberd is the first Open Source Jabber server claiming to fully comply to the XMPP standard. -
- - -

Additional Features

- - - -
ejabberd is making inroads to solving the "buggy incomplete server" problem — -Justin Karneges, Founder of the Psi and the Delta projects
-Moreover, ejabberd comes with a wide range of other state-of-the-art features: -
  • -Modular -
    • -Load only the modules you want. -
    • Extend ejabberd with your own custom modules. -
    -
  • Security -
    • -SASL and STARTTLS for c2s and s2s connections. -
    • STARTTLS and Dialback s2s connections. -
    • Web interface accessible via HTTPS secure access. -
    -
  • Databases -
    • -Native MySQL support. -
    • Native PostgreSQL support. -
    • Mnesia. -
    • ODBC data storage support. -
    • Microsoft SQL Server support.new -
    -
  • Authentication -
    • -LDAP and ODBC.improved -
    • External Authentication script. -
    • Internal Authentication. -
    -
  • Others -
    • -Compressing XML streams with Stream Compression (JEP-0138). -
    • Interface with networks such as AIM, ICQ and MSN. -
    • Statistics via Statistics Gathering (JEP-0039). -
    • IPv6 support both for c2s and s2s connections. -
    • Multi-User Chat module with logging.improved -
    • Users Directory based on users vCards. -
    • Publish-Subscribe component. -
    • Support for virtual hosting. -
    • HTTP Polling service. -
    • IRC transport. -
    -
- - - -
This document was translated from LATEX by -HEVEA.
- diff --git a/ejabberd-1.1.2/doc/features.tex b/ejabberd-1.1.2/doc/features.tex deleted file mode 100644 index f5579cf42..000000000 --- a/ejabberd-1.1.2/doc/features.tex +++ /dev/null @@ -1,136 +0,0 @@ -\documentclass[a4paper,10pt]{article} - -%% Packages -\usepackage{epsfig} -\usepackage{fancyhdr} -\usepackage{graphics} -\usepackage{hevea} -\usepackage[pdftex,colorlinks,unicode,urlcolor=blue,linkcolor=blue,pdftitle=Ejabberd\ - Feature\ Sheet,pdfauthor=Sander\ - Devrieze,pdfsubject=ejabberd,pdfkeywords=ejabberd]{hyperref} -\usepackage{verbatim} -\usepackage{color} - -%% Index -% Remove the index anchors from the HTML version to save size and bandwith. -\newcommand{\ind}[1]{\begin{latexonly}\index{#1}\end{latexonly}} - -%% Images -\newcommand{\logoscale}{0.7} -\newcommand{\imgscale}{0.58} -\newcommand{\insimg}[1]{\insscaleimg{\imgscale}{#1}} -\newcommand{\insscaleimg}[2]{ - \imgsrc{#2}{} - \begin{latexonly} - \scalebox{#1}{\includegraphics{#2}} - \end{latexonly} -} - -%% Various -\newcommand{\bracehack}{\def\{{\char"7B}\def\}{\char"7D}} -\newcommand{\titem}[1]{\item[\bracehack\texttt{#1}]} -\newcommand{\ns}[1]{\texttt{#1}} -\newcommand{\jid}[1]{\texttt{#1}} -\newcommand{\option}[1]{\texttt{#1}} -\newcommand{\poption}[1]{{\bracehack\texttt{#1}}} -\newcommand{\node}[1]{\texttt{#1}} -\newcommand{\term}[1]{\texttt{#1}} -\newcommand{\shell}[1]{\texttt{#1}} -\newcommand{\ejabberd}{\texttt{ejabberd}} -\newcommand{\Jabber}{Jabber} - -%% Title page -\include{version} -\title{Ejabberd \version\ Feature Sheet} -\author{Sander Devrieze \\ - \ahrefurl{mailto:s.devrieze@pandora.be} \\ - \ahrefurl{xmpp:sander@devrieze.dyndns.org}} - -% Options -\newcommand{\marking}[1]{\textbf{\begin{large}\textcolor{ejblue}{#1}\end{large}}} % Marking enabled -\newcommand{\quoting}[2][yozhik]{\begin{quotation}\textcolor{#1}{\textit{#2}}\end{quotation}} % Quotes enabled -\newcommand{\new}{\marginpar{\textcolor{red}{\textsc{new}}}} % Highlight new features -\newcommand{\improved}{\marginpar{\textcolor{orange}{\textsc{improved}}}} % Highlight improved features -\setcounter{secnumdepth}{-1} % Disable section numbering - -%% To by-pass errors in the HTML version. -\newstyle{SPAN}{width:20\%; float:right; text-align:left; margin-left:auto;} -\definecolor{orange} {cmyk}{0.000,0.333,1.000,0.000} - -%% Footnotes -\begin{latexonly} -\global\parskip=9pt plus 3pt minus 1pt -\global\parindent=0pt -\gdef\ahrefurl#1{\href{#1}{\texttt{#1}}} -\gdef\footahref#1#2{#2\footnote{\href{#1}{\texttt{#1}}}} -\end{latexonly} -\newcommand{\tjepref}[2]{\footahref{http://www.jabber.org/jeps/jep-#1.html}{#2}} -\newcommand{\jepref}[1]{\tjepref{#1}{JEP-#1}} - -%% Fancy header -\fancyhf{} -\pagestyle{fancy} -\rhead{\textcolor{ejblue}{The Expandable Jabber Daemon.}} -\renewcommand{\headrule}{{\color{ejblue}% -\hrule width\headwidth height\headrulewidth \vskip-\headrulewidth}} -\lhead{\setlength{\unitlength}{-6mm} - \begin{picture}(0,0) - \put(5.8,3.25){\includegraphics[width=1.3\textwidth]{yozhikheader.png}} - \end{picture}} - -% Official ejabberd colours -\definecolor{ejblue} {cmyk}{1.000,0.831,0.000,0.537} %RGB: 0,0,118 HTML: 000076 -\definecolor{ejgreenyellow}{cmyk}{0.079,0.000,0.275,0.102} %RGB: 209,229,159 HTML: d1e59f -\definecolor{ejgreendark} {cmyk}{0.131,0.000,0.146,0.220} %RGB: 166,199,162 HTML: a6c7a2 -\definecolor{ejgreen} {cmyk}{0.077,0.000,0.081,0.078} %RGB: 216,236,215 HTML: d8ecd7 -\definecolor{ejgreenwhite} {cmyk}{0.044,0.000,0.048,0.020} %RGB: 239,250,238 HTML: effaee -\definecolor{yozhik} {cmyk}{0.000,0.837,1.000,0.424} %RGB: 147,0,0 HTML: 930000 - -\begin{document} - -\label{titlepage} -\begin{titlepage} - \maketitle{} - - \thispagestyle{empty} - - \begin{center} - {\insscaleimg{\logoscale}{logo.png} - \par - } - \end{center} - \quoting{I can thoroughly recommend ejabberd for ease of setup -- - Kevin Smith, Current maintainer of the Psi project} - -\end{titlepage} - -\newpage -% Set the page counter to 2 so that the titlepage and the second page do not -% have the same page number. This fixes the PDFLaTeX warning "destination with -% the same identifier". -\begin{latexonly} -\setcounter{page}{2} -\pagecolor{ejgreenwhite} -\end{latexonly} - -% Input introduction.tex -\input{introduction} - -\end{document} - -%% TODO -% * illustrations (e.g. screenshot from web interface) -% * commented parts -% * slides, guide and html version -% * cleaning and improving LaTeX code -% * key features: something like this (shorter)? (more focussed on Erlang now): "To reach the goal of high -% availability, performance and clustering, ejabberd is written in Erlang, a programming language perfectly -% suited for this. Besides that, some parts are written in C to also incude the advantages of this language. In -% short, ejabberd is a perfect mix of mainly Erlang code, peppered with some C code to get the final touch!" -% -% * key features: saying that ejabberd the only XMPP server is that can do real clustering: -% http://www.jivesoftware.org/forums/thread.jspa?threadID=14602 -% "What I find interesting is that *no* XMPP servers truly provide clustering. This includes all the commercial -% servers. The one partial exception appears to be ejabberd, which can cluster certain data such as sessions, -% but not all services such as MUC." -% * try it today: links to migration tutorials \ No newline at end of file diff --git a/ejabberd-1.1.2/doc/flow.dot b/ejabberd-1.1.2/doc/flow.dot deleted file mode 100644 index b1a8affb8..000000000 --- a/ejabberd-1.1.2/doc/flow.dot +++ /dev/null @@ -1,105 +0,0 @@ -digraph messages { - //concentrate=true; - subgraph clusterclients { - client1 [shape = box]; - client2 [shape = box]; - client3 [shape = box]; - - style = dashed; - label = "Clients"; - } - - subgraph clusternode1 { - subgraph clusterc2s1 { - c2s11; - c2s12; - style = invis; - } - subgraph clusterservices1 { - service11; - service12; - service13; - style = invis; - } - //subgraph clusters2s1 { - //s2s11; - //s2s12; - //style = invis; - //} - c2s11 -> auth1; - c2s12 -> auth1; - auth1 -> c2s11; - auth1 -> c2s12; - c2s11 -> sm1; - c2s11 -> router1; - c2s12 -> sm1; - c2s12 -> router1; - router1 -> local1; - router1 -> service11; - router1 -> service12; - router1 -> service13; - router1 -> s2s11; - router1 -> s2s12; - service11 -> router1; - service12 -> router1; - service13 -> router1; - s2s11 -> router1; - s2s12 -> router1; - local1 -> sm1; - sm1 -> c2s11; - sm1 -> c2s12; - - style = dashed; - label = "Node1"; - } - - subgraph clusternode2 { - c2s2 -> auth2; - auth2 -> c2s2; - c2s2 -> sm2; - c2s2 -> router2; - router2 -> local2; - router2 -> service21; - router2 -> s2s21; - service21 -> router2; - s2s21 -> router2; - local2 -> sm2; - sm2 -> c2s2; - - style = dashed; - label = "Node2"; - } - - - - subgraph clusterservers { - server1 [shape = box]; - server2 [shape = box]; - server3 [shape = box]; - - style = dashed; - label = "Servers"; - } - - - client1 -> c2s11; - client2 -> c2s12; - client3 -> c2s2; - c2s11 -> client1 [constraint=false]; - c2s12 -> client2 [constraint=false]; - c2s2 -> client3 [constraint=false]; - - s2s11 -> server1 [minlen = 2]; - s2s12 -> server2 [minlen = 2]; - s2s21 -> server3 [minlen = 2]; - server1 -> s2s11 [constraint=false]; - server2 -> s2s12 [constraint=false]; - server3 -> s2s21 [constraint=false]; - - router1 -> router2; - router2 -> router1; - sm1 -> sm2; - sm2 -> sm1; - - label = "Data Flows"; -} diff --git a/ejabberd-1.1.2/doc/guide.html b/ejabberd-1.1.2/doc/guide.html deleted file mode 100644 index 3c03f28ce..000000000 --- a/ejabberd-1.1.2/doc/guide.html +++ /dev/null @@ -1,4160 +0,0 @@ - - - - - -Ejabberd 1.1.2 Installation and Operation Guide - - - - - - - - - - - - - -
-
- - - - -
-

Ejabberd 1.1.2 Installation and Operation Guide

-

Alexey Shchepin
-mailto:alexey@sevcom.net
-xmpp:aleksey@jabber.ru


-
-
- - logo.png - - -
-
- -
-
I can thoroughly recommend ejabberd for ease of setup — - Kevin Smith, Current maintainer of the Psi project
- - -

Contents

- - - - - -

1  Introduction

- - - -ejabberd is a free and open source instant messaging server written in Erlang.
-
-ejabberd is cross-platform, distributed, fault-tolerant, and based on open standards to achieve real-time communication.
-
-ejabberd is designed to be a rock-solid and feature rich XMPP server.
-
-ejabberd is suitable for small deployments, whether they need to be scalable or not, as well as extremely big deployments.
-
- - -

1.1  Key Features

- - - -ejabberd is: -
  • -Cross-platform: ejabberd runs under Microsoft Windows and Unix derived systems such as Linux, FreeBSD and NetBSD.
    -
    -
  • Distributed: You can run ejabberd on a cluster of machines and all of them will serve the same Jabber domain(s). When you need more capacity you can simply add a new cheap node to your cluster. Accordingly, you do not need to buy an expensive high-end machine to support tens of thousands concurrent users.
    -
    -
  • Fault-tolerant: You can deploy an ejabberd cluster so that all the information required for a properly working service will be replicated permanently on all nodes. This means that if one of the nodes crashes, the others will continue working without disruption. In addition, nodes also can be added or replaced `on the fly'.
    -
    -
  • Administrator Friendly: ejabberd is built on top of the Open Source Erlang. As a result you do not need to install an external database, an external web server, amongst others because everything is already included, and ready to run out of the box. Other administrator benefits include: -
    • -Comprehensive documentation. -
    • Straightforward installers for Linux, Mac OS X, and Windows.improved -
    • Web interface for administration tasks. -
    • Shared Roster Groups. -
    • Command line administration tool.improved -
    • Can integrate with existing authentication mechanisms. -
    • Capability to send announce messages. -

    -
    -
  • Internationalized: ejabberd leads in internationalization. Hence it is very well suited in a globalized world. Related features are: -
    • -Translated in 12 languages.improved -
    • Support for IDNA. -

    -
    -
  • Open Standards: ejabberd is the first Open Source Jabber server claiming to fully comply to the XMPP standard. -
- - -

1.2  Additional Features

- - - -Moreover, ejabberd comes with a wide range of other state-of-the-art features: -
  • -Modular -
    • -Load only the modules you want. -
    • Extend ejabberd with your own custom modules. -
    -
  • Security -
    • -SASL and STARTTLS for c2s and s2s connections. -
    • STARTTLS and Dialback s2s connections. -
    • Web interface accessible via HTTPS secure access. -
    -
  • Databases -
    • -Native MySQL support. -
    • Native PostgreSQL support. -
    • Mnesia. -
    • ODBC data storage support. -
    • Microsoft SQL Server support.new -
    -
  • Authentication -
    • -LDAP and ODBC.improved -
    • External Authentication script. -
    • Internal Authentication. -
    -
  • Others -
    • -Compressing XML streams with Stream Compression (JEP-0138). -
    • Interface with networks such as AIM, ICQ and MSN. -
    • Statistics via Statistics Gathering (JEP-0039). -
    • IPv6 support both for c2s and s2s connections. -
    • Multi-User Chat module with logging.improved -
    • Users Directory based on users vCards. -
    • Publish-Subscribe component. -
    • Support for virtual hosting. -
    • HTTP Polling service. -
    • IRC transport. -
    -
- - -

2  Installation from Source

- - - - - -

2.1  Installation Requirements

- - - - - -

2.1.1  `Unix-like' operating systems

- - -To compile ejabberd on a `Unix-like' operating system, you need: -
  • -GNU Make -
  • GCC -
  • libexpat 1.95 or higher -
  • Erlang/OTP R9C-2 or higher -
  • OpenSSL 0.9.6 or higher (optional) -
  • Zlib 1.2.3 or higher (optional) -
  • GNU Iconv 1.8 or higher (optional, not needed on systems with GNU libc) -
- - -

2.1.2  Windows

- - -To compile ejabberd on a Windows flavour, you need: - - - -

2.2  Obtaining ejabberd

- - - -Released versions of ejabberd can be obtained from
-http://www.process-one.net/en/projects/ejabberd/download.html.
-
- -The latest development version can be retrieved from the Subversion repository. -
-  svn co http://svn.process-one.net/ejabberd/trunk ejabberd
-
- - -

2.3  Compilation

- - - - - -

2.3.1  `Unix-like' operating systems

- - -Compile ejabberd on a `Unix-like' operating system by executing: -
-  ./configure
-  make
-  su
-  make install
-
-These commands will: -
  • -install ejabberd into the directory /var/lib/ejabberd, -
  • install the configuration file into /etc/ejabberd, -
  • create a directory called /var/log/ejabberd to store log files. -
-Note: if you want to use an external database, you need to execute the configure -script with the option(s) –enable-odbc or –enable-odbc -–enable-mssql. See section 4 for more information.
-
- - -

2.3.2  Windows

- - -
  • -Install Erlang emulator (for example, into C:\Program Files\erl5.3). -
  • Install Expat library into C:\Program Files\Expat-1.95.7 - directory.
    -
    -Copy file C:\Program Files\Expat-1.95.7\Libs\libexpat.dll - to your Windows system directory (for example, C:\WINNT or - C:\WINNT\System32) -
  • Build and install the Iconv library into the directory - C:\Program Files\iconv-1.9.1.
    -
    -Copy file C:\Program Files\iconv-1.9.1\bin\iconv.dll to your - Windows system directory (more installation instructions can be found in the - file README.woe32 in the iconv distribution).
    -
    -Note: instead of copying libexpat.dll and iconv.dll to the Windows - directory, you can add the directories - C:\Program Files\Expat-1.95.7\Libs and - C:\Program Files\iconv-1.9.1\bin to the PATH environment - variable. -
  • While in the directory ejabberd\src run: -
    -configure.bat
    -nmake -f Makefile.win32
    -
  • Edit the file ejabberd\src\ejabberd.cfg and run -
    -werl -s ejabberd -name ejabberd
    -
- - -

2.4  Starting

- - - - -Execute the following command to start ejabberd: -
-  erl -pa /var/lib/ejabberd/ebin -name ejabberd -s ejabberd
-
or -
-  erl -pa /var/lib/ejabberd/ebin -sname ejabberd -s ejabberd
-
In the latter case the Erlang node will be identified using only the first part -of the host name, i. e. other Erlang nodes outside this domain cannot contact -this node.
-
-Note that when using the above command, ejabberd will search for the -configuration file in the current directory and will use the current directory -for storing its user database and for logging.
-
-To specify the path to the configuration file, the log files and the Mnesia -database directory, you may use the following command: -
-  erl -pa /var/lib/ejabberd/ebin \
-      -sname ejabberd \
-      -s ejabberd \
-      -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" \
-                log_path \"/var/log/ejabberd/ejabberd.log\" \
-      -sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} \
-      -mnesia dir \"/var/lib/ejabberd/spool\"
-
-You can find other useful options in the Erlang manual page -(erl -man erl).
-
-To use more than 1024 connections, you should set the environment variable -ERL_MAX_PORTS: -
-  export ERL_MAX_PORTS=32000
-
Note that with this value, ejabberd will use more memory (approximately 6 MB -more).
-
-To reduce memory usage, you may set the environment variable -ERL_FULLSWEEP_AFTER: -
-  export ERL_FULLSWEEP_AFTER=0
-
But in this case ejabberd can start to work slower.
-
- - -

3  Basic Configuration

- - - -The configuration file will be loaded the first time you start ejabberd. The -content from this file will be parsed and stored in a database. Subsequently the -configuration will be loaded from the database and any commands in the -configuration file are appended to the entries in the database. The -configuration file contains a sequence of Erlang terms. Lines beginning with a -`%' sign are ignored. Each term is a tuple of which the first element is -the name of an option, and any further elements are that option's values. If the -configuration file do not contain for instance the `hosts' option, the old -host name(s) stored in the database will be used.
-
-You can override the old values stored in the database by adding next lines to -the configuration file: -
-  override_global.
-  override_local.
-  override_acls.
-
With these lines the old global options, local options and ACLs will be removed -before new ones are added.
-
- - -

3.1  Host Names

- - - -The option hosts defines a list containing one or more domains that -ejabberd will serve.
-
-Examples: -
  • -Serving one domain: -
    -  {hosts, ["example.org"]}.
    -
  • Serving one domain, and backwards compatible with older ejabberd - versions: -
    -  {host, "example.org"}.
    -
  • Serving two domains: -
    -  {hosts, ["example.net", "example.com"]}.
    -
- - -

3.2  Virtual Hosting

- - - -Options can be defined separately for every virtual host using the -host_config option. It has the following -syntax: -
-  {host_config, <hostname>, [<option>, <option>, ...]}.
-
-Examples: -
  • -Domain example.net is using the internal authentication method while - domain example.com is using the LDAP server running on the - domain localhost to perform authentication: -
    -{host_config, "example.net", [{auth_method, internal}]}.
    -
    -{host_config, "example.com", [{auth_method, ldap},
    -                              {ldap_servers, ["localhost"]},
    -                              {ldap_uidattr, "uid"},
    -                              {ldap_rootdn, "dc=localdomain"},
    -                              {ldap_rootdn, "dc=example,dc=com"},
    -                              {ldap_password, ""}]}.
    -
  • Domain example.net is using ODBC to perform authentication - while domain example.com is using the LDAP servers running on the domains - localhost and otherhost: -
    -{host_config, "example.net", [{auth_method, odbc},
    -                              {odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}]}.
    -
    -{host_config, "example.com", [{auth_method, ldap},
    -                              {ldap_servers, ["localhost", "otherhost"]},
    -                              {ldap_uidattr, "uid"},
    -                              {ldap_rootdn, "dc=localdomain"},
    -                              {ldap_rootdn, "dc=example,dc=com"},
    -                              {ldap_password, ""}]}.
    -
- - -

3.3  Listened Sockets

- - - -The option listen defines for which addresses and ports ejabberd -will listen and what services will be run on them. Each element of the list is a -tuple with the following elements: -
  • -Port number. -
  • Module that serves this port. -
  • Options to this module. -
- -Currently next modules are implemented: -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ejabberd_c2sDescriptionHandles c2s connections.
 Optionsaccess, certfile, inet6, - ip, max_stanza_size, shaper, ssl, - tls, starttls, starttls_required, - zlib
ejabberd_s2s_inDescriptionHandles incoming s2s - connections.
 Optionsinet6, ip, - max_stanza_size
ejabberd_serviceDescriptionInteracts with external - components (*).
 Optionsaccess, hosts, inet6, - ip, shaper
ejabberd_httpDescriptionHandles incoming HTTP - connections.
 Optionscertfile, http_poll, - inet6, ip, tls, web_admin
-

-(*) The mechanism for external components is defined in Jabber Component Protocol (JEP-0114).
-
-The following options are available: -
- {access, <access rule>}
This option defines - access to the port. The default value is all. -
{certfile, Path}
Path to a file containing the SSL certificate. -
{hosts, [Hostnames], [HostOptions]}
This option - defines one or more hostnames of connected services and enables you to - specify additional options including {password, Secret}. -
http_poll
- This option enables HTTP Polling (JEP-0025) support. HTTP Polling - enables access via HTTP requests to ejabberd from behind firewalls which - do not allow outgoing sockets on port 5222.
-
-If HTTP Polling is enabled, it will be available at - http://server:port/http-poll/. Be aware that support for HTTP Polling - is also needed in the Jabber client. Remark also that HTTP Polling can be - interesting to host a web-based Jabber client such as - JWChat (there is a tutorial to - install JWChat with - instructions for ejabberd). -
inet6
Set up the socket for IPv6. -
{ip, IPAddress}
This option specifies which network - interface to listen for. For example {ip, {192, 168, 1, 1}}. -
{max_stanza_size, Size}
This - option specifies an approximate maximum size in bytes of XML stanzas. - Approximate, because it is calculated with the precision of one block of - readed data. For example {max_stanza_size, 65536}. The default - value is infinity. -
{shaper, <access rule>}
This option defines a - shaper for the port (see section 3.6). The default value - is none. -
ssl
This option specifies that traffic on - the port will be encrypted using SSL. You should also set the - certfile option. It is recommended to use the tls option - instead. -
starttls
This option - specifies that STARTTLS encryption is available on connections to the port. - You should also set the certfile option. -
starttls_required
This option - specifies that STARTTLS encryption is required on connections to the port. - No unencrypted connections will be allowed. You should also set the - certfile option. -
tls
This option specifies that traffic on - the port will be encrypted using SSL immediately after connecting. You - should also set the certfile option. -
zlib
This - option specifies that Zlib stream compression (as defined in JEP-0138) - is available on connections to the port. Client connections cannot use - stream compression and stream encryption simultaneously. Hence, if you - specify both tls (or ssl) and zlib, the latter - option will not affect connections (there will be no stream compression). -
web_admin
This option - enables the web interface for ejabberd administration which is available - at http://server:port/admin/. Login and password are the username and - password of one of the registered users who are granted access by the - `configure' access rule. -
-In addition, the following options are available for s2s connections: -
- {s2s_use_starttls, true|false}
- This option defines whether to - use STARTTLS for s2s connections. -
{s2s_certfile, Path}
Path to a - file containing a SSL certificate. -
{domain_certfile, Domain, Path}
Path - to the file containing the SSL certificate for the specified domain. -
-For instance, the following configuration defines that: -
  • -c2s connections are listened for on port 5222 and 5223 (SSL) and denied - for the user called `bad'. -
  • s2s connections are listened for on port 5269 with STARTTLS for secured - traffic enabled. -
  • Port 5280 is serving the web interface and the HTTP Polling service. Note - that it is also possible to serve them on different ports. The second - example in section 7.1 shows how exactly this can be done. -
  • All users except for the administrators have a traffic of limit - 1,000 Bytes/second -
  • The - AIM transport - aim.example.org is connected to port 5233 with password - `aimsecret'. -
  • The ICQ transport JIT (icq.example.org and - sms.example.org) is connected to port 5234 with password - `jitsecret'. -
  • The - MSN transport - msn.example.org is connected to port 5235 with password - `msnsecret'. -
  • The - Yahoo! transport - yahoo.example.org is connected to port 5236 with password - `yahoosecret'. -
  • The Gadu-Gadu transport gg.example.org is - connected to port 5237 with password `ggsecret'. -
  • The - Jabber Mail Component - jmc.example.org is connected to port 5238 with password - `jmcsecret'. -
-
-  {acl, blocked, {user, "bad"}}.
-  {access, c2s, [{deny, blocked},
-                 {allow, all}]}.
-  {shaper, normal, {maxrate, 1000}}.
-  {access, c2s_shaper, [{none, admin},
-                        {normal, all}]}.
-  {listen,
-   [{5222, ejabberd_c2s,     [{access, c2s}, {shaper, c2s_shaper}]},
-    {5223, ejabberd_c2s,     [{access, c2s},
-                              ssl, {certfile, "/path/to/ssl.pem"}]},
-    {5269, ejabberd_s2s_in,  []},
-    {5280, ejabberd_http,    [http_poll, web_admin]},
-    {5233, ejabberd_service, [{host, "aim.example.org",
-                               [{password, "aimsecret"}]}]},
-    {5234, ejabberd_service, [{hosts, ["icq.example.org", "sms.example.org"],
-                               [{password, "jitsecret"}]}]},
-    {5235, ejabberd_service, [{host, "msn.example.org",
-                               [{password, "msnsecret"}]}]},
-    {5236, ejabberd_service, [{host, "yahoo.example.org",
-                               [{password, "yahoosecret"}]}]},
-    {5237, ejabberd_service, [{host, "gg.example.org",
-                               [{password, "ggsecret"}]}]},
-    {5238, ejabberd_service, [{host, "jmc.example.org",
-                               [{password, "jmcsecret"}]}]}
-   ]
-  }.
-  {s2s_use_starttls, true}.
-  {s2s_certfile, "/path/to/ssl.pem"}.
-
Note, that for jabberd 1.4- or WPJabber-based -services you have to make the transports log and do XDB by themselves: -
-  <!--
-     You have to add elogger and rlogger entries here when using ejabberd.
-     In this case the transport will do the logging.
-  -->
-
-  <log id='logger'>
-    <host/>
-    <logtype/>
-    <format>%d: [%t] (%h): %s</format>
-    <file>/var/log/jabber/service.log</file>
-  </log>
-
-  <!--
-     Some Jabber server implementations do not provide
-     XDB services (for example, jabberd2 and ejabberd).
-     xdb_file.so is loaded in to handle all XDB requests.
-  -->
-
-  <xdb id="xdb">
-    <host/>
-    <load>
-      <!-- this is a lib of wpjabber or jabberd -->
-      <xdb_file>/usr/lib/jabber/xdb_file.so</xdb_file>
-      </load>
-    <xdb_file xmlns="jabber:config:xdb_file">
-      <spool><jabberd:cmdline flag='s'>/var/spool/jabber</jabberd:cmdline></spool>
-    </xdb_file>
-  </xdb>
-
- - -

3.4  Authentication

- - - -The option auth_method defines the authentication method that is used -for user authentication: -
-  {auth_method, [<method>]}.
-
-The following authentication methods are supported by ejabberd: - - - -

3.4.1  Internal

- - - -ejabberd uses its internal Mnesia database as the default authentication method. -
  • -auth_method: The value internal will enable the internal - authentication method. -
-Examples: -
  • -To use internal authentication on example.org and LDAP - authentication on example.net: -
    -{host_config, "example.org", [{auth_method, [internal]}]}.
    -{host_config, "example.net", [{auth_method, [ldap]}]}.
    -
  • To use internal authentication on all virtual hosts: -
    -{auth_method, internal}.
    -
- - -

3.4.2  SASL Anonymous and Anonymous Login

- - - -The anonymous authentication method can be configured with the following -options. Remember that you can use the host_config option to set virtual -host specific options (see section 3.2). Note that there also -is a detailed tutorial regarding SASL -Anonymous and anonymous login configuration. -
  • -auth_method: The value anonymous will enable the anonymous - authentication method. -
  • allow_multiple_connections: This value for this option can be - either true or false and is only used when the anonymous mode is - enabled. Setting it to true means that the same username can be taken - multiple times in anonymous login mode if different resource are used to - connect. This option is only useful in very special occasions. The default - value is false. -
  • anonymous_protocol: This option can take three values: - sasl_anon, login_anon or both. sasl_anon means - that the SASL Anonymous method will be used. login_anon means that the - anonymous login method will be used. both means that SASL Anonymous and - login anonymous are both enabled. -
-Those options are defined for each virtual host with the host_config -parameter (see section 3.2).
-
-Examples: -
  • -To enable anonymous login on all virtual hosts: -
    -{auth_method, [anonymous]}.
    -{anonymous_protocol, login_anon}.
    -  
  • Similar as previous example, but limited to public.example.org: -
    -{host_config, "public.example.org", [{auth_method, [anonymous]},
    -                                     {anonymous_protocol, login_anon}]}.
    -
  • To enable anonymous login and internal authentication on a virtual host: -
    -{host_config, "public.example.org", [{auth_method, [anonymous,internal]},
    -                                     {anonymous_protocol, login_anon}]}.
    -
  • To enable SASL Anonymous on a virtual host: -
    -{host_config, "public.example.org", [{auth_method, [anonymous]},
    -                                     {anonymous_protocol, sasl_anon}]}.
    -
  • To enable SASL Anonymous and anonymous login on a virtual host: -
    -{host_config, "public.example.org", [{auth_method, [anonymous]},
    -                                     {anonymous_protocol, both}]}.
    -
  • To enable SASL Anonymous, anonymous login, and internal authentication on -a virtual host: -
    -{host_config, "public.example.org", [{auth_method, [anonymous,internal]},
    -                                     {anonymous_protocol, both}]}.
    -
- - -

3.5  Access Rules

- - - -Access control in ejabberd is performed via Access Control Lists (ACLs). The -declarations of ACLs in the configuration file have the following syntax: -
-  {acl, <aclname>, {<acltype>, ...}}.
-
-<acltype> can be one of the following: -
-all
Matches all JIDs. Example: -
-{acl, all, all}.
-
{user, <username>}
Matches the user with the name - <username> at the first virtual host. Example: -
-{acl, admin, {user, "yozhik"}}.
-
{user, <username>, <server>}
Matches the user with the JID - <username>@<server> and any resource. Example: -
-{acl, admin, {user, "yozhik", "example.org"}}.
-
{server, <server>}
Matches any JID from server - <server>. Example: -
-{acl, exampleorg, {server, "example.org"}}.
-
{user_regexp, <regexp>}
Matches any local user with a name that - matches <regexp> at the first virtual host. Example: -
-{acl, tests, {user, "^test[0-9]*$"}}.
-
{user_regexp, <regexp>, <server>}
Matches any user with a name - that matches <regexp> at server <server>. Example: -
-{acl, tests, {user, "^test", "example.org"}}.
-
{server_regexp, <regexp>}
Matches any JID from the server that - matches <regexp>. Example: -
-{acl, icq, {server, "^icq\\."}}.
-
{node_regexp, <user_regexp>, <server_regexp>}
Matches any user - with a name that matches <user_regexp> at any server that matches - <server_regexp>. Example: -
-{acl, yohzik, {node_regexp, "^yohzik$", "^example.(com|org)$"}}.
-
{user_glob, <glob>}
-
{user_glob, <glob>, <server>}
-
{server_glob, <glob>}
-
{node_glob, <user_glob>, <server_glob>}
This is the same as - above. However, it uses shell glob patterns instead of regexp. These patterns - can have the following special characters: -
- *
matches any string including the null string. -
?
matches any single character. -
[...]
matches any of the enclosed characters. Character - ranges are specified by a pair of characters separated by a `-'. - If the first character after `[' is a `!', any - character not enclosed is matched. -
-
-The following ACLs are pre-defined: -
-all
Matches any JID. -
none
Matches no JID. -
-An entry allowing or denying access to different services looks similar to -this: -
-  {access, <accessname>, [{allow, <aclname>},
-                          {deny, <aclname>},
-                          ...
-                         ]}.
-
When a JID is checked to have access to <accessname>, the server -sequentially checks if that JID mathes any of the ACLs that are named in the -second elements of the tuples in the list. If it matches, the first element of -the first matched tuple is returned, otherwise the value `deny' is -returned.
-
-Example: -
-  {access, configure, [{allow, admin}]}.
-  {access, something, [{deny, badmans},
-                       {allow, all}]}.
-
-The following access rules are pre-defined: -
-all
Always returns the value `allow'. -
none
Always returns the value `deny'. -
- - -

3.6  Shapers

- - - -Shapers enable you to limit connection traffic. The syntax of -shapers is like this: -
-  {shaper, <shapername>, <kind>}.
-
Currently only one kind of shaper called maxrate is available. It has the -following syntax: -
-  {maxrate, <rate>}
-
where <rate> stands for the maximum allowed incomig rate in bytes per -second.
-
-Examples: -
  • -To define a shaper named `normal' with traffic speed limited to -1,000 bytes/second: -
    -  {shaper, normal, {maxrate, 1000}}.
    -
  • To define a shaper named `fast' with traffic speed limited to -50,000 bytes/second: -
    -  {shaper, fast, {maxrate, 50000}}.
    -
- - -

3.7  Limiting Opened Sessions

- - - -This option specifies the maximum number of sessions (authenticated -connections) per user. If a user tries to open more sessions by using different -resources, the first opened session will be disconnected. The error -session replaced will be sent to the disconnected session. The value -for this option can be either a number, or infinity. The default -value is 10.
-
-Examples: -
  • -To limit the number of sessions per user to 10 on all virtual -hosts: -
    -  {max_user_sessions, 10}.
    -
  • This option can be defined per virtual host (see -section 3.2). In next example the number of -sessions per user on the first host is six, while there is no limit on the -second host: -
    -  {host_config, "example.net", [{max_user_sessions, 6}]}.
    -  {host_config, "example.com", [{max_user_sessions, infinity}]}.
    -
- - -

3.8  Default Language

- - - -The option language defines the default language of server strings that -can be seen by Jabber clients. If a Jabber client do not support -xml:lang, the specified language is used. The default value is -en. In order to take effect there must be a translation file -<language>.msg in ejabberd's msgs directory.
-
-Examples: -
  • -To set Russian as default language: -
    -  {language, "ru"}.
    -
  • To set Spanish as default language: -
    -  {language, "es"}.
    -
- - -

4  Database Configuration

- - - - -ejabberd uses its internal Mnesia database by default. However, it is -possible to use a relational database or an LDAP server to store persistant, -long-living data. ejabberd is very flexible: you can configure different -authentication methods for different virtual hosts, you can configure different -authentication mechanisms for the same virtual host (fallback), you can set -different storage systems for modules, and so forth.
-
-The following databases are supported by ejabberd: - -The following LDAP servers are tested with ejabberd: -
  • -Active Directory - (see section 4.5.3) -
  • OpenLDAP -
  • Normally any LDAP compatible server should work; inform us about your - success with a not-listed server so that we can list it here. -
- - -

4.1  MySQL

- - - -Although this section will describe ejabberd's configuration when you want to -use the native MySQL driver, it does not describe MySQL's installation and -database creation. Check the MySQL documentation and the tutorial Using ejabberd with MySQL native driver for information regarding these topics. -Note that the tutorial contains information about ejabberd's configuration -which is duplicate to this section.
-
-Moreover, the file mysql.sql in the directory src/odbc might be interesting for -you. This file contains the ejabberd schema for MySQL. At the end of the file -you can find information to update your database schema.
-
- - -

4.1.1  Driver Compilation

- - - -You can skip this step if you installed ejabberd using a binary installer or -if the binary packages of ejabberd you are using include support for MySQL. -
  1. -First, install the Erlang - MySQL library. Make sure the compiled files are in your Erlang path; you can - put them for example in the same directory as your ejabberd .beam files. -
  2. Then, configure and install ejabberd with ODBC support enabled (this is - also needed for native MySQL support!). This can be done, by using next - commands: -
    -./configure --enable-odbc && make install
    -
- - -

4.1.2  Authentication

- - - -The option value name may be misleading, as the auth_method name is used -for access to a relational database through ODBC, as well as through the native -MySQL interface. Anyway, the first configuration step is to define the odbc -auth_method. For example: -
-{host_config, "public.example.org", [{auth_method, [odbc]}]}.
-
-The actual database access is defined in the option odbc_server. Its -value is used to define if we want to use ODBC, or one of the two native -interface available, PostgreSQL or MySQL.
-
-To use the native MySQL interface, you can pass a tuple of the following form as -parameter: -
-{mysql, "Server", "Database", "Username", "Password"}
-
-mysql is a keyword that should be kept as is. For example: -
-{odbc_server, {mysql, "localhost", "test", "root", "password"}}.
-
- - -

4.1.3  Storage

- - - -MySQL also can be used to store information into from several ejabberd -modules. See section 5.1 to see which modules have a version -with the `_odbc'. This suffix indicates that the module can be used with -relational databases like MySQL. To enable storage to your database, just make -sure that your database is running well (see previous sections), and replace the -suffix-less or ldap module variant with the odbc module variant. Keep in mind -that you cannot have several variants of the same module loaded!
-
- - -

4.2  Microsoft SQL Server

- - - -Although this section will describe ejabberd's configuration when you want to -use Microsoft SQL Server, it does not describe Microsoft SQL Server's -installation and database creation. Check the MySQL documentation and the -tutorial Using ejabberd with MySQL native driver for information regarding these topics. -Note that the tutorial contains information about ejabberd's configuration -which is duplicate to this section.
-
-Moreover, the file mssql.sql in the directory src/odbc might be interesting for -you. This file contains the ejabberd schema for Microsoft SQL Server. At the end -of the file you can find information to update your database schema.
-
- - -

4.2.1  Driver Compilation

- - - -You can skip this step if you installed ejabberd using a binary installer or -if the binary packages of ejabberd you are using include support for ODBC.
-
-If you want to use Microsoft SQL Server with ODBC, you need to configure, -compile and install ejabberd with support for ODBC and Microsoft SQL Server -enabled. This can be done, by using next commands: -
-./configure --enable-odbc --enable-mssql && make install
-
- - -

4.2.2  Authentication

- - - -The configuration of Microsoft SQL Server is the same as the configuration of -ODBC compatible serers (see section 4.4.2).
-
- - -

4.2.3  Storage

- - - -Microsoft SQL Server also can be used to store information into from several -ejabberd modules. See section 5.1 to see which modules have -a version with the `_odbc'. This suffix indicates that the module can be used -with relational databases like Microsoft SQL Server. To enable storage to your -database, just make sure that your database is running well (see previous -sections), and replace the suffix-less or ldap module variant with the odbc -module variant. Keep in mind that you cannot have several variants of the same -module loaded!
-
- - -

4.3  PostgreSQL

- - - -Although this section will describe ejabberd's configuration when you want to -use the native PostgreSQL driver, it does not describe PostgreSQL's installation -and database creation. Check the PostgreSQL documentation and the tutorial Using ejabberd with MySQL native driver for information regarding these topics. -Note that the tutorial contains information about ejabberd's configuration -which is duplicate to this section.
-
-Also the file pg.sql in the directory src/odbc might be interesting for you. -This file contains the ejabberd schema for PostgreSQL. At the end of the file -you can find information to update your database schema.
-
- - -

4.3.1  Driver Compilation

- - - -You can skip this step if you installed ejabberd using a binary installer or -if the binary packages of ejabberd you are using include support for -PostgreSQL. -
  1. -First, install the Erlang PgSQL library from - Jungerl. Make sure the compiled - files are in your Erlang path; you can put them for example in the same - directory as your ejabberd .beam files. -
  2. Then, configure, compile and install ejabberd with ODBC support enabled - (this is also needed for native PostgreSQL support!). This can be done, by - using next commands: -
    -./configure --enable-odbc && make install
    -
- - -

4.3.2  Authentication

- - - -The option value name may be misleading, as the auth_method name is used -for access to a relational database through ODBC, as well as through the native -PostgreSQL interface. Anyway, the first configuration step is to define the odbc -auth_method. For example: -
-{host_config, "public.example.org", [{auth_method, [odbc]}]}.
-
-The actual database access is defined in the option odbc_server. Its -value is used to define if we want to use ODBC, or one of the two native -interface available, PostgreSQL or MySQL.
-
-To use the native PostgreSQL interface, you can pass a tuple of the following -form as parameter: -
-{pgsql, "Server", "Database", "Username", "Password"}
-
-pgsql is a keyword that should be kept as is. For example: -
-{odbc_server, {pgsql, "localhost", "database", "ejabberd", "password"}}.
-
- - -

4.3.3  Storage

- - - -PostgreSQL also can be used to store information into from several ejabberd -modules. See section 5.1 to see which modules have a version -with the `_odbc'. This suffix indicates that the module can be used with -relational databases like PostgreSQL. To enable storage to your database, just -make sure that your database is running well (see previous sections), and -replace the suffix-less or ldap module variant with the odbc module variant. -Keep in mind that you cannot have several variants of the same module loaded!
-
- - -

4.4  ODBC Compatible

- - - -Although this section will describe ejabberd's configuration when you want to -use the ODBC driver, it does not describe the installation and database creation -of your database. Check the documentation of your database. The tutorial Using ejabberd with MySQL native driver also can help you. Note that the tutorial -contains information about ejabberd's configuration which is duplicate to -this section.
-
- - -

4.4.1  Compilation

- - -You can skip this step if you installed ejabberd using a binary installer or -if the binary packages of ejabberd you are using include support for -ODBC. -
  1. -First, install the Erlang - MySQL library. Make sure the compiled files are in your Erlang path; you can - put them for example in the same directory as your ejabberd .beam files. -
  2. Then, configure, compile and install ejabberd with ODBC support - enabled. This can be done, by using next commands: -
    -./configure --enable-odbc && make install
    -
- - -

4.4.2  Authentication

- - - -The first configuration step is to define the odbc auth_method. For -example: -
-{host_config, "public.example.org", [{auth_method, [odbc]}]}.
-
-The actual database access is defined in the option odbc_server. Its -value is used to defined if we want to use ODBC, or one of the two native -interface available, PostgreSQL or MySQL.
-
-To use a relational database through ODBC, you can pass the ODBC connection -string as odbc_server parameter. For example: -
-{odbc_server, "DSN=database;UID=ejabberd;PWD=password"}.
-
- - -

4.4.3  Storage

- - - -An ODBC compatible database also can be used to store information into from -several ejabberd modules. See section 5.1 to see which -modules have a version with the `_odbc'. This suffix indicates that the module -can be used with ODBC compatible relational databases. To enable storage to your -database, just make sure that your database is running well (see previous -sections), and replace the suffix-less or ldap module variant with the odbc -module variant. Keep in mind that you cannot have several variants of the same -module loaded!
-
- - -

4.5  LDAP

- - - -ejabberd has built-in LDAP support. You can authenticate users against LDAP -server and use LDAP directory as vCard storage. Shared rosters are not supported -yet.
-
- - -

4.5.1  Connection

- - -Parameters: -
-ldap_server
IP address or dns name of your -LDAP server. This option is required. -
ldap_port
Port to connect to your LDAP server. - The default value is 389. -
ldap_rootdn
Bind DN. The default value - is "" which means `anonymous connection'. -
ldap_password
Bind password. The default - value is "". -
-Example: -
-  {auth_method, ldap}.
-  {ldap_servers, ["ldap.example.org"]}.
-  {ldap_port, 389}.
-  {ldap_rootdn, "cn=Manager,dc=domain,dc=org"}.
-  {ldap_password, "secret"}.
-
-Note that current LDAP implementation does not support SSL secured communication -and SASL authentication.
-
- - -

4.5.2  Authentication

- - -You can authenticate users against an LDAP directory. Available options are: -
-ldap_base
LDAP base directory which stores users - accounts. This option is required. -
ldap_uidattr
LDAP attribute which holds - the user's part of a JID. The default value is "uid". -
ldap_uidattr_format
Format of the - ldap_uidattr variable. The format must contain one and only one - pattern variable "%u" which will be replaced by the user's part of a - JID. For example, "%u@example.org". The default value is "%u". -
ldap_filter
- RFC 2254 LDAP filter. The - default is none. Example: - "(&(objectClass=shadowAccount)(memberOf=Jabber Users))". Please, do - not forget to close brackets and do not use superfluous whitespaces. Also you - must not use ldap_uidattr attribute in filter because this - attribute will be substituted in LDAP filter automatically. -
- - -

4.5.3  Examples

- - - - -
Common example
- -Let's say ldap.example.org is the name of our LDAP server. We have -users with their passwords in "ou=Users,dc=example,dc=org" directory. -Also we have addressbook, which contains users emails and their additional -infos in "ou=AddressBook,dc=example,dc=org" directory. Corresponding -authentication section should looks like this: -
-  %% authentication method
-  {auth_method, ldap}.
-  %% DNS name of our LDAP server
-  {ldap_servers, ["ldap.example.org"]}.
-  %% Bind to LDAP server as "cn=Manager,dc=example,dc=org" with password "secret"
-  {ldap_rootdn, "cn=Manager,dc=example,dc=org"}.
-  {ldap_password, "secret"}.
-  %% define the user's base
-  {ldap_base, "ou=Users,dc=example,dc=org"}.
-  %% We want to authorize users from 'shadowAccount' object class only
-  {ldap_filter, "(objectClass=shadowAccount)"}.
-
-Now we want to use users LDAP-info as their vCards. We have four attributes -defined in our LDAP schema: "mail" — email address, "givenName" -— first name, "sn" — second name, "birthDay" — birthday. -Also we want users to search each other. Let's see how we can set it up: -
-  {modules,
-    ...
-    {mod_vcard_ldap,
-     [
-      %% We use the same server and port, but want to bind anonymously because
-      %% our LDAP server accepts anonymous requests to
-      %% "ou=AddressBook,dc=example,dc=org" subtree.
-      {ldap_rootdn, ""},
-      {ldap_password, ""},
-      %% define the addressbook's base
-      {ldap_base, "ou=AddressBook,dc=example,dc=org"},
-      %% user's part of JID is located in the "mail" attribute
-      {ldap_uidattr, "mail"},
-      %% common format for our emails
-      {ldap_uidattr_format, "%u@mail.example.org"},
-      %% We have to define empty filter here, because entries in addressbook does not
-      %% belong to shadowAccount object class
-      {ldap_filter, ""},
-      %% Now we want to define vCard pattern
-      {ldap_vcard_map,
-       [{"NICKNAME", "%u", []}, % just use user's part of JID as his nickname
-        {"GIVEN", "%s", ["givenName"]},
-        {"FAMILY", "%s", ["sn"]},
-        {"FN", "%s, %s", ["sn", "givenName"]}, % example: "Smith, John"
-        {"EMAIL", "%s", ["mail"]},
-        {"BDAY", "%s", ["birthDay"]}]},
-      %% Search form
-      {ldap_search_fields,
-       [{"User", "%u"},
-        {"Name", "givenName"},
-        {"Family Name", "sn"},
-        {"Email", "mail"},
-        {"Birthday", "birthDay"}]},
-      %% vCard fields to be reported
-      %% Note that JID is always returned with search results
-      {ldap_search_reported,
-       [{"Full Name", "FN"},
-        {"Nickname", "NICKNAME"},
-        {"Birthday", "BDAY"}]}
-    ]}
-    ...
-  }.
-
-Note that mod_vcard_ldap module checks for the existence of the user before -searching in his information in LDAP.
-
- - -
Active Directory
- - - -Active Directory is just an LDAP-server with predefined attributes. A sample -configuration is showed below: -
-  {auth_method, ldap}.
-  {ldap_servers, ["office.org"]}.    % List of LDAP servers
-  {ldap_base, "DC=office,DC=org"}. % Search base of LDAP directory
-  {ldap_rootdn, "CN=Administrator,CN=Users,DC=office,DC=org"}. % LDAP manager
-  {ldap_password, "*******"}. % Password to LDAP manager
-  {ldap_uidattr, "sAMAccountName"}.
-  {ldap_filter, "(memberOf=*)"}.
-  
-  {mod_vcard_ldap,
-   [{ldap_vcard_map,
-     [{"NICKNAME", "%u", []},
-      {"GIVEN", "%s", ["givenName"]},
-      {"MIDDLE", "%s", ["initials"]},
-      {"FAMILY", "%s", ["sn"]},
-      {"FN", "%s", ["displayName"]},
-      {"EMAIL", "%s", ["mail"]},
-      {"ORGNAME", "%s", ["company"]},
-      {"ORGUNIT", "%s", ["department"]},
-      {"CTRY", "%s", ["c"]},
-      {"LOCALITY", "%s", ["l"]},
-      {"STREET", "%s", ["streetAddress"]},
-      {"REGION", "%s", ["st"]},
-      {"PCODE", "%s", ["postalCode"]},
-      {"TITLE", "%s", ["title"]},
-      {"URL", "%s", ["wWWHomePage"]},
-      {"DESC", "%s", ["description"]},
-      {"TEL", "%s", ["telephoneNumber"]}]},
-    {ldap_search_fields,
-     [{"User", "%u"},
-      {"Name", "givenName"},
-      {"Family Name", "sn"},
-      {"Email", "mail"},
-      {"Company", "company"},
-      {"Department", "department"},
-      {"Role", "title"},
-      {"Description", "description"},
-      {"Phone", "telephoneNumber"}]},
-    {ldap_search_reported,
-     [{"Full Name", "FN"},
-      {"Nickname", "NICKNAME"},
-      {"Email", "EMAIL"}]}
-   ]
-  }.
-
- - -

5  Modules Configuration

- - - -The option modules defines the list of modules that will be loaded after -ejabberd's startup. Each entry in the list is a tuple in which the first -element is the name of a module and the second is a list of options for that -module.
-
-Examples: -
  • -In this example only the module mod_echo is loaded and no module - options are specified between the square brackets: -
    -  {modules,
    -   [{mod_echo,      []}
    -   ]}.
    -
  • In the second example the modules mod_echo, mod_time, and - mod_version are loaded without options. Remark that, besides the last entry, - all entries end with a comma: -
    -  {modules,
    -   [{mod_echo,      []},
    -    {mod_time,      []},
    -    {mod_version,   []}
    -   ]}.
    -
- - -

5.1  Overview

- - - -The following table lists all modules available in the official ejabberd -distribution. You can find more -contributed modules on the -ejabberd website. Please remember that these contributions might not work or -that they can contain severe bugs and security leaks. Therefore, use them at -your own risk!
-
-You can see which database backend each module needs by looking at the suffix: -
  • -`_ldap', this means that the module needs an LDAP server as backend. -
  • `_odbc', this means that the module needs a supported database - (see 4) as backend. -
  • No suffix, this means that the modules uses Erlang's built-in database - Mnesia as backend. -
-If you want to -It is possible to use a relational database to store pieces of -information. You can do this by changing the module name to a name with an -_odbc suffix in ejabberd config file. You can use a relational -database for the following data: -
  • -Last connection date and time: Use mod_last_odbc instead of - mod_last. -
  • Offline messages: Use mod_offline_odbc instead of - mod_offline. -
  • Rosters: Use mod_roster_odbc instead of mod_roster. -
  • Users' VCARD: Use mod_vcard_odbc instead of mod_vcard. -
-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ModuleFeatureDependenciesNeeded for XMPP?
mod_adhocAd-Hoc Commands (JEP-0050) No
mod_announceManage announcementsmod_adhocNo
mod_configureSupport for onlinemod_adhocNo
 configuration of ejabberd  
mod_discoService Discovery (JEP-0030) No
mod_echoEchoes Jabber packets No
mod_ircIRC transport No
mod_lastLast Activity (JEP-0012) No
mod_last_odbcLast Activity (JEP-0012)supported database (*)No
mod_mucMulti-User Chat (JEP-0045) No
mod_muc_logMulti-User Chat room loggingmod_mucNo
mod_offlineOffline message storage No
mod_offline_odbcOffline message storagesupported database (*)No
mod_privacyBlocking Communication Yes
mod_privatePrivate XML Storage (JEP-0049) No
mod_pubsubPublish-Subscribe (JEP-0060) No
mod_registerIn-Band Registration (JEP-0077) No
mod_rosterRoster management Yes (**)
mod_roster_odbcRoster managementsupported database (*)Yes (**)
mod_service_logCopy user messages to logger service No
mod_shared_rosterShared roster managementmod_roster orNo
  mod_roster_odbc 
mod_statsStatistics Gathering (JEP-0039) No
mod_timeEntity Time (JEP-0090) No
mod_vcardvcard-temp (JEP-0054) No
mod_vcard_ldapvcard-temp (JEP-0054)LDAP serverNo
mod_vcard_odbcvcard-temp (JEP-0054)supported database (*)No
mod_versionSoftware Version (JEP-0092) No
-

-
  • -(*) For a list of supported databases, see section 4. -
  • (**) This module or a similar one with another database backend is needed for -XMPP compliancy. -
- - -

5.2  Common Options

- - -The following options are used by many modules. Therefore, they are described in -this separate section.
-
- - -

5.2.1  iqdisc

- - - -Many modules define handlers for processing IQ queries of different namespaces -to this server or to a user (e. g. to example.org or to -user@example.org). This option defines processing discipline for -these queries. Possible values are: -
-no_queue
All queries of a namespace with this processing discipline are - processed immediately. This also means that no other packets can be processed - until this one has been completely processed. Hence this discipline is not - recommended if the processing of a query can take a relatively long time. -
one_queue
In this case a separate queue is created for the processing - of IQ queries of a namespace with this discipline. In addition, the processing - of this queue is done in parallel with that of other packets. This discipline - is most recommended. -
parallel
For every packet with this discipline a separate Erlang process - is spawned. Consequently, all these packets are processed in parallel. - Although spawning of Erlang process has a relatively low cost, this can break - the server's normal work, because the Erlang emulator has a limit on the - number of processes (32000 by default). -
-Example: -
-  {modules,
-   [
-    ...
-    {mod_time, [{iqdisc, no_queue}]},
-    ...
-   ]}.
-
- - -

5.2.2  hosts

- - - -A module acting as a service can have one or more hostnames. These hostnames -can be defined with the hosts option.
-
-Examples: -
  • -Serving the echo module on one domain: -
    • -
      -  {modules,
      -   [
      -    ...
      -    {mod_echo, [{hosts, ["echo.example.org"]}]},
      -    ...
      -   ]}.
      -
    • Backwards compatibility with older ejabberd versions can be retained - with: -
      -  {modules,
      -   [
      -    ...
      -    {mod_echo, [{host, "echo.example.org"}]},
      -    ...
      -   ]}.
      -
    -
  • Serving the echo module on two domains: -
    -  {modules,
    -   [
    -    ...
    -    {mod_echo, [{hosts, ["echo.example.net", "echo.example.com"]}]},
    -    ...
    -   ]}.
    -
- - -

5.3  mod_announce

- - - -This module enables configured users to broadcast announcements and to set -the message of the day (MOTD). Configured users can do these actions with their -Jabber client by sending messages to specific JIDs. These JIDs are listed in -next paragraph. The first JID in each entry will apply only to the virtual host -example.org, while the JID between brackets will apply to all virtual -hosts: -
-example.org/announce/all (example.org/announce/all-hosts/all)
The - message is sent to all registered users. If the user is online and connected - to several resources, only the resource with the highest priority will receive - the message. If the registered user is not connected, the message will be - stored offline in assumption that offline storage - (see section 5.10) is enabled. -
example.org/announce/online (example.org/announce/all-hosts/online)
The - message is sent to all connected users. If the user is online and connected - to several resources, all resources will receive the message. -
example.org/announce/motd (example.org/announce/all-hosts/motd)
The - message is set as the message of the day (MOTD) and is sent to users when they - login. In addition the message is sent to all connected users (similar to - announce/online). -
example.org/announce/motd/update (example.org/announce/all-hosts/motd/update)
- The message is set as message of the day (MOTD) and is sent to users when they - login. The message is not sent to any currently connected user. -
example.org/announce/motd/delete (example.org/announce/all-hosts/motd/delete)
- Any message sent to this JID removes the existing message of the day (MOTD). -
-Options: -
-access
This option specifies who is allowed to - send announcements and to set the message of the day (by default, nobody is - able to send such messages). -
-Examples: -
  • -Only administrators can send announcements: -
    -  {access, announce, [{allow, admins}]}.
    -
    -  {modules,
    -   [
    -    ...
    -    {mod_announce, [{access, announce}]},
    -    ...
    -   ]}.
    -
  • Administrators as well as the direction can send announcements: -
    -  {acl, direction, {user, "big_boss", "example.org"}}.
    -  {acl, direction, {user, "assistant", "example.org"}}.
    -  {acl, admins, {user, "admin", "example.org"}}.
    -  ...
    -  {access, announce, [{allow, admins},
    -                      {allow, direction}]}.
    -  ...
    -  {modules,
    -   [
    -    ...
    -    {mod_announce, [{access, announce}]},
    -    ...
    -   ]}.
    -
- - -

5.4  mod_disco

- - - -This module adds support for Service Discovery (JEP-0030). With -this module enabled, services on your server can be discovered by -Jabber clients. Note that ejabberd has no modules with support -for the superseded Jabber Browsing (JEP-0011) and Agent Information -(JEP-0094). Accordingly, Jabber clients need to have support for -the newer Service Discovery protocol if you want them be able to discover -the services you offer.
-
-Options: -
-iqdisc
This specifies -the processing discipline for Service Discovery (http://jabber.org/protocol/disco#items and - http://jabber.org/protocol/disco#info) IQ queries -(see section 5.2.1). -
extra_domains
With this option, - extra domains can be added to the Service Discovery item list. -
-Examples: -
  • -To serve a link to the Jabber User Directory on jabber.org: -
    -  {modules,
    -   [
    -    ...
    -    {mod_disco, [{extra_domains, ["users.jabber.org"]}]},
    -    ...
    -   ]}.
    -
  • To serve a link to the transports on another server: -
    -  {modules,
    -   [
    -    ...
    -    {mod_disco, [{extra_domains, ["icq.example.com",
    -                                  "msn.example.com"]}]},
    -    ...
    -   ]}.
    -
  • To serve a link to a few friendly servers: -
    -  {modules,
    -   [
    -    ...
    -    {mod_disco, [{extra_domains, ["example.org",
    -                                  "example.com"]}]},
    -    ...
    -   ]}.
    -
- - -

5.5  mod_echo

- - - -This module simply echoes any Jabber -packet back to the sender. This mirror can be of interest for -ejabberd and Jabber client debugging.
-
-Options: -
- - hosts
This option defines the hostnames of the - service (see section 5.2.2). If neither hosts nor - the old host is present, the prefix `echo.' is added to all - ejabberd hostnames. - -
-Examples: -
  • -Mirror, mirror, on the wall, who is the most beautiful - of them all? -
    -  {modules,
    -   [
    -    ...
    -    {mod_echo, [{hosts, ["mirror.example.org"]}]},
    -    ...
    -   ]}.
    -
  • If you still do not understand the inner workings of mod_echo, - you can find a few more examples in section 5.2.2. -
- - -

5.6  mod_irc

- - - -This module is an IRC transport that can be used to join channels on IRC -servers.
-
-End user information: - -
  • -A Jabber client with `groupchat 1.0' support or Multi-User - Chat support (JEP-0045) is necessary to join IRC channels. -
  • An IRC channel can be joined in nearly the same way as joining a - Jabber Multi-User Chat room. The difference is that the room name will - be `channel%irc.example.org' in case irc.example.org is - the IRC server hosting `channel'. And of course the host should point - to the IRC transport instead of the Multi-User Chat service. -
  • You can register your nickame by sending `IDENTIFY password' to
    -nickserver!irc.example.org@irc.jabberserver.org. -
  • Entering your password is possible by sending `LOGIN nick password'
    -to nickserver!irc.example.org@irc.jabberserver.org. -
  • When using a popular Jabber server, it can occur that no - connection can be achieved with some IRC servers because they limit the - number of conections from one IP. -
-Options: -
- - hosts
This option defines the hostnames of the - service (see section 5.2.2). If neither hosts nor - the old host is present, the prefix `irc.' is added to all - ejabberd hostnames. - -
access
This option can be used to specify who - may use the IRC transport (default value: all). -
-Examples: -
  • -In the first example, the IRC transport is available on (all) your - virtual host(s) with the prefix `irc.'. Furthermore, anyone is - able to use the transport. -
    -  {modules,
    -   [
    -    ...
    -    {mod_irc, [{access, all}]},
    -    ...
    -   ]}.
    -
  • In next example the IRC transport is available on the two virtual hosts - example.net and example.com with different prefixes on each host. - Moreover, the transport is only accessible by paying customers registered on - our domains and on other servers. -
    -  {acl, paying_customers, {user, "customer1", "example.net"}}.
    -  {acl, paying_customers, {user, "customer2", "example.com"}}.
    -  {acl, paying_customers, {user, "customer3", "example.org"}}.
    -  ...
    -  {access, paying_customers, [{allow, paying_customers},
    -                              {deny, all}]}.
    -  ...
    -  {modules,
    -   [
    -    ...
    -    {mod_irc, [{access, paying_customers},
    -               {hosts, ["irc.example.net", "irc-transport.example.com"]}]},
    -    ...
    -   ]}.
    -
- - -

5.7  mod_last

- - - -This module adds support for Last Activity (JEP-0012). It can be used to -discover when a disconnected user last accessed the server, to know when a -connected user was last active on the server, or to query the uptime of the -ejabberd server.
-
-Options: -
-iqdisc
This specifies -the processing discipline for Last activity (jabber:iq:last) IQ queries -(see section 5.2.1). -
- - -

5.8  mod_muc

- - - -With this module enabled, your server will support Multi-User Chat -(JEP-0045). End users will be able to join text conferences. Notice -that this module is not (yet) clusterable.
-
-Some of the features of Multi-User Chat: -
  • -Sending private messages to room participants. -
  • Inviting users. -
  • Setting a conference topic. -
  • Creating password protected rooms. -
  • Kicking and banning participants. -
-Options: -
- - hosts
This option defines the hostnames of the - service (see section 5.2.2). If neither hosts nor - the old host is present, the prefix `conference.' is added to all - ejabberd hostnames. - -
access
You can specify who is allowed to use - the Multi-User Chat service (by default, everyone is allowed to use it). -
access_create
To configure who is - allowed to create new rooms at the Multi-User Chat service, this option - can be used (by default, everybody is allowed to create rooms). -
access_admin
This option specifies - who is allowed to administrate the Multi-User Chat service (the default - value is none, which means that only the room creator can - administer his room). By sending a message to the service JID, - administrators can send service messages that will be displayed in every - active room. -
history_size
A small history of the - current discussion is sent to users when they enter the room. With this option - you can define the number of history messages to keep and send to users - joining the room. The value is an integer. Setting the value to 0 - disables the history feature and, as a result, nothing is kept in memory. The - default value is 20. This value is global and thus affects all rooms on - the server. -
-Examples: -
  • -In the first example everyone is allowed to use the Multi-User Chat - service. Everyone will also be able to create new rooms but only the user - admin@example.org is allowed to administrate any room. In this - example he is also a global administrator. When admin@example.org - sends a message such as `Tomorrow, the Jabber server will be moved - to new hardware. This will involve service breakdowns around 23:00 UMT. - We apologise for this inconvenience.' to conference.example.org, - it will be displayed in all active rooms. In this example the history - feature is disabled. -
    -  {acl, admins, {user, "admin", "example.org"}}.
    -  ...
    -  {access, muc_admins, [{allow, admins}]}.
    -  ...
    -  {modules,
    -   [
    -    ...
    -    {mod_muc, [{access, all},
    -               {access_create, all},
    -               {access_admin, muc_admins},
    -               {history_size, 0}]},
    -    ...
    -   ]}.
    -
  • In the second example the Multi-User Chat service is only accessible by - paying customers registered on our domains and on other servers. Of course - the administrator is also allowed to access rooms. In addition, he is the - only authority able to create and administer rooms. When - admin@example.org sends a message such as `Tomorrow, the Jabber - server will be moved to new hardware. This will involve service breakdowns - around 23:00 UMT. We apologise for this inconvenience.' to - conference.example.org, it will be displayed in all active rooms. No - history_size option is used, this means that the feature is enabled - and the default value of 20 history messages will be send to the users. -
    -  {acl, paying_customers, {user, "customer1", "example.net"}}.
    -  {acl, paying_customers, {user, "customer2", "example.com"}}.
    -  {acl, paying_customers, {user, "customer3", "example.org"}}.
    -  {acl, admins, {user, "admin", "example.org"}}.
    -  ...
    -  {access, muc_admins, [{allow, admins},
    -                        {deny, all}]}.
    -  {access, muc_access, [{allow, paying_customers},
    -                        {allow, admins},
    -                        {deny, all}]}.
    -  ...
    -  {modules,
    -   [
    -    ...
    -    {mod_muc, [{access, muc_access},
    -               {access_create, muc_admins},
    -               {access_admin, muc_admins}]},
    -    ...
    -   ]}.
    -
- - -

5.9  mod_muc_log

- - - -This module enables optional logging of Multi-User Chat (MUC) conversations to -HTML. Once you enable this module, users can join a chatroom using a MUC capable -Jabber client, and if they have enough privileges, they can request the -configuration form in which they can set the option to enable chatroom logging.
-
-Features: -
  • -Chatroom details are added on top of each page: room title, JID, - author, subject and configuration. -
  • - Room title and JID are links to join the chatroom (using - XMPP URIs). -
  • Subject and chatroom configuration changes are tracked and displayed. -
  • Joins, leaves, nick changes, kicks, bans and `/me' are tracked and - displayed, including the reason if available. -
  • Generated HTML files are XHTML 1.0 Transitional and CSS compliant. -
  • Timestamps are self-referencing links. -
  • Links on top for quicker navigation: Previous day, Next day, Up. -
  • CSS is used for style definition, and a custom CSS file can be used. -
  • URLs on messages and subjects are converted to hyperlinks. -
  • Timezone used on timestamps is shown on the log files. -
  • A custom link can be added on top of each page. -
-Options: -
-access_log
- This option restricts which users are allowed to enable or disable chatroom - logging. The default value is muc_admin. Note for this default setting - you need to have an access rule for muc_admin in order to take effect. -
cssfile
- With this option you can set whether the HTML files should have a custom CSS - file or if they need to use the embedded CSS file. Allowed values are - false and an URL to a CSS file. With the first value, HTML files will - include the embedded CSS code. With the latter, you can specify the URL of the - custom CSS file (for example: `http://example.com/my.css'). The default value - is false. -
dirtype
- The type of the created directories can be specified with this option. Allowed - values are subdirs and plain. With the first value, - subdirectories are created for each year and month. With the latter, the - names of the log files contain the full date, and there are no subdirectories. - The default value is subdirs. -
outdir
- This option sets the full path to the directory in which the HTML files should - be stored. Make sure the ejabberd daemon user has write access on that - directory. The default value is "www/muc". -
timezone
- The time zone for the logs is configurable with this option. Allowed values - are local and universal. With the first value, the local time, - as reported to Erlang by the operating system, will be used. With the latter, - GMT/UTC time will be used. The default value is local. -
top_link
- With this option you can customize the link on the top right corner of each - log file. The syntax of this option is {"URL", "Text"}. The default - value is {"/", "Home"}. -
-Examples: -
  • -In the first example any chatroom owner can enable logging, and a - custom CSS file will be used (http://example.com/my.css). Further, the names - of the log files will contain the full date, and there will be no - subdirectories. The log files will be stored in /var/www/muclogs, and the - time zone will be GMT/UTC. Finally, the top link will be - <a href="http://www.jabber.ru">Jabber.ru</a>. -
    -  {access, muc, [{allow, all}]}.
    -  ...
    -  {modules,
    -   [
    -    ...
    -    {mod_muc_log, [
    -               {access_log, muc},
    -               {cssfile, "http://example.com/my.css"},
    -               {dirtype, plain},
    -               {outdir, "/var/www/muclogs"},
    -               {timezone, universal},
    -               {top_link, {"http://www.jabber.ru", "Jabber.ru"}}
    -    ]},
    -    ...
    -   ]}.
    -
  • In the second example only admin1@example.org and - admin2@example.net can enable logging, and the embedded CSS file will be - used. Further, the names of the log files will only contain the day (number), - and there will be subdirectories for each year and month. The log files will - be stored in /var/www/muclogs, and the local time will be used. Finally, the - top link will be the default <a href="/">Home</a>. -
    -  {acl, admins, {user, "admin1", "example.org"}}.
    -  {acl, admins, {user, "admin2", "example.net"}}.
    -  ...
    -  {access, muc_log, [{allow, admins},
    -                     {deny, all}]}.
    -  ...
    -  {modules,
    -   [
    -    ...
    -    {mod_muc_log, [
    -               {access_log, muc_log},
    -               {cssfile, false},
    -               {dirtype, subdirs},
    -               {outdir, "/var/www/muclogs"},
    -               {timezone, local}
    -    ]},
    -    ...
    -   ]}.
    -
- - -

5.10  mod_offline

- - - -This module implements offline message storage. This means that all messages -sent to an offline user will be stored on the server until that user comes -online again. Thus it is very similar to how email works. Note that -ejabberdctl has a command to delete expired messages -(see section 7.2).
-
- - -

5.11  mod_privacy

- - - -This module implements Blocking Communication (also known as Privacy Rules) -as defined in section 10 from XMPP IM. If end users have support for it in -their Jabber client, they will be able to: -
-
  • -Retrieving one's privacy lists. -
  • Adding, removing, and editing one's privacy lists. -
  • Setting, changing, or declining active lists. -
  • Setting, changing, or declining the default list (i.e., the list that - is active by default). -
  • Allowing or blocking messages based on JID, group, or subscription type - (or globally). -
  • Allowing or blocking inbound presence notifications based on JID, group, - or subscription type (or globally). -
  • Allowing or blocking outbound presence notifications based on JID, group, - or subscription type (or globally). -
  • Allowing or blocking IQ stanzas based on JID, group, or subscription type - (or globally). -
  • Allowing or blocking all communications based on JID, group, or - subscription type (or globally). -
-(from http://www.xmpp.org/specs/rfc3921.html#privacy) -
-Options: -
-iqdisc
This specifies -the processing discipline for Blocking Communication (jabber:iq:privacy) IQ queries -(see section 5.2.1). -
- - -

5.12  mod_private

- - - -This module adds support for Private XML Storage (JEP-0049): -
-Using this method, Jabber entities can store private data on the server and -retrieve it whenever necessary. The data stored might be anything, as long as -it is valid XML. One typical usage for this namespace is the server-side storage -of client-specific preferences; another is Bookmark Storage (JEP-0048). -
-Options: -
-iqdisc
This specifies -the processing discipline for Private XML Storage (jabber:iq:private) IQ queries -(see section 5.2.1). -
- - -

5.13  mod_pubsub

- - - -This module offers a Publish-Subscribe Service (JEP-0060). -Publish-Subscribe can be used to develop (examples are taken from the JEP): -
-
  • -news feeds and content syndacation, -
  • avatar management, -
  • shared bookmarks, -
  • auction and trading systems, -
  • online catalogs, -
  • workflow systems, -
  • network management systems, -
  • NNTP gateways, -
  • vCard/profile management, -
  • and weblogs. -
-
- -Another example is J-EAI. -This is an XMPP-based Enterprise Application Integration (EAI) platform (also -known as ESB, the Enterprise Service Bus). The J-EAI project builts upon -ejabberd's codebase and has contributed several features to mod_pubsub.
-
-Options: -
- - hosts
This option defines the hostnames of the - service (see section 5.2.2). If neither hosts nor - the old host is present, the prefix `pubsub.' is added to all - ejabberd hostnames. - -
served_hosts
To specify which hosts needs to - be served, you can use this option. If absent, only the main ejabberd - host is served.
access_createnode
- This option restricts which users are allowed to create pubsub nodes using - ACL and ACCESS. The default value is pubsub_createnode.
-Example: -
-  {modules,
-   [
-    ...
-    {mod_pubsub, [{served_hosts, ["example.com",
-                                  "example.org"]},
-                  {access_createnode, pubsub_createnode}]}
-    ...
-   ]}.
-
- - -

5.14  mod_register

- - - -This module adds support for In-Band Registration (JEP-0077). This protocol -enables end users to use a Jabber client to: -
  • -Register a new account on the server. -
  • Change the password from an existing account on the server. -
  • Delete an existing account on the server. -
-Options: -
-access
This option can be configured to specify - rules to restrict registration. If a rule returns `deny' on the requested - user name, registration for that user name is dennied. (there are no - restrictions by default). -
iqdisc
This specifies -the processing discipline for In-Band Registration (jabber:iq:register) IQ queries -(see section 5.2.1). -
-Examples: -
  • -Next example prohibits the registration of too short account names: -
    -  {acl, shortname, {user_glob, "?"}}.
    -  {acl, shortname, {user_glob, "??"}}.
    -  % The same using regexp:
    -  %{acl, shortname, {user_regexp, "^..?$"}}.
    -  ...
    -  {access, register, [{deny, shortname},
    -                      {allow, all}]}.
    -  ...
    -  {modules,
    -   [
    -    ...
    -    {mod_register, [{access, register}]},
    -    ...
    -   ]}.
    -
  • The in-band registration of new accounts can be prohibited by changing the - access option. If you really want to disable all In-Band Registration - functionality, that is changing passwords in-band and deleting accounts - in-band, you have to remove mod_register from the modules list. In this - example all In-Band Registration functionality is disabled: -
    -  {access, register, [{deny, all}]}.
    -
    -  {modules,
    -   [
    -    ...
    -%    {mod_register, [{access, register}]},
    -    ...
    -   ]}.
    -
- - -

5.15  mod_roster

- - - -This module implements roster management as defined in RFC 3921: XMPP IM.
-
-Options: -
-iqdisc
This specifies -the processing discipline for Roster Management (jabber:iq:roster) IQ queries -(see section 5.2.1). -
- - -

5.16  mod_service_log

- - - -This module adds support for logging end user packets via a Jabber message -auditing service such as -Bandersnatch. All user -packets are encapsulated in a <route/> element and sent to the specified -service(s).
-
-Options: -
-loggers
With this option a (list of) service(s) - that will receive the packets can be specified. -
-Examples: -
  • -To log all end user packets to the Bandersnatch service running on - bandersnatch.example.com: -
    -  {modules,
    -   [
    -    ...
    -    {mod_service_log, [{loggers, ["bandersnatch.example.com"]}]},
    -    ...
    -   ]}.
    -
  • To log all end user packets to the Bandersnatch service running on - bandersnatch.example.com and the backup service on - bandersnatch.example.org: -
    -  {modules,
    -   [
    -    ...
    -    {mod_service_log, [{loggers, ["bandersnatch.example.com",
    -                                  "bandersnatch.example.org"]}]},
    -    ...
    -   ]}.
    -
- - -

5.17  mod_shared_roster

- - - -This module enables you to create shared roster groups. This means that you can -create groups of people that can see members from (other) groups in their -rosters. The big advantages of this feature are that end users do not need to -manually add all users to their rosters, and that they cannot permanently delete -users from the shared roster groups.
-
-Shared roster groups can be edited only via the web interface. Each group -has a unique identification and the following parameters: -
-Name
The name of the group, which will be displayed in the roster. -
Description
The description of the group. This parameter does not affect - anything. -
Members
A list of full JIDs of group members, entered one per line in - the web interface. -
Displayed groups
A list of groups that will be in the rosters of this - group's members. -
-Examples: -
  • -Take the case of a computer club that wants all its members seeing each - other in their rosters. To achieve this, they need to create a shared roster - group similar to next table: -

    - - - - - - - - - - - - - - - -
    IdentificationGroup `club_members'
    NameClub Members
    DescriptionMembers from the computer club
    Members - - - - - -
    member1@example.org
    member2@example.org
    member3@example.org
    Displayed groupsclub_members
    -

    -
  • In another case we have a company which has three divisions: Management, - Marketing and Sales. All group members should see all other members in their - rosters. Additonally, all managers should have all marketing and sales people - in their roster. Simultaneously, all marketeers and the whole sales team - should see all managers. This scenario can be achieved by creating shared - roster groups as shown in the following table: -

    - - - - - - - - - - - - - - - - - - - - - - - -
    IdentificationGroup `management'Group `marketing'Group `sales'
    NameManagementMarketingSales
    Description 
    Members - - - - - - - -
    manager1@example.org
    manager2@example.org
    manager3@example.org
    manager4@example.org
    -
    - - - - - - - -
    marketeer1@example.org
    marketeer2@example.org
    marketeer3@example.org
    marketeer4@example.org
    -
    - - - - - - - -
    saleswoman1@example.org
    salesman1@example.org
    saleswoman2@example.org
    salesman2@example.org
    Displayed groups - - - - - -
    management
    marketing
    sales
    -
    - - - -
    management
    marketing
    -
    - - - -
    management
    sales
    -

    -
- - -

5.18  mod_stats

- - - -This module adds support for Statistics Gathering (JEP-0039). This protocol -allows you to retrieve next statistics from your ejabberd deployment: -
  • -Total number of registered users on the current virtual host (users/total). -
  • Total number of registered users on all virtual hosts (users/all-hosts/total). -
  • Total number of online users on the current virtual host (users/online). -
  • Total number of online users on all virtual hosts (users/all-hosts/online). -
-Options: -
-iqdisc
This specifies -the processing discipline for Statistics Gathering (http://jabber.org/protocol/stats) IQ queries -(see section 5.2.1). -
-As there are only a small amount of clients (for example -Tkabber) and software libraries with -support for this JEP, a few examples are given of the XML you need to send -in order to get the statistics. Here they are: -
  • -You can request the number of online users on the current virtual host - (example.org) by sending: -
    -<iq to='example.org' type='get'>
    -  <query xmlns='http://jabber.org/protocol/stats'>
    -    <stat name='users/online'/>
    -  </query>
    -</iq>
    -
  • You can request the total number of registered users on all virtual hosts - by sending: -
    -<iq to='example.org' type='get'>
    -  <query xmlns='http://jabber.org/protocol/stats'>
    -    <stat name='users/all-hosts/total'/>
    -  </query>
    -</iq>
    -
- - -

5.19  mod_time

- - - -This module features support for Entity Time (JEP-0090). By using this JEP, -you are able to discover the time at another entity's location.
-
-Options: -
-iqdisc
This specifies -the processing discipline for Entity Time (jabber:iq:time) IQ queries -(see section 5.2.1). -
- - -

5.20  mod_vcard

- - - -This module allows end users to store and retrieve their vCard, and to retrieve -other users vCards, as defined in vcard-temp (JEP-0054). The module also -implements an uncomplicated Jabber User Directory based on the vCards of -these users. Moreover, it enables the server to send its vCard when queried.
-
-Options: -
- - hosts
This option defines the hostnames of the - service (see section 5.2.2). If neither hosts nor - the old host is present, the prefix `vjud.' is added to all - ejabberd hostnames. - -
iqdisc
This specifies -the processing discipline for vcard-temp IQ queries -(see section 5.2.1). -
search
This option specifies whether the search - functionality is enabled (value: true) or disabled (value: - false). If disabled, the option hosts will be ignored and the - Jabber User Directory service will not appear in the Service Discovery item - list. The default value is true. -
matches
With this option, the number of reported - search results can be limited. If the option's value is set to infinity, - all search results are reported. The default value is 30. -
allow_return_all
This option enables - you to specify if search operations with empty input fields should return all - users who added some information to their vCard. The default value is - false. -
search_all_hosts
If this option is set - to true, search operations will apply to all virtual hosts. Otherwise - only the current host will be searched. The default value is true. -
-Examples: -
  • -In this first situation, search results are limited to twenty items, - every user who added information to their vCard will be listed when people - do an empty search, and only users from the current host will be returned: -
    -  {modules,
    -   [
    -    ...
    -    {mod_vcard, [{search, true},
    -                 {matches, 20},
    -                 {allow_return_all, true},
    -                 {search_all_hosts, false}]},
    -    ...
    -   ]}.
    -
  • The second situation differs in a way that search results are not limited, - and that all virtual hosts will be searched instead of only the current one: -
    -  {modules,
    -   [
    -    ...
    -    {mod_vcard, [{search, true},
    -                 {matches, infinity},
    -                 {allow_return_all, true}]},
    -    ...
    -   ]}.
    -
- - -

5.21  mod_vcard_ldap

- - - -ejabberd can map LDAP attributes to vCard fields. This behaviour is -implemented in the mod_vcard_ldap module. This module does not depend on the -authentication method (see 4.5.2). The mod_vcard_ldap module -has its own optional parameters. The first group of parameters has the same -meaning as the top-level LDAP parameters to set the authentication method: -ldap_servers, ldap_port, ldap_rootdn, -ldap_password, ldap_base, ldap_uidattr, -ldap_uidattr_format and ldap_filter. See -section 4.5.2 for detailed information about these options. If one -of these options is not set, ejabberd will look for the top-level option with -the same name. The second group of parameters consists of the following -mod_vcard_ldap-specific options: -
- - hosts
This option defines the hostnames of the - service (see section 5.2.2). If neither hosts nor - the old host is present, the prefix `vjud.' is added to all - ejabberd hostnames. - -
iqdisc
This specifies -the processing discipline for vcard-temp IQ queries -(see section 5.2.1). -
search
This option specifies whether the search - functionality is enabled (value: true) or disabled (value: - false). If disabled, the option hosts will be ignored and the - Jabber User Directory service will not appear in the Service Discovery item - list. The default value is true. -
ldap_vcard_map
With this option you can - set the table that maps LDAP attributes to vCard fields. The format is: - [Name_of_vCard_field, Pattern, List_of_LDAP_attributes, ...]. - Name_of_vcard_field is the type name of the vCard as defined in - RFC 2426. Pattern is a - string which contains pattern variables "%u", "%d" or - "%s". List_of_LDAP_attributes is the list containing LDAP - attributes. The pattern variables "%s" will be sequentially replaced - with the values of LDAP attributes from List_of_LDAP_attributes, - "%u" will be replaced with the user part of a JID, and "%d" - will be replaced with the domain part of a JID. The default is: -
-  [{"NICKNAME", "%u", []},
-   {"FN", "%s", ["displayName"]},
-   {"FAMILY", "%s", ["sn"]},
-   {"GIVEN", "%s", ["givenName"]},
-   {"MIDDLE", "%s", ["initials"]},
-   {"ORGNAME", "%s", ["o"]},
-   {"ORGUNIT", "%s", ["ou"]},
-   {"CTRY", "%s", ["c"]},
-   {"LOCALITY", "%s", ["l"]},
-   {"STREET", "%s", ["street"]},
-   {"REGION", "%s", ["st"]},
-   {"PCODE", "%s", ["postalCode"]},
-   {"TITLE", "%s", ["title"]},
-   {"URL", "%s", ["labeleduri"]},
-   {"DESC", "%s", ["description"]},
-   {"TEL", "%s", ["telephoneNumber"]},
-   {"EMAIL", "%s", ["mail"]},
-   {"BDAY", "%s", ["birthDay"]},
-   {"ROLE", "%s", ["employeeType"]},
-   {"PHOTO", "%s", ["jpegPhoto"]}]
-
ldap_search_fields
This option - defines the search form and the LDAP attributes to search within. The format - is: [Name, Attribute, ...]. Name is the name of a search form - field which will be automatically translated by using the translation - files (see msgs/*.msg for available words). Attribute is the - LDAP attribute or the pattern "%u". The default is: -
-  [{"User", "%u"},
-   {"Full Name", "displayName"},
-   {"Given Name", "givenName"},
-   {"Middle Name", "initials"},
-   {"Family Name", "sn"},
-   {"Nickname", "%u"},
-   {"Birthday", "birthDay"},
-   {"Country", "c"},
-   {"City", "l"},
-   {"Email", "mail"},
-   {"Organization Name", "o"},
-   {"Organization Unit", "ou"}]
-
ldap_search_reported
This option - defines which search fields should be reported. The format is: - [Name, vCard_Name, ...]. Name is the name of a search form - field which will be automatically translated by using the translation - files (see msgs/*.msg for available words). vCard_Name is the - vCard field name defined in the ldap_vcard_map option. The default - is: -
-  [{"Full Name", "FN"},
-   {"Given Name", "GIVEN"},
-   {"Middle Name", "MIDDLE"},
-   {"Family Name", "FAMILY"},
-   {"Nickname", "NICKNAME"},
-   {"Birthday", "BDAY"},
-   {"Country", "CTRY"},
-   {"City", "LOCALITY"},
-   {"Email", "EMAIL"},
-   {"Organization Name", "ORGNAME"},
-   {"Organization Unit", "ORGUNIT"}]
-
-Examples: -
  • -
    -
    -Let's say ldap.example.org is the name of our LDAP server. We have -users with their passwords in "ou=Users,dc=example,dc=org" directory. -Also we have addressbook, which contains users emails and their additional -infos in "ou=AddressBook,dc=example,dc=org" directory. Corresponding -authentication section should looks like this: -
    -  %% authentication method
    -  {auth_method, ldap}.
    -  %% DNS name of our LDAP server
    -  {ldap_servers, ["ldap.example.org"]}.
    -  %% We want to authorize users from 'shadowAccount' object class only
    -  {ldap_filter, "(objectClass=shadowAccount)"}.
    -
    -Now we want to use users LDAP-info as their vCards. We have four attributes -defined in our LDAP schema: "mail" — email address, "givenName" -— first name, "sn" — second name, "birthDay" — birthday. -Also we want users to search each other. Let's see how we can set it up: -
    -  {modules,
    -    ...
    -    {mod_vcard_ldap,
    -     [
    -      %% We use the same server and port, but want to bind anonymously because
    -      %% our LDAP server accepts anonymous requests to
    -      %% "ou=AddressBook,dc=example,dc=org" subtree.
    -      {ldap_rootdn, ""},
    -      {ldap_password, ""},
    -      %% define the addressbook's base
    -      {ldap_base, "ou=AddressBook,dc=example,dc=org"},
    -      %% user's part of JID is located in the "mail" attribute
    -      {ldap_uidattr, "mail"},
    -      %% common format for our emails
    -      {ldap_uidattr_format, "%u@mail.example.org"},
    -      %% We have to define empty filter here, because entries in addressbook does not
    -      %% belong to shadowAccount object class
    -      {ldap_filter, ""},
    -      %% Now we want to define vCard pattern
    -      {ldap_vcard_map,
    -       [{"NICKNAME", "%u", []}, % just use user's part of JID as his nickname
    -        {"GIVEN", "%s", ["givenName"]},
    -        {"FAMILY", "%s", ["sn"]},
    -        {"FN", "%s, %s", ["sn", "givenName"]}, % example: "Smith, John"
    -        {"EMAIL", "%s", ["mail"]},
    -        {"BDAY", "%s", ["birthDay"]}]},
    -      %% Search form
    -      {ldap_search_fields,
    -       [{"User", "%u"},
    -        {"Name", "givenName"},
    -        {"Family Name", "sn"},
    -        {"Email", "mail"},
    -        {"Birthday", "birthDay"}]},
    -      %% vCard fields to be reported
    -      %% Note that JID is always returned with search results
    -      {ldap_search_reported,
    -       [{"Full Name", "FN"},
    -        {"Nickname", "NICKNAME"},
    -        {"Birthday", "BDAY"}]}
    -    ]}
    -    ...
    -  }.
    -
    -Note that mod_vcard_ldap module checks an existence of the user before -searching his info in LDAP.
    -
    -
  • ldap_vcard_map example: -
    -  {ldap_vcard_map,
    -   [{"NICKNAME", "%u", []},
    -    {"FN", "%s", ["displayName"]},
    -    {"CTRY", "Russia", []},
    -    {"EMAIL", "%u@%d", []},
    -    {"DESC", "%s\n%s", ["title", "description"]}
    -   ]},
    -
  • ldap_search_fields example: -
    -  {ldap_search_fields,
    -   [{"User", "uid"},
    -    {"Full Name", "displayName"},
    -    {"Email", "mail"}
    -   ]},
    -
  • ldap_search_reported example: -
    -  {ldap_search_reported,
    -   [{"Full Name", "FN"},
    -    {"Email", "EMAIL"},
    -    {"Birthday", "BDAY"},
    -    {"Nickname", "NICKNAME"}
    -   ]},
    -
- - -

5.22  mod_version

- - - -This module implements Software Version (JEP-0092). Consequently, it -answers ejabberd's version when queried.
-
-Options: -
-iqdisc
This specifies -the processing discipline for Software Version (jabber:iq:version) IQ queries -(see section 5.2.1). -
- - -

6  Creating an Initial Administrator

- - -Before the web interface can be entered to perform administration tasks, an -account with administrator rights is needed on your ejabberd deployment.
-
-Instructions to create an initial administrator account: -
  1. -Register an account on your ejabberd deployment. An account can be - created in two ways: -
    1. - Using the tool ejabberdctl (see - section 7.2): -
      -% ejabberdctl node@host register admin example.org password
      -
    2. Using In-Band Registration (see section 5.14): you can - use a Jabber client to register an account. -
    -
  2. Edit the configuration file to promote the account created in the previous - step to an account with administrator rights. Note that if you want to add - more administrators, a seperate acl entry is needed for each administrator. -
    -  {acl, admins, {user, "admin", "example.org"}}.
    -  {access, configure, [{allow, admins}]}.
    -
  3. Restart ejabberd to load the new configuration. -
  4. Open the web interface (http://server:port/admin/) in your - favourite browser. Make sure to enter the full JID as username (in this - example: admin@example.org. The reason that you also need to enter the - suffix, is because ejabberd's virtual hosting support. -
- - -

7  Online Configuration and Monitoring

- - - - -

7.1  Web Interface

- - - -To perform online configuration of ejabberd you need to enable the -ejabberd_http listener with the option web_admin (see -section 3.3). Then you can open -http://server:port/admin/ in your favourite web browser. You -will be asked to enter the username (the full Jabber ID) and password -of an ejabberd user with administrator rights. After authentication -you will see a page similar to figure 1. -

- - webadmmain.png - - -
-
-
Figure 1: Top page from the web interface

-
- - -

-Here you can edit access restrictions, manage users, create backups, -manage the database, enable/disable ports listened for, view server -statistics,...
-
-Examples: -
  • -You can serve the web interface on the same port as the - HTTP Polling interface. In this example - you should point your web browser to http://example.org:5280/admin/ to - administer all virtual hosts or to - http://example.org:5280/admin/server/example.com/ to administer only - the virtual host example.com. Before you get access to the web interface - you need to enter as username, the JID and password from a registered user - that is allowed to configure ejabberd. In this example you can enter as - username `admin@example.net' to administer all virtual hosts (first - URL). If you log in with `admin@example.com' on
    -http://example.org:5280/admin/server/example.com/ you can only - administer the virtual host example.com. -
    -  ...
    -  {acl, admins, {user, "admin", "example.net"}}.
    -  {host_config, "example.com", [{acl, admins, {user, "admin", "example.com"}}]}.
    -  {access, configure, [{allow, admins}]}.
    -  ...
    -  {hosts, ["example.org"]}.
    -  ...
    -  {listen,
    -   [...
    -    {5280, ejabberd_http, [http_poll, web_admin]},
    -    ...
    -   ]
    -  }.
    -
  • For security reasons, you can serve the web interface on a secured - connection, on a port differing from the HTTP Polling interface, and bind it - to the internal LAN IP. The web interface will be accessible by pointing your - web browser to https://192.168.1.1:5280/admin/: -
    -  ...
    -  {hosts, ["example.org"]}.
    -  ...
    -  {listen,
    -   [...
    -    {5270, ejabberd_http,    [http_poll]},
    -    {5280, ejabberd_http,    [web_admin, {ip, {192, 168, 1, 1}},
    -                              tls, {certfile, "/usr/local/etc/server.pem"}]},
    -    ...
    -   ]
    -  }.
    -
- - -

7.2  ejabberdctl

- - - -It is possible to do some administration operations using the command -line tool ejabberdctl. You can list all available options by -running ejabberdctl without arguments: -
-% ejabberdctl
-Usage: ejabberdctl node command
-
-Available commands:
-  status                        get ejabberd status
-  stop                          stop ejabberd
-  restart                       restart ejabberd
-  reopen-log                    reopen log file
-  register user server password register a user
-  unregister user server        unregister a user
-  backup file                   store a database backup to file
-  restore file                  restore a database backup from file
-  install-fallback file         install a database fallback from file
-  dump file                     dump a database to a text file
-  load file                     restore a database from a text file
-  import-file file              import user data from jabberd 1.4 spool file
-  import-dir dir                import user data from jabberd 1.4 spool directory
-  registered-users              list all registered users
-  delete-expired-messages       delete expired offline messages from database
-
-Example:
-  ejabberdctl ejabberd@host restart
-
-Additional information: -
-reopen-log
If you use a tool to rotate logs, you have to configure it - so that this command is executed after each rotation. -
backup, restore, install-fallback, dump, load
You can use these - commands to create and restore backups. -
import-file, import-dir
- These options can be used to migrate from other Jabber/XMPP servers. There - exist tutorials to migrate from other software to ejabberd. -
delete-expired-messages
This option can be used to delete old messages - in offline storage. This might be useful when the number of offline messages - is very high. -
- - -

8  Firewall Settings

- - - -You need to take the following TCP ports in mind when configuring your firewall: -

- - - - - - - - - - - - - - - - - - -
PortDescription
5222SASL and unencrypted c2s connections.
5223Obsolete SSL c2s connections.
5269s2s connections.
4369Only for clustering (see 10).
port rangeOnly for clustring (see 10). This range - is configurable (see 2.4).
-

- - -

9  SRV Records

- - - - - - -

10  Clustering

- - - - - -

10.1  How it Works

- - - -A Jabber domain is served by one or more ejabberd nodes. These nodes can -be run on different machines that are connected via a network. They all -must have the ability to connect to port 4369 of all another nodes, and must -have the same magic cookie (see Erlang/OTP documentation, in other words the -file ~ejabberd/.erlang.cookie must be the same on all nodes). This is -needed because all nodes exchange information about connected users, s2s -connections, registered services, etc...
-
-Each ejabberd node has the following modules: -
  • -router, -
  • local router, -
  • session manager, -
  • s2s manager. -
- - -

10.1.1  Router

- - - -This module is the main router of Jabber packets on each node. It -routes them based on their destination's domains. It uses a global -routing table. The domain of the packet's destination is searched in the -routing table, and if it is found, the packet is routed to the -appropriate process. If not, it is sent to the s2s manager.
-
- - -

10.1.2  Local Router

- - - -This module routes packets which have a destination domain equal to -one of this server's host names. If the destination JID has a non-empty user -part, it is routed to the session manager, otherwise it is processed depending -on its content.
-
- - -

10.1.3  Session Manager

- - - -This module routes packets to local users. It looks up to which user -resource a packet must be sent via a presence table. Then the packet is -either routed to the appropriate c2s process, or stored in offline -storage, or bounced back.
-
- - -

10.1.4  s2s Manager

- - - -This module routes packets to other Jabber servers. First, it -checks if an opened s2s connection from the domain of the packet's -source to the domain of the packet's destination exists. If that is the case, -the s2s manager routes the packet to the process -serving this connection, otherwise a new connection is opened.
-
- - -

10.2  Clustering Setup

- - - -Suppose you already configured ejabberd on one machine named (first), -and you need to setup another one to make an ejabberd cluster. Then do -following steps: -
  1. -Copy ~ejabberd/.erlang.cookie file from first to - second.
    -
    -(alt) You can also add `-cookie content_of_.erlang.cookie' - option to all `erl' commands below.
    -
    -
  2. On second run the following command as the ejabberd daemon user, - in the working directory of ejabberd: -
    -erl -sname ejabberd \
    -    -mnesia extra_db_nodes "['ejabberd@first']" \
    -    -s mnesia
    -
    - This will start Mnesia serving the same database as ejabberd@first. - You can check this by running the command `mnesia:info().'. You - should see a lot of remote tables and a line like the following: -
    -running db nodes   = [ejabberd@first, ejabberd@second]
    -

    -
    -
  3. Now run the following in the same `erl' session: -
    -mnesia:change_table_copy_type(schema, node(), disc_copies).
    -
    - This will create local disc storage for the database.
    -
    -(alt) Change storage type of the scheme table to `RAM and disc - copy' on the second node via the web interface.
    -
    -
  4. Now you can add replicas of various tables to this node with - `mnesia:add_table_copy' or - `mnesia:change_table_copy_type' as above (just replace - `schema' with another table name and `disc_copies' - can be replaced with `ram_copies' or - `disc_only_copies').
    -
    -Which tables to replicate is very dependant on your needs, you can get - some hints from the command `mnesia:info().', by looking at the - size of tables and the default storage type for each table on 'first'.
    -
    -Replicating a table makes lookups in this table faster on this node. - Writing, on the other hand, will be slower. And of course if machine with one - of the replicas is down, other replicas will be used.
    -
    -Also section 5.3 (Table Fragmentation) of Mnesia User's Guide can be helpful. -
    -
    - (alt) Same as in previous item, but for other tables.
    -
    -
  5. Run `init:stop().' or just `q().' to exit from - the Erlang shell. This probably can take some time if Mnesia has not yet - transfered and processed all data it needed from first.
    -
    -
  6. Now run ejabberd on second with almost the same config as - on first (you probably do not need to duplicate `acl' - and `access' options — they will be taken from - first, and mod_muc and mod_irc should be - enabled only on one machine in the cluster). -
-You can repeat these steps for other machines supposed to serve this -domain.
-
- - - -

A  Internationalization and Localization

- - - -All built-in modules support the xml:lang attribute inside IQ queries. -Figure 2, for example, shows the reply to the following query: -
-  <iq id='5'
-      to='example.org'
-      type='get'
-      xml:lang='ru'>
-    <query xmlns='http://jabber.org/protocol/disco#items'/>
-  </iq>
-
-

- - discorus.png - - -
-
-
Figure 2: Service Discovery when xml:lang='ru'

-
- - -

-The web interface also supports the Accept-Language HTTP header (compare -figure 3 with figure 1) -

- - webadmmainru.png - - -
-
-
Figure 3: Top page from the web interface with HTTP header - `Accept-Language: ru'

-
- - -

- - -

B  Release Notes

- - - - - -

B.1  ejabberd 0.9

- -
-       Release notes
-        ejabberd 0.9
-
-    This document describes the major new features of and changes to
-    ejabberd 0.9, compared to latest public release ejabber 0.7.5.
-
-    For more detailed information, please refer to ejabberd User
-    Guide.
-
-
-Virtual Hosting
-
-    ejabberd now can host several domain on the same instance.
-    This option is enabled by using:
-
-      {hosts, ["erlang-projects.org", "erlang-fr.org"]}.
-
-    instead of the previous host directive.
-
-    Note that you are now using a list of hosts. The main one should
-    be the first listed. See migration section further in this release
-    note for details.
-      
-
-Shared Roster
-
-    Shared roster is a new feature that allow the ejabberd
-    administrator to add jabber user that will be present in the
-    roster of every users on the server.
-    Shared roster are enabled by adding:
-
-            {mod_shared_roster, []}
-
-    at the end of your module list in your ejabberd.cfg file.
-
-
-PostgreSQL (ODBC) support
-
-    This feature is experimental and not yet properly documented. This
-    feature is released for testing purpose.
-
-    You need to have Erlang/OTP R10 to compile with ODBC on various
-    flavour of *nix. You should use Erlang/OTP R10B-4, as this task
-    has became easier with this release. It comes already build in
-    Erlang/OTP Microsoft Windows binary.
-
-    PostgreSQL support is enabled by using the following module in
-    ejabberd.cfg instead of their standard counterpart:
-
-     mod_last_odbc.erl
-     mod_offline_odbc.erl
-     mod_roster_odbc.erl
-
-    The database schema is located in the src/odbc/pq.sql file.
-
-    Look at the src/ejabberd.cfg.example file for more information on
-    how to configure ejabberd with odbc support. You can get support
-    on how to configure ejabberd with a relational database.
-
-
-Migration from ejabberd 0.7.5
-
-    Migration is pretty straightforward as Mnesia database schema
-    conversions is handled automatically. Remember however that you
-    must backup your ejabberd database before migration.
-
-    Here are the following steps to proceed:
-
-    1. Stop your instance of ejabberd.
-
-    2. In ejabberd.cfg, define the host lists. Change the host
-    directive to the hosts one:
-    Before:
-      {host, "erlang-projects.org"}.
-    After:
-      {hosts, ["erlang-projects.org", "erlang-fr.org"]}.
-    Note that when you restart the server the existing users will be
-    affected to the first virtual host, so the order is important. You
-    should keep the previous hostname as the first virtual host.
-
-    3. Restart ejabberd.
-
-
-Bugfixes
-
-    This release contains several bugfixes and architectural changes.
-    Please refer to the Changelog file supplied with this release for
-    details of all improvements in the ejabberd code.
-
- - -

B.2  ejabberd 0.9.1

- -
-       Release notes
-       ejabberd 0.9.1
-
-   This document describes the main changes from [25]ejabberd 0.9.
-
-   The code can be downloaded from the [26]download page.
-
-   For more detailed information, please refer to ejabberd [27]User Guide.
-
-
-Groupchat (Multi-user chat and IRC) improvements
-
-   The multi-user chat code has been improved to comply with the latest version
-   of Jabber Enhancement Proposal 0045.
-
-   The IRC (Internet Relay Chat) features now support WHOIS and USERINFO
-   requests.
-
-
-Web interface
-
-   ejabberd modules management features have been added to the web interface.
-   They now allow to start or stop extension module without restarting the
-   ejabberd server.
-
-
-Publish and subscribe
-
-   It is now possible to a subscribe node with a JabberID that includes a
-   resource.
-
-
-Translations
-
-   A new script has been included to help translate ejabberd into new languages
-   and maintain existing translations.
-
-   As a result, ejabberd is now translating into 10 languages:
-     * Dutch
-     * English
-     * French
-     * German
-     * Polish
-     * Portuguese
-     * Russian
-     * Spanish
-     * Swedish
-     * Ukrainian
-
-
-Migration
-
-   No changes have been made to the database. No particular conversion steps
-   are needed. However, you should backup your database before upgrading to a
-   new ejabberd version.
-
-
-Bugfixes
-
-   This release contains several bugfixes and architectural changes. Please
-   refer to the Changelog file supplied with this release for details of all
-   improvements in the ejabberd code.
-
- - -

B.3  ejabberd 0.9.8

- -
-       Release notes
-       ejabberd 0.9.8
-         2005-08-01
-
-   This document describes the main changes in ejabberd 0.9.8. This
-   version prepares the way for the release of ejabberd 1.0, which 
-   is due later this year.
-
-   The code can be downloaded from the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/
-
-   For more detailed information, please refer to ejabberd User Guide
-   on the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/docs.html
-
-
-   Recent changes include....
-
-
-Enhanced virtual hosting
-
-   Virtual hosting applies to many more setting options and
-   features and is transparent. Virtual hosting accepts different
-   parameters for different virtual hosts regarding the following
-   features: authentication method, access control lists and access
-   rules, users management, statistics, and shared roster. The web
-   interface gives access to each virtual host's parameters.
-
-
-Enhanced Publish-Subscribe module
-
-   ejabberd's Publish-Subscribe module integrates enhancements
-   coming from J-EAI, an XMPP-based integration server built on
-   ejabberd. ejabberd thus supports Publish-Subscribe node
-   configuration. It is possible to define nodes that should be
-   persistent, and the number of items to persist. Besides that, it
-   is also possible to define various notification parameters, such
-   as the delivery of the payload with the notifications, and the
-   notification of subscribers when some changes occur on items.
-   Other examples are: the maximum size of the items payload, the
-   subscription approvers, the limitation of the notification to
-   online users only, etc.
-
-
-Code reorganisation and update
-
-   - The mod_register module has been cleaned up.
-   - ODBC support has been updated and several bugs have been fixed.
-
-
-Development API
-
-   To ease the work of Jabber/XMPP developers, a filter_packet hook
-   has been added. As a result it is possible to develop plugins to
-   filter or modify packets flowing through ejabberd.
-
-
-Translations
-
-   - Translations have been updated to support the new Publish-Subscribe features.
-   - A new Brazilian Portuguese translation has been contributed.
-
-
-Web interface
-
-   - The CSS stylesheet from the web interface is W3C compliant.
-
-
-Installers
-
-   Installers are provided for Microsoft Windows and Linux/x86. The
-   Linux installer includes Erlang ASN.1 modules for LDAP
-   authentication support.
-
-
-Bugfixes
-
-   - This release contains several bugfixes and architectural
-     changes. Among other bugfixes include improvements in LDAP
-     authentication. Please refer to the ChangeLog file supplied 
-     with this release regarding all improvements in ejabberd.
-
-
-References
-
-   The ejabberd feature sheet helps comparing with other Jabber/XMPP 
-   servers:
-   http://www.process-one.net/en/projects/ejabberd/docs/features.pdf
-
-   Contributed tutorials of interest are:
-   - Migration from Jabberd1.4 to ejabberd:
-     http://ejabberd.jabber.ru/jabberd1-to-ejabberd
-   - Migration from Jabberd2 to ejabberd:
-     http://ejabberd.jabber.ru/jabberd2-to-ejabberd
-   - Transport configuration for connecting to other networks:
-     http://ejabberd.jabber.ru/tutorials-transports
-
-END
-
-
- - -

B.4  ejabberd 1.0.0

- -
-       Release Notes
-       ejabberd 1.0.0
-       14 December 2005
-
-   This document describes the main changes in ejabberd 1.0.0. Unique in this
-   version is the compliancy with the XMPP (eXtensible Messaging and Presence
-   Protocol) standard. ejabberd is the first Open Source Jabber server claiming
-   to fully comply to the XMPP standard.
-
-   ejabberd can be downloaded from the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/
-
-   Detailed information can be found in the ejabberd Feature Sheet and User
-   Guide which are available on the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/docs.html
-
-
-   Recent changes include:
-
-
-Server-to-server Encryption for Enhanced Security
-
-  - Support for STARTTLS and SASL EXTERNAL to secure server-to-server traffic
-    has been added.
-  - Also, STARTTLS and Dialback has been implemented for server-to-server (s2s)
-    connections. Detailed information about these new features can be found on
-    http://ejabberd.jabber.ru/s2s-encryption
-  - commonName and dNSName fields matching were introduced to ease the process
-    of retrieving certificates.
-  - Different certificates can be defined for each virtual host.
-
-ODBC Support
-
-  - ODBC support has been improved to allow production use of ejabberd with
-    relational databases.
-  - Support for vCard storage in ODBC has been added.
-  - ejd2odbc.erl is a tool to convert an installation from Erlang's database
-    Mnesia to an ODBC compatible relational database.
-
-Native PostgreSQL Support
-
-  - Native PostgreSQL support gives you a better performance when you use
-    PostgreSQL.
-
-Shared Roster groups
-
-  - Shared Roster groups support has been enhanced. New is the ability to add
-    all registered users to everyone's roster. Detailed information about this
-    new feature can be found on http://ejabberd.jabber.ru/shared-roster-all
-
-Web Interface
-
-   - The web interface internal code has been modified for better integration
-     and compliancy with J-EAI, an ejabberd-based Enterprise Application
-     Integration platform.
-   - More XHTML 1.0 Transitional compliancy work was done.
-
-Transports
-
-   - A transport workaround can be enabled during compilation. To do this, you
-     can pass the "--enable-roster-gateway-workaround" option to the configure
-     script. (./configure --enable-roster-gateway-workaround)
-     This option allows transports to add items with subscription "to" in the
-     roster by sending <presence type='subscribed'/> stanza to user. This option
-     is only needed for JIT ICQ transport.
-     Warning: by enabling this option, ejabberd will not be fully XMPP compliant
-              anymore.
-
-Documentation and Internationalization
-
-   - Documentation has been extended to cover more topics.
-   - Translations have been updated.
-
-Bugfixes
-
-   - This release contains several bugfixes.
-   - Among other bugfixes include improvements to the client-to-server (c2s)
-     connection management module.
-   - Please refer to the ChangeLog file supplied
-     with this release regarding all improvements in ejabberd.
-
-
-   Installation Notes
-
-
-Supported Erlang Version
-
-   - You need at least Erlang/OTP R9C to run ejabberd 1.0.0.
-
-Installation
-
-   Installers are provided for Microsoft Windows and Linux/x86.
-   Installers can be retrieved from:
-   http://www.process-one.net/en/projects/ejabberd/download.html
-
-Migration Notes
-
-   - Before any migration, ejabberd system and database must be properly
-     backed up.
-   - When upgrading an ODBC-based installation, you will need to change the
-     relational database schema. The following SQL commands must be run on the
-     database:
-       CREATE SEQUENCE spool_seq_seq;
-       ALTER TABLE spool ADD COLUMN seq integer;
-       ALTER TABLE spool ALTER COLUMN seq SET DEFAULT nextval('spool_seq_seq');
-       UPDATE spool SET seq = DEFAULT;
-       ALTER TABLE spool ALTER COLUMN seq SET NOT NULL;
-
-References
-
-   Contributed tutorials of interest are:
-   - Migration from Jabberd1.4 to ejabberd:
-     http://ejabberd.jabber.ru/jabberd1-to-ejabberd
-   - Migration from Jabberd2 to ejabberd:
-     http://ejabberd.jabber.ru/jabberd2-to-ejabberd
-   - Transport configuration for connecting to other networks:
-     http://ejabberd.jabber.ru/tutorials-transports
-
-END
-
-
- - -

B.5  ejabberd 1.1.0

- -
-    Release Notes
-    ejabberd 1.1.0
-    24 April 2006
-
-   This document describes the main changes in ejabberd 1.1.0. This version
-   introduce new features including support for new Jabber Enhancement
-   Proposals and several performance improvements enabling deployments on an
-   even larger scale than already possible.
-
-   ejabberd can be downloaded from the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/
-
-   Detailed information can be found in the ejabberd Feature Sheet and User
-   Guide which are available on the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/docs.html
-
-   A complete list of changes is available from:
-   http://support.process-one.net/secure/ReleaseNote.jspa?projectId=10011&styleName=Html&version=10025
-
-
-   Recent changes include:
-
-
-New Jabber Enhancement Proposal support:
-
-  - JEP-0050: Ad-Hoc Commands.
-  - JEP-0138: Stream Compression.
-  - JEP-0175: SASL anonymous.
-
-Anonymous login
-
-  - SASL anonymous.
-  - Anonymous login for clients that do not yet support SASL Anonymous.
-  
-Relational database Support
-
-  - MySQL is now fully supported through ODBC and in native mode.
-  - Various improvements to the native database interfaces.
-  - The migration tool can use relational databases.
-
-Multi-User Chat improvements
-
-  - Logging of room discussion to text file is now supported.
-  - Better reconfiguration support.
-  - Security oriented fixes.
-  - Several improvements and updates to latest JEP-0045.
-
-Performance scalability improvements for large clusters
-
-  - Improved session synchronisation management between cluster nodes.
-  - Internal architecture has been reworked to use generalize Erlang/OTP
-    framework usage.
-  - Speed improvement on logger.
-  - TCP/IP packet reception change for better network throttling and
-    regulation.
-  As a result, these improvements will reduce load on large scale deployments.
-
-XMPP Protocol related improvements
-
-  - XML stanza size can be limited.
-  - Messages are send to all resources with the same highest priority.
-
-Documentation and Internationalization
-
-   - Documentation has been extended to cover more topics.
-   - Translations have been updated.
-
-Web interface
-
-   - XHTML 1.0 compliance.
-
-Bugfixes
-
-   - This release contains many bugfixes on various areas such as Publish-Subscribe, build
-     chain, installers, IRC gateway, ejabberdctl, amongst others.
-   - Please refer to the ChangeLog file supplied with this release regarding
-     all improvements in ejabberd.
-
-
-
-   Installation Notes
-
-Supported Erlang Version
-
-   - You need at least Erlang/OTP R9C-2 to run ejabberd 1.1.0.
-
-Installation
-
-   Installers are provided for Microsoft Windows, Linux/x86 and MacOSX/PPC.
-   Installers can be retrieved from:
-   http://www.process-one.net/en/projects/ejabberd/download.html
-
-Migration Notes
-
-   - Before any migration, ejabberd system and database must be properly
-     backed up.
-   - The database schema has not been changed comparing to version 1.0.0 and
-     consequently it does not require any migration.
-
-
-References
-
-   Contributed tutorials and documents of interest are:
-   - Migration from Jabberd1.4, Jabberd2 and WPJabber to ejabberd:
-     http://ejabberd.jabber.ru/migrate-to-ejabberd     
-   - Transport configuration for connecting to other networks:
-     http://ejabberd.jabber.ru/tutorials-transports
-   - Using ejabberd with MySQL native driver:
-     http://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver
-   - Anonymous User Support:
-     http://support.process-one.net/doc/display/MESSENGER/Anonymous+users+support
-   - Frequently Asked Questions:
-     http://ejabberd.jabber.ru/faq
-
-END
-
- - -

B.6  ejabberd 1.1.1

- -
-    Release Notes
-    ejabberd 1.1.1 
-    28 April 2006
-
-   This document describes the main changes in ejabberd 1.1.x. This version
-   introduce new features including support for new Jabber Enhancement
-   Proposals and several performance improvements enabling deployments on an
-   even larger scale than already possible.
-
-   This release fix a security issue introduced in ejabberd 1.1.0. In SASL
-   mode, anonymous login was enabled as a default. Upgrading ejabberd 1.1.0 to
-   ejabberd 1.1.1 is highly recommended.
-
-   ejabberd can be downloaded from the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/
-
-   Detailed information can be found in the ejabberd Feature Sheet and User
-   Guide which are available on the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/docs.html
-
-   A complete list of changes is available from:
-   http://support.process-one.net/secure/ReleaseNote.jspa?projectId=10011&styleName=Html&version=10025
-
-
-   Recent changes include:
-
-
-New Jabber Enhancement Proposal support:
-
-  - JEP-0050: Ad-Hoc Commands.
-  - JEP-0138: Stream Compression.
-  - JEP-0175: SASL anonymous.
-
-Anonymous login
-
-  - SASL anonymous.
-  - Anonymous login for clients that do not yet support SASL Anonymous.
-  
-Relational database Support
-
-  - MySQL is now fully supported through ODBC and in native mode.
-  - Various improvements to the native database interfaces.
-  - The migration tool can use relational databases.
-
-Multi-User Chat improvements
-
-  - Logging of room discussion to text file is now supported.
-  - Better reconfiguration support.
-  - Security oriented fixes.
-  - Several improvements and updates to latest JEP-0045.
-
-Performance scalability improvements for large clusters
-
-  - Improved session synchronisation management between cluster nodes.
-  - Internal architecture has been reworked to use generalize Erlang/OTP
-    framework usage.
-  - Speed improvement on logger.
-  - TCP/IP packet reception change for better network throttling and
-    regulation.
-  As a result, these improvements will reduce load on large scale deployments.
-
-XMPP Protocol related improvements
-
-  - XML stanza size can be limited.
-  - Messages are send to all resources with the same highest priority.
-
-Documentation and Internationalization
-
-   - Documentation has been extended to cover more topics.
-   - Translations have been updated.
-
-Web interface
-
-   - XHTML 1.0 compliance.
-
-Bugfixes
-
-   - This release contains many bugfixes on various areas such as Publish-Subscribe, build
-     chain, installers, IRC gateway, ejabberdctl, amongst others.
-   - Please refer to the ChangeLog file supplied with this release regarding
-     all improvements in ejabberd.
-
-
-
-   Installation Notes
-
-Supported Erlang Version
-
-   - You need at least Erlang/OTP R9C-2 to run ejabberd 1.1.0.
-
-Installation
-
-   Installers are provided for Microsoft Windows, Linux/x86 and MacOSX/PPC.
-   Installers can be retrieved from:
-   http://www.process-one.net/en/projects/ejabberd/download.html
-
-Migration Notes
-
-   - Before any migration, ejabberd system and database must be properly
-     backed up.
-   - The database schema has not been changed comparing to version 1.0.0 and
-     consequently it does not require any migration.
-
-
-References
-
-   Contributed tutorials and documents of interest are:
-   - Migration from Jabberd1.4, Jabberd2 and WPJabber to ejabberd:
-     http://ejabberd.jabber.ru/migrate-to-ejabberd     
-   - Transport configuration for connecting to other networks:
-     http://ejabberd.jabber.ru/tutorials-transports
-   - Using ejabberd with MySQL native driver:
-     http://support.process-one.net/doc/display/MESSENGER/Using+ejabberd+with+MySQL+native+driver
-   - Anonymous User Support:
-     http://support.process-one.net/doc/display/MESSENGER/Anonymous+users+support
-   - Frequently Asked Questions:
-     http://ejabberd.jabber.ru/faq
-
-END
-
- - -

B.7  ejabberd 1.1.2

- -
-    Release Notes
-    ejabberd 1.1.2
-         27 September 2006
-
-   This document describes the main changes in ejabberd 1.1.2.
-
-   This version is a major improvement over ejabberd 1.1.1, improving the
-   overall behaviour of the server in many areas. Users of ejabberd 1.1.1
-   should upgrade to this new release for improved robustness and compliance.
-
-   ejabberd can be downloaded from the Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/
-
-   Detailed information can be found in the Feature Sheet and in the
-   Installation and Operation Guide which are both available on the
-   Process-one website:
-   http://www.process-one.net/en/projects/ejabberd/docs.html
-
-   ejabberd includes 44 improvements. A complete list of changes can be
-   retrieved from:
-   http://redir.process-one.net/ejabberd-1.1.2
-
-
-   Recent changes include:
-
-LDAP Improvements
-
-  - Major improvements have been made on the LDAP module. It is now more
-    flexible and more robust.
-
-HTTP Polling Fixes
-
-  - The HTTP polling modules have been fixed and improved: the connections are
-    closed properly and polled messages cannot be lost anymore.
-
-Roster Management Improvement
-
-  - Roster management improvements increase reliability, especially in cases
-  where users are on different servers.
-  - Shared rosters are more reliable.
-
-Improved Robustness
-
-  - It is now possible to limit the number of opened connections for a single
-  user.
-
-Relational databases
-
-  - Database support: Microsoft SQL Server is now officially supported in ODBC
-  mode.
-
-Publish-Subscribe Improvement
-
-  - Restricting node creation with a dedicated ACL rule is now possible.
-
-Localization
-
-  - A Czech translation has been added.
-  - Translations have been updated.
-
-Binary Installer
-
-  - New binary installer for Windows including all requirements.
-  - Improved installers for Linux and MacOSX (PowerPC)
-
-XMPP Compliancy
-
-  - Some protocol compliance fix have been added, after the Portland XMPP
-    Interop Meeting in July.
-
-Miscelanous
-
-  - MUC have been improved (logging rendering).
-  - The command line tool ejabberdctl has been improved.
-  - The build chain has been improved, including MacOSX support.
-  - The documentation has been improved and updated to describe the new
-    features.
-
-Bugfixes
-
-   - Anonymous login bugfixes.
-   - Please refer to the ChangeLog file supplied with this release regarding
-     all improvements in ejabberd.
-
-
-   Installation Notes
-
-Supported Erlang Version
-
-   - You need at least Erlang/OTP R9C-2 to run ejabberd 1.1.2.
-   - The recommanded version is Erlang/OTP R10B-10.
-   - Erlang/OTP R11B has not yet been fully certified for ejabberd.
-
-Installation
-
-   Installers are provided for Microsoft Windows, Linux/x86 and MacOSX/PPC.
-   They can be retrieved from:
-   http://www.process-one.net/en/projects/ejabberd/download.html
-
-Migration Notes
-
-   - Before any migration, ejabberd system and database must be properly
-   backed up.
-   - The relational database schema has changed between version 1.1.1 and
-   1.1.2. An "askmessage" column needs to be added in the "rosterusers" table
-   to perform the migration.
-
-
-References
-
-   Contributed tutorials and documents of interest are:
-   - Migration from other XMPP servers to ejabberd:
-     http://ejabberd.jabber.ru/migrate-to-ejabberd     
-   - Transport configuration for connecting to other networks:
-     http://ejabberd.jabber.ru/tutorials-transports
-   - Frequently Asked Questions:
-     http://ejabberd.jabber.ru/faq
-
-END
-
- - -

C  Acknowledgements

- - -Thanks to all people who contributed to this guide: - - - -

D  Copyright Information

- - -Ejabberd Installation and Operation Guide.
-Copyright © January 23, 2003 — Alexey Shchepin
-
-This document is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version.
-
-This document is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with -this document; if not, write to the Free Software Foundation, Inc., 51 Franklin -Street, Fifth Floor, Boston, MA 02110-1301, USA.
-
- - - -
This document was translated from LATEX by -HEVEA.
- diff --git a/ejabberd-1.1.2/doc/guide.tex b/ejabberd-1.1.2/doc/guide.tex deleted file mode 100644 index 174dc95a6..000000000 --- a/ejabberd-1.1.2/doc/guide.tex +++ /dev/null @@ -1,3159 +0,0 @@ -\documentclass[a4paper,10pt]{article} - -%% Packages -\usepackage{float} -\usepackage{graphics} -\usepackage{hevea} -\usepackage[pdftex,colorlinks,unicode,urlcolor=blue,linkcolor=blue, - pdftitle=Ejabberd\ Installation\ and\ Operation\ Guide,pdfauthor=Alexey\ - Shchepin,pdfsubject=ejabberd,pdfkeywords=ejabberd, - pdfpagelabels=false]{hyperref} -\usepackage{makeidx} -%\usepackage{showidx} % Only for verifying the index entries. -\usepackage{verbatim} -\usepackage{geometry} - -%% Index -\makeindex -% Remove the index anchors from the HTML version to save size and bandwith. -\newcommand{\ind}[1]{\begin{latexonly}\index{#1}\end{latexonly}} - -%% Images -\newcommand{\logoscale}{0.7} -\newcommand{\imgscale}{0.58} -\newcommand{\insimg}[1]{\insscaleimg{\imgscale}{#1}} -\newcommand{\insscaleimg}[2]{ - \imgsrc{#2}{} - \begin{latexonly} - \scalebox{#1}{\includegraphics{#2}} - \end{latexonly} -} - -%% Various -\newcommand{\bracehack}{\def\{{\char"7B}\def\}{\char"7D}} -\newcommand{\titem}[1]{\item[\bracehack\texttt{#1}]} -\newcommand{\ns}[1]{\texttt{#1}} -\newcommand{\jid}[1]{\texttt{#1}} -\newcommand{\option}[1]{\texttt{#1}} -\newcommand{\poption}[1]{{\bracehack\texttt{#1}}} -\newcommand{\node}[1]{\texttt{#1}} -\newcommand{\term}[1]{\texttt{#1}} -\newcommand{\shell}[1]{\texttt{#1}} -\newcommand{\ejabberd}{\texttt{ejabberd}} -\newcommand{\Jabber}{Jabber} - -%% Modules -\newcommand{\module}[1]{\texttt{#1}} -\newcommand{\modadhoc}{\module{mod\_adhoc}} -\newcommand{\modannounce}{\module{mod\_announce}} -\newcommand{\modconfigure}{\module{mod\_configure}} -\newcommand{\moddisco}{\module{mod\_disco}} -\newcommand{\modecho}{\module{mod\_echo}} -\newcommand{\modirc}{\module{mod\_irc}} -\newcommand{\modlast}{\module{mod\_last}} -\newcommand{\modlastodbc}{\module{mod\_last\_odbc}} -\newcommand{\modmuc}{\module{mod\_muc}} -\newcommand{\modmuclog}{\module{mod\_muc\_log}} -\newcommand{\modoffline}{\module{mod\_offline}} -\newcommand{\modofflineodbc}{\module{mod\_offline\_odbc}} -\newcommand{\modprivacy}{\module{mod\_privacy}} -\newcommand{\modprivate}{\module{mod\_private}} -\newcommand{\modpubsub}{\module{mod\_pubsub}} -\newcommand{\modregister}{\module{mod\_register}} -\newcommand{\modroster}{\module{mod\_roster}} -\newcommand{\modrosterodbc}{\module{mod\_roster\_odbc}} -\newcommand{\modservicelog}{\module{mod\_service\_log}} -\newcommand{\modsharedroster}{\module{mod\_shared\_roster}} -\newcommand{\modstats}{\module{mod\_stats}} -\newcommand{\modtime}{\module{mod\_time}} -\newcommand{\modvcard}{\module{mod\_vcard}} -\newcommand{\modvcardldap}{\module{mod\_vcard\_ldap}} -\newcommand{\modvcardodbc}{\module{mod\_vcard\_odbc}} -\newcommand{\modversion}{\module{mod\_version}} - -%% Common options -\newcommand{\iqdiscitem}[1]{\titem{iqdisc} \ind{options!iqdisc}This specifies -the processing discipline for #1 IQ queries -(see section~\ref{sec:modiqdiscoption}).} -\newcommand{\hostitem}[1]{ - \titem{hosts} \ind{options!hosts} This option defines the hostnames of the - service (see section~\ref{sec:modhostsoption}). If neither \texttt{hosts} nor - the old \texttt{host} is present, the prefix `\jid{#1.}' is added to all - \ejabberd{} hostnames. -} - -%\newcommand{\quoting}[2][yozhik]{\begin{quotation}\textcolor{#1}{\textit{#2}}\end{quotation}} % Quotes enabled -%\renewcommand{command}[args][default]{def} -%\renewcommand{\headrule}{{\color{ejblue}% -%\hrule width\headwidth height\headrulewidth \vskip-\headrulewidth}} - -%% Title page -\include{version} -\title{Ejabberd \version\ Installation and Operation Guide} -\author{Alexey Shchepin \\ - \ahrefurl{mailto:alexey@sevcom.net} \\ - \ahrefurl{xmpp:aleksey@jabber.ru}} - -%% Options -\newcommand{\marking}[1]{#1} % Marking disabled -\newcommand{\quoting}[2][yozhik]{} % Quotes disabled -\newcommand{\new}{\marginpar{\textsc{new}}} % Highlight new features -\newcommand{\improved}{\marginpar{\textsc{improved}}} % Highlight improved features - -%% To by-pass errors in the HTML version. -\newstyle{SPAN}{width:20\%; float:right; text-align:left; margin-left:auto;} - -%% Footnotes -\begin{latexonly} -\global\parskip=9pt plus 3pt minus 1pt -\global\parindent=0pt -\gdef\ahrefurl#1{\href{#1}{\texttt{#1}}} -\gdef\footahref#1#2{#2\footnote{\href{#1}{\texttt{#1}}}} -\end{latexonly} -\newcommand{\tjepref}[2]{\footahref{http://www.jabber.org/jeps/jep-#1.html}{#2}} -\newcommand{\jepref}[1]{\tjepref{#1}{JEP-#1}} - -\begin{document} - -\label{titlepage} -\begin{titlepage} - \maketitle{} - - \begin{center} - {\insscaleimg{\logoscale}{logo.png} - \par - } - \end{center} - - \begin{quotation}\textit{I can thoroughly recommend ejabberd for ease of setup --- - Kevin Smith, Current maintainer of the Psi project}\end{quotation} - -\end{titlepage} - -% Set the page counter to 2 so that the titlepage and the second page do not -% have the same page number. This fixes the PDFLaTeX warning "destination with -% the same identifier". -\begin{latexonly} -\setcounter{page}{2} -\end{latexonly} - -\tableofcontents{} - -% Input introduction.tex -\input{introduction} - -\section{\aname{installsource}{Installation from Source}} -\label{sec:installsource} -\ind{installation} - -\subsection{\aname{installreq}{Installation Requirements}} -\label{sec:installreq} -\ind{installation!requirements} - -\subsubsection{\aname{installrequnix}{`Unix-like' operating systems}} -\label{sec:installrequnix} - -To compile \ejabberd{} on a `Unix-like' operating system, you need: -\begin{itemize} -\item GNU Make -\item GCC -\item libexpat 1.95 or higher -\item Erlang/OTP R9C-2 or higher -\item OpenSSL 0.9.6 or higher (optional) -\item Zlib 1.2.3 or higher (optional) -\item GNU Iconv 1.8 or higher (optional, not needed on systems with GNU libc) -\end{itemize} - -\subsubsection{\aname{installreqwin}{Windows}} -\label{sec:installreqwin} - -To compile \ejabberd{} on a Windows flavour, you need: -\begin{itemize} -\item MS Visual C++ 6.0 Compiler -\item \footahref{http://erlang.org/download.html}{Erlang/OTP R9C-2 or higher} -\item \footahref{http://sourceforge.net/project/showfiles.php?group\_id=10127\&package\_id=11277}{Expat 1.95.7 or higher} -\item -\footahref{http://www.gnu.org/software/libiconv/}{GNU Iconv 1.9.1} -(optional) -\item \footahref{http://www.slproweb.com/products/Win32OpenSSL.html}{Shining Light OpenSSL} -(to enable SSL connections) -\item \footahref{http://www.zlib.net/}{Zlib 1.2.3 or higher} -\end{itemize} - -\subsection{\aname{obtaining}{Obtaining \ejabberd{}}} -\label{sec:obtaining} - -\ind{download} -Released versions of \ejabberd{} can be obtained from \\ -\ahrefurl{http://www.process-one.net/en/projects/ejabberd/download.html}. - -\ind{Subversion repository} -The latest development version can be retrieved from the Subversion repository\@. -\begin{verbatim} - svn co http://svn.process-one.net/ejabberd/trunk ejabberd -\end{verbatim} - -\subsection{\aname{compile}{Compilation}} -\label{sec:compile} -\ind{installation!compilation} - -\subsubsection{\aname{compileunix}{`Unix-like' operating systems}} -\label{sec:compileunix} - -Compile \ejabberd{} on a `Unix-like' operating system by executing: - -\begin{verbatim} - ./configure - make - su - make install -\end{verbatim} - -These commands will: -\begin{itemize} -\item install \ejabberd{} into the directory \verb|/var/lib/ejabberd|, -\item install the configuration file into \verb|/etc/ejabberd|, -\item create a directory called \verb|/var/log/ejabberd| to store log files. -\end{itemize} - -Note: if you want to use an external database, you need to execute the configure -script with the option(s) \term{--enable-odbc} or \term{--enable-odbc ---enable-mssql}. See section~\ref{sec:database} for more information. - -\subsubsection{\aname{compilewin}{Windows}} -\label{sec:compilewin} - -\begin{itemize} -\item Install Erlang emulator (for example, into \verb|C:\Program Files\erl5.3|). -\item Install Expat library into \verb|C:\Program Files\Expat-1.95.7| - directory. - - Copy file \verb|C:\Program Files\Expat-1.95.7\Libs\libexpat.dll| - to your Windows system directory (for example, \verb|C:\WINNT| or - \verb|C:\WINNT\System32|) -\item Build and install the Iconv library into the directory - \verb|C:\Program Files\iconv-1.9.1|. - - Copy file \verb|C:\Program Files\iconv-1.9.1\bin\iconv.dll| to your - Windows system directory (more installation instructions can be found in the - file README.woe32 in the iconv distribution). - - Note: instead of copying libexpat.dll and iconv.dll to the Windows - directory, you can add the directories - \verb|C:\Program Files\Expat-1.95.7\Libs| and - \verb|C:\Program Files\iconv-1.9.1\bin| to the \verb|PATH| environment - variable. -\item While in the directory \verb|ejabberd\src| run: -\begin{verbatim} -configure.bat -nmake -f Makefile.win32 -\end{verbatim} -\item Edit the file \verb|ejabberd\src\ejabberd.cfg| and run -\begin{verbatim} -werl -s ejabberd -name ejabberd -\end{verbatim} -\end{itemize} - -%TODO: how to compile database support on windows? - -\subsection{\aname{start}{Starting}} -\label{sec:start} -\ind{starting} -%TODO: update when the ejabberdctl script is made more userfriendly - -Execute the following command to start \ejabberd{}: -\begin{verbatim} - erl -pa /var/lib/ejabberd/ebin -name ejabberd -s ejabberd -\end{verbatim} -or -\begin{verbatim} - erl -pa /var/lib/ejabberd/ebin -sname ejabberd -s ejabberd -\end{verbatim} -In the latter case the Erlang node will be identified using only the first part -of the host name, i.\,e. other Erlang nodes outside this domain cannot contact -this node. - -Note that when using the above command, \ejabberd{} will search for the -configuration file in the current directory and will use the current directory -for storing its user database and for logging. - -To specify the path to the configuration file, the log files and the Mnesia -database directory, you may use the following command: -\begin{verbatim} - erl -pa /var/lib/ejabberd/ebin \ - -sname ejabberd \ - -s ejabberd \ - -ejabberd config \"/etc/ejabberd/ejabberd.cfg\" \ - log_path \"/var/log/ejabberd/ejabberd.log\" \ - -sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} \ - -mnesia dir \"/var/lib/ejabberd/spool\" -\end{verbatim} - -You can find other useful options in the Erlang manual page -(\shell{erl -man erl}). - -To use more than 1024 connections, you should set the environment variable -\verb|ERL_MAX_PORTS|: -\begin{verbatim} - export ERL_MAX_PORTS=32000 -\end{verbatim} -Note that with this value, \ejabberd{} will use more memory (approximately 6\,MB -more). - -To reduce memory usage, you may set the environment variable -\verb|ERL_FULLSWEEP_AFTER|: -\begin{verbatim} - export ERL_FULLSWEEP_AFTER=0 -\end{verbatim} -But in this case \ejabberd{} can start to work slower. - - -\section{\aname{basicconfig}{Basic Configuration}} -\label{sec:basicconfig} -\ind{configuration file} - -The configuration file will be loaded the first time you start \ejabberd{}. The -content from this file will be parsed and stored in a database. Subsequently the -configuration will be loaded from the database and any commands in the -configuration file are appended to the entries in the database. The -configuration file contains a sequence of Erlang terms. Lines beginning with a -\term{`\%'} sign are ignored. Each term is a tuple of which the first element is -the name of an option, and any further elements are that option's values. If the -configuration file do not contain for instance the `hosts' option, the old -host name(s) stored in the database will be used. - - -You can override the old values stored in the database by adding next lines to -the configuration file: -\begin{verbatim} - override_global. - override_local. - override_acls. -\end{verbatim} -With these lines the old global options, local options and ACLs will be removed -before new ones are added. - -\subsection{\aname{hostnames}{Host Names}} -\label{sec:hostnames} -\ind{options!hosts}\ind{host names} - -The option \option{hosts} defines a list containing one or more domains that -\ejabberd{} will serve. - -Examples: -\begin{itemize} -\item Serving one domain: - \begin{verbatim} - {hosts, ["example.org"]}. -\end{verbatim} -\item Serving one domain, and backwards compatible with older \ejabberd{} - versions: - \begin{verbatim} - {host, "example.org"}. -\end{verbatim} -\item Serving two domains: -\begin{verbatim} - {hosts, ["example.net", "example.com"]}. -\end{verbatim} -\end{itemize} - -\subsection{\aname{virtualhost}{Virtual Hosting}} -\label{sec:virtualhost} -\ind{virtual hosting}\ind{virtual hosts}\ind{virtual domains} - -Options can be defined separately for every virtual host using the -\term{host\_config} option.\ind{options!host\_config} It has the following -syntax: -\begin{verbatim} - {host_config, , [