2003-01-23 21:57:55 +01:00
|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
|
|
|
|
"http://www.w3.org/TR/REC-html40/loose.dtd">
|
|
|
|
<HTML>
|
|
|
|
<HEAD><TITLE>Ejabberd Installation and Operation Guide</TITLE>
|
2003-02-10 15:31:27 +01:00
|
|
|
|
2003-01-23 21:57:55 +01:00
|
|
|
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
2003-02-10 15:31:27 +01:00
|
|
|
<META name="GENERATOR" content="hevea 1.06">
|
2003-01-23 21:57:55 +01:00
|
|
|
</HEAD>
|
|
|
|
<BODY >
|
2003-02-10 15:31:27 +01:00
|
|
|
<!--HEVEA command line is: /usr/bin/hevea guide.tex -->
|
2003-01-23 21:57:55 +01:00
|
|
|
<!--HTMLHEAD-->
|
|
|
|
<!--ENDHTML-->
|
2003-02-10 15:31:27 +01:00
|
|
|
<!--PREFIX <ARG ></ARG>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
<!--CUT DEF section 1 -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<H1 ALIGN=center>Ejabberd Installation and Operation Guide</H1>
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3 ALIGN=center>Alexey Shchepin<BR>
|
|
|
|
<A HREF="mailto:alexey@sevcom.net"><TT>mailto:alexey@sevcom.net</TT></A><BR>
|
|
|
|
<A HREF="xmpp:aleksey@jabber.ru"><TT>xmpp:aleksey@jabber.ru</TT></A></H3>
|
|
|
|
|
|
|
|
<H3 ALIGN=center>February 3, 2003</H3><DIV ALIGN=center>
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-03 21:23:08 +01:00
|
|
|
<IMG SRC="logo.png">
|
2003-01-24 21:18:33 +01:00
|
|
|
|
2003-02-03 21:23:08 +01:00
|
|
|
|
2003-01-24 21:18:33 +01:00
|
|
|
</DIV><BR>
|
|
|
|
<BR>
|
|
|
|
|
2003-01-23 21:57:55 +01:00
|
|
|
|
|
|
|
<BR>
|
|
|
|
<BR>
|
|
|
|
<!--TOC section Introduction-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H2><A NAME="htoc1">1</A> Introduction</H2><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:intro"></A>
|
|
|
|
<TT>ejabberd</TT> is a Free and Open Source distributed fault-tolerant Jabber
|
|
|
|
server. It is writen mostly in Erlang.<BR>
|
2003-01-23 21:57:55 +01:00
|
|
|
<BR>
|
2003-02-03 21:23:08 +01:00
|
|
|
Main features of ejabberd is:
|
2003-02-10 15:31:27 +01:00
|
|
|
<UL><LI>
|
|
|
|
Distributed. You can run ejabberd on a cluster of machines and
|
|
|
|
all of them will serve one Jabber domain.
|
|
|
|
<LI>Fault-tolerance. You can setup an ejabberd cluster so that all
|
|
|
|
information required for a properly working service will be stored
|
|
|
|
permanently on more then one node. This means that if one of the
|
|
|
|
nodes crashed, then the others continue working without disruption.
|
|
|
|
You can also add or replace more nodes ``on the fly''.
|
|
|
|
<LI>Support for
|
|
|
|
<A HREF="http://www.jabber.org/jeps/jep-0030.html">JEP-0030</A>
|
2003-02-03 21:23:08 +01:00
|
|
|
(Service Discovery).
|
2003-02-10 15:31:27 +01:00
|
|
|
<LI>Support for
|
|
|
|
<A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A>
|
2003-02-03 21:23:08 +01:00
|
|
|
(Statistics Gathering).
|
2003-02-10 15:31:27 +01:00
|
|
|
<LI>Support for <TT>xml:lang</TT> attribute in many XML elements.
|
|
|
|
<LI>JUD based on users vCards.
|
|
|
|
</UL>
|
|
|
|
<!--TOC section Installation-->
|
2003-02-03 21:23:08 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H2><A NAME="htoc2">2</A> Installation</H2><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:installation"></A>
|
|
|
|
<!--TOC subsection Installation Requirements-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc3">2.1</A> Installation Requirements</H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:installreq"></A>
|
|
|
|
To compile <TT>ejabberd</TT>, you need following packages:
|
|
|
|
<UL><LI>
|
|
|
|
GNU Make;
|
|
|
|
<LI>GCC;
|
|
|
|
<LI>libexpat 1.95 or later;
|
|
|
|
<LI>Erlang/OTP R8B or later.
|
|
|
|
</UL>
|
|
|
|
<!--TOC subsection Obtaining-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc4">2.2</A> Obtaining</H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:obtaining"></A>
|
|
|
|
Currently no stable version has been released.<BR>
|
2003-01-23 21:57:55 +01:00
|
|
|
<BR>
|
2003-02-10 15:31:27 +01:00
|
|
|
The latest alpha version can be retrieved via CVS. Do following steps:
|
|
|
|
<UL><LI>
|
|
|
|
<TT>export CVSROOT=:pserver:cvs@www.jabber.ru:/var/spool/cvs</TT>
|
|
|
|
<LI><TT>cvs login</TT>
|
|
|
|
<LI>Press Enter when asked for a password
|
|
|
|
<LI><TT>cvs -z3 co ejabberd</TT>
|
|
|
|
</UL>
|
|
|
|
<!--TOC subsection Compilation-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc5">2.3</A> Compilation</H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:compilation"></A>
|
|
|
|
<PRE>
|
2003-01-28 20:45:13 +01:00
|
|
|
./configure
|
|
|
|
make
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
TBD<BR>
|
2003-01-28 20:45:13 +01:00
|
|
|
<BR>
|
|
|
|
<!--TOC subsection Starting-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc6">2.4</A> Starting</H3><!--SEC END -->
|
2003-01-28 20:45:13 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:starting"></A>
|
|
|
|
... To use more then 1024 connections, you need to set environment
|
2003-02-05 21:28:49 +01:00
|
|
|
variable <TT>ERL_MAX_PORTS</TT>:
|
|
|
|
<PRE>
|
|
|
|
export ERL_MAX_PORTS=32000
|
|
|
|
</PRE>Note that with this value <TT>ejabberd</TT> will use more memory (approximately 6MB
|
2003-02-10 15:31:27 +01:00
|
|
|
more)...
|
2003-02-05 21:28:49 +01:00
|
|
|
<PRE>
|
2003-01-28 20:45:13 +01:00
|
|
|
erl -name ejabberd -s ejabberd
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
TBD<BR>
|
2003-01-28 20:45:13 +01:00
|
|
|
<BR>
|
|
|
|
<!--TOC section Configuration-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H2><A NAME="htoc7">3</A> Configuration</H2><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:configuration"></A>
|
|
|
|
<!--TOC subsection Initial Configuration-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc8">3.1</A> Initial Configuration</H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:initconfig"></A>
|
|
|
|
Configuration file is loaded after first start of <TT>ejabberd</TT>. It consists of
|
2003-01-23 21:57:55 +01:00
|
|
|
sequence of Erlang terms. Parts of lines after <TT>`%'</TT> sign are ignored.
|
|
|
|
Each term is tuple, where first element is name of option, and other are option
|
2003-01-29 21:21:14 +01:00
|
|
|
values. Note, that after first start all values from this file stored in
|
|
|
|
database, and in next time they will be APPENDED to existing values. E. g.
|
|
|
|
if this file will not contain ``host'' definition, then old value will be
|
|
|
|
used.<BR>
|
2003-01-23 21:57:55 +01:00
|
|
|
<BR>
|
2003-02-01 21:21:28 +01:00
|
|
|
To override old values following lines can be added in config:
|
|
|
|
<PRE>
|
|
|
|
override_global.
|
|
|
|
override_local.
|
|
|
|
override_acls.
|
|
|
|
</PRE>With this lines old global or local options or ACLs will be removed before
|
|
|
|
adding new ones.<BR>
|
|
|
|
<BR>
|
2003-01-23 21:57:55 +01:00
|
|
|
<!--TOC subsubsection Host Name-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc9">3.1.1</A> Host Name</H4><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:confighostname"></A>
|
|
|
|
Option <TT>hostname</TT> defines name of Jabber domain that <TT>ejabberd</TT>
|
2003-01-23 21:57:55 +01:00
|
|
|
serves. E. g. to use <TT>jabber.org</TT> domain add following line in config:
|
|
|
|
<PRE>
|
|
|
|
{host, "jabber.org"}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
<!--TOC subsubsection Access Rules-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc10">3.1.2</A> Access Rules</H4><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:configaccess"></A>
|
|
|
|
Access control in <TT>ejabberd</TT> is done via Access Control Lists (ACL).
|
2003-02-03 21:23:08 +01:00
|
|
|
Declaration of ACL in config file have following syntax:
|
2003-01-25 21:13:36 +01:00
|
|
|
<PRE>
|
|
|
|
{acl, <aclname>, {<acltype>, ...}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
<TT><acltype></TT> can be one of following:
|
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>all</TT></B><DD> Matches all JIDs. Example:
|
2003-01-25 21:13:36 +01:00
|
|
|
<PRE>
|
|
|
|
{acl, all, all}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{user, <username>}</TT></B><DD> Matches local user with name
|
2003-01-25 21:13:36 +01:00
|
|
|
<TT><username></TT>. Example:
|
|
|
|
<PRE>
|
|
|
|
{acl, admin, {user, "aleksey"}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{user, <username>, <server>}</TT></B><DD> Matches user with JID
|
2003-01-29 21:21:14 +01:00
|
|
|
<TT><username>@<server></TT> and any resource. Example:
|
2003-01-25 21:13:36 +01:00
|
|
|
<PRE>
|
|
|
|
{acl, admin, {user, "aleksey", "jabber.ru"}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{server, <server>}</TT></B><DD> Matches any JID from server
|
2003-01-25 21:13:36 +01:00
|
|
|
<TT><server></TT>. Example:
|
|
|
|
<PRE>
|
|
|
|
{acl, jabberorg, {server, "jabber.org"}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{user_regexp, <regexp>}</TT></B><DD> Matches local user with name that
|
2003-01-29 21:21:14 +01:00
|
|
|
mathes <TT><regexp></TT>. Example:
|
|
|
|
<PRE>
|
2003-02-06 20:09:22 +01:00
|
|
|
{acl, tests, {user, "^test[0-9]*$"}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{user_regexp, <regexp>, <server>}</TT></B><DD> Matches user with name
|
2003-01-29 21:21:14 +01:00
|
|
|
that mathes <TT><regexp></TT> and from server <TT><server></TT>. Example:
|
|
|
|
<PRE>
|
2003-02-06 20:09:22 +01:00
|
|
|
{acl, tests, {user, "^test", "localhost"}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{server_regexp, <regexp>}</TT></B><DD> Matches any JID from server that
|
2003-01-29 21:21:14 +01:00
|
|
|
matches <TT><regexp></TT>. Example:
|
|
|
|
<PRE>
|
2003-02-06 20:09:22 +01:00
|
|
|
{acl, icq, {server, "^icq\\."}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{node_regexp, <user_regexp>, <server_regexp>}</TT></B><DD> Matches user
|
2003-01-29 21:21:14 +01:00
|
|
|
with name that mathes <TT><user_regexp></TT> and from server that matches
|
|
|
|
<TT><server_regexp></TT>. Example:
|
|
|
|
<PRE>
|
2003-02-06 20:09:22 +01:00
|
|
|
{acl, aleksey, {node_regexp, "^aleksey", "^jabber.(ru|org)$"}}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE><DT><B><TT>{user_glob, <glob>}</TT></B><DD>
|
|
|
|
<DT><B><TT>{user_glob, <glob>, <server>}</TT></B><DD>
|
|
|
|
<DT><B><TT>{server_glob, <glob>}</TT></B><DD>
|
|
|
|
<DT><B><TT>{node_glob, <user_glob>, <server_glob>}</TT></B><DD> This is same as
|
2003-01-29 21:21:14 +01:00
|
|
|
above, but use shell glob patterns instead of regexp. This patterns can have
|
|
|
|
following special characters:
|
2003-02-10 15:31:27 +01:00
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>*</TT></B><DD> matches any string including the null string.
|
|
|
|
<DT><B><TT>?</TT></B><DD> matches any single character.
|
|
|
|
<DT><B><TT>[...]</TT></B><DD> matches any of the enclosed characters. Character
|
2003-01-29 21:21:14 +01:00
|
|
|
ranges are specified by a pair of characters separated by a <TT>`-'</TT>.
|
|
|
|
If the first character after <TT>`['</TT> is a <TT>`!'</TT>, then any
|
|
|
|
character not enclosed is matched.
|
|
|
|
</DL>
|
2003-02-10 15:31:27 +01:00
|
|
|
</DL>
|
|
|
|
Following ACLs pre-defined:
|
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>all</TT></B><DD> Matches all JIDs.
|
|
|
|
<DT><B><TT>none</TT></B><DD> Matches none JIDs.
|
|
|
|
</DL>
|
|
|
|
Allowing or denying of different services is like this:
|
2003-01-25 21:13:36 +01:00
|
|
|
<PRE>
|
|
|
|
{access, <accessname>, [{allow, <aclname>},
|
|
|
|
{deny, <aclname>},
|
|
|
|
...
|
|
|
|
]}.
|
|
|
|
</PRE>When JID is checked to have access to <TT><accessname></TT>, server
|
|
|
|
sequentially checks if this JID in one of the ACLs that are second elements in
|
2003-02-03 21:23:08 +01:00
|
|
|
each tuple in list. If one of them matched, then returned first element of
|
2003-01-25 21:13:36 +01:00
|
|
|
matched tuple. Else returned ``<TT>deny</TT>''.<BR>
|
|
|
|
<BR>
|
|
|
|
Example:
|
|
|
|
<PRE>
|
|
|
|
{access, configure, [{allow, admin}]}.
|
|
|
|
{access, something, [{deny, badmans},
|
|
|
|
{allow, all}]}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
Following access rules pre-defined:
|
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>all</TT></B><DD> Always return ``<TT>allow</TT>''
|
|
|
|
<DT><B><TT>none</TT></B><DD> Always return ``<TT>deny</TT>''
|
|
|
|
</DL>
|
|
|
|
<!--TOC subsubsection Listened Sockets-->
|
2003-02-01 21:21:28 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc11">3.1.3</A> Listened Sockets</H4><!--SEC END -->
|
2003-02-01 21:21:28 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:configlistened"></A>
|
|
|
|
Option <TT>listen</TT> defines list of listened sockets and what services
|
2003-02-01 21:21:28 +01:00
|
|
|
runned on them. Each element of list is a tuple with following elements:
|
2003-02-10 15:31:27 +01:00
|
|
|
<UL><LI>
|
|
|
|
Port number;
|
|
|
|
<LI>Module that serves this port;
|
|
|
|
<LI>Function in this module that starts connection (likely will be removed);
|
|
|
|
<LI>Options to this module.
|
|
|
|
</UL>
|
|
|
|
Currently three modules implemented:
|
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>ejabberd_c2s</TT></B><DD> This module serves C2S connections.<BR>
|
2003-02-01 21:21:28 +01:00
|
|
|
<BR>
|
2003-02-10 15:31:27 +01:00
|
|
|
Following options defined:
|
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>{access, <access rule>}</TT></B><DD> This option defines access of users
|
2003-02-01 21:21:28 +01:00
|
|
|
to this C2S port. Default value is ``<TT>all</TT>''.
|
|
|
|
</DL>
|
2003-02-10 15:31:27 +01:00
|
|
|
<DT><B><TT>ejabberd_s2s_in</TT></B><DD> This module serves incoming S2S connections.
|
|
|
|
<DT><B><TT>ejabberd_service</TT></B><DD> This module serves connections to Jabber
|
2003-02-01 21:21:28 +01:00
|
|
|
services (i. e. that use <TT>jabber:component:accept</TT> namespace).
|
2003-02-10 15:31:27 +01:00
|
|
|
</DL>
|
|
|
|
For example, following configuration defines that C2S connections listened on
|
2003-02-01 21:21:28 +01:00
|
|
|
port 5222 and denied for user ``<TT>bad</TT>'', S2S on port 5269 and that
|
|
|
|
service <TT>conference.jabber.org</TT> must be connected to port 8888 with
|
2003-02-10 15:31:27 +01:00
|
|
|
password ``<TT>secret</TT>''.
|
2003-02-01 21:21:28 +01:00
|
|
|
<PRE>
|
|
|
|
{acl, blocked, {user, "bad"}}.
|
|
|
|
{access, c2s, [{deny, blocked},
|
|
|
|
{allow, all}]}.
|
|
|
|
{listen, [{5222, ejabberd_c2s, start, [{access, c2s}]},
|
|
|
|
{5269, ejabberd_s2s_in, start, []},
|
|
|
|
{8888, ejabberd_service, start,
|
|
|
|
[{host, "conference.jabber.org", [{password, "secret"}]}]}
|
|
|
|
]}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
<!--TOC subsubsection Modules-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc12">3.1.4</A> Modules</H4><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:configmodules"></A>
|
|
|
|
Option <TT>modules</TT> defines list of modules that will be loaded after
|
2003-01-23 21:57:55 +01:00
|
|
|
<TT>ejabberd</TT> startup. Each list element is a tuple where first element is a
|
2003-01-26 21:16:53 +01:00
|
|
|
name of module and second is list of options to this module. See
|
2003-02-08 19:21:05 +01:00
|
|
|
section <A HREF="#sec:modules">A</A> for detailed information on each module.<BR>
|
2003-01-23 21:57:55 +01:00
|
|
|
<BR>
|
|
|
|
Example:
|
|
|
|
<PRE>
|
|
|
|
{modules, [
|
2003-01-24 21:18:33 +01:00
|
|
|
{mod_register, []},
|
|
|
|
{mod_roster, []},
|
|
|
|
{mod_configure, []},
|
|
|
|
{mod_disco, []},
|
|
|
|
{mod_stats, []},
|
|
|
|
{mod_vcard, []},
|
2003-01-23 21:57:55 +01:00
|
|
|
{mod_offline, []},
|
2003-01-25 21:13:36 +01:00
|
|
|
{mod_echo, [{host, "echo.localhost"}]},
|
2003-01-24 21:18:33 +01:00
|
|
|
{mod_private, []},
|
2003-01-25 21:13:36 +01:00
|
|
|
{mod_time, [{iqdisc, no_queue}]},
|
2003-01-24 21:18:33 +01:00
|
|
|
{mod_version, []}
|
2003-01-23 21:57:55 +01:00
|
|
|
]}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
<!--TOC subsection Online Configuration and Monitoring-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc13">3.2</A> Online Configuration and Monitoring</H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:onlineconfig"></A>
|
|
|
|
To use facility of online reconfiguration of <TT>ejabberd</TT> needed to have
|
2003-02-08 19:21:05 +01:00
|
|
|
<TT>mod_configure</TT> loaded (see section <A HREF="#sec:modconfigure">A.4</A>). Also highly
|
|
|
|
recommended to load <TT>mod_disco</TT> (see section <A HREF="#sec:moddisco">A.5</A>), because
|
2003-01-29 21:21:14 +01:00
|
|
|
<TT>mod_configure</TT> highly integrates with it. Also recommended to use disco- and
|
|
|
|
xdata-capable client
|
|
|
|
(<A HREF="http://www.jabber.ru/projects/tkabber/index_en.html">Tkabber</A>
|
|
|
|
developed synchronously with <TT>ejabberd</TT>, its CVS version use most of
|
|
|
|
<TT>ejabberd</TT> features).<BR>
|
2003-01-23 21:57:55 +01:00
|
|
|
<BR>
|
2003-02-03 21:23:08 +01:00
|
|
|
On disco query <TT>ejabberd</TT> returns following items:
|
2003-02-10 15:31:27 +01:00
|
|
|
<UL><LI>
|
|
|
|
Identity of server.
|
|
|
|
<LI>List of features, including defined namespaces.
|
|
|
|
<LI>List of JIDs from route table.
|
|
|
|
<LI>List of disco-nodes described in following subsections.
|
2003-02-08 19:21:05 +01:00
|
|
|
</UL>
|
|
|
|
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
|
|
|
|
|
|
|
<IMG SRC="disco.png">
|
|
|
|
|
|
|
|
|
|
|
|
<BR>
|
|
|
|
<DIV ALIGN=center>Figure 1: Tkabber Discovery window</DIV><BR>
|
|
|
|
|
|
|
|
<A NAME="fig:disco"></A>
|
2003-02-10 15:31:27 +01:00
|
|
|
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
|
|
|
|
<!--TOC subsubsection Node <TT>config</TT>: Global Configuration-->
|
|
|
|
|
|
|
|
<H4><A NAME="htoc14">3.2.1</A> Node <TT>config</TT>: Global Configuration</H4><!--SEC END -->
|
2003-02-03 21:23:08 +01:00
|
|
|
|
|
|
|
Under this node exists following nodes:<BR>
|
|
|
|
<BR>
|
|
|
|
<!--TOC paragraph Node <TT>config/hostname</TT>-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H5>Node <TT>config/hostname</TT></H5><!--SEC END -->
|
|
|
|
|
2003-02-03 21:23:08 +01:00
|
|
|
Via <TT>jabber:x:data</TT> queries to this node possible to change host name of
|
2003-02-08 19:21:05 +01:00
|
|
|
this <TT>ejabberd</TT> server. (See figure <A HREF="#fig:hostname">2</A>) (Currently will work
|
2003-02-03 21:23:08 +01:00
|
|
|
correctly only after restart)
|
|
|
|
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
2003-02-08 19:21:05 +01:00
|
|
|
|
|
|
|
<IMG SRC="confhostname.png">
|
|
|
|
|
|
|
|
|
2003-02-03 21:23:08 +01:00
|
|
|
<BR>
|
2003-02-08 19:21:05 +01:00
|
|
|
<DIV ALIGN=center>Figure 2: Editing of hostname</DIV><BR>
|
2003-02-03 21:23:08 +01:00
|
|
|
|
|
|
|
<A NAME="fig:hostname"></A>
|
2003-02-10 15:31:27 +01:00
|
|
|
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
|
|
|
|
<!--TOC paragraph Node <TT>config/acls</TT>-->
|
|
|
|
|
|
|
|
<H5>Node <TT>config/acls</TT></H5><!--SEC END -->
|
2003-02-03 21:23:08 +01:00
|
|
|
|
2003-02-06 20:09:22 +01:00
|
|
|
Via <TT>jabber:x:data</TT> queries to this node possible to edit ACLs list. (See
|
2003-02-08 19:21:05 +01:00
|
|
|
figure <A HREF="#fig:acls">3</A>)
|
2003-02-03 21:23:08 +01:00
|
|
|
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
2003-02-08 19:21:05 +01:00
|
|
|
|
|
|
|
<IMG SRC="confacls.png">
|
|
|
|
|
|
|
|
|
2003-02-03 21:23:08 +01:00
|
|
|
<BR>
|
2003-02-08 19:21:05 +01:00
|
|
|
<DIV ALIGN=center>Figure 3: Editing of ACLs</DIV><BR>
|
2003-02-03 21:23:08 +01:00
|
|
|
|
|
|
|
<A NAME="fig:acls"></A>
|
2003-02-10 15:31:27 +01:00
|
|
|
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
|
|
|
|
<!--TOC paragraph Node <TT>config/access</TT>-->
|
|
|
|
|
|
|
|
<H5>Node <TT>config/access</TT></H5><!--SEC END -->
|
2003-02-03 21:23:08 +01:00
|
|
|
|
2003-02-06 20:09:22 +01:00
|
|
|
Via <TT>jabber:x:data</TT> queries to this node possible to edit access rules.<BR>
|
2003-02-03 21:23:08 +01:00
|
|
|
<BR>
|
|
|
|
<!--TOC paragraph Node <TT>config/remusers</TT>-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H5>Node <TT>config/remusers</TT></H5><!--SEC END -->
|
|
|
|
|
2003-02-03 21:23:08 +01:00
|
|
|
Via <TT>jabber:x:data</TT> queries to this node possible to remove users. If
|
|
|
|
removed user is online, then he will be disconnected. Also user-related data
|
|
|
|
(e.g. his roster) is removed (but appropriate module must be loaded).<BR>
|
|
|
|
<BR>
|
|
|
|
<!--TOC subsubsection Node <TT>online users</TT>: List of Online Users-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc15">3.2.2</A> Node <TT>online users</TT>: List of Online Users</H4><!--SEC END -->
|
|
|
|
|
2003-02-08 19:21:05 +01:00
|
|
|
<!--TOC subsubsection Node <TT>all users</TT>: List of Registered User-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc16">3.2.3</A> Node <TT>all users</TT>: List of Registered User</H4><!--SEC END -->
|
|
|
|
|
2003-02-08 19:21:05 +01:00
|
|
|
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
|
|
|
|
|
|
|
<IMG SRC="discoallusers.png">
|
|
|
|
|
|
|
|
|
|
|
|
<BR>
|
|
|
|
<DIV ALIGN=center>Figure 4: Discovery all users</DIV><BR>
|
2003-02-03 21:23:08 +01:00
|
|
|
|
2003-02-08 19:21:05 +01:00
|
|
|
<A NAME="fig:discoallusers"></A>
|
2003-02-10 15:31:27 +01:00
|
|
|
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
|
|
|
|
<!--TOC subsubsection Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections-->
|
|
|
|
|
|
|
|
<H4><A NAME="htoc17">3.2.4</A> Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections</H4><!--SEC END -->
|
2003-02-03 21:23:08 +01:00
|
|
|
|
|
|
|
<!--TOC subsubsection Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc18">3.2.5</A> Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes</H4><!--SEC END -->
|
|
|
|
|
2003-02-08 19:21:05 +01:00
|
|
|
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
|
|
|
|
|
|
|
<IMG SRC="discorunnodes.png">
|
|
|
|
|
|
|
|
|
|
|
|
<BR>
|
|
|
|
<DIV ALIGN=center>Figure 5: Discovery running nodes</DIV><BR>
|
|
|
|
|
|
|
|
<A NAME="fig:discorunnodes"></A>
|
2003-02-10 15:31:27 +01:00
|
|
|
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
|
|
|
|
<!--TOC subsubsection Node <TT>stopped nodes</TT>: List of Stopped Nodes-->
|
|
|
|
|
|
|
|
<H4><A NAME="htoc19">3.2.6</A> Node <TT>stopped nodes</TT>: List of Stopped Nodes</H4><!--SEC END -->
|
2003-02-03 21:23:08 +01:00
|
|
|
|
2003-01-24 21:18:33 +01:00
|
|
|
TBD<BR>
|
|
|
|
<BR>
|
2003-01-23 21:57:55 +01:00
|
|
|
<!--TOC section Distribution-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H2><A NAME="htoc20">4</A> Distribution</H2><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:distribution"></A>
|
|
|
|
<!--TOC subsection How it works-->
|
2003-01-25 21:13:36 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc21">4.1</A> How it works</H3><!--SEC END -->
|
2003-01-25 21:13:36 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:howitworks"></A>
|
|
|
|
Jabber domain is served by one or more <TT>ejabberd</TT> nodes. This nodes can be
|
2003-01-28 20:45:13 +01:00
|
|
|
runned on different machines that can be connected via network. They all must
|
2003-01-25 21:13:36 +01:00
|
|
|
have access to connect to port 4369 of all another nodes, and must have same
|
|
|
|
magic cookie (see Erlang/OTP documentation, in short file
|
2003-01-29 21:21:14 +01:00
|
|
|
<TT>~ejabberd/.erlang.cookie</TT> must be the same on all nodes). This is
|
2003-01-25 21:13:36 +01:00
|
|
|
needed because all nodes exchange information about connected users, S2S
|
2003-02-01 21:21:28 +01:00
|
|
|
connections, registered services, etc...<BR>
|
2003-01-25 21:13:36 +01:00
|
|
|
<BR>
|
|
|
|
Each <TT>ejabberd</TT> node run following modules:
|
2003-02-10 15:31:27 +01:00
|
|
|
<UL><LI>
|
|
|
|
router;
|
|
|
|
<LI>local router.
|
|
|
|
<LI>session manager;
|
|
|
|
<LI>S2S manager;
|
|
|
|
</UL>
|
|
|
|
<!--TOC subsubsection Router-->
|
2003-01-25 21:13:36 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc22">4.1.1</A> Router</H4><!--SEC END -->
|
2003-01-25 21:13:36 +01:00
|
|
|
|
|
|
|
This module is the main router of Jabber packets on each node. It route
|
|
|
|
them based on their destanations domains. It have two tables: local and global
|
|
|
|
routes. First, domain of packet destination searched in local table, and if it
|
|
|
|
finded, then packet routed to appropriate process. If no, then it searched in
|
|
|
|
global table, and routed to appropriate <TT>ejabberd</TT> node or process. If it not
|
|
|
|
exists in both tables, then it sended to S2S manager.<BR>
|
|
|
|
<BR>
|
|
|
|
<!--TOC subsubsection Local Router-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc23">4.1.2</A> Local Router</H4><!--SEC END -->
|
|
|
|
|
2003-01-25 21:13:36 +01:00
|
|
|
This module route packets which have destination domain equal to this server
|
|
|
|
name. If destination JID have node, then it routed to session manager, else it
|
|
|
|
processed depending on it content.<BR>
|
|
|
|
<BR>
|
|
|
|
<!--TOC subsubsection Session Manager-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc24">4.1.3</A> Session Manager</H4><!--SEC END -->
|
|
|
|
|
2003-01-25 21:13:36 +01:00
|
|
|
This module route packets to local users. It search to what user resource
|
|
|
|
packet must be sended via presence table. If this reseouce connected to this
|
|
|
|
node, it routed to C2S process, if it connected via another node, then packet
|
|
|
|
sended to session manager on it.<BR>
|
|
|
|
<BR>
|
|
|
|
<!--TOC subsubsection S2S Manager-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc25">4.1.4</A> S2S Manager</H4><!--SEC END -->
|
|
|
|
|
2003-01-25 21:13:36 +01:00
|
|
|
This module route packets to another Jabber servers. First, it check if
|
2003-01-29 21:21:14 +01:00
|
|
|
already exists opened S2S connection from domain of packet source to domain of
|
|
|
|
destination. If it opened on another node, then it routed to S2S manager on
|
2003-01-25 21:13:36 +01:00
|
|
|
that node, if it opened on this node, then it routed to process that serve this
|
|
|
|
connection, and if this connection not exists, then it opened and registered.<BR>
|
|
|
|
<BR>
|
|
|
|
<!--TOC section Built-in Modules-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H2><A NAME="htoc26">A</A> Built-in Modules</H2><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modules"></A>
|
|
|
|
<!--TOC subsection Common Options-->
|
2003-01-24 21:18:33 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc27">A.1</A> Common Options</H3><!--SEC END -->
|
2003-01-24 21:18:33 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modcommonopts"></A>
|
|
|
|
Following options used by many modules, so they described in separate section.<BR>
|
2003-01-24 21:18:33 +01:00
|
|
|
<BR>
|
|
|
|
<!--TOC subsubsection Option <TT>iqdisc</TT>-->
|
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H4><A NAME="htoc28">A.1.1</A> Option <TT>iqdisc</TT></H4><!--SEC END -->
|
|
|
|
|
2003-01-24 21:18:33 +01:00
|
|
|
Many modules define handlers for processing IQ queries of different namespaces
|
|
|
|
to this server or to user (e. g. to <TT>myjabber.org</TT> or to
|
|
|
|
<TT>user@myjabber.org</TT>). This option defines processing discipline of this
|
|
|
|
queries. Possible values are:
|
2003-02-10 15:31:27 +01:00
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>no_queue</TT></B><DD> All queries of namespace with this processing
|
2003-01-24 21:18:33 +01:00
|
|
|
discipline processed immediately. This also means that no other packets can
|
|
|
|
be processed until finished this. Hence this discipline is not recommended
|
|
|
|
if processing of query can take relative many time.
|
2003-02-10 15:31:27 +01:00
|
|
|
<DT><B><TT>one_queue</TT></B><DD> In this case created separate queue for processing
|
2003-01-24 21:18:33 +01:00
|
|
|
IQ queries of namespace with this discipline, and processing of this queue
|
|
|
|
done in parallel with processing of other packets. This discipline is most
|
|
|
|
recommended.
|
2003-02-10 15:31:27 +01:00
|
|
|
<DT><B><TT>parallel</TT></B><DD> In this case for all packets of namespace with this
|
2003-01-24 21:18:33 +01:00
|
|
|
discipline spawned separate Erlang process, so all this packets processed in
|
|
|
|
parallel. Although spawning of Erlang process have relative low cost, this
|
|
|
|
can broke server normal work, because Erlang have limit of 32000 processes.
|
2003-02-10 15:31:27 +01:00
|
|
|
</DL>
|
|
|
|
Example:
|
2003-01-24 21:18:33 +01:00
|
|
|
<PRE>
|
|
|
|
{modules, [
|
|
|
|
...
|
2003-01-25 21:13:36 +01:00
|
|
|
{mod_time, [{iqdisc, no_queue}]},
|
|
|
|
...
|
|
|
|
]}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
<!--TOC subsubsection Option <TT>host</TT>-->
|
|
|
|
|
|
|
|
<H4><A NAME="htoc29">A.1.2</A> Option <TT>host</TT></H4><!--SEC END -->
|
2003-01-25 21:13:36 +01:00
|
|
|
|
|
|
|
Some modules may act as services, and wants to have different domain name.
|
|
|
|
This option explicitly defines this name.<BR>
|
|
|
|
<BR>
|
|
|
|
Example:
|
|
|
|
<PRE>
|
|
|
|
{modules, [
|
|
|
|
...
|
|
|
|
{mod_echo, [{host, "echo.myjabber.org"}]},
|
2003-01-24 21:18:33 +01:00
|
|
|
...
|
|
|
|
]}.
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
<!--TOC subsection <TT>mod_register</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc30">A.2</A> <TT>mod_register</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modregister"></A>
|
|
|
|
<!--TOC subsection <TT>mod_roster</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc31">A.3</A> <TT>mod_roster</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modroster"></A>
|
|
|
|
<!--TOC subsection <TT>mod_configure</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc32">A.4</A> <TT>mod_configure</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modconfigure"></A>
|
|
|
|
<!--TOC subsection <TT>mod_disco</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc33">A.5</A> <TT>mod_disco</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:moddisco"></A>
|
|
|
|
<!--TOC subsection <TT>mod_stats</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc34">A.6</A> <TT>mod_stats</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modstats"></A>
|
|
|
|
This module adds support of
|
2003-01-25 21:13:36 +01:00
|
|
|
<A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A> (Statistics Gathering).<BR>
|
|
|
|
<BR>
|
|
|
|
Options:
|
2003-02-10 15:31:27 +01:00
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>iqdisc</TT></B><DD> <TT>http://jabber.org/protocol/stats</TT> IQ queries
|
2003-01-25 21:13:36 +01:00
|
|
|
processing discipline.
|
2003-02-10 15:31:27 +01:00
|
|
|
</DL>
|
|
|
|
TBD about access.<BR>
|
2003-01-25 21:13:36 +01:00
|
|
|
<BR>
|
|
|
|
<!--TOC subsection <TT>mod_vcard</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc35">A.7</A> <TT>mod_vcard</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modvcard"></A>
|
|
|
|
<!--TOC subsection <TT>mod_offline</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc36">A.8</A> <TT>mod_offline</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modoffline"></A>
|
|
|
|
<!--TOC subsection <TT>mod_echo</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc37">A.9</A> <TT>mod_echo</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modecho"></A>
|
|
|
|
<!--TOC subsection <TT>mod_private</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc38">A.10</A> <TT>mod_private</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modprivate"></A>
|
|
|
|
This module adds support of
|
2003-01-25 21:13:36 +01:00
|
|
|
<A HREF="http://www.jabber.org/jeps/jep-0049.html">JEP-0049</A> (Private XML
|
|
|
|
Storage).<BR>
|
|
|
|
<BR>
|
|
|
|
Options:
|
2003-02-10 15:31:27 +01:00
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:private</TT> IQ queries processing discipline.
|
|
|
|
</DL>
|
|
|
|
<!--TOC subsection <TT>mod_time</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc39">A.11</A> <TT>mod_time</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modtime"></A>
|
|
|
|
This module answers UTC time on <TT>jabber:iq:time</TT> queries.<BR>
|
2003-01-25 21:13:36 +01:00
|
|
|
<BR>
|
|
|
|
Options:
|
2003-02-10 15:31:27 +01:00
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:time</TT> IQ queries processing discipline.
|
|
|
|
</DL>
|
|
|
|
<!--TOC subsection <TT>mod_version</TT>-->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H3><A NAME="htoc40">A.12</A> <TT>mod_version</TT></H3><!--SEC END -->
|
2003-01-23 21:57:55 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:modversion"></A>
|
|
|
|
This module answers <TT>ejabberd</TT> version on <TT>jabber:iq:version</TT> queries.<BR>
|
2003-01-25 21:13:36 +01:00
|
|
|
<BR>
|
|
|
|
Options:
|
2003-02-10 15:31:27 +01:00
|
|
|
<DL COMPACT=compact><DT>
|
|
|
|
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:version</TT> IQ queries processing discipline.
|
|
|
|
</DL>
|
|
|
|
<!--TOC section I18n/L10n-->
|
2003-02-08 19:21:05 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<H2><A NAME="htoc41">B</A> I18n/L10n</H2><!--SEC END -->
|
2003-02-08 19:21:05 +01:00
|
|
|
|
2003-02-10 15:31:27 +01:00
|
|
|
<A NAME="sec:i18nl10n"></A>
|
|
|
|
Many modules supports <TT>xml:lang</TT> attribute inside IQ queries. E. g.
|
2003-02-08 19:21:05 +01:00
|
|
|
on figure <A HREF="#fig:discorus">6</A> (compare with figure <A HREF="#fig:disco">1</A>) showed reply
|
|
|
|
on following query:
|
|
|
|
<PRE>
|
|
|
|
<iq id='5'
|
|
|
|
to='e.localhost'
|
|
|
|
type='get'>
|
|
|
|
<query xmlns='http://jabber.org/protocol/disco#items'
|
|
|
|
xml:lang='ru'/>
|
|
|
|
</iq>
|
2003-02-10 15:31:27 +01:00
|
|
|
</PRE>
|
|
|
|
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
2003-02-08 19:21:05 +01:00
|
|
|
|
|
|
|
<IMG SRC="discorus.png">
|
|
|
|
|
|
|
|
|
|
|
|
<BR>
|
|
|
|
<DIV ALIGN=center>Figure 6: Discovery result when <TT>xml:lang='ru'</TT></DIV><BR>
|
|
|
|
|
|
|
|
<A NAME="fig:discorus"></A>
|
2003-02-10 15:31:27 +01:00
|
|
|
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
|
|
|
|
<!--HTMLFOOT-->
|
2003-01-23 21:57:55 +01:00
|
|
|
<!--ENDHTML-->
|
|
|
|
<!--FOOTER-->
|
|
|
|
<HR SIZE=2>
|
|
|
|
<BLOCKQUOTE><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by
|
2003-02-10 15:31:27 +01:00
|
|
|
</EM><A HREF="http://pauillac.inria.fr/~maranget/hevea/index.html"><EM>H<FONT SIZE=2><sup>E</sup></FONT>V<FONT SIZE=2><sup>E</sup></FONT>A</EM></A><EM>.
|
|
|
|
</EM></BLOCKQUOTE>
|
|
|
|
</BODY>
|
2003-01-23 21:57:55 +01:00
|
|
|
</HTML>
|