<A NAME="sec:configmodules"></A>Option <TT>modules</TT> defines list of modules that will be loaded after
<TT>ejabberd</TT> startup. Each list element is a tuple where first element is a
name of module and second is list of options to this module. See
-section <A HREF="#sec:modules">5</A> for detailed information on each module.<BR>
+section <A HREF="#sec:modules">A</A> for detailed information on each module.<BR>
<BR>
Example:
<PRE>
<H3>3.2 Online Configuration and Monitoring</H3><!--SEC END -->
<A NAME="sec:onlineconfig"></A>To use facility of online reconfiguration of <TT>ejabberd</TT> needed to have
-<TT>mod_configure</TT> loaded (see section <A HREF="#sec:modconfigure">5.4</A>). Also highly
-recommended to load <TT>mod_disco</TT> (see section <A HREF="#sec:moddisco">5.5</A>), because
+<TT>mod_configure</TT> loaded (see section <A HREF="#sec:modconfigure">A.4</A>). Also highly
+recommended to load <TT>mod_disco</TT> (see section <A HREF="#sec:moddisco">A.5</A>), because
<TT>mod_configure</TT> highly integrates with it. Also recommended to use disco- and
xdata-capable client
(<A HREF="http://www.jabber.ru/projects/tkabber/index_en.html">Tkabber</A>
<LI> List of JIDs from route table.
<LI> List of disco-nodes described in following subsections.
-</UL><!--TOC subsubsection Node <TT>config</TT>: Global Configuration-->
+</UL>
+<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
+
+ <IMG SRC="disco.png">
+
+
+ <BR>
+<BR>
+<DIV ALIGN=center>Figure 1: Tkabber Discovery window</DIV><BR>
+
+ <A NAME="fig:disco"></A>
+<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE><!--TOC subsubsection Node <TT>config</TT>: Global Configuration-->
<H4>3.2.1 Node <TT>config</TT>: Global Configuration</H4><!--SEC END -->
Under this node exists following nodes:<BR>
<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
-this <TT>ejabberd</TT> server. (See figure <A HREF="#fig:hostname">1</A>) (Currently will work
+this <TT>ejabberd</TT> server. (See figure <A HREF="#fig:hostname">2</A>) (Currently will work
correctly only after restart)
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
- [hostname editing window]
+
+ <IMG SRC="confhostname.png">
+
+
<BR>
<BR>
-<DIV ALIGN=center>Figure 1: Editing of hostname</DIV><BR>
+<DIV ALIGN=center>Figure 2: Editing of hostname</DIV><BR>
<A NAME="fig:hostname"></A>
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE><!--TOC paragraph Node <TT>config/acls</TT>-->
<H5> Node <TT>config/acls</TT></H5><!--SEC END -->
Via <TT>jabber:x:data</TT> queries to this node possible to edit ACLs list. (See
-figure <A HREF="#fig:acls">2</A>)
+figure <A HREF="#fig:acls">3</A>)
<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
- [acls editing window]
+
+ <IMG SRC="confacls.png">
+
+
<BR>
<BR>
-<DIV ALIGN=center>Figure 2: Editing of ACLs</DIV><BR>
+<DIV ALIGN=center>Figure 3: Editing of ACLs</DIV><BR>
<A NAME="fig:acls"></A>
<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE><!--TOC paragraph Node <TT>config/access</TT>-->
<!--TOC subsubsection Node <TT>online users</TT>: List of Online Users-->
<H4>3.2.2 Node <TT>online users</TT>: List of Online Users</H4><!--SEC END -->
-<!--TOC subsubsection Node <TT>all users</TT>: List of Connected User-->
+<!--TOC subsubsection Node <TT>all users</TT>: List of Registered User-->
+
+<H4>3.2.3 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>
+
+ <IMG SRC="discoallusers.png">
+
+
+ <BR>
+<BR>
+<DIV ALIGN=center>Figure 4: Discovery all users</DIV><BR>
-<H4>3.2.3 Node <TT>all users</TT>: List of Connected User</H4><!--SEC END -->
-<!--TOC subsubsection Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections-->
+ <A NAME="fig:discoallusers"></A>
+<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE><!--TOC subsubsection Node <TT>outgoing s2s</TT>: List of Outgoing S2S connections-->
<H4>3.2.4 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>3.2.5 Node <TT>running nodes</TT>: List of Running <TT>ejabberd</TT> Nodes</H4><!--SEC END -->
-<!--TOC subsubsection Node <TT>stopped nodes</TT>: List of Stopped Nodes-->
+<BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
+
+ <IMG SRC="discorunnodes.png">
+
+
+ <BR>
+<BR>
+<DIV ALIGN=center>Figure 5: Discovery running nodes</DIV><BR>
+
+ <A NAME="fig:discorunnodes"></A>
+<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE><!--TOC subsubsection Node <TT>stopped nodes</TT>: List of Stopped Nodes-->
<H4>3.2.6 Node <TT>stopped nodes</TT>: List of Stopped Nodes</H4><!--SEC END -->
TBD<BR>
that node, if it opened on this node, then it routed to process that serve this
connection, and if this connection not exists, then it opened and registered.<BR>
<BR>
+<BR>
+<BR>
<!--TOC section Built-in Modules-->
-<H2>5 Built-in Modules</H2><!--SEC END -->
+<H2>A Built-in Modules</H2><!--SEC END -->
<A NAME="sec:modules"></A><!--TOC subsection Common Options-->
-<H3>5.1 Common Options</H3><!--SEC END -->
+<H3>A.1 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>5.1.1 Option <TT>iqdisc</TT></H4><!--SEC END -->
+<H4>A.1.1 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
<TT>user@myjabber.org</TT>). This option defines processing discipline of this
]}.
</PRE><!--TOC subsubsection Option <TT>host</TT>-->
-<H4>5.1.2 Option <TT>host</TT></H4><!--SEC END -->
+<H4>A.1.2 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>
<BR>
]}.
</PRE><!--TOC subsection <TT>mod_register</TT>-->
-<H3>5.2 <TT>mod_register</TT></H3><!--SEC END -->
+<H3>A.2 <TT>mod_register</TT></H3><!--SEC END -->
<A NAME="sec:modregister"></A><!--TOC subsection <TT>mod_roster</TT>-->
-<H3>5.3 <TT>mod_roster</TT></H3><!--SEC END -->
+<H3>A.3 <TT>mod_roster</TT></H3><!--SEC END -->
<A NAME="sec:modroster"></A><!--TOC subsection <TT>mod_configure</TT>-->
-<H3>5.4 <TT>mod_configure</TT></H3><!--SEC END -->
+<H3>A.4 <TT>mod_configure</TT></H3><!--SEC END -->
<A NAME="sec:modconfigure"></A><!--TOC subsection <TT>mod_disco</TT>-->
-<H3>5.5 <TT>mod_disco</TT></H3><!--SEC END -->
+<H3>A.5 <TT>mod_disco</TT></H3><!--SEC END -->
<A NAME="sec:moddisco"></A><!--TOC subsection <TT>mod_stats</TT>-->
-<H3>5.6 <TT>mod_stats</TT></H3><!--SEC END -->
+<H3>A.6 <TT>mod_stats</TT></H3><!--SEC END -->
<A NAME="sec:modstats"></A>This module adds support of
<A HREF="http://www.jabber.org/jeps/jep-0039.html">JEP-0039</A> (Statistics Gathering).<BR>
<BR>
<!--TOC subsection <TT>mod_vcard</TT>-->
-<H3>5.7 <TT>mod_vcard</TT></H3><!--SEC END -->
+<H3>A.7 <TT>mod_vcard</TT></H3><!--SEC END -->
<A NAME="sec:modvcard"></A><!--TOC subsection <TT>mod_offline</TT>-->
-<H3>5.8 <TT>mod_offline</TT></H3><!--SEC END -->
+<H3>A.8 <TT>mod_offline</TT></H3><!--SEC END -->
<A NAME="sec:modoffline"></A><!--TOC subsection <TT>mod_echo</TT>-->
-<H3>5.9 <TT>mod_echo</TT></H3><!--SEC END -->
+<H3>A.9 <TT>mod_echo</TT></H3><!--SEC END -->
<A NAME="sec:modecho"></A><!--TOC subsection <TT>mod_private</TT>-->
-<H3>5.10 <TT>mod_private</TT></H3><!--SEC END -->
+<H3>A.10 <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
<TT>iqdisc</TT><DD> <TT>jabber:iq:private</TT> IQ queries processing discipline.
</DL><!--TOC subsection <TT>mod_time</TT>-->
-<H3>5.11 <TT>mod_time</TT></H3><!--SEC END -->
+<H3>A.11 <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>
<TT>iqdisc</TT><DD> <TT>jabber:iq:time</TT> IQ queries processing discipline.
</DL><!--TOC subsection <TT>mod_version</TT>-->
-<H3>5.12 <TT>mod_version</TT></H3><!--SEC END -->
+<H3>A.12 <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>
<DL COMPACT=compact>
<DT>
<TT>iqdisc</TT><DD> <TT>jabber:iq:version</TT> IQ queries processing discipline.
-</DL><!--HTMLFOOT-->
+</DL><!--TOC section I18n/L10n-->
+
+<H2>B 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 with figure <A HREF="#fig:disco">1</A>) showed reply
+on following query:
+<PRE>
+<iq id='5'
+ to='e.localhost'
+ type='get'>
+ <query xmlns='http://jabber.org/protocol/disco#items'
+ xml:lang='ru'/>
+</iq>
+</PRE><BLOCKQUOTE><DIV ALIGN=center><DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV>
+
+ <IMG SRC="discorus.png">
+
+
+ <BR>
+<BR>
+<DIV ALIGN=center>Figure 6: Discovery result when <TT>xml:lang='ru'</TT></DIV><BR>
+
+ <A NAME="fig:discorus"></A>
+<DIV ALIGN=center><HR WIDTH="80%" SIZE=2></DIV></DIV></BLOCKQUOTE><!--HTMLFOOT-->
<!--ENDHTML-->
<!--FOOTER-->
\usepackage{verbatim}
-\newcommand{\imgscale}{0.7}
-\newcommand{\insimg}[1]{
- \imgsrc{#1}{}
+\newcommand{\logoscale}{0.7}
+\newcommand{\imgscale}{0.58}
+\newcommand{\insimg}[1]{\insscaleimg{\imgscale}{#1}}
+
+\newcommand{\insscaleimg}[2]{
+ \imgsrc{#2}{}
\begin{latexonly}
- \scalebox{\imgscale}{\includegraphics{#1}}
+ \scalebox{#1}{\includegraphics{#2}}
\end{latexonly}
}
\maketitle{}
{\centering
- \insimg{logo.png}
+ \insscaleimg{\logoscale}{logo.png}
\par
}
\end{titlepage}
\item List of JIDs from route table.
\item List of disco-nodes described in following subsections.
\end{itemize}
-
+\begin{figure}[htbp]
+ \centering
+ \insimg{disco.png}
+ \caption{Tkabber Discovery window}
+ \label{fig:disco}
+\end{figure}
\subsubsection{Node \texttt{config}: Global Configuration}
correctly only after restart)
\begin{figure}[htbp]
\centering
- [hostname editing window]
+ \insimg{confhostname.png}
\caption{Editing of hostname}
\label{fig:hostname}
\end{figure}
figure~\ref{fig:acls})
\begin{figure}[htbp]
\centering
- [acls editing window]
+ \insimg{confacls.png}
\caption{Editing of ACLs}
\label{fig:acls}
\end{figure}
-\subsubsection{Node \texttt{all users}: List of Connected User}
+\subsubsection{Node \texttt{all users}: List of Registered User}
+
+\begin{figure}[htbp]
+ \centering
+ \insimg{discoallusers.png}
+ \caption{Discovery all users}
+ \label{fig:discoallusers}
+\end{figure}
+
\subsubsection{Node \texttt{outgoing s2s}: List of Outgoing S2S connections}
\subsubsection{Node \texttt{running nodes}: List of Running \ejabberd{} Nodes}
+\begin{figure}[htbp]
+ \centering
+ \insimg{discorunnodes.png}
+ \caption{Discovery running nodes}
+ \label{fig:discorunnodes}
+\end{figure}
+
\subsubsection{Node \texttt{stopped nodes}: List of Stopped Nodes}
connection, and if this connection not exists, then it opened and registered.
+
+\appendix{}
+
\section{Built-in Modules}
\label{sec:modules}
+\section{I18n/L10n}
+\label{sec:i18nl10n}
+
+Many modules supports \texttt{xml:lang} attribute inside IQ queries. E.\,g.\
+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'>
+ <query xmlns='http://jabber.org/protocol/disco#items'
+ xml:lang='ru'/>
+</iq>
+\end{verbatim}
+
+\begin{figure}[htbp]
+ \centering
+ \insimg{discorus.png}
+ \caption{Discovery result when \texttt{xml:lang='ru'}}
+ \label{fig:discorus}
+\end{figure}
\end{document}