mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-22 16:20:52 +01:00
* src/Makefile.win32: Updated (thanks to Sergei Golovan)
* src/Makefile.in: Added installation of ejabberd.cfg (thanks to Sergei Golovan) * src/web/ejabberd_http.erl: Fixed support for HTTP/1.0 clients * doc/guide.tex: Updated (thanks to Sergei Golovan) SVN Revision: 240
This commit is contained in:
parent
d35209561d
commit
b88da95b51
11
ChangeLog
11
ChangeLog
@ -1,5 +1,16 @@
|
||||
2004-07-07 Alexey Shchepin <alexey@sevcom.net>
|
||||
|
||||
* src/Makefile.win32: Updated (thanks to Sergei Golovan)
|
||||
|
||||
* src/Makefile.in: Added installation of ejabberd.cfg (thanks to
|
||||
Sergei Golovan)
|
||||
|
||||
* src/web/ejabberd_http.erl: Fixed support for HTTP/1.0 clients
|
||||
|
||||
2004-07-06 Alexey Shchepin <alexey@sevcom.net>
|
||||
|
||||
* doc/guide.tex: Updated (thanks to Sergei Golovan)
|
||||
|
||||
* src/ejabberd_auth.erl: Minor fix
|
||||
|
||||
* src/ejabberd_c2s.erl: Fixed sending of presence to own resources
|
||||
|
596
doc/guide.html
596
doc/guide.html
@ -21,7 +21,7 @@
|
||||
<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>May 8, 2004</H3><DIV ALIGN=center>
|
||||
<H3 ALIGN=center>June 24, 2004</H3><DIV ALIGN=center>
|
||||
|
||||
<IMG SRC="logo.png">
|
||||
|
||||
@ -88,19 +88,24 @@
|
||||
<A HREF="#htoc33">A.1.1 Option <TT>iqdisc</TT></A>
|
||||
<LI><A HREF="#htoc34">A.1.2 Option <TT>host</TT></A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc35">A.2 <TT>mod_register</TT></A>
|
||||
<LI><A HREF="#htoc36">A.3 <TT>mod_roster</TT></A>
|
||||
<LI><A HREF="#htoc37">A.4 <TT>mod_configure</TT></A>
|
||||
<LI><A HREF="#htoc38">A.5 <TT>mod_disco</TT></A>
|
||||
<LI><A HREF="#htoc39">A.6 <TT>mod_stats</TT></A>
|
||||
<LI><A HREF="#htoc40">A.7 <TT>mod_vcard</TT></A>
|
||||
<LI><A HREF="#htoc35">A.2 <TT>mod_configure</TT></A>
|
||||
<LI><A HREF="#htoc36">A.3 <TT>mod_disco</TT></A>
|
||||
<LI><A HREF="#htoc37">A.4 <TT>mod_echo</TT></A>
|
||||
<LI><A HREF="#htoc38">A.5 <TT>mod_irc</TT></A>
|
||||
<LI><A HREF="#htoc39">A.6 <TT>mod_last</TT></A>
|
||||
<LI><A HREF="#htoc40">A.7 <TT>mod_muc</TT></A>
|
||||
<LI><A HREF="#htoc41">A.8 <TT>mod_offline</TT></A>
|
||||
<LI><A HREF="#htoc42">A.9 <TT>mod_echo</TT></A>
|
||||
<LI><A HREF="#htoc42">A.9 <TT>mod_privacy</TT></A>
|
||||
<LI><A HREF="#htoc43">A.10 <TT>mod_private</TT></A>
|
||||
<LI><A HREF="#htoc44">A.11 <TT>mod_time</TT></A>
|
||||
<LI><A HREF="#htoc45">A.12 <TT>mod_version</TT></A>
|
||||
<LI><A HREF="#htoc44">A.11 <TT>mod_pubsub</TT></A>
|
||||
<LI><A HREF="#htoc45">A.12 <TT>mod_register</TT></A>
|
||||
<LI><A HREF="#htoc46">A.13 <TT>mod_roster</TT></A>
|
||||
<LI><A HREF="#htoc47">A.14 <TT>mod_stats</TT></A>
|
||||
<LI><A HREF="#htoc48">A.15 <TT>mod_time</TT></A>
|
||||
<LI><A HREF="#htoc49">A.16 <TT>mod_vcard</TT></A>
|
||||
<LI><A HREF="#htoc50">A.17 <TT>mod_version</TT></A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc46">B I18n/L10n</A>
|
||||
<LI><A HREF="#htoc51">B I18n/L10n</A>
|
||||
</UL>
|
||||
|
||||
<!--TOC section Introduction-->
|
||||
@ -109,43 +114,34 @@
|
||||
|
||||
<A NAME="sec:intro"></A>
|
||||
<TT>ejabberd</TT> is a Free and Open Source fault-tolerant distributed Jabber
|
||||
server. It is writen mostly in Erlang.<BR>
|
||||
server. It is written mostly in Erlang.<BR>
|
||||
<BR>
|
||||
The main features of <TT>ejabberd</TT> is:
|
||||
The main features of <TT>ejabberd</TT> are:
|
||||
<UL><LI>
|
||||
Works on most of popular platforms: *nix (tested on Linux, FreeBSD and
|
||||
NetBSD) and Win32
|
||||
<LI>Distributed: You can run <TT>ejabberd</TT> on a cluster of machines and all of
|
||||
them will serve one Jabber domain.
|
||||
<LI>Distributed: You can run <TT>ejabberd</TT> on a cluster of machines to let all of
|
||||
them serve one Jabber domain.
|
||||
<LI>Fault-tolerance: You can setup an <TT>ejabberd</TT> cluster so that all the
|
||||
information required for a properly working service will be stored
|
||||
permanently on more than one node. This means that if one of the nodes
|
||||
crashes, then the others will continue working without disruption.
|
||||
You can also add or replace more nodes ``on the fly''.
|
||||
<LI>Built-in <A HREF="http://www.jabber.org/jeps/jep-0045.html">Multi-User
|
||||
Chat</A> service
|
||||
You can also add or replace nodes ``on the fly''.
|
||||
<LI>Built-in <A HREF="http://www.jabber.org/jeps/jep-0045.html">Multi-User Chat</A> service
|
||||
<LI>Built-in IRC transport
|
||||
<LI>Built-in
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0060.html">Publish-Subscribe</A>
|
||||
service
|
||||
<LI>Built-in <A HREF="http://www.jabber.org/jeps/jep-0060.html">Publish-Subscribe</A> service
|
||||
<LI>Built-in Jabber Users Directory service based on users vCards
|
||||
<LI>Built-in
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0025.html">HTTP Polling</A>
|
||||
service
|
||||
<LI>Built-in <A HREF="http://www.jabber.org/jeps/jep-0025.html">HTTP Polling</A> service
|
||||
<LI>SSL support
|
||||
<LI>Support for LDAP authentification
|
||||
<LI>Ability to interface with external components (JIT, MSN-t, Yahoo-t, etc)
|
||||
<LI>Ability to interface with external components (JIT, MSN-t, Yahoo-t, etc.)
|
||||
<LI>Migration from jabberd14 is possible
|
||||
<LI>Mostly XMPP-compliant
|
||||
<LI>Support for
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0030.html">JEP-0030</A>
|
||||
(Service Discovery).
|
||||
<LI>Support for
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A>
|
||||
(Statistics Gathering).
|
||||
<LI>Support for <A HREF="http://www.jabber.org/jeps/jep-0030.html">JEP-0030</A> (Service Discovery).
|
||||
<LI>Support for <A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A> (Statistics Gathering).
|
||||
<LI>Support for <TT>xml:lang</TT>
|
||||
</UL>
|
||||
The misfeatures of <TT>ejabberd</TT> is:
|
||||
The misfeatures of <TT>ejabberd</TT> are:
|
||||
<UL><LI>
|
||||
No support for virtual domains
|
||||
<LI>No support for STARTTLS
|
||||
@ -180,12 +176,12 @@ GNU Make;
|
||||
To compile <TT>ejabberd</TT> in MS Windows environment, you will need the following
|
||||
packages:
|
||||
<UL><LI>
|
||||
MS Visual C++ 6.0 Compiler
|
||||
<LI><A HREF="http://www.erlang.org/download/otp_win32_R9C-0.exe">Erlang emulator version 5.3</A>
|
||||
<LI><A HREF="http://prdownloads.sourceforge.net/expat/expat_win32bin_1_95_7.exe?download">Expat 1.95.7</A>
|
||||
<LI><A HREF="http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz">Iconv 1.9.1</A>
|
||||
MS Visual C++ 6.0 Compiler
|
||||
<LI><A HREF="http://www.erlang.org/download/otp_win32_R9C-0.exe">Erlang/OTP R9C-0</A>
|
||||
<LI><A HREF="http://prdownloads.sourceforge.net/expat/expat_win32bin_1_95_7.exe?download">Expat 1.95.7</A>
|
||||
<LI><A HREF="http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.1.tar.gz">Iconv 1.9.1</A>
|
||||
(optional)
|
||||
<LI><A HREF="http://www.slproweb.com/download/Win32OpenSSL-v0.9.7d.exe">Shining Light OpenSSL</A>
|
||||
<LI><A HREF="http://www.slproweb.com/products/Win32OpenSSL.html">Shining Light OpenSSL</A>
|
||||
(to enable SSL connections)
|
||||
</UL>
|
||||
<!--TOC subsection Obtaining-->
|
||||
@ -193,15 +189,16 @@ MS Visual C++ 6.0 Compiler
|
||||
<H3><A NAME="htoc6">2.2</A> Obtaining</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:obtaining"></A>
|
||||
Currently no stable version has been released.<BR>
|
||||
Stable <TT>ejabberd</TT> release can be obtained at
|
||||
<A HREF="http://www.jabberstudio.org/projects/ejabberd/releases/"><TT>http://www.jabberstudio.org/projects/ejabberd/releases/</TT></A>.<BR>
|
||||
<BR>
|
||||
The latest alpha version can be retrieved from CVS.
|
||||
<UL><LI>
|
||||
<TT>export CVSROOT=:pserver:anonymous@jabberstudio.org:/home/cvs</TT>
|
||||
<LI><TT>cvs login</TT>
|
||||
<LI>Press Enter when asked for a password
|
||||
<LI><TT>cvs -z3 co ejabberd</TT>
|
||||
</UL>
|
||||
<PRE>
|
||||
export CVSROOT=:pserver:anonymous@jabberstudio.org:/home/cvs
|
||||
cvs login
|
||||
<press Enter when asked for a password>
|
||||
cvs -z3 co ejabberd
|
||||
</PRE>
|
||||
<!--TOC subsection Compilation-->
|
||||
|
||||
<H3><A NAME="htoc7">2.3</A> Compilation</H3><!--SEC END -->
|
||||
@ -213,24 +210,31 @@ The latest alpha version can be retrieved from CVS.
|
||||
|
||||
<A NAME="sec:compilationunix"></A>
|
||||
<PRE>
|
||||
./configure
|
||||
make
|
||||
./configure
|
||||
make
|
||||
su
|
||||
make install
|
||||
</PRE>
|
||||
TBD<BR>
|
||||
This will install <TT>ejabberd</TT> to <CODE>/var/lib/ejabberd</CODE> directory,
|
||||
<CODE>ejabberd.cfg</CODE> to <CODE>/etc/ejabberd</CODE> directory and create
|
||||
<CODE>/var/log/ejabberd</CODE> directory for log files.<BR>
|
||||
<BR>
|
||||
<!--TOC subsubsection Windows-->
|
||||
|
||||
<H4><A NAME="htoc9">2.3.2</A> Windows</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:compilationwin"></A>
|
||||
<OL type=1><LI>
|
||||
<UL><LI>
|
||||
Install Erlang emulator (for example, into <CODE>C:\Program Files\erl5.3</CODE>).
|
||||
<LI>Install Expat library into <CODE>C:\Program Files\Expat-1.95.7</CODE>
|
||||
directory. Copy file <CODE>C:\Program Files\Expat-1.95.7\Libs\libexpat.dll</CODE>
|
||||
directory.<BR>
|
||||
<BR>
|
||||
Copy file <CODE>C:\Program Files\Expat-1.95.7\Libs\libexpat.dll</CODE>
|
||||
to your Windows system directory (for example, <CODE>C:\WINNT</CODE> or
|
||||
<CODE>C:\WINNT\System32</CODE>)
|
||||
<LI>Build and install Iconv library into <CODE>C:\Program Files\iconv-1.9.1</CODE> directory.
|
||||
Copy file <CODE>C:\Program Files\iconv-1.9.1\bin\iconv.dll</CODE> to your
|
||||
<LI>Build and install Iconv library into <CODE>C:\Program Files\iconv-1.9.1</CODE> directory.<BR>
|
||||
<BR>
|
||||
Copy file <CODE>C:\Program Files\iconv-1.9.1\bin\iconv.dll</CODE> to your
|
||||
Windows system directory.<BR>
|
||||
<BR>
|
||||
Note: Instead of copying libexpat.dll and iconv.dll to Windows
|
||||
@ -240,13 +244,12 @@ Note: Instead of copying libexpat.dll and iconv.dll to Windows
|
||||
variable.
|
||||
<LI>Being in <CODE>ejabberd\src</CODE> directory run:
|
||||
<PRE>
|
||||
configure
|
||||
configure.bat
|
||||
nmake -f Makefile.win32
|
||||
</PRE><LI>Edit file <CODE>ejabberd\src\ejabberd.cfg</CODE> and run
|
||||
<PRE>
|
||||
werl -s ejabberd -name ejabberd
|
||||
</PRE><LI>Enjoy!
|
||||
</OL>
|
||||
</PRE></UL>
|
||||
<!--TOC subsection Starting-->
|
||||
|
||||
<H3><A NAME="htoc10">2.4</A> Starting</H3><!--SEC END -->
|
||||
@ -254,28 +257,41 @@ werl -s ejabberd -name ejabberd
|
||||
<A NAME="sec:starting"></A>
|
||||
To start <TT>ejabberd</TT>, use the following command:
|
||||
<PRE>
|
||||
erl -name ejabberd -s ejabberd
|
||||
erl -pa /var/lib/ejabberd/ebin -name ejabberd -s ejabberd
|
||||
</PRE>or
|
||||
<PRE>
|
||||
erl -sname ejabberd -s ejabberd
|
||||
</PRE>In second case Erlang node will be identified using only first part of host
|
||||
name, i. e. other Erlang nodes not inside this domain can't contact this node.<BR>
|
||||
erl -pa /var/lib/ejabberd/ebin -sname ejabberd -s ejabberd
|
||||
</PRE>In the latter case Erlang node will be identified using only first part of host
|
||||
name, i. e. other Erlang nodes outside this domain can't contact this node.<BR>
|
||||
<BR>
|
||||
To specify path to config file, use command like this:
|
||||
Note that when using above command <TT>ejabberd</TT> will search for config file
|
||||
in current directory and will use current directory for storing user database
|
||||
and logging.<BR>
|
||||
<BR>
|
||||
To specify path to config file, log files and Mnesia database directory,
|
||||
you may use the following command:
|
||||
<PRE>
|
||||
erl -sname ejabberd -s ejabberd -ejabberd config \"/etc/ejabberd/ejabberd.cfg\"
|
||||
erl -pa /var/lib/ejabberd/ebin \
|
||||
-sname ejabberd \
|
||||
-s ejabberd \
|
||||
-ejabberd config \"/etc/ejabberd/ejabberd.cfg\" \
|
||||
log_path \"/var/log/ejabberd/ejabberd.log\" \
|
||||
-sasl sasl_error_logger \{file,\"/var/log/ejabberd/sasl.log\"\} \
|
||||
-mnesia dir \"/var/lib/ejabberd/spool\"
|
||||
</PRE>
|
||||
To use more than 1024 connections, you will need to set environment variable
|
||||
You can find other useful options in Erlang manual page (<TT>erl -man erl</TT>).<BR>
|
||||
<BR>
|
||||
To use more than 1024 connections, you should set environment variable
|
||||
<CODE>ERL_MAX_PORTS</CODE>:
|
||||
<PRE>
|
||||
export ERL_MAX_PORTS=32000
|
||||
export ERL_MAX_PORTS=32000
|
||||
</PRE>Note that with this value <TT>ejabberd</TT> will use more memory (approximately 6MB
|
||||
more).<BR>
|
||||
<BR>
|
||||
To reduce memory usage, you can set environment variable
|
||||
To reduce memory usage, you may set environment variable
|
||||
<CODE>ERL_FULLSWEEP_AFTER</CODE>:
|
||||
<PRE>
|
||||
export ERL_FULLSWEEP_AFTER=0
|
||||
export ERL_FULLSWEEP_AFTER=0
|
||||
</PRE>But in this case <TT>ejabberd</TT> can start to work slower.<BR>
|
||||
<BR>
|
||||
<!--TOC section Configuration-->
|
||||
@ -289,7 +305,7 @@ export ERL_FULLSWEEP_AFTER=0
|
||||
|
||||
<A NAME="sec:initconfig"></A>
|
||||
The configuration file is initially loaded the first time <TT>ejabberd</TT> is
|
||||
executed, when it is parsed and stored in a database. Subsiquently the
|
||||
executed, when it is parsed and stored in a database. Subsequently the
|
||||
configuration is loaded from the database and any commands in the configuration
|
||||
file are appended to the entries in the database. The configuration file
|
||||
consists of a sequence of Erlang terms. Parts of lines after <TT>`%'</TT> sign
|
||||
@ -300,9 +316,9 @@ definition, then old value stored in the database will be used.<BR>
|
||||
To override old values stored in the database the following lines can be added
|
||||
in config:
|
||||
<PRE>
|
||||
override_global.
|
||||
override_local.
|
||||
override_acls.
|
||||
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>
|
||||
@ -314,7 +330,7 @@ adding new ones.<BR>
|
||||
Option <TT>hostname</TT> defines name of Jabber domain that <TT>ejabberd</TT>
|
||||
serves. E. g. to use <TT>jabber.org</TT> domain add following line in config:
|
||||
<PRE>
|
||||
{host, "jabber.org"}.
|
||||
{host, "jabber.org"}.
|
||||
</PRE>
|
||||
<!--TOC subsubsection Access Rules-->
|
||||
|
||||
@ -324,7 +340,7 @@ serves. E. g. to use <TT>jabber.org</TT> domain add following line in confi
|
||||
Access control in <TT>ejabberd</TT> is performed via Access Control Lists (ACL). The
|
||||
declarations of ACL in config file have following syntax:
|
||||
<PRE>
|
||||
{acl, <aclname>, {<acltype>, ...}}.
|
||||
{acl, <aclname>, {<acltype>, ...}}.
|
||||
</PRE>
|
||||
<TT><acltype></TT> can be one of following:
|
||||
<DL COMPACT=compact><DT>
|
||||
@ -359,7 +375,7 @@ declarations of ACL in config file have following syntax:
|
||||
with name that matches <TT><user_regexp></TT> and from server that matches
|
||||
<TT><server_regexp></TT>. Example:
|
||||
<PRE>
|
||||
{acl, aleksey, {node_regexp, "^aleksey", "^jabber.(ru|org)$"}}.
|
||||
{acl, aleksey, {node_regexp, "^aleksey$", "^jabber.(ru|org)$"}}.
|
||||
</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>
|
||||
@ -382,7 +398,7 @@ The following ACLs pre-defined:
|
||||
</DL>
|
||||
An entry allowing or denying different services would look similar to this:
|
||||
<PRE>
|
||||
{access, <accessname>, [{allow, <aclname>},
|
||||
{access, <accessname>, [{allow, <aclname>},
|
||||
{deny, <aclname>},
|
||||
...
|
||||
]}.
|
||||
@ -393,8 +409,8 @@ tuple is returned else ``<TT>deny</TT>'' is returned.<BR>
|
||||
<BR>
|
||||
Example:
|
||||
<PRE>
|
||||
{access, configure, [{allow, admin}]}.
|
||||
{access, something, [{deny, badmans},
|
||||
{access, configure, [{allow, admin}]}.
|
||||
{access, something, [{deny, badmans},
|
||||
{allow, all}]}.
|
||||
</PRE>
|
||||
Following access rules pre-defined:
|
||||
@ -410,16 +426,16 @@ Following access rules pre-defined:
|
||||
With shapers is possible to bound connection traffic. The declarations of
|
||||
shapers in config file have following syntax:
|
||||
<PRE>
|
||||
{shaper, <shapername>, <kind>}.
|
||||
{shaper, <shapername>, <kind>}.
|
||||
</PRE>Currently implemented only one kind of shaper: <TT>maxrate</TT>. It have
|
||||
following syntax:
|
||||
<PRE>
|
||||
{maxrate, <rate>}
|
||||
{maxrate, <rate>}
|
||||
</PRE>where <TT><rate></TT> means maximum allowed incomig rate in bytes/second.
|
||||
E. g. to define shaper with name ``<TT>normal</TT>'' and maximum allowed rate
|
||||
1000 bytes/s, add following line in config:
|
||||
<PRE>
|
||||
{shaper, normal, {maxrate, 1000}}.
|
||||
{shaper, normal, {maxrate, 1000}}.
|
||||
</PRE>
|
||||
<!--TOC subsubsection Listened Sockets-->
|
||||
|
||||
@ -433,27 +449,50 @@ Port number;
|
||||
<LI>Module that serves this port;
|
||||
<LI>Options to this module.
|
||||
</UL>
|
||||
Currently three modules are implemented:
|
||||
Currently these modules are implemented:
|
||||
<DL COMPACT=compact><DT>
|
||||
<CODE><B>ejabberd_c2s</B></CODE><DD> This module serves C2S connections.<BR>
|
||||
<B><TT>ejabberd_c2s</TT></B><DD> This module serves C2S connections.<BR>
|
||||
<BR>
|
||||
The following options are defined:
|
||||
<DL COMPACT=compact><DT>
|
||||
<CODE><B>{access, <access rule>}</B></CODE><DD> This option defines access of users
|
||||
<B><TT>{access, <access rule>}</TT></B><DD> This option defines access of users
|
||||
to this C2S port. Default value is ``<TT>all</TT>''.
|
||||
<DT><CODE><B>{shaper, <access rule>}</B></CODE><DD> This option is like previous, but
|
||||
<DT><B><TT>{shaper, <access rule>}</TT></B><DD> This option is like previous, but
|
||||
use shapers instead of ``<TT>allow</TT>'' and ``<TT>deny</TT>''. Default
|
||||
value is ``<TT>none</TT>''.
|
||||
<DT><CODE><B>{ip, IPAddress}</B></CODE><DD> This option specifies which network interface to
|
||||
listen on.
|
||||
<DT><CODE><B>inet6</B></CODE><DD> Set up the socket for IPv6.
|
||||
<DT><CODE><B>ssl</B></CODE><DD> This option specifies that traffic on this port will be
|
||||
<DT><B><TT>{ip, IPAddress}</TT></B><DD> This option specifies which network interface to
|
||||
listen on. For example <CODE>{ip, {192, 168, 1, 1}}</CODE>.
|
||||
<DT><B><TT>inet6</TT></B><DD> Set up the socket for IPv6.
|
||||
<DT><B><TT>ssl</TT></B><DD> This option specifies that traffic on this port will be
|
||||
encrypted using SSL. You should also set ``<CODE>certfile</CODE>'' option.
|
||||
<DT><CODE><B>{certfile, Path}</B></CODE><DD> Path to a file containing the SSL certificate.
|
||||
<DT><B><TT>{certfile, Path}</TT></B><DD> Path to a file containing the SSL certificate.
|
||||
</DL>
|
||||
<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 from Jabber
|
||||
services (i. e. that use the <TT>jabber:component:accept</TT> namespace).<BR>
|
||||
<BR>
|
||||
The following additional options are defined for <TT>ejabberd_service</TT>
|
||||
(options <TT>access</TT>, <TT>shaper</TT>, <TT>ip</TT>, <TT>inet6</TT> are
|
||||
still valid):
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>{host, Hostname, [HostOptions]}</TT></B><DD> This option defines hostname of connected
|
||||
service and allows to specify additional options, e. g.
|
||||
<TT>{password, Secret}</TT>.
|
||||
<DT><B><TT>{hosts, [Hostnames], [HostOptions]}</TT></B><DD> The same as above, but allows to
|
||||
specify several hostnames.
|
||||
</DL>
|
||||
<DT><B><TT>ejabberd_http</TT></B><DD> This module serves incoming HTTP connections.<BR>
|
||||
<BR>
|
||||
The following options are defined:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>http_poll</TT></B><DD> This option enables <A HREF="http://www.jabber.org/jeps/jep-0025.html">HTTP Polling</A> .
|
||||
support. It is available then at <CODE>http://server:port/http-poll/</CODE>.<BR>
|
||||
<BR>
|
||||
<DT><B><TT>web_admin</TT></B><DD> This option enables web-based interface for <TT>ejabberd</TT>
|
||||
administration which is available at <CODE>http://server:port/admin/</CODE>,
|
||||
login and password should be equal to username and password of one of
|
||||
registered users who have permission defined in ``configure'' access rule.
|
||||
</DL>
|
||||
<DT><CODE><B>ejabberd_s2s_in</B></CODE><DD> This module serves incoming S2S connections.
|
||||
<DT><CODE><B>ejabberd_service</B></CODE><DD> This module serves connections from Jabber
|
||||
services (i. e. that use the <TT>jabber:component:accept</TT> namespace).
|
||||
</DL>
|
||||
For example, the following configuration defines that:
|
||||
<UL><LI>
|
||||
@ -467,19 +506,19 @@ C2S connections are listened on port 5222 and 5223 (SSL) and denied for
|
||||
connected to port 5234 with password ``<TT>jitsecret</TT>''
|
||||
<LI>MSN service <TT>msn.example.org</TT> is connected to port 5235 with
|
||||
password ``<TT>msnsecret</TT>''
|
||||
<LI>YAHOO service <TT>yahoo.example.org</TT> is connected to port 5236 with
|
||||
<LI>Yahoo! service <TT>yahoo.example.org</TT> is connected to port 5236 with
|
||||
password ``<TT>yahoosecret</TT>''
|
||||
<LI>ILE service <TT>ile.example.org</TT> is connected to port 5237 with
|
||||
password ``<TT>ilesecret</TT>''
|
||||
</UL>
|
||||
<PRE>
|
||||
{acl, blocked, {user, "bad"}}.
|
||||
{access, c2s, [{deny, blocked},
|
||||
<PRE>
|
||||
{acl, blocked, {user, "bad"}}.
|
||||
{access, c2s, [{deny, blocked},
|
||||
{allow, all}]}.
|
||||
{shaper, normal, {maxrate, 1000}}.
|
||||
{access, c2s_shaper, [{none, admin},
|
||||
{shaper, normal, {maxrate, 1000}}.
|
||||
{access, c2s_shaper, [{none, admin},
|
||||
{normal, all}]}.
|
||||
{listen,
|
||||
{listen,
|
||||
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}]},
|
||||
{5223, ejabberd_c2s, [{access, c2s},
|
||||
ssl, {certfile, "/path/to/ssl.pem"}]},
|
||||
@ -497,39 +536,33 @@ C2S connections are listened on port 5222 and 5223 (SSL) and denied for
|
||||
{5238, ejabberd_service, [{host, "ile.example.org",
|
||||
[{password, "ilesecret"}]}]}
|
||||
]
|
||||
}.
|
||||
</PRE>Note, that for jabberd14- or wpjabberd-based services you need to make the
|
||||
transports log and do xdb by themselves:
|
||||
}.
|
||||
</PRE>Note, that for jabberd14- or wpjabberd-based services you have to make the
|
||||
transports log and do XDB by themselves:
|
||||
<PRE>
|
||||
<!--
|
||||
You need to add elogger and rlogger entries here when using ejabberd.
|
||||
You have to add elogger and rlogger entries here when using ejabberd.
|
||||
In this case the transport will do the logging.
|
||||
-->
|
||||
|
||||
<log id='elogger'>
|
||||
<log id='logger'>
|
||||
<host/>
|
||||
<logtype/>
|
||||
<format>%d: [%t] (%h): %s</format>
|
||||
<file>/var/log/jabber/error/aim-t.log</file>
|
||||
</log>
|
||||
|
||||
<log id='rlogger'>
|
||||
<host/>
|
||||
<logtype>record</logtype>
|
||||
<format>%d %h %s</format>
|
||||
<file>/var/log/jabber/record/aim-t.log</file>
|
||||
<file>/var/log/jabber/service.log</file>
|
||||
</log>
|
||||
|
||||
<!--
|
||||
Some Jabber server implementations do not provide
|
||||
XDB services (for example jabberd 2.0 and ejabberd).
|
||||
AIM-t is loaded into handle all XDB requests.
|
||||
xdb_file_so is loaded in to handle all XDB requests.
|
||||
-->
|
||||
|
||||
<xdb id="xdb">
|
||||
<host/>
|
||||
<load>
|
||||
<xdb_file>/usr/lib/jabber/xdb_file.so</xdb_file> <!-- this is a lib of wpjabber or jabberd -->
|
||||
<!-- this is a lib of wpjabber or jabberd -->
|
||||
<xdb_file>/usr/lib/jabber/xdb_file.so</xdb_file>
|
||||
</load>
|
||||
<xdb_file xmlns="jabber:config:xdb_file">
|
||||
<spool><jabberd:cmdline flag='s'>/var/spool/jabber</jabberd:cmdline></spool>
|
||||
@ -548,9 +581,10 @@ section <A HREF="#sec:modules">A</A> for detailed information on each modul
|
||||
<BR>
|
||||
Example:
|
||||
<PRE>
|
||||
{modules, [
|
||||
{mod_register, []},
|
||||
{modules,
|
||||
[{mod_register, []},
|
||||
{mod_roster, []},
|
||||
{mod_privacy, []},
|
||||
{mod_configure, []},
|
||||
{mod_disco, []},
|
||||
{mod_stats, []},
|
||||
@ -558,7 +592,11 @@ Example:
|
||||
{mod_offline, []},
|
||||
{mod_echo, [{host, "echo.localhost"}]},
|
||||
{mod_private, []},
|
||||
{mod_irc, []},
|
||||
{mod_muc, []},
|
||||
{mod_pubsub, []},
|
||||
{mod_time, [{iqdisc, no_queue}]},
|
||||
{mod_last, []},
|
||||
{mod_version, []}
|
||||
]}.
|
||||
</PRE>
|
||||
@ -568,15 +606,15 @@ Example:
|
||||
|
||||
<A NAME="sec:onlineconfig"></A>
|
||||
To perform online reconfiguration of <TT>ejabberd</TT> you will need to have
|
||||
<TT>mod_configure</TT> loaded (see section <A HREF="#sec:modconfigure">A.4</A>). It is also highly
|
||||
recommended to load <TT>mod_disco</TT> as well (see section <A HREF="#sec:moddisco">A.5</A>),
|
||||
<TT>mod_configure</TT> loaded (see section <A HREF="#sec:modconfigure">A.2</A>). It is also highly
|
||||
recommended to load <TT>mod_disco</TT> as well (see section <A HREF="#sec:moddisco">A.3</A>),
|
||||
because <TT>mod_configure</TT> is highly integrated with it. Additionally it is
|
||||
recommended to use a disco- and xdata-capable client such as
|
||||
<A HREF="http://www.jabber.ru/projects/tkabber/index_en.html">Tkabber</A>
|
||||
<A HREF="http://tkabber.jabber.ru/">Tkabber</A>
|
||||
(which was developed synchronously with <TT>ejabberd</TT>, its CVS version
|
||||
supports most of <TT>ejabberd</TT> features).<BR>
|
||||
<BR>
|
||||
On disco query <TT>ejabberd</TT> returns following items:
|
||||
On disco query <TT>ejabberd</TT> returns following items (see figure <A HREF="#fig:disco">1</A>):
|
||||
<UL><LI>
|
||||
Identity of server.
|
||||
<LI>List of features, including defined namespaces.
|
||||
@ -597,13 +635,13 @@ Identity of server.
|
||||
|
||||
<H4><A NAME="htoc19">3.2.1</A> Node <TT>config</TT>: Global Configuration</H4><!--SEC END -->
|
||||
|
||||
Under this node the following nodes exists:<BR>
|
||||
Under this node the following nodes exist:<BR>
|
||||
<BR>
|
||||
<!--TOC paragraph Node <TT>config/hostname</TT>-->
|
||||
|
||||
<H5>Node <TT>config/hostname</TT></H5><!--SEC END -->
|
||||
|
||||
Via <TT>jabber:x:data</TT> queries to this node possible to change host name of
|
||||
Via <TT>ejabberd:config</TT> queries to this node possible to change host name of
|
||||
this <TT>ejabberd</TT> server. (See figure <A HREF="#fig:hostname">2</A>) (Currently this works
|
||||
correctly only after a restart)
|
||||
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
||||
@ -620,7 +658,7 @@ correctly only after a restart)
|
||||
|
||||
<H5>Node <TT>config/acls</TT></H5><!--SEC END -->
|
||||
|
||||
Via <TT>jabber:x:data</TT> queries to this node it is possible to edit ACLs list.
|
||||
Via <TT>ejabberd:config</TT> queries to this node it is possible to edit ACLs list.
|
||||
(See figure <A HREF="#fig:acls">3</A>)
|
||||
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
||||
|
||||
@ -636,14 +674,14 @@ Via <TT>jabber:x:data</TT> queries to this node it is possible to edit ACLs list
|
||||
|
||||
<H5>Node <TT>config/access</TT></H5><!--SEC END -->
|
||||
|
||||
Via <TT>jabber:x:data</TT> queries to this node it is possible to edit access
|
||||
Via <TT>ejabberd:config</TT> queries to this node it is possible to edit access
|
||||
rules.<BR>
|
||||
<BR>
|
||||
<!--TOC paragraph Node <TT>config/remusers</TT>-->
|
||||
|
||||
<H5>Node <TT>config/remusers</TT></H5><!--SEC END -->
|
||||
|
||||
Via <TT>jabber:x:data</TT> queries to this node it is possible to remove users. If
|
||||
Via <TT>ejabberd:config</TT> queries to this node it is 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>
|
||||
@ -771,6 +809,7 @@ separate section.<BR>
|
||||
|
||||
<H4><A NAME="htoc33">A.1.1</A> Option <TT>iqdisc</TT></H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modiqdiscoption"></A>
|
||||
Many modules define handlers for processing IQ queries of different namespaces
|
||||
to this server or to user (e. g. to <TT>example.org</TT> or to
|
||||
<TT>user@example.org</TT>). This option defines processing discipline of
|
||||
@ -779,7 +818,7 @@ these queries. Possible values are:
|
||||
<B><TT>no_queue</TT></B><DD> All queries of namespace with this processing
|
||||
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.
|
||||
if processing of query can take relatively long time.
|
||||
<DT><B><TT>one_queue</TT></B><DD> In this case created separate queue for processing
|
||||
of IQ queries of namespace with this discipline, and processing of this queue
|
||||
is done in parallel with processing of other packets. This discipline is most
|
||||
@ -792,7 +831,8 @@ these queries. Possible values are:
|
||||
</DL>
|
||||
Example:
|
||||
<PRE>
|
||||
{modules, [
|
||||
{modules,
|
||||
[
|
||||
...
|
||||
{mod_time, [{iqdisc, no_queue}]},
|
||||
...
|
||||
@ -802,44 +842,211 @@ Example:
|
||||
|
||||
<H4><A NAME="htoc34">A.1.2</A> Option <TT>host</TT></H4><!--SEC END -->
|
||||
|
||||
Some modules may act as services, and wants to have different domain name.
|
||||
This option explicitly defines this name.<BR>
|
||||
<A NAME="sec:modhostoption"></A>
|
||||
This option explicitly defines hostname for the module which acts as a service.<BR>
|
||||
<BR>
|
||||
Example:
|
||||
<PRE>
|
||||
{modules, [
|
||||
{modules,
|
||||
[
|
||||
...
|
||||
{mod_echo, [{host, "echo.example.org"}]},
|
||||
...
|
||||
]}.
|
||||
</PRE>
|
||||
<!--TOC subsection <TT>mod_configure</TT>-->
|
||||
|
||||
<H3><A NAME="htoc35">A.2</A> <TT>mod_configure</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modconfigure"></A>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>ejabberd:config</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_disco</TT>-->
|
||||
|
||||
<H3><A NAME="htoc36">A.3</A> <TT>mod_disco</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:moddisco"></A>
|
||||
This module adds support for <A HREF="http://www.jabber.org/jeps/jep-0030.html">JEP-0030</A> (Service Discovery).<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>http://jabber.org/protocol/disco#items</TT> and
|
||||
<TT>http://jabber.org/protocol/disco#info</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
<DT><B><TT>extra_domains</TT></B><DD> List of domains that will be added to server
|
||||
items reply
|
||||
</DL>
|
||||
Example:
|
||||
<PRE>
|
||||
{modules,
|
||||
[
|
||||
...
|
||||
{mod_disco, [{extra_domains, ["jit.example.com",
|
||||
"etc.example.com"]}]},
|
||||
...
|
||||
]}.
|
||||
</PRE>
|
||||
<!--TOC subsection <TT>mod_echo</TT>-->
|
||||
|
||||
<H3><A NAME="htoc37">A.4</A> <TT>mod_echo</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modecho"></A>
|
||||
This module acts as a service and simply returns to sender any Jabber packet. Module may be
|
||||
useful for debugging.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>host</TT></B><DD> Defines hostname of service
|
||||
(see <A HREF="#sec:modhostoption">A.1.2</A>). If not present
|
||||
then prefix <TT>echo.</TT> is added to main <TT>ejabberd</TT> hostname.
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_irc</TT>-->
|
||||
|
||||
<H3><A NAME="htoc38">A.5</A> <TT>mod_irc</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modirc"></A>
|
||||
This module implements IRC transport.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>host</TT></B><DD> Defines hostname of service
|
||||
(see <A HREF="#sec:modhostoption">A.1.2</A>). If not present
|
||||
then prefix <TT>irc.</TT> is added to main <TT>ejabberd</TT> hostname.
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_last</TT>-->
|
||||
|
||||
<H3><A NAME="htoc39">A.6</A> <TT>mod_last</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modlast"></A>
|
||||
This module adds support for <A HREF="http://www.jabber.org/jeps/jep-0012.html">JEP-0012</A> (Last Activity)<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:last</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_muc</TT>-->
|
||||
|
||||
<H3><A NAME="htoc40">A.7</A> <TT>mod_muc</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modmuc"></A>
|
||||
This module implements <A HREF="http://www.jabber.org/jeps/jep-0045.html">JEP-0045</A> (Multi-User Chat) service.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>host</TT></B><DD> Defines hostname of service
|
||||
(see <A HREF="#sec:modhostoption">A.1.2</A>). If not present
|
||||
then prefix <TT>conference.</TT> is added to main <TT>ejabberd</TT> hostname.
|
||||
<DT><B><TT>access</TT></B><DD> Specifies who is allowed to use MUC service (default value is <TT>all</TT>).
|
||||
<DT><B><TT>access_create</TT></B><DD> Specifies who is allowed to create new rooms at
|
||||
MUC service (default value is <TT>all</TT>).
|
||||
<DT><B><TT>access_admin</TT></B><DD> Specifies who is allowed to administrate MUC service
|
||||
(default value is <TT>none</TT>, which means that only creator may administer her room).
|
||||
</DL>
|
||||
Example:
|
||||
<PRE>
|
||||
% Define admin ACL
|
||||
{acl, admin, {user, "admin"}}
|
||||
|
||||
% Define MUC admin access rule
|
||||
{access, muc_admin, [{allow, admin}]}
|
||||
|
||||
{modules,
|
||||
[
|
||||
...
|
||||
{mod_muc, [{access, all},
|
||||
{access_create, all},
|
||||
{access_admin, muc_admin}]},
|
||||
...
|
||||
]}.
|
||||
</PRE>
|
||||
<!--TOC subsection <TT>mod_offline</TT>-->
|
||||
|
||||
<H3><A NAME="htoc41">A.8</A> <TT>mod_offline</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modoffline"></A>
|
||||
This module implements offline message storage.<BR>
|
||||
<BR>
|
||||
<!--TOC subsection <TT>mod_privacy</TT>-->
|
||||
|
||||
<H3><A NAME="htoc42">A.9</A> <TT>mod_privacy</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modprivacy"></A>
|
||||
This module implements Privacy Rules as defined in XMPP IM
|
||||
(see <A HREF="http://www.jabber.org/ietf/"><TT>http://www.jabber.org/ietf/</TT></A>).<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:privacy</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_private</TT>-->
|
||||
|
||||
<H3><A NAME="htoc43">A.10</A> <TT>mod_private</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modprivate"></A>
|
||||
This module adds support of <A HREF="http://www.jabber.org/jeps/jep-0049.html">JEP-0049</A> (Private XML Storage).<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:private</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_pubsub</TT>-->
|
||||
|
||||
<H3><A NAME="htoc44">A.11</A> <TT>mod_pubsub</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modpubsub"></A>
|
||||
This module implements <A HREF="http://www.jabber.org/jeps/jep-0060.html">JEP-0060</A> (Publish-Subscribe Service).<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>host</TT></B><DD> Defines hostname of service
|
||||
(see <A HREF="#sec:modhostoption">A.1.2</A>). If not present
|
||||
then prefix <TT>pubsub.</TT> is added to main <TT>ejabberd</TT> hostname.
|
||||
<DT><B><TT>served_hosts</TT></B><DD> Specifies which hosts are served by the service.
|
||||
If absent then only main <TT>ejabberd</TT> host is served.
|
||||
</DL>
|
||||
Example:
|
||||
<PRE>
|
||||
{modules,
|
||||
[
|
||||
...
|
||||
{mod_pubsub, [{served_hosts, ["example.com",
|
||||
"example.org"]}]}
|
||||
...
|
||||
]}.
|
||||
</PRE>
|
||||
<!--TOC subsection <TT>mod_register</TT>-->
|
||||
|
||||
<H3><A NAME="htoc35">A.2</A> <TT>mod_register</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc45">A.12</A> <TT>mod_register</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modregister"></A>
|
||||
This module adds support for
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0077.html">JEP-0077</A> (In-Band
|
||||
Registration). There is possible to restrict registration via ``register''
|
||||
This module adds support for <A HREF="http://www.jabber.org/jeps/jep-0077.html">JEP-0077</A> (In-Band Registration).
|
||||
It is possible to restrict registration via ``register''
|
||||
access rule. If this rule returns ``deny'' on requested user name, then
|
||||
registration is not allowed for it.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:register</TT> IQ queries processing
|
||||
discipline.
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
Example:
|
||||
<PRE>
|
||||
% Deny registration for users with too short name
|
||||
{acl, shortname, {user_glob, "?"}}.
|
||||
{acl, shortname, {user_glob, "??"}}.
|
||||
% Another variant: {acl, shortname, {user_regexp, "^..?$"}}.
|
||||
% Deny registration for users with too short name
|
||||
{acl, shortname, {user_glob, "?"}}.
|
||||
{acl, shortname, {user_glob, "??"}}.
|
||||
% Another variant: {acl, shortname, {user_regexp, "^..?$"}}.
|
||||
|
||||
{access, register, [{deny, shortname},
|
||||
{access, register, [{deny, shortname},
|
||||
{allow, all}]}.
|
||||
|
||||
{modules, [
|
||||
{modules,
|
||||
[
|
||||
...
|
||||
{mod_register, []},
|
||||
...
|
||||
@ -847,120 +1054,85 @@ Example:
|
||||
</PRE>
|
||||
<!--TOC subsection <TT>mod_roster</TT>-->
|
||||
|
||||
<H3><A NAME="htoc36">A.3</A> <TT>mod_roster</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc46">A.13</A> <TT>mod_roster</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modroster"></A>
|
||||
<!--TOC subsection <TT>mod_configure</TT>-->
|
||||
|
||||
<H3><A NAME="htoc37">A.4</A> <TT>mod_configure</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modconfigure"></A>
|
||||
<!--TOC subsection <TT>mod_disco</TT>-->
|
||||
|
||||
<H3><A NAME="htoc38">A.5</A> <TT>mod_disco</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:moddisco"></A>
|
||||
This module adds support for
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0030.html">JEP-0030</A> (Service
|
||||
Discovery).<BR>
|
||||
This module implements roster management.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>http://jabber.org/protocol/disco#items</TT> and
|
||||
<TT>http://jabber.org/protocol/disco#info</TT> IQ queries processing discipline.
|
||||
<DT><B><TT>extra_domains</TT></B><DD> List of domains that will be added to server
|
||||
items reply
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:roster</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
Example:
|
||||
<PRE>
|
||||
{modules, [
|
||||
...
|
||||
{mod_disco, [{extra_domains, ["jit.example.com",
|
||||
"etc.example.com"]}]},
|
||||
...
|
||||
]}.
|
||||
</PRE>
|
||||
<!--TOC subsection <TT>mod_stats</TT>-->
|
||||
|
||||
<H3><A NAME="htoc39">A.6</A> <TT>mod_stats</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc47">A.14</A> <TT>mod_stats</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modstats"></A>
|
||||
This module adds support for
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A> (Statistics
|
||||
Gathering).<BR>
|
||||
This module adds support for <A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A> (Statistics Gathering).<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>http://jabber.org/protocol/stats</TT> IQ queries
|
||||
processing discipline.
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>http://jabber.org/protocol/stats</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
TBD about access.<BR>
|
||||
<BR>
|
||||
<!--TOC subsection <TT>mod_vcard</TT>-->
|
||||
|
||||
<H3><A NAME="htoc40">A.7</A> <TT>mod_vcard</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modvcard"></A>
|
||||
<!--TOC subsection <TT>mod_offline</TT>-->
|
||||
|
||||
<H3><A NAME="htoc41">A.8</A> <TT>mod_offline</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modoffline"></A>
|
||||
<!--TOC subsection <TT>mod_echo</TT>-->
|
||||
|
||||
<H3><A NAME="htoc42">A.9</A> <TT>mod_echo</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modecho"></A>
|
||||
<!--TOC subsection <TT>mod_private</TT>-->
|
||||
|
||||
<H3><A NAME="htoc43">A.10</A> <TT>mod_private</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modprivate"></A>
|
||||
This module adds support of
|
||||
<A HREF="http://www.jabber.org/jeps/jep-0049.html">JEP-0049</A> (Private XML
|
||||
Storage).<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<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>-->
|
||||
|
||||
<H3><A NAME="htoc44">A.11</A> <TT>mod_time</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc48">A.15</A> <TT>mod_time</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modtime"></A>
|
||||
This module answers UTC time on <TT>jabber:iq:time</TT> queries.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:time</TT> IQ queries processing discipline.
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:time</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_vcard</TT>-->
|
||||
|
||||
<H3><A NAME="htoc49">A.16</A> <TT>mod_vcard</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modvcard"></A>
|
||||
This module implements simple Jabber User Directory (based on user vCards)
|
||||
and answers server vCard on <TT>vcard-temp</TT> queries.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>host</TT></B><DD> Defines hostname of service
|
||||
(see <A HREF="#sec:modhostoption">A.1.2</A>). If not present
|
||||
then prefix <TT>vjud.</TT> is added to main <TT>ejabberd</TT> hostname.
|
||||
<DT><B><TT>iqdisc</TT></B><DD> <TT>vcard-temp</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_version</TT>-->
|
||||
|
||||
<H3><A NAME="htoc45">A.12</A> <TT>mod_version</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc50">A.17</A> <TT>mod_version</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modversion"></A>
|
||||
This module answers <TT>ejabberd</TT> version on <TT>jabber:iq:version</TT> queries.<BR>
|
||||
<BR>
|
||||
Options:
|
||||
<DL COMPACT=compact><DT>
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:version</TT> IQ queries processing discipline.
|
||||
<B><TT>iqdisc</TT></B><DD> <TT>jabber:iq:version</TT> IQ queries processing
|
||||
discipline (see <A HREF="#sec:modiqdiscoption">A.1.1</A>).
|
||||
</DL>
|
||||
<!--TOC section I18n/L10n-->
|
||||
|
||||
<H2><A NAME="htoc46">B</A> I18n/L10n</H2><!--SEC END -->
|
||||
<H2><A NAME="htoc51">B</A> I18n/L10n</H2><!--SEC END -->
|
||||
|
||||
<A NAME="sec:i18nl10n"></A>
|
||||
Many modules supports <TT>xml:lang</TT> attribute inside IQ queries. E. g.
|
||||
on figure <A HREF="#fig:discorus">6</A> (compare it with figure <A HREF="#fig:disco">1</A>) showed
|
||||
reply on following query:
|
||||
All built-in modules support <TT>xml:lang</TT> attribute inside IQ queries.
|
||||
E. g. on figure <A HREF="#fig:discorus">6</A> (compare it with figure <A HREF="#fig:disco">1</A>)
|
||||
showed reply on following query:
|
||||
<PRE>
|
||||
<iq id='5'
|
||||
<iq id='5'
|
||||
to='e.localhost'
|
||||
type='get'>
|
||||
<query xmlns='http://jabber.org/protocol/disco#items'
|
||||
xml:lang='ru'/>
|
||||
</iq>
|
||||
type='get'
|
||||
xml:lang='ru'>
|
||||
<query xmlns='http://jabber.org/protocol/disco#items'/>
|
||||
</iq>
|
||||
</PRE>
|
||||
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
||||
|
||||
|
754
doc/guide.tex
754
doc/guide.tex
File diff suppressed because it is too large
Load Diff
@ -23,6 +23,8 @@ BEAMDIR = $(EJABBERDDIR)/ebin
|
||||
PRIVDIR = $(EJABBERDDIR)/priv
|
||||
SODIR = $(PRIVDIR)/lib
|
||||
MSGSDIR = $(PRIVDIR)/msgs
|
||||
LOGDIR = $(DESTDIR)/var/log/ejabberd
|
||||
ETCDIR = $(DESTDIR)/etc/ejabberd
|
||||
|
||||
all: $(ERLSHLIBS) compile-beam all-recursive
|
||||
|
||||
@ -57,6 +59,9 @@ install: all
|
||||
install -m 644 *.so $(SODIR)
|
||||
install -d $(MSGSDIR)
|
||||
install -m 644 msgs/*.msg $(MSGSDIR)
|
||||
install -d $(ETCDIR)
|
||||
install -b -m 644 ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg
|
||||
install -d $(LOGDIR)
|
||||
|
||||
clean: clean-recursive clean-local
|
||||
|
||||
|
@ -33,6 +33,7 @@ release : build release_clean
|
||||
mkdir $(EREL)
|
||||
mkdir $(EBIN_DIR)
|
||||
copy *.beam $(EBIN_DIR)
|
||||
@erase $(EBIN_DIR)\configure.beam
|
||||
copy *.app $(EBIN_DIR)
|
||||
mkdir $(PRIV_DIR)
|
||||
mkdir $(SO_DIR)
|
||||
|
@ -22,6 +22,7 @@
|
||||
-record(state, {sockmod,
|
||||
socket,
|
||||
request_method,
|
||||
request_version,
|
||||
request_path,
|
||||
request_auth,
|
||||
request_content_length,
|
||||
@ -72,8 +73,9 @@ receive_headers(State) ->
|
||||
Data = SockMod:recv(Socket, 0, 300000),
|
||||
?DEBUG("recv: ~p~n", [Data]),
|
||||
case Data of
|
||||
{ok, {http_request, Method, Path, _Version}} ->
|
||||
{ok, {http_request, Method, Path, Version}} ->
|
||||
receive_headers(State#state{request_method = Method,
|
||||
request_version = Version,
|
||||
request_path = Path});
|
||||
{ok, {http_header, _, 'Authorization', _, Auth}} ->
|
||||
receive_headers(State#state{request_auth = parse_auth(Auth)});
|
||||
@ -95,16 +97,22 @@ receive_headers(State) ->
|
||||
element(2, State#state.request_path)]),
|
||||
Out = process_request(State),
|
||||
send_text(State, Out),
|
||||
case State#state.request_version of
|
||||
{1,1} ->
|
||||
case SockMod of
|
||||
gen_tcp ->
|
||||
inet:setopts(Socket, [{packet, http}]);
|
||||
ssl ->
|
||||
ssl:setopts(Socket, [{packet, http}])
|
||||
end,
|
||||
receive_headers(#state{sockmod = SockMod,
|
||||
receive_headers(
|
||||
#state{sockmod = SockMod,
|
||||
socket = Socket,
|
||||
use_http_poll = State#state.use_http_poll,
|
||||
use_web_admin = State#state.use_web_admin});
|
||||
_ ->
|
||||
ok
|
||||
end;
|
||||
{error, _Reason} ->
|
||||
ok;
|
||||
_ ->
|
||||
|
Loading…
Reference in New Issue
Block a user