From 42115402722e1eb238a472964851dd60f7b39b62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20R=C3=A9mond?= Date: Fri, 22 Sep 2006 07:25:18 +0000 Subject: Improvement coming from trunk (SVN #601): * 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. SVN Revision: 610 --- doc/guide.html | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'doc/guide.html') diff --git a/doc/guide.html b/doc/guide.html index 554201a54..5c9558f34 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -1980,7 +1980,14 @@ Options: 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. + active room.
+
+
history_size
a small history of the + current discussion is send to users when they enter the room. This option make + it possible to define the number of history messages to keep and send to the + user joining the room. The value is a integer. Setting the value to 0 + disable the history feature and nothing is kept in memory. The default value + is 20. This value is global and affects all MUC rooms on the server. Examples: -

A.3  mod_announce

+

5.3  mod_announce

@@ -1732,7 +1833,7 @@ hosts: 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 A.10) is enabled. + (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. @@ -1782,7 +1883,7 @@ Only administrators can send announcements: -

A.4  mod_disco

+

5.4  mod_disco

@@ -1799,7 +1900,7 @@ 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 A.2.1). +(see section 5.2.1).
extra_domains
With this option, extra domains can be added to the Service Discovery item list. @@ -1834,7 +1935,7 @@ To serve a link to the Jabber User Directory on jabber.org: -

A.5  mod_echo

+

5.5  mod_echo

@@ -1846,8 +1947,8 @@ Options:
hosts
This option defines the hostnames of the - service (see section A.2.2). If neither hosts nor - the old host is present, the prefix “echo.” is added to all + service (see section 5.2.2). If neither hosts nor + the old host is present, the prefix `echo.' is added to all ejabberd hostnames.
@@ -1863,11 +1964,11 @@ Mirror, mirror, on the wall, who is the most beautiful ... ]}.
  • If you still do not understand the inner workings of mod_echo, - you can find a few more examples in section A.2.2. + you can find a few more examples in section 5.2.2. -

    A.6  mod_irc

    +

    5.6  mod_irc

    @@ -1877,16 +1978,16 @@ servers.
    End user information:
    • -A Jabber client with “groupchat 1.0” support or Multi-User +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 + 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
      +
    • 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”
      +
    • 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 @@ -1896,8 +1997,8 @@ Options:
      hosts
      This option defines the hostnames of the - service (see section A.2.2). If neither hosts nor - the old host is present, the prefix “irc.” is added to all + 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 @@ -1906,7 +2007,7 @@ Options: Examples:
      • In the first example, the IRC transport is available on (all) your - virtual host(s) with the prefix “irc.”. Furthermore, anyone is + virtual host(s) with the prefix `irc.'. Furthermore, anyone is able to use the transport.
           {modules,
        @@ -1937,7 +2038,7 @@ In the first example, the IRC transport is available on (all) your
         
      -

      A.7  mod_last

      +

      5.7  mod_last

      @@ -1950,11 +2051,11 @@ Options:
      iqdisc
      This specifies the processing discipline for Last activity (jabber:iq:last) IQ queries -(see section A.2.1). +(see section 5.2.1).
      -

      A.8  mod_muc

      +

      5.8  mod_muc

      @@ -1974,8 +2075,8 @@ Options:
      hosts
      This option defines the hostnames of the - service (see section A.2.2). If neither hosts nor - the old host is present, the prefix “conference.” is added to all + 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 @@ -1988,14 +2089,14 @@ Options: 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 send to users when they enter the room. This option make - it possible to define the number of history messages to keep and send to the - user joining the room. The value is a integer. Setting the value to 0 - disable the history feature and nothing is kept in memory. The default value - is 20. This value is global and affects all MUC rooms on the server. + 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:
      • @@ -2003,9 +2104,9 @@ 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 + 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, + 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.
        @@ -2026,9 +2127,9 @@ In the first example everyone is allowed to use the Multi-User Chat
          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
        + 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
        + 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.
        @@ -2055,62 +2156,77 @@ In the first example everyone is allowed to use the Multi-User Chat
         
      -

      A.9  mod_muc_log

      +

      5.9  mod_muc_log

      -This module enables optional logging of Multi-User Chat conversations to HTML. -Once you enable this module, join a chatroom with enought privileges using a MUC capable Jabber client, -request the configuration form and there you will have an option to enable chatroom logging.
      +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.

      -Some of the features of generated logs: +Features:
      • -A lot of information about chatroom is added on top of the page: Room title, JID, subject author, subject and configuration. -
      • Room title and JID are links to join the chatroom (using XMPP-IRI). +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 when available. +
      • 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 page. +
      • A custom link can be added on top of each page.
      Options:
      access_log
      - Restricts which users are allowed to enable or disable chatroom logging using ACL and ACCESS. - Default: muc_admin. - If you want to allow any chatroom owner put: muc. + 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
      - If HTMLs will use a custom CSS file or the embedded one. - Allowed values: - false: HTMLs will include the standard CSS code; - "CSS-URL": the URL of the CSS file (for example: "http://example.com/my.css"). - Default: false. + 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
      - Type of directory that will be created. - Allowed values: - subdirs: creates subdirectories for year and month; - plain: the filename contains the full date, no subdirs. - Default: subdirs. + 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
      - Full path to the directory where html will be generated. - Make sure the system user has write access on that directory. - Default: "www/muc". + 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
      - What timezone should be used. - Allowed values: - local: use local time, as reported to Erlang by the operating system; - universal: use GMT/UTC time. - Default: local. + 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
      - Customizable link on top right corner. Syntax of this option: {"URL", "Text"}. - Default: {"/", "Home"}. + 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"}.
      -Example configuration: -
      +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,
            [
             ...
        @@ -2124,10 +2240,35 @@ Example configuration:
             ]},
             ...
            ]}.
        -
        +
    • 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}
      +    ]},
      +    ...
      +   ]}.
      +
    -

    A.10  mod_offline

    +

    5.10  mod_offline

    @@ -2135,11 +2276,11 @@ 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 3.4.2).
    +(see section 7.2).

    -

    A.11  mod_privacy

    +

    5.11  mod_privacy

    @@ -2148,19 +2289,19 @@ 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. +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). + is active by default).
    • Allowing or blocking messages based on JID, group, or subscription type - (or globally). + (or globally).
    • Allowing or blocking inbound presence notifications based on JID, group, - or subscription type (or globally). + or subscription type (or globally).
    • Allowing or blocking outbound presence notifications based on JID, group, - or subscription type (or globally). + or subscription type (or globally).
    • Allowing or blocking IQ stanzas based on JID, group, or subscription type - (or globally). + (or globally).
    • Allowing or blocking all communications based on JID, group, or subscription type (or globally).
    @@ -2170,11 +2311,11 @@ Options:
    iqdisc
    This specifies the processing discipline for Blocking Communication (jabber:iq:privacy) IQ queries -(see section A.2.1). +(see section 5.2.1).
    -

    A.12  mod_private

    +

    5.12  mod_private

    @@ -2189,11 +2330,11 @@ Options:
    iqdisc
    This specifies the processing discipline for Private XML Storage (jabber:iq:private) IQ queries -(see section A.2.1). +(see section 5.2.1).
    -

    A.13  mod_pubsub

    +

    5.13  mod_pubsub

    @@ -2223,16 +2364,15 @@ Options:
    hosts
    This option defines the hostnames of the - service (see section A.2.2). If neither hosts nor - the old host is present, the prefix “pubsub.” is added to all + 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
    - Restricts which users are allowed to create pubsub nodes using ACL and ACCESS. - Default: pubsub_createnode. -
    + This option restricts which users are allowed to create pubsub nodes using + ACL and ACCESS. The default value is pubsub_createnode. Example:
       {modules,
    @@ -2246,7 +2386,7 @@ Example:
     
    -

    A.14  mod_register

    +

    5.14  mod_register

    @@ -2260,12 +2400,12 @@ Register a new 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 + 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 A.2.1). +(see section 5.2.1).
    Examples:
    • @@ -2302,7 +2442,7 @@ Next example prohibits the registration of too short account names:
    -

    A.15  mod_roster

    +

    5.15  mod_roster

    @@ -2312,11 +2452,11 @@ Options:
    iqdisc
    This specifies the processing discipline for Roster Management (jabber:iq:roster) IQ queries -(see section A.2.1). +(see section 5.2.1).
    -

    A.16  mod_service_log

    +

    5.16  mod_service_log

    @@ -2356,7 +2496,7 @@ To log all end user packets to the Bandersnatch service running on -

    A.17  mod_shared_roster

    +

    5.17  mod_shared_roster

    @@ -2370,7 +2510,7 @@ Shared roster groups can be edited only via the web interface. Each gro 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 doesn't affect +
    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. @@ -2483,474 +2623,685 @@ Take the case of a computer club that wants all its members seeing each -

    A.18  mod_stats

    +

    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

    +
    -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 A.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: + +

    +Here you can edit access restrictions, manage users, create backups, +manage the database, enable/disable ports listened for, view server +statistics,...
    +
    +Examples:
    • -You can request the number of online users on the current virtual host - (example.org) by sending: +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.
      -<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: + ... + {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/:
      -<iq to='example.org' type='get'>
      -  <query xmlns='http://jabber.org/protocol/stats'>
      -    <stat name='users/all-hosts/total'/>
      -  </query>
      -</iq>
      +  ...
      +  {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"}]},
      +    ...
      +   ]
      +  }.
       
    - + -

    A.19  mod_time

    +

    7.2  ejabberdctl

    - + -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: +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:
    -iqdisc
    This specifies -the processing discipline for Entity Time (jabber:iq:time) IQ queries -(see section A.2.1). +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.
    - + -

    A.20  mod_vcard

    +

    8  Firewall Settings

    - + -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: -
    +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).
    +

    + - hosts
    This option defines the hostnames of the - service (see section A.2.2). If neither hosts nor - the old host is present, the prefix “vjud.” is added to all - ejabberd hostnames. +

    9  SRV Records

    + + -
    iqdisc
    This specifies -the processing discipline for vcard-temp IQ queries -(see section A.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}]},
      -    ...
      -   ]}.
      -
    - +General information: + SRV record +
  • Practical information: + Setting DNS SRV Records + + -

    A.21  LDAP and mod_vcard_ldap

    +

    10  Clustering

    - + - + -

    A.21.1  Features

    +

    10.1  How it Works

    - -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.
    + + +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. +
    + -

    A.21.2  Connection

    +

    10.1.1  Router

    - -Parameters: -
    -ldap_server
    IP address or dns name of your -LDAP server. This option is required. -
    ldap_port
    Port to connect to LDAP server. -Default is 389. -
    ldap_rootdn
    Bind DN. Default is "" -which means anonymous connection. -
    ldap_password
    Bind password. Default -is "". -
    -Example: -
    -  {auth_method, ldap}.
    -  {ldap_servers, ["ldap.mydomain.org"]}.
    -  {ldap_port, 389}.
    -  {ldap_rootdn, "cn=Manager,dc=domain,dc=org"}.
    -  {ldap_password, "secret"}.
    -
    -Note that current LDAP implementation doesn't support SSL connection and SASL -authentication.
    + + +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.

    - + -

    A.21.3  Authentication

    +

    10.1.2  Local Router

    - -You can authenticate users against LDAP directory. Available parameters are -listed below: -
    -ldap_base
    LDAP base directory which stores users -accounts. This option is required. -
    ldap_uidattr
    LDAP attribute which holds -user's part of JID. Default is "uid". -
    ldap_uidattr_format
    Format of the -ldap_uidattr variable. Format MUST contain one and only one pattern -variable "%u" which will be replaced by user's part of JID. For example, -"%u@mydomain.org". Default value is "%u". -
    ldap_filter
    RFC 2254 LDAP filter. Default is -none. Example: "(&(objectClass=shadowAccount)(memberOf=Jabber - Users))". Please, don't forget closing brackets and don't use superfluous -whitespaces. Also you MUST NOT use ldap_uidattr attribute in filter -because this attribute will be substituted in LDAP filter automatically. -
    - + -

    A.21.4  vCards and Search

    +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.
    +
    + - -ejabberd can map LDAP attributes to vCard fields. This behaviour is -implemented in mod_vcard_ldap module. This module doesn't depend on -authentication method. mod_vcard_ldap module has it's own optional -parameters. The first group of parameters has the same meaning as top-level -LDAP parameters: ldap_servers, ldap_port, -ldap_rootdn, ldap_password, ldap_base, -ldap_uidattr, ldap_uidattr_format and -ldap_filter. If one of this option is not set ejabberd will look -for top-level option with the same name. The second group of parameters -consists of the following options: -
    +

    10.1.3  Session Manager

    - hosts
    This option defines the hostnames of the - service (see section A.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 A.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
    the table which defines -reflection of LDAP attributes to vCard fields. - Format is: - [Name_of_vcard_field, Pattern, List_of_LDAP_attributes, ...] - where - Name_of_vcard_field is the type name of 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 which contains of LDAP attributes. - Pattern variables "%s" will be sequentially replaced with the values of - LDAP attributes from List_of_LDAP_attributes; "%u" will be replaced with - user's part of JID and "%d" will be replaced with domain part of JID. - Example: -
    -  {ldap_vcard_map,
    -   [{"NICKNAME", "%u", []},
    -    {"FN", "%s", ["displayName"]},
    -    {"CTRY", "Russia", []},
    -    {"EMAIL", "%u@%d", []},
    -    {"DESC", "%s\n%s", ["title", "description"]}
    -   ]},
    -
    -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 -search form and LDAP attributes to search. - Format: - [Name, Attribute, ...] - where - Name is the name of field in the search form. Will be automatically - translated according to definitions in translation files (see - msgs/*.msg for available words). - Attribute is the LDAP attribute or the pattern "%u" - Example: -
    -  {ldap_search_fields,
    -   [{"User", "uid"},
    -    {"Full Name", "displayName"},
    -    {"Email", "mail"}
    -   ]},
    -
    -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 search fields to be reported. - Format: - [Name, VCard_Name, ...] - where - Name is the name of field in the search form. Will be automatically - translated according to definitions in translation files (see - msgs/*.msg for available words). - VCard_Name is the name of vCard field defined in ldap_vcard_map option. - Example: -
    -  {ldap_search_reported,
    -   [{"Full Name", "FN"},
    -    {"Email", "EMAIL"},
    -    {"Birthday", "BDAY"},
    -    {"Nickname", "NICKNAME"}
    -   ]},
    -
    -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"}]
    -
    - +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.
    +
    + -

    A.21.5  Examples

    +

    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.
    +
    + -
    Common example
    +

    10.2  Clustering Setup

    -Let's say ldap.mydomain.org is the name of our LDAP server. We have -users with their passwords in "ou=Users,dc=mydomain,dc=org" directory. -Also we have addressbook, which contains users emails and their additional -infos in "ou=AddressBook,dc=mydomain,dc=org" directory. Corresponding -authentication section should looks like this: + + +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:
      -  %% authentication method
      -  {auth_method, ldap}.
      -  %% DNS name of our LDAP server
      -  {ldap_servers, ["ldap.mydomain.org"]}.
      -  %% Bind to LDAP server as "cn=Manager,dc=mydomain,dc=org" with password "secret"
      -  {ldap_rootdn, "cn=Manager,dc=mydomain,dc=org"}.
      -  {ldap_password, "secret"}.
      -  %% define the user's base
      -  {ldap_base, "ou=Users,dc=mydomain,dc=org"}.
      -  %% We want to authorize users from 'shadowAccount' object class only
      -  {ldap_filter, "(objectClass=shadowAccount)"}.
      +erl -sname ejabberd \
      +    -mnesia extra_db_nodes "['ejabberd@first']" \
      +    -s mnesia
       
      -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: + 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:
      -  {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=mydomain,dc=org" subtree.
      -      {ldap_rootdn, ""},
      -      {ldap_password, ""},
      -      %% define the addressbook's base
      -      {ldap_base, "ou=AddressBook,dc=mydomain,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.mydomain.org"},
      -      %% We have to define empty filter here, because entries in addressbook doesn't
      -      %% 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.
      +running db nodes = [ejabberd@first, ejabberd@second] +

      - - -
      Active Directory
      - -Active Directory is just an LDAP-server with predefined attributes. Sample -config file is listed below: +
    3. Now run the following in the same `erl' session:
      -  {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"}]}
      -   ]
      -  }.
      +mnesia:change_table_copy_type(schema, node(), disc_copies).
       
      - - -

      A.22  mod_version

      - - - -This module implements Software Version (JEP-0092). Consequently, it -answers ejabberd's version when queried.
      + This will create local disc storage for the database.

      -Options: -
      -iqdisc
      This specifies -the processing discipline for Software Version (jabber:iq:version) IQ queries -(see section A.2.1). -
      +(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.
    +
    + -

    B  Internationalization and Localization

    +

    A  Internationalization and Localization

    @@ -2966,7 +3317,7 @@ Figure 2, for example, shows the reply to the f

    - + discorus.png
    @@ -2980,26 +3331,26 @@ The web interface also supports the Accept-Language HTTP header (co figure 3 with figure 1)

    - + webadmmainru.png

    Figure 3: Top page from the web interface with HTTP header - “Accept-Language: ru”

    + `Accept-Language: ru'



    -

    C  Release Notes

    +

    B  Release Notes

    -

    C.1  ejabberd 0.9

    +

    B.1  ejabberd 0.9

            Release notes
    @@ -3093,7 +3444,7 @@ Bugfixes
     
    -

    C.2  ejabberd 0.9.1

    +

    B.2  ejabberd 0.9.1

            Release notes
    @@ -3161,7 +3512,7 @@ Bugfixes
     
    -

    C.3  ejabberd 0.9.8

    +

    B.3  ejabberd 0.9.8

            Release notes
    @@ -3266,7 +3617,7 @@ END
     
    -

    C.4  ejabberd 1.0.0

    +

    B.4  ejabberd 1.0.0

            Release Notes
    @@ -3392,7 +3743,7 @@ END
     
    -

    C.5  ejabberd 1.1.0

    +

    B.5  ejabberd 1.1.0

         Release Notes
    @@ -3513,7 +3864,7 @@ END
     
    -

    C.6  ejabberd 1.1.1

    +

    B.6  ejabberd 1.1.1

         Release Notes
    @@ -3638,13 +3989,14 @@ END
     
    -

    D  Acknowledgements

    +

    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.
    +
    -- cgit v1.2.3 From 78aeb15aacbba27238bd719b706ed9a27e2f3069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20R=C3=A9mond?= Date: Sun, 24 Sep 2006 12:35:47 +0000 Subject: * src/doc/guide.html: Minor W3C compliance fix in an Hevea generated URL. SVN Revision: 625 --- doc/guide.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'doc/guide.html') diff --git a/doc/guide.html b/doc/guide.html index 130a9c128..214f8ef7f 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -321,7 +321,7 @@ To compile ejabberd on a Windows flavour, you need:
    • MS Visual C++ 6.0 Compiler
    • Erlang/OTP R9C-2 or higher -
    • Expat 1.95.7 or higher +
    • Expat 1.95.7 or higher
    • GNU Iconv 1.9.1 (optional)
    • Shining Light OpenSSL -- cgit v1.2.3 From 6a3afa778b05b935be920578214503e78e49d6ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20R=C3=A9mond?= Date: Mon, 25 Sep 2006 07:55:43 +0000 Subject: * doc/introduction.tex: Minor doc updates for release 1.1.2. SVN Revision: 630 --- doc/guide.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'doc/guide.html') diff --git a/doc/guide.html b/doc/guide.html index 214f8ef7f..596a5ec91 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -221,14 +221,14 @@ Comprehensive documentation.
    • Straightforward installers for Linux, Mac OS X, and Windows.improved
    • Web interface for administration tasks.
    • Shared Roster Groups. -
    • Command line administration tool. +
    • 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 11 languages. +Translated in 12 languages.improved
    • Support for IDNA.


    @@ -267,7 +267,7 @@ Native MySQL support.
  • Authentication
    • -LDAP and ODBC. +LDAP and ODBC.improved
    • External Authentication script.
    • Internal Authentication.
    -- cgit v1.2.3 From 7214549508902b5cd4c2e89c608ee09678cbc24b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20R=C3=A9mond?= Date: Wed, 27 Sep 2006 13:09:50 +0000 Subject: * doc/guide.tex: Fixed Latexish typos. SVN Revision: 646 --- doc/guide.html | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'doc/guide.html') diff --git a/doc/guide.html b/doc/guide.html index 596a5ec91..489f76c02 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -321,7 +321,7 @@ To compile ejabberd on a Windows flavour, you need:
    • MS Visual C++ 6.0 Compiler
    • Erlang/OTP R9C-2 or higher -
    • Expat 1.95.7 or higher +
    • Expat 1.95.7 or higher
    • GNU Iconv 1.9.1 (optional)
    • Shining Light OpenSSL @@ -627,7 +627,7 @@ If HTTP Polling is enabled, it will be available at
      {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 + 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 @@ -997,14 +997,14 @@ Examples: To limit the number of sessions per user to 10 on all virtual hosts:
      -  {max\_user\_sessions, 10}.
      +  {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}]}.
      +  {host_config, "example.net", [{max_user_sessions, 6}]}.
      +  {host_config, "example.com", [{max_user_sessions, infinity}]}.
       
    -- cgit v1.2.3 From 8515833954418ad0b2594623aa61c8175d286cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micka=C3=ABl=20R=C3=A9mond?= Date: Wed, 27 Sep 2006 17:29:45 +0000 Subject: * Added release note to documentation. SVN Revision: 650 --- doc/guide.html | 136 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 132 insertions(+), 4 deletions(-) (limited to 'doc/guide.html') diff --git a/doc/guide.html b/doc/guide.html index 489f76c02..fd3f0a75a 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -182,9 +182,10 @@ SPAN{width:20%; float:right; text-align:left; margin-left:auto;}
  • B.4  ejabberd 1.0.0
  • B.5  ejabberd 1.1.0
  • B.6  ejabberd 1.1.1 +
  • B.7  ejabberd 1.1.2 -
  • C  Acknowledgements -
  • D  Copyright Information +
  • C  Acknowledgements +
  • D  Copyright Information @@ -3985,11 +3986,138 @@ References - 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)
    +
    +
    +- Anonymous login bugfixes.
    +
    +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
    +
    +   - 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

    +

    C  Acknowledgements

    Thanks to all people who contributed to this guide: @@ -4006,7 +4134,7 @@ Alexey Shchepin (xmpp:aleksey@jabber.ru -

    D  Copyright Information

    +

    D  Copyright Information

    Ejabberd Installation and Operation Guide.
    -- cgit v1.2.3