mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-04 16:40:36 +01:00
* doc/guide.tex: Updated (thanks to Sergei Golovan)
* src/expat_erl.c: Added #ifdef for WIN32 (thanks to Sergei Golovan) * src/mod_irc/iconv_erl.c: Likewise * src/configure.erl: Defines ERLANG_DIR variable (thanks to Sergei Golovan) * **/Makefile: Use ERLANG_DIR (thanks to Sergei Golovan) * **/Makefile.win32: Makefiles for windows build (thanks to Sergei Golovan) * src/configure.bat: Configuration script for windows (thanks to Sergei Golovan) SVN Revision: 123
This commit is contained in:
parent
e8bbcfeecd
commit
3131c08155
17
ChangeLog
17
ChangeLog
@ -1,3 +1,20 @@
|
||||
2003-07-12 Alexey Shchepin <alexey@sevcom.net>
|
||||
|
||||
* doc/guide.tex: Updated (thanks to Sergei Golovan)
|
||||
|
||||
* src/expat_erl.c: Added #ifdef for WIN32 (thanks to Sergei
|
||||
Golovan)
|
||||
* src/mod_irc/iconv_erl.c: Likewise
|
||||
|
||||
* src/configure.erl: Defines ERLANG_DIR variable (thanks to Sergei
|
||||
Golovan)
|
||||
* **/Makefile: Use ERLANG_DIR (thanks to Sergei Golovan)
|
||||
|
||||
* **/Makefile.win32: Makefiles for windows build (thanks to Sergei
|
||||
Golovan)
|
||||
* src/configure.bat: Configuration script for windows (thanks to
|
||||
Sergei Golovan)
|
||||
|
||||
2003-07-09 Alexey Shchepin <alexey@sevcom.net>
|
||||
|
||||
* src/mod_pubsub/mod_pubsub.erl: Added suport for meta-node
|
||||
|
2
TODO
2
TODO
@ -18,7 +18,5 @@ add traffic shapers to c2s connection before authentification
|
||||
add traffic shapers to s2s connections
|
||||
more traffic shapers
|
||||
SNMP
|
||||
PubSub
|
||||
MUC: remove empty non-persistent conferences after timeout
|
||||
MUC: remove a lot of debugging output
|
||||
iq:last
|
||||
|
275
doc/guide.html
275
doc/guide.html
@ -3,7 +3,7 @@
|
||||
<HTML>
|
||||
<HEAD><TITLE>Ejabberd Installation and Operation Guide</TITLE>
|
||||
|
||||
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<META http-equiv="Content-Type" content="text/html; charset=KOI8-R">
|
||||
<META name="GENERATOR" content="hevea 1.06">
|
||||
</HEAD>
|
||||
<BODY >
|
||||
@ -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>February 11, 2003</H3><DIV ALIGN=center>
|
||||
<H3 ALIGN=center>July 12, 2003</H3><DIV ALIGN=center>
|
||||
|
||||
<IMG SRC="logo.png">
|
||||
|
||||
@ -39,59 +39,68 @@
|
||||
<LI><A HREF="#htoc2">2 Installation</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc3">2.1 Installation Requirements</A>
|
||||
<LI><A HREF="#htoc4">2.2 Obtaining</A>
|
||||
<LI><A HREF="#htoc5">2.3 Compilation</A>
|
||||
<LI><A HREF="#htoc6">2.4 Starting</A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc7">3 Configuration</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc8">3.1 Initial Configuration</A>
|
||||
<A HREF="#htoc4">2.1.1 Unix</A>
|
||||
<LI><A HREF="#htoc5">2.1.2 Windows</A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc6">2.2 Obtaining</A>
|
||||
<LI><A HREF="#htoc7">2.3 Compilation</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc9">3.1.1 Host Name</A>
|
||||
<LI><A HREF="#htoc10">3.1.2 Access Rules</A>
|
||||
<LI><A HREF="#htoc11">3.1.3 Listened Sockets</A>
|
||||
<LI><A HREF="#htoc12">3.1.4 Modules</A>
|
||||
<A HREF="#htoc8">2.3.1 Unix</A>
|
||||
<LI><A HREF="#htoc9">2.3.2 Windows</A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc13">3.2 Online Configuration and Monitoring</A>
|
||||
<LI><A HREF="#htoc10">2.4 Starting</A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc11">3 Configuration</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc14">3.2.1 Node <TT>config</TT>: Global Configuration</A>
|
||||
<LI><A HREF="#htoc15">3.2.2 Node <TT>online users</TT>: List of Online Users</A>
|
||||
<LI><A HREF="#htoc16">3.2.3 Node <TT>all users</TT>: List of Registered User</A>
|
||||
<LI><A HREF="#htoc17">3.2.4 Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections</A>
|
||||
<LI><A HREF="#htoc18">3.2.5 Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes</A>
|
||||
<LI><A HREF="#htoc19">3.2.6 Node <TT>stopped nodes</TT>: List of Stopped Nodes</A>
|
||||
</UL>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc20">4 Distribution</A>
|
||||
<A HREF="#htoc12">3.1 Initial Configuration</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc21">4.1 How it works</A>
|
||||
<A HREF="#htoc13">3.1.1 Host Name</A>
|
||||
<LI><A HREF="#htoc14">3.1.2 Access Rules</A>
|
||||
<LI><A HREF="#htoc15">3.1.3 Shapers Configuration</A>
|
||||
<LI><A HREF="#htoc16">3.1.4 Listened Sockets</A>
|
||||
<LI><A HREF="#htoc17">3.1.5 Modules</A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc18">3.2 Online Configuration and Monitoring</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc22">4.1.1 Router</A>
|
||||
<LI><A HREF="#htoc23">4.1.2 Local Router</A>
|
||||
<LI><A HREF="#htoc24">4.1.3 Session Manager</A>
|
||||
<LI><A HREF="#htoc25">4.1.4 S2S Manager</A>
|
||||
<A HREF="#htoc19">3.2.1 Node <TT>config</TT>: Global Configuration</A>
|
||||
<LI><A HREF="#htoc20">3.2.2 Node <TT>online users</TT>: List of Online Users</A>
|
||||
<LI><A HREF="#htoc21">3.2.3 Node <TT>all users</TT>: List of Registered User</A>
|
||||
<LI><A HREF="#htoc22">3.2.4 Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections</A>
|
||||
<LI><A HREF="#htoc23">3.2.5 Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes</A>
|
||||
<LI><A HREF="#htoc24">3.2.6 Node <TT>stopped nodes</TT>: List of Stopped Nodes</A>
|
||||
</UL>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc26">A Built-in Modules</A>
|
||||
<LI><A HREF="#htoc25">4 Distribution</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc27">A.1 Common Options</A>
|
||||
<A HREF="#htoc26">4.1 How it works</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc28">A.1.1 Option <TT>iqdisc</TT></A>
|
||||
<LI><A HREF="#htoc29">A.1.2 Option <TT>host</TT></A>
|
||||
<A HREF="#htoc27">4.1.1 Router</A>
|
||||
<LI><A HREF="#htoc28">4.1.2 Local Router</A>
|
||||
<LI><A HREF="#htoc29">4.1.3 Session Manager</A>
|
||||
<LI><A HREF="#htoc30">4.1.4 S2S Manager</A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc30">A.2 <TT>mod_register</TT></A>
|
||||
<LI><A HREF="#htoc31">A.3 <TT>mod_roster</TT></A>
|
||||
<LI><A HREF="#htoc32">A.4 <TT>mod_configure</TT></A>
|
||||
<LI><A HREF="#htoc33">A.5 <TT>mod_disco</TT></A>
|
||||
<LI><A HREF="#htoc34">A.6 <TT>mod_stats</TT></A>
|
||||
<LI><A HREF="#htoc35">A.7 <TT>mod_vcard</TT></A>
|
||||
<LI><A HREF="#htoc36">A.8 <TT>mod_offline</TT></A>
|
||||
<LI><A HREF="#htoc37">A.9 <TT>mod_echo</TT></A>
|
||||
<LI><A HREF="#htoc38">A.10 <TT>mod_private</TT></A>
|
||||
<LI><A HREF="#htoc39">A.11 <TT>mod_time</TT></A>
|
||||
<LI><A HREF="#htoc40">A.12 <TT>mod_version</TT></A>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc41">B I18n/L10n</A>
|
||||
<LI><A HREF="#htoc31">A Built-in Modules</A>
|
||||
<UL><LI>
|
||||
<A HREF="#htoc32">A.1 Common Options</A>
|
||||
<UL><LI>
|
||||
<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="#htoc41">A.8 <TT>mod_offline</TT></A>
|
||||
<LI><A HREF="#htoc42">A.9 <TT>mod_echo</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>
|
||||
</UL>
|
||||
<LI><A HREF="#htoc46">B I18n/L10n</A>
|
||||
</UL>
|
||||
|
||||
<!--TOC section Introduction-->
|
||||
@ -104,21 +113,29 @@ server. It is writen mostly in Erlang.<BR>
|
||||
<BR>
|
||||
The main features of <TT>ejabberd</TT> is:
|
||||
<UL><LI>
|
||||
Distributed: You may run <TT>ejabberd</TT> on a cluster of machines and all of
|
||||
Works on most of popular platforms: *nix (tested on Linux and FreeBSD)
|
||||
and Win32
|
||||
<LI>Distributed: You may run <TT>ejabberd</TT> on a cluster of machines and all of
|
||||
them will serve one Jabber domain.
|
||||
<LI>Fault-tolerance: You may setup an <TT>ejabberd</TT> cluster so that all the
|
||||
information required for a properly working service will be stored
|
||||
permanently on more then one node. This means that if one of the nodes
|
||||
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
|
||||
<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 Jabber Users Directory service based on users vCards
|
||||
<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> attribute in many XML elements.
|
||||
<LI>JUD based on users vCards.
|
||||
<LI>Support for <TT>xml:lang</TT> attribute in many XML elements
|
||||
</UL>
|
||||
<!--TOC section Installation-->
|
||||
|
||||
@ -130,6 +147,11 @@ Distributed: You may run <TT>ejabberd</TT> on a cluster of machines and all of
|
||||
<H3><A NAME="htoc3">2.1</A> Installation Requirements</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:installreq"></A>
|
||||
<!--TOC subsubsection Unix-->
|
||||
|
||||
<H4><A NAME="htoc4">2.1.1</A> Unix</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:installrequnix"></A>
|
||||
To compile <TT>ejabberd</TT>, you will need the following packages:
|
||||
<UL><LI>
|
||||
GNU Make;
|
||||
@ -137,37 +159,89 @@ GNU Make;
|
||||
<LI>libexpat 1.95 or later;
|
||||
<LI>Erlang/OTP R8B or later.
|
||||
</UL>
|
||||
<!--TOC subsubsection Windows-->
|
||||
|
||||
<H4><A NAME="htoc5">2.1.2</A> Windows</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:installreqwin"></A>
|
||||
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_R8B-2.exe">Erlang
|
||||
emulator version 5.1.2</A>
|
||||
<LI><A HREF="http://prdownloads.sourceforge.net/expat/expat_win32bin_1_95_6.exe?download">Expat 1.95.6</A>
|
||||
<LI><A HREF="http://prdownloads.sourceforge.net/gnuwin32/libiconv-1.8-1-lib.exe?download">Iconv 1.8</A> (optional)
|
||||
</UL>
|
||||
<!--TOC subsection Obtaining-->
|
||||
|
||||
<H3><A NAME="htoc4">2.2</A> Obtaining</H3><!--SEC END -->
|
||||
<H3><A NAME="htoc6">2.2</A> Obtaining</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:obtaining"></A>
|
||||
Currently no stable version has been released.<BR>
|
||||
<BR>
|
||||
The latest alpha version can be retrieved from CVS.
|
||||
<UL><LI>
|
||||
<TT>export CVSROOT=:pserver:cvs@www.jabber.ru:/var/spool/cvs</TT>
|
||||
<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>
|
||||
<!--TOC subsection Compilation-->
|
||||
|
||||
<H3><A NAME="htoc5">2.3</A> Compilation</H3><!--SEC END -->
|
||||
<H3><A NAME="htoc7">2.3</A> Compilation</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:compilation"></A>
|
||||
<!--TOC subsubsection Unix-->
|
||||
|
||||
<H4><A NAME="htoc8">2.3.1</A> Unix</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:compilationunix"></A>
|
||||
<PRE>
|
||||
./configure
|
||||
make
|
||||
</PRE>
|
||||
TBD<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>
|
||||
Install Erlang emulator (for example, into <CODE>C:\Program Files\erl5.1.2</CODE>).
|
||||
<LI>Install Expat library into <CODE>C:\Program Files\Expat-1.95.6</CODE>
|
||||
directory. Copy file <CODE>C:\Program Files\Expat-1.95.6\Libs\libexpat.dll</CODE> to your Windows system directory (for
|
||||
example, <CODE>C:\WINNT</CODE> or <CODE>C:\WINNT\System32</CODE>)
|
||||
<LI>Install Iconv library into <CODE>C:\Program Files\GnuWin32</CODE> directory.
|
||||
Copy file <CODE>C:\Program Files\GnuWin32\bin\libiconv-2.dll</CODE> to your
|
||||
Windows system directory.<BR>
|
||||
<BR>
|
||||
Note: Instead of copying libexpat.dll and libiconv-2.dll to Windows
|
||||
directory, you can add directories
|
||||
<CODE>C:\Program Files\Expat-1.95.6\Libs</CODE> and
|
||||
<CODE>C:\Program Files\GnuWin32\bin</CODE> to <CODE>PATH</CODE> environment
|
||||
variable.
|
||||
<LI>Being in <CODE>ejabberd\src</CODE> directory run:
|
||||
<PRE>
|
||||
configure
|
||||
nmake -f Makefile.win32
|
||||
</PRE><LI>To build MUC, IRC and pub/sub modules run
|
||||
<PRE>
|
||||
nmake -f Makefile.win32
|
||||
</PRE>in <CODE>ejabberd\src\mod_muc</CODE>, <CODE>ejabberd\src\mod_muc</CODE> and
|
||||
<CODE>ejabberd\src\mod_pubsub</CODE> directories
|
||||
<LI>Edit file <CODE>ejabberd\src\ejabberd.cfg</CODE> and run
|
||||
<PRE>
|
||||
werl -s ejabberd -name ejabberd
|
||||
</PRE><LI>Enjoy!
|
||||
</OL>
|
||||
<!--TOC subsection Starting-->
|
||||
|
||||
<H3><A NAME="htoc6">2.4</A> Starting</H3><!--SEC END -->
|
||||
<H3><A NAME="htoc10">2.4</A> Starting</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:starting"></A>
|
||||
... To use more then 1024 connections, you will need to set environment
|
||||
... To use more than 1024 connections, you will need to set environment
|
||||
variable <TT>ERL_MAX_PORTS</TT>:
|
||||
<PRE>
|
||||
export ERL_MAX_PORTS=32000
|
||||
@ -180,12 +254,12 @@ TBD<BR>
|
||||
<BR>
|
||||
<!--TOC section Configuration-->
|
||||
|
||||
<H2><A NAME="htoc7">3</A> Configuration</H2><!--SEC END -->
|
||||
<H2><A NAME="htoc11">3</A> Configuration</H2><!--SEC END -->
|
||||
|
||||
<A NAME="sec:configuration"></A>
|
||||
<!--TOC subsection Initial Configuration-->
|
||||
|
||||
<H3><A NAME="htoc8">3.1</A> Initial Configuration</H3><!--SEC END -->
|
||||
<H3><A NAME="htoc12">3.1</A> Initial Configuration</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:initconfig"></A>
|
||||
The configuration file is initially loaded the first time <TT>ejabberd</TT> is
|
||||
@ -208,7 +282,7 @@ adding new ones.<BR>
|
||||
<BR>
|
||||
<!--TOC subsubsection Host Name-->
|
||||
|
||||
<H4><A NAME="htoc9">3.1.1</A> Host Name</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc13">3.1.1</A> Host Name</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:confighostname"></A>
|
||||
Option <TT>hostname</TT> defines name of Jabber domain that <TT>ejabberd</TT>
|
||||
@ -218,7 +292,7 @@ serves. E. g. to use <TT>jabber.org</TT> domain add following line in confi
|
||||
</PRE>
|
||||
<!--TOC subsubsection Access Rules-->
|
||||
|
||||
<H4><A NAME="htoc10">3.1.2</A> Access Rules</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc14">3.1.2</A> Access Rules</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:configaccess"></A>
|
||||
Access control in <TT>ejabberd</TT> is performed via Access Control Lists (ACL). The
|
||||
@ -304,7 +378,7 @@ Following access rules pre-defined:
|
||||
</DL>
|
||||
<!--TOC subsubsection Shapers Configuration-->
|
||||
|
||||
<H4><A NAME="htoc11">3.1.3</A> Shapers Configuration</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc15">3.1.3</A> Shapers Configuration</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:configshaper"></A>
|
||||
With shapers is possible to bound connection traffic. The declarations of
|
||||
@ -323,7 +397,7 @@ E. g. to define shaper with name ``<TT>normal</TT>'' and maximum allowed ra
|
||||
</PRE>
|
||||
<!--TOC subsubsection Listened Sockets-->
|
||||
|
||||
<H4><A NAME="htoc12">3.1.4</A> Listened Sockets</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc16">3.1.4</A> Listened Sockets</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:configlistened"></A>
|
||||
Option <TT>listen</TT> defines list of listened sockets and what services
|
||||
@ -331,7 +405,8 @@ runned on them. Each element of list is a tuple with following elements:
|
||||
<UL><LI>
|
||||
Port number;
|
||||
<LI>Module that serves this port;
|
||||
<LI>Function in this module that starts connection (likely will be removed);
|
||||
<LI>Function in this module that starts connection (likely will be removed in
|
||||
future versions of <TT>ejabberd</TT>);
|
||||
<LI>Options to this module.
|
||||
</UL>
|
||||
Currently three modules are implemented:
|
||||
@ -347,7 +422,7 @@ Following options defined:
|
||||
value is ``<TT>none</TT>''.
|
||||
</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 to Jabber
|
||||
<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).
|
||||
</DL>
|
||||
For example, the following configuration defines that C2S connections are
|
||||
@ -371,7 +446,7 @@ limit 1000 b/s.
|
||||
</PRE>
|
||||
<!--TOC subsubsection Modules-->
|
||||
|
||||
<H4><A NAME="htoc13">3.1.5</A> Modules</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc17">3.1.5</A> Modules</H4><!--SEC END -->
|
||||
|
||||
<A NAME="sec:configmodules"></A>
|
||||
Option <TT>modules</TT> defines the list of modules that will be loaded after
|
||||
@ -397,7 +472,7 @@ Example:
|
||||
</PRE>
|
||||
<!--TOC subsection Online Configuration and Monitoring-->
|
||||
|
||||
<H3><A NAME="htoc14">3.2</A> Online Configuration and Monitoring</H3><!--SEC END -->
|
||||
<H3><A NAME="htoc18">3.2</A> Online Configuration and Monitoring</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:onlineconfig"></A>
|
||||
To perform online reconfiguration of <TT>ejabberd</TT> you will need to have
|
||||
@ -428,7 +503,7 @@ Identity of server.
|
||||
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE>
|
||||
<!--TOC subsubsection Node <TT>config</TT>: Global Configuration-->
|
||||
|
||||
<H4><A NAME="htoc15">3.2.1</A> Node <TT>config</TT>: Global Configuration</H4><!--SEC END -->
|
||||
<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>
|
||||
<BR>
|
||||
@ -482,11 +557,11 @@ removed user is online, then he will be disconnected. Also user-related data
|
||||
<BR>
|
||||
<!--TOC subsubsection Node <TT>online users</TT>: List of Online Users-->
|
||||
|
||||
<H4><A NAME="htoc16">3.2.2</A> Node <TT>online users</TT>: List of Online Users</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc20">3.2.2</A> Node <TT>online users</TT>: List of Online Users</H4><!--SEC END -->
|
||||
|
||||
<!--TOC subsubsection Node <TT>all users</TT>: List of Registered User-->
|
||||
|
||||
<H4><A NAME="htoc17">3.2.3</A> Node <TT>all users</TT>: List of Registered User</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc21">3.2.3</A> Node <TT>all users</TT>: List of Registered User</H4><!--SEC END -->
|
||||
|
||||
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
||||
|
||||
@ -500,11 +575,11 @@ removed user is online, then he will be disconnected. Also user-related data
|
||||
<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="htoc18">3.2.4</A> Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc22">3.2.4</A> Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections</H4><!--SEC END -->
|
||||
|
||||
<!--TOC subsubsection Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes-->
|
||||
|
||||
<H4><A NAME="htoc19">3.2.5</A> Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc23">3.2.5</A> Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes</H4><!--SEC END -->
|
||||
|
||||
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
|
||||
|
||||
@ -518,18 +593,18 @@ removed user is online, then he will be disconnected. Also user-related data
|
||||
<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="htoc20">3.2.6</A> Node <TT>stopped nodes</TT>: List of Stopped Nodes</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc24">3.2.6</A> Node <TT>stopped nodes</TT>: List of Stopped Nodes</H4><!--SEC END -->
|
||||
|
||||
TBD<BR>
|
||||
<BR>
|
||||
<!--TOC section Distribution-->
|
||||
|
||||
<H2><A NAME="htoc21">4</A> Distribution</H2><!--SEC END -->
|
||||
<H2><A NAME="htoc25">4</A> Distribution</H2><!--SEC END -->
|
||||
|
||||
<A NAME="sec:distribution"></A>
|
||||
<!--TOC subsection How it works-->
|
||||
|
||||
<H3><A NAME="htoc22">4.1</A> How it works</H3><!--SEC END -->
|
||||
<H3><A NAME="htoc26">4.1</A> How it works</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:howitworks"></A>
|
||||
A Jabber domain is served by one or more <TT>ejabberd</TT> nodes. These nodes can
|
||||
@ -540,7 +615,7 @@ the same magic cookie (see Erlang/OTP documentation, in other words the file
|
||||
needed because all nodes exchange information about connected users, S2S
|
||||
connections, registered services, etc...<BR>
|
||||
<BR>
|
||||
Each <TT>ejabberd</TT> node must run following modules:
|
||||
Each <TT>ejabberd</TT> node have following modules:
|
||||
<UL><LI>
|
||||
router;
|
||||
<LI>local router.
|
||||
@ -549,27 +624,27 @@ router;
|
||||
</UL>
|
||||
<!--TOC subsubsection Router-->
|
||||
|
||||
<H4><A NAME="htoc23">4.1.1</A> Router</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc27">4.1.1</A> Router</H4><!--SEC END -->
|
||||
|
||||
This module is the main router of Jabber packets on each node. It routes
|
||||
them based on their destinations domains. It has two tables: local and global
|
||||
routes. First, domain of packet destination searched in local table, and if it
|
||||
found, then the packet is routed to appropriate process. If no, then it
|
||||
searches in global table, and is routed to the appropriate <TT>ejabberd</TT> node or
|
||||
process. If itdoes not exists in either table, then it sent to the S2S
|
||||
process. If it does not exists in either tables, then it sent to the S2S
|
||||
manager.<BR>
|
||||
<BR>
|
||||
<!--TOC subsubsection Local Router-->
|
||||
|
||||
<H4><A NAME="htoc24">4.1.2</A> Local Router</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc28">4.1.2</A> Local Router</H4><!--SEC END -->
|
||||
|
||||
This module routes packets which have a destination domain equal to this server
|
||||
name. If destination JID has a node, then it routed to the session manager,
|
||||
else it is processed depending on it's content.<BR>
|
||||
name. If destination JID has a non-empty user part, then it routed to the
|
||||
session manager, else it is processed depending on it's content.<BR>
|
||||
<BR>
|
||||
<!--TOC subsubsection Session Manager-->
|
||||
|
||||
<H4><A NAME="htoc25">4.1.3</A> Session Manager</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc29">4.1.3</A> Session Manager</H4><!--SEC END -->
|
||||
|
||||
This module routes packets to local users. It searches for what user resource
|
||||
packet must be sended via presence table. If this resource is connected to
|
||||
@ -578,7 +653,7 @@ the packet is sent to session manager on that node.<BR>
|
||||
<BR>
|
||||
<!--TOC subsubsection S2S Manager-->
|
||||
|
||||
<H4><A NAME="htoc26">4.1.4</A> S2S Manager</H4><!--SEC END -->
|
||||
<H4><A NAME="htoc30">4.1.4</A> S2S Manager</H4><!--SEC END -->
|
||||
|
||||
This module routes packets to other Jabber servers. First, it checks if an
|
||||
open S2S connection from the domain of the packet source to the domain of
|
||||
@ -589,19 +664,19 @@ does not exist, then it is opened and registered.<BR>
|
||||
<BR>
|
||||
<!--TOC section Built-in Modules-->
|
||||
|
||||
<H2><A NAME="htoc27">A</A> Built-in Modules</H2><!--SEC END -->
|
||||
<H2><A NAME="htoc31">A</A> Built-in Modules</H2><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modules"></A>
|
||||
<!--TOC subsection Common Options-->
|
||||
|
||||
<H3><A NAME="htoc28">A.1</A> Common Options</H3><!--SEC END -->
|
||||
<H3><A NAME="htoc32">A.1</A> Common Options</H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modcommonopts"></A>
|
||||
Following options used by many modules, so they described in separate section.<BR>
|
||||
<BR>
|
||||
<!--TOC subsubsection Option <TT>iqdisc</TT>-->
|
||||
|
||||
<H4><A NAME="htoc29">A.1.1</A> Option <TT>iqdisc</TT></H4><!--SEC END -->
|
||||
<H4><A NAME="htoc33">A.1.1</A> Option <TT>iqdisc</TT></H4><!--SEC END -->
|
||||
|
||||
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
|
||||
@ -616,10 +691,10 @@ these queries. Possible values are:
|
||||
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.
|
||||
<DT><B><TT>parallel</TT></B><DD> In this case for all packets of namespace with this
|
||||
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.
|
||||
<DT><B><TT>parallel</TT></B><DD> In this case for all packets with this discipline
|
||||
spawned separate Erlang process, so all these 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.
|
||||
</DL>
|
||||
Example:
|
||||
<PRE>
|
||||
@ -631,7 +706,7 @@ Example:
|
||||
</PRE>
|
||||
<!--TOC subsubsection Option <TT>host</TT>-->
|
||||
|
||||
<H4><A NAME="htoc30">A.1.2</A> Option <TT>host</TT></H4><!--SEC END -->
|
||||
<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>
|
||||
@ -646,27 +721,27 @@ Example:
|
||||
</PRE>
|
||||
<!--TOC subsection <TT>mod_register</TT>-->
|
||||
|
||||
<H3><A NAME="htoc31">A.2</A> <TT>mod_register</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc35">A.2</A> <TT>mod_register</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modregister"></A>
|
||||
<!--TOC subsection <TT>mod_roster</TT>-->
|
||||
|
||||
<H3><A NAME="htoc32">A.3</A> <TT>mod_roster</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc36">A.3</A> <TT>mod_roster</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modroster"></A>
|
||||
<!--TOC subsection <TT>mod_configure</TT>-->
|
||||
|
||||
<H3><A NAME="htoc33">A.4</A> <TT>mod_configure</TT></H3><!--SEC END -->
|
||||
<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="htoc34">A.5</A> <TT>mod_disco</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc38">A.5</A> <TT>mod_disco</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:moddisco"></A>
|
||||
<!--TOC subsection <TT>mod_stats</TT>-->
|
||||
|
||||
<H3><A NAME="htoc35">A.6</A> <TT>mod_stats</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc39">A.6</A> <TT>mod_stats</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modstats"></A>
|
||||
This module adds support of
|
||||
@ -681,22 +756,22 @@ TBD about access.<BR>
|
||||
<BR>
|
||||
<!--TOC subsection <TT>mod_vcard</TT>-->
|
||||
|
||||
<H3><A NAME="htoc36">A.7</A> <TT>mod_vcard</TT></H3><!--SEC END -->
|
||||
<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="htoc37">A.8</A> <TT>mod_offline</TT></H3><!--SEC END -->
|
||||
<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="htoc38">A.9</A> <TT>mod_echo</TT></H3><!--SEC END -->
|
||||
<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="htoc39">A.10</A> <TT>mod_private</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc43">A.10</A> <TT>mod_private</TT></H3><!--SEC END -->
|
||||
|
||||
<A NAME="sec:modprivate"></A>
|
||||
This module adds support of
|
||||
@ -709,7 +784,7 @@ Options:
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_time</TT>-->
|
||||
|
||||
<H3><A NAME="htoc40">A.11</A> <TT>mod_time</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc44">A.11</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>
|
||||
@ -720,7 +795,7 @@ Options:
|
||||
</DL>
|
||||
<!--TOC subsection <TT>mod_version</TT>-->
|
||||
|
||||
<H3><A NAME="htoc41">A.12</A> <TT>mod_version</TT></H3><!--SEC END -->
|
||||
<H3><A NAME="htoc45">A.12</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>
|
||||
@ -731,7 +806,7 @@ Options:
|
||||
</DL>
|
||||
<!--TOC section I18n/L10n-->
|
||||
|
||||
<H2><A NAME="htoc42">B</A> I18n/L10n</H2><!--SEC END -->
|
||||
<H2><A NAME="htoc46">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.
|
||||
@ -739,8 +814,8 @@ on figure <A HREF="#fig:discorus">6</A> (compare with figure <A HREF="
|
||||
on following query:
|
||||
<PRE>
|
||||
<iq id='5'
|
||||
to='e.localhost'
|
||||
type='get'>
|
||||
to='e.localhost'
|
||||
type='get'>
|
||||
<query xmlns='http://jabber.org/protocol/disco#items'
|
||||
xml:lang='ru'/>
|
||||
</iq>
|
||||
|
110
doc/guide.tex
110
doc/guide.tex
@ -31,7 +31,7 @@
|
||||
\newcommand{\modprivate}{\texttt{mod\_private}}
|
||||
\newcommand{\modtime}{\texttt{mod\_time}}
|
||||
\newcommand{\modversion}{\texttt{mod\_version}}
|
||||
|
||||
c
|
||||
%\setcounter{tocdepth}{3}
|
||||
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
\author{Alexey Shchepin \\
|
||||
\ahrefurl{mailto:alexey@sevcom.net} \\
|
||||
\ahrefurl{xmpp:aleksey@jabber.ru}}
|
||||
\date{February 11, 2003}
|
||||
\date{July 12, 2003}
|
||||
|
||||
\begin{document}
|
||||
\begin{titlepage}
|
||||
@ -62,21 +62,29 @@ server. It is writen mostly in Erlang.
|
||||
|
||||
The main features of \ejabberd{} is:
|
||||
\begin{itemize}
|
||||
\item Works on most of popular platforms: *nix (tested on Linux and FreeBSD)
|
||||
and Win32
|
||||
\item Distributed: You may run \ejabberd{} on a cluster of machines and all of
|
||||
them will serve one Jabber domain.
|
||||
\item Fault-tolerance: You may setup an \ejabberd{} cluster so that all the
|
||||
information required for a properly working service will be stored
|
||||
permanently on more then one node. This means that if one of the nodes
|
||||
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''.
|
||||
\item Built-in \footahref{http://www.jabber.org/jeps/jep-0045.html}{Multi-User
|
||||
Chat} service
|
||||
\item Built-in IRC transport
|
||||
\item Built-in
|
||||
\footahref{http://www.jabber.org/jeps/jep-0060.html}{Publish-Subscribe}
|
||||
service
|
||||
\item Built-in Jabber Users Directory service based on users vCards
|
||||
\item Support for
|
||||
\footahref{http://www.jabber.org/jeps/jep-0030.html}{JEP-0030}
|
||||
(Service Discovery).
|
||||
\item Support for
|
||||
\footahref{http://www.jabber.org/jeps/jep-0039.html}{JEP-0039}
|
||||
(Statistics Gathering).
|
||||
\item Support for \ns{xml:lang} attribute in many XML elements.
|
||||
\item JUD based on users vCards.
|
||||
\item Support for \ns{xml:lang} attribute in many XML elements
|
||||
\end{itemize}
|
||||
|
||||
|
||||
@ -89,6 +97,9 @@ The main features of \ejabberd{} is:
|
||||
\subsection{Installation Requirements}
|
||||
\label{sec:installreq}
|
||||
|
||||
\subsubsection{Unix}
|
||||
\label{sec:installrequnix}
|
||||
|
||||
To compile \ejabberd{}, you will need the following packages:
|
||||
\begin{itemize}
|
||||
\item GNU Make;
|
||||
@ -97,6 +108,21 @@ To compile \ejabberd{}, you will need the following packages:
|
||||
\item Erlang/OTP R8B or later.
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Windows}
|
||||
\label{sec:installreqwin}
|
||||
|
||||
To compile \ejabberd{} in MS Windows environment, you will need the following
|
||||
packages:
|
||||
\begin{itemize}
|
||||
\item MS Visual C++~6.0 Compiler
|
||||
\item \footahref{http://www.erlang.org/download/otp_win32_R8B-2.exe}{Erlang
|
||||
emulator version~5.1.2}
|
||||
\item \footahref{http://prdownloads.sourceforge.net/expat/expat_win32bin_1_95_6.exe?download}{Expat~1.95.6}
|
||||
\item \footahref{http://prdownloads.sourceforge.net/gnuwin32/libiconv-1.8-1-lib.exe?download}{Iconv~1.8} (optional)
|
||||
\end{itemize}
|
||||
|
||||
|
||||
|
||||
\subsection{Obtaining}
|
||||
\label{sec:obtaining}
|
||||
|
||||
@ -112,11 +138,10 @@ The latest alpha version can be retrieved from CVS\@.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\subsection{Compilation}
|
||||
\label{sec:compilation}
|
||||
\subsubsection{Unix}
|
||||
\label{sec:compilationunix}
|
||||
|
||||
\begin{verbatim}
|
||||
./configure
|
||||
@ -125,6 +150,48 @@ make
|
||||
|
||||
TBD
|
||||
|
||||
\subsubsection{Windows}
|
||||
\label{sec:compilationwin}
|
||||
|
||||
\begin{enumerate}
|
||||
\item Install Erlang emulator (for example, into \verb|C:\Program Files\erl5.1.2|).
|
||||
\item Install Expat library into \verb|C:\Program Files\Expat-1.95.6|
|
||||
directory. Copy file \verb|C:\Program Files\Expat-1.95.6\Libs\libexpat.dll|
|
||||
to your Windows system directory (for example, \verb|C:\WINNT| or
|
||||
\verb|C:\WINNT\System32|)
|
||||
\item Install Iconv library into \verb|C:\Program Files\GnuWin32| directory.
|
||||
Copy file \verb|C:\Program Files\GnuWin32\bin\libiconv-2.dll| to your
|
||||
Windows system directory.
|
||||
|
||||
Note: Instead of copying libexpat.dll and libiconv-2.dll to Windows
|
||||
directory, you can add directories
|
||||
\verb|C:\Program Files\Expat-1.95.6\Libs| and
|
||||
\verb|C:\Program Files\GnuWin32\bin| to \verb|PATH| environment
|
||||
variable.
|
||||
\item Being in \verb|ejabberd\src| directory run:
|
||||
\begin{verbatim}
|
||||
configure
|
||||
nmake -f Makefile.win32
|
||||
\end{verbatim}
|
||||
\item To build MUC, IRC and pub/sub modules run
|
||||
\begin{verbatim}
|
||||
nmake -f Makefile.win32
|
||||
\end{verbatim}
|
||||
in \verb|ejabberd\src\mod_muc|, \verb|ejabberd\src\mod_muc| and
|
||||
\verb|ejabberd\src\mod_pubsub| directories
|
||||
\item Edit file \verb|ejabberd\src\ejabberd.cfg| and run
|
||||
\begin{verbatim}
|
||||
werl -s ejabberd -name ejabberd
|
||||
\end{verbatim}
|
||||
\item Enjoy!
|
||||
\end{enumerate}
|
||||
|
||||
Some recent versions of Erlang distribution it seems have bug in crypto
|
||||
application, so ejabberd could be built but users can't use digest
|
||||
authentication (only plain-text). Also it seems SSL support is broken in
|
||||
Windows distribution of Erlang emulator.
|
||||
|
||||
|
||||
|
||||
|
||||
%\subsection{Initial Configuration}
|
||||
@ -134,7 +201,7 @@ TBD
|
||||
\subsection{Starting}
|
||||
\label{sec:starting}
|
||||
|
||||
\ldots{} To use more then 1024 connections, you will need to set environment
|
||||
\ldots{} To use more than 1024 connections, you will need to set environment
|
||||
variable \texttt{ERL\_MAX\_PORTS}:
|
||||
\begin{verbatim}
|
||||
export ERL_MAX_PORTS=32000
|
||||
@ -323,7 +390,8 @@ runned on them. Each element of list is a tuple with following elements:
|
||||
\begin{itemize}
|
||||
\item Port number;
|
||||
\item Module that serves this port;
|
||||
\item Function in this module that starts connection (likely will be removed);
|
||||
\item Function in this module that starts connection (likely will be removed in
|
||||
future versions of \ejabberd);
|
||||
\item Options to this module.
|
||||
\end{itemize}
|
||||
|
||||
@ -340,7 +408,7 @@ Currently three modules are implemented:
|
||||
value is ``\texttt{none}''.
|
||||
\end{description}
|
||||
\item[\texttt{ejabberd\_s2s\_in}] This module serves incoming S2S connections.
|
||||
\item[\texttt{ejabberd\_service}] This module serves connections to \Jabber{}
|
||||
\item[\texttt{ejabberd\_service}] This module serves connections from \Jabber{}
|
||||
services (i.\,e.\ that use the \texttt{jabber:component:accept} namespace).
|
||||
\end{description}
|
||||
|
||||
@ -521,7 +589,7 @@ connections, registered services, etc\ldots
|
||||
|
||||
|
||||
|
||||
Each \ejabberd{} node must run following modules:
|
||||
Each \ejabberd{} node have following modules:
|
||||
\begin{itemize}
|
||||
\item router;
|
||||
\item local router.
|
||||
@ -537,15 +605,15 @@ them based on their destinations domains. It has two tables: local and global
|
||||
routes. First, domain of packet destination searched in local table, and if it
|
||||
found, then the packet is routed to appropriate process. If no, then it
|
||||
searches in global table, and is routed to the appropriate \ejabberd{} node or
|
||||
process. If itdoes not exists in either table, then it sent to the S2S
|
||||
process. If it does not exists in either tables, then it sent to the S2S
|
||||
manager.
|
||||
|
||||
|
||||
\subsubsection{Local Router}
|
||||
|
||||
This module routes packets which have a destination domain equal to this server
|
||||
name. If destination JID has a node, then it routed to the session manager,
|
||||
else it is processed depending on it's content.
|
||||
name. If destination JID has a non-empty user part, then it routed to the
|
||||
session manager, else it is processed depending on it's content.
|
||||
|
||||
|
||||
\subsubsection{Session Manager}
|
||||
@ -595,10 +663,10 @@ these queries. Possible values are:
|
||||
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.
|
||||
\item[\texttt{parallel}] In this case for all packets of namespace with this
|
||||
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.
|
||||
\item[\texttt{parallel}] In this case for all packets with this discipline
|
||||
spawned separate Erlang process, so all these 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.
|
||||
\end{description}
|
||||
|
||||
Example:
|
||||
@ -720,8 +788,8 @@ on figure~\ref{fig:discorus} (compare with figure~\ref{fig:disco}) showed reply
|
||||
on following query:
|
||||
\begin{verbatim}
|
||||
<iq id='5'
|
||||
to='e.localhost'
|
||||
type='get'>
|
||||
to='e.localhost'
|
||||
type='get'>
|
||||
<query xmlns='http://jabber.org/protocol/disco#items'
|
||||
xml:lang='ru'/>
|
||||
</iq>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
include Makefile.inc
|
||||
|
||||
INCLUDES = -I/usr/lib/erlang/usr/include \
|
||||
INCLUDES = -I$(ERLANG_DIR)/usr/include \
|
||||
-I$(EI_DIR)/include \
|
||||
-I/usr/local/include
|
||||
|
||||
|
38
src/Makefile.win32
Normal file
38
src/Makefile.win32
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
include Makefile.inc
|
||||
|
||||
EXPAT_DIR="c:\progra~1\expat-1.95.6"
|
||||
|
||||
ALL : expat_erl.dll
|
||||
erl -s make all report -noinput -s erlang halt
|
||||
|
||||
CLEAN :
|
||||
-@erase expat_erl.obj
|
||||
-@erase vc60.idb
|
||||
-@erase expat_erl.dll
|
||||
-@erase expat_erl.exp
|
||||
-@erase expat_erl.lib
|
||||
-@erase expat_erl.pch
|
||||
-@erase *.beam
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "$(ERLANG_DIR)\usr\include" /I "$(EI_DIR)\include" /I "$(EXPAT_DIR)\source\lib" /D "WIN32" /D "NDEBUG" /D "_USRDLL" /D "_MBCS" /Fpexpat_erl.pch /YX /FD /c
|
||||
|
||||
.c.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=kernel32.lib "$(ERLANG_DIR)\usr\lib\erl_dll.lib" "$(EI_DIR)\lib\ei.lib" "$(EI_DIR)\lib\erl_interface.lib" "$(EXPAT_DIR)\libs\libexpat.lib" /nologo /subsystem:console /dll /pdb:none /machine:I386 /out:expat_erl.dll
|
||||
LINK32_OBJS=expat_erl.obj
|
||||
|
||||
expat_erl.dll : $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
SOURCE=expat_erl.c
|
||||
|
||||
expat_erl.obj : $(SOURCE)
|
||||
|
4
src/configure.bat
Normal file
4
src/configure.bat
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
erlc configure.erl
|
||||
erl -s configure -noshell
|
||||
|
@ -14,7 +14,8 @@
|
||||
|
||||
start() ->
|
||||
EIDirS = "EI_DIR = " ++ code:lib_dir("erl_interface") ++ "\n",
|
||||
file:write_file("Makefile.inc", list_to_binary(EIDirS)),
|
||||
RootDirS = "ERLANG_DIR = " ++ code:root_dir() ++ "\n",
|
||||
file:write_file("Makefile.inc", list_to_binary(EIDirS ++ RootDirS)),
|
||||
halt().
|
||||
|
||||
|
||||
|
@ -10,7 +10,6 @@ typedef struct {
|
||||
XML_Parser parser;
|
||||
} expat_data;
|
||||
|
||||
|
||||
void *erlXML_StartElementHandler(expat_data *d,
|
||||
const XML_Char *name,
|
||||
const XML_Char **atts)
|
||||
@ -147,6 +146,9 @@ ErlDrvEntry expat_driver_entry = {
|
||||
NULL /* F_PTR outputv, reserved */
|
||||
};
|
||||
|
||||
#ifdef WIN32
|
||||
__declspec(dllexport)
|
||||
#endif
|
||||
DRIVER_INIT(expat_erl) /* must match name in driver_entry */
|
||||
{
|
||||
return &expat_driver_entry;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
include ../Makefile.inc
|
||||
|
||||
INCLUDES = -I/usr/lib/erlang/usr/include \
|
||||
INCLUDES = -I$(ERLANG_DIR)/usr/include \
|
||||
-I$(EI_DIR)/include \
|
||||
-I/usr/local/include
|
||||
|
||||
|
52
src/mod_irc/Makefile.win32
Normal file
52
src/mod_irc/Makefile.win32
Normal file
@ -0,0 +1,52 @@
|
||||
|
||||
include ..\Makefile.inc
|
||||
|
||||
GNUWIN_DIR="c:\progra~1\gnuwin32"
|
||||
|
||||
OUTDIR = ..
|
||||
EFLAGS = -I .. -pz ..
|
||||
|
||||
OBJS = \
|
||||
$(OUTDIR)\iconv.beam \
|
||||
$(OUTDIR)\mod_irc.beam \
|
||||
$(OUTDIR)\mod_irc_connection.beam
|
||||
|
||||
ALL : $(OUTDIR)\iconv_erl.dll $(OBJS)
|
||||
|
||||
CLEAN :
|
||||
-@erase $(OUTDIR)\iconv_erl.dll
|
||||
-@erase $(OUTDIR)\iconv_erl.exp
|
||||
-@erase $(OUTDIR)\iconv_erl.lib
|
||||
-@erase iconv_erl.obj
|
||||
-@erase iconv_erl.pch
|
||||
-@erase vc60.idb
|
||||
-@erase *.beam
|
||||
|
||||
$(OUTDIR)\iconv.beam : iconv.erl
|
||||
erlc -W $(EFLAGS) -o $(OUTDIR) iconv.erl
|
||||
|
||||
$(OUTDIR)\mod_irc.beam : mod_irc.erl
|
||||
erlc -W $(EFLAGS) -o $(OUTDIR) mod_irc.erl
|
||||
|
||||
$(OUTDIR)\mod_irc_connection.beam : mod_irc_connection.erl
|
||||
erlc -W $(EFLAGS) -o $(OUTDIR) mod_irc_connection.erl
|
||||
|
||||
CPP=cl.exe
|
||||
CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "$(ERLANG_DIR)\usr\include" /I "$(EI_DIR)\include" /I "$(GNUWIN_DIR)\include" /D "WIN32" /D "NDEBUG" /D "_USRDLL" /D "_MBCS" /Fpiconv_erl.pch /YX /FD /c
|
||||
|
||||
.c.obj::
|
||||
$(CPP) @<<
|
||||
$(CPP_PROJ) $<
|
||||
<<
|
||||
|
||||
LINK32=link.exe
|
||||
LINK32_FLAGS=kernel32.lib "$(ERLANG_DIR)\usr\lib\erl_dll.lib" "$(EI_DIR)\lib\ei.lib" "$(EI_DIR)\lib\erl_interface.lib" "$(GNUWIN_DIR)\lib\libiconv.lib" /nologo /subsystem:console /dll /pdb:none /machine:I386 /out:$(OUTDIR)\iconv_erl.dll
|
||||
LINK32_OBJS=iconv_erl.obj
|
||||
|
||||
$(OUTDIR)\iconv_erl.dll : $(LINK32_OBJS)
|
||||
$(LINK32) @<<
|
||||
$(LINK32_FLAGS) $(LINK32_OBJS)
|
||||
<<
|
||||
|
||||
iconv_erl.obj : iconv_erl.c
|
||||
|
@ -104,6 +104,9 @@ ErlDrvEntry iconv_driver_entry = {
|
||||
NULL /* F_PTR outputv, reserved */
|
||||
};
|
||||
|
||||
#ifdef WIN32
|
||||
__declspec(dllexport)
|
||||
#endif
|
||||
DRIVER_INIT(iconv_erl) /* must match name in driver_entry */
|
||||
{
|
||||
return &iconv_driver_entry;
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
include ../Makefile.inc
|
||||
|
||||
INCLUDES = -I/usr/lib/erlang/usr/include \
|
||||
INCLUDES = -I$(ERLANG_DIR)/usr/include \
|
||||
-I$(EI_DIR)/include \
|
||||
-I/usr/local/include
|
||||
|
||||
|
20
src/mod_muc/Makefile.win32
Normal file
20
src/mod_muc/Makefile.win32
Normal file
@ -0,0 +1,20 @@
|
||||
|
||||
include ..\Makefile.inc
|
||||
|
||||
OUTDIR = ..
|
||||
EFLAGS = -I .. -pz ..
|
||||
|
||||
OBJS = \
|
||||
$(OUTDIR)\mod_muc.beam \
|
||||
$(OUTDIR)\mod_muc_room.beam
|
||||
|
||||
ALL : $(OBJS)
|
||||
|
||||
CLEAN :
|
||||
-@erase *.beam
|
||||
|
||||
$(OUTDIR)\mod_muc.beam : mod_muc.erl
|
||||
erlc -W $(EFLAGS) -o $(OUTDIR) mod_muc.erl
|
||||
|
||||
$(OUTDIR)\mod_muc_room.beam : mod_muc_room.erl
|
||||
erlc -W $(EFLAGS) -o $(OUTDIR) mod_muc_room.erl
|
@ -2,7 +2,7 @@
|
||||
|
||||
include ../Makefile.inc
|
||||
|
||||
INCLUDES = -I/usr/lib/erlang/usr/include \
|
||||
INCLUDES = -I$(ERLANG_DIR)/usr/include \
|
||||
-I$(EI_DIR)/include \
|
||||
-I/usr/local/include
|
||||
|
||||
|
16
src/mod_pubsub/Makefile.win32
Normal file
16
src/mod_pubsub/Makefile.win32
Normal file
@ -0,0 +1,16 @@
|
||||
|
||||
include ..\Makefile.inc
|
||||
|
||||
OUTDIR = ..
|
||||
EFLAGS = -I .. -pz ..
|
||||
|
||||
OBJS = \
|
||||
$(OUTDIR)\mod_pubsub.beam
|
||||
|
||||
ALL : $(OBJS)
|
||||
|
||||
CLEAN :
|
||||
-@erase *.beam
|
||||
|
||||
$(OUTDIR)\mod_pubsub.beam : mod_pubsub.erl
|
||||
erlc -W $(EFLAGS) -o $(OUTDIR) mod_pubsub.erl
|
Loading…
Reference in New Issue
Block a user