1
0
Fork 0
mirror of https://github.com/processone/ejabberd synced 2025-10-05 19:42:11 +02:00

Document GS in the Guide, undocument the mod_*_odbc

This commit is contained in:
Badlop 2010-07-22 18:55:50 +02:00
parent 9e2d614b41
commit b1545d1d7d

View file

@ -73,23 +73,18 @@
\newcommand{\modhttpbind}{\module{mod\_http\_bind}} \newcommand{\modhttpbind}{\module{mod\_http\_bind}}
\newcommand{\modhttpfileserver}{\module{mod\_http\_fileserver}} \newcommand{\modhttpfileserver}{\module{mod\_http\_fileserver}}
\newcommand{\modlast}{\module{mod\_last}} \newcommand{\modlast}{\module{mod\_last}}
\newcommand{\modlastodbc}{\module{mod\_last\_odbc}}
\newcommand{\modmuc}{\module{mod\_muc}} \newcommand{\modmuc}{\module{mod\_muc}}
\newcommand{\modmuclog}{\module{mod\_muc\_log}} \newcommand{\modmuclog}{\module{mod\_muc\_log}}
\newcommand{\modmulticast}{\module{mod\_multicast}} \newcommand{\modmulticast}{\module{mod\_multicast}}
\newcommand{\modoffline}{\module{mod\_offline}} \newcommand{\modoffline}{\module{mod\_offline}}
\newcommand{\modofflineodbc}{\module{mod\_offline\_odbc}}
\newcommand{\modping}{\module{mod\_ping}} \newcommand{\modping}{\module{mod\_ping}}
\newcommand{\modprivacy}{\module{mod\_privacy}} \newcommand{\modprivacy}{\module{mod\_privacy}}
\newcommand{\modprivacyodbc}{\module{mod\_privacy\_odbc}}
\newcommand{\modprivate}{\module{mod\_private}} \newcommand{\modprivate}{\module{mod\_private}}
\newcommand{\modprivateodbc}{\module{mod\_private\_odbc}}
\newcommand{\modproxy}{\module{mod\_proxy65}} \newcommand{\modproxy}{\module{mod\_proxy65}}
\newcommand{\modpubsub}{\module{mod\_pubsub}} \newcommand{\modpubsub}{\module{mod\_pubsub}}
\newcommand{\modpubsubodbc}{\module{mod\_pubsub\_odbc}} \newcommand{\modpubsubodbc}{\module{mod\_pubsub\_odbc}}
\newcommand{\modregister}{\module{mod\_register}} \newcommand{\modregister}{\module{mod\_register}}
\newcommand{\modroster}{\module{mod\_roster}} \newcommand{\modroster}{\module{mod\_roster}}
\newcommand{\modrosterodbc}{\module{mod\_roster\_odbc}}
\newcommand{\modservicelog}{\module{mod\_service\_log}} \newcommand{\modservicelog}{\module{mod\_service\_log}}
\newcommand{\modsharedroster}{\module{mod\_shared\_roster}} \newcommand{\modsharedroster}{\module{mod\_shared\_roster}}
\newcommand{\modsic}{\module{mod\_sic}} \newcommand{\modsic}{\module{mod\_sic}}
@ -97,7 +92,6 @@
\newcommand{\modtime}{\module{mod\_time}} \newcommand{\modtime}{\module{mod\_time}}
\newcommand{\modvcard}{\module{mod\_vcard}} \newcommand{\modvcard}{\module{mod\_vcard}}
\newcommand{\modvcardldap}{\module{mod\_vcard\_ldap}} \newcommand{\modvcardldap}{\module{mod\_vcard\_ldap}}
\newcommand{\modvcardodbc}{\module{mod\_vcard\_odbc}}
\newcommand{\modvcardxupdate}{\module{mod\_vcard\_xupdate}} \newcommand{\modvcardxupdate}{\module{mod\_vcard\_xupdate}}
\newcommand{\modversion}{\module{mod\_version}} \newcommand{\modversion}{\module{mod\_version}}
@ -119,6 +113,12 @@ the processing discipline for #1 IQ queries (see section~\ref{modiqdiscoption}).
hostname of the virtual host with the prefix `\jid{#1.}'. The keyword "@HOST@" hostname of the virtual host with the prefix `\jid{#1.}'. The keyword "@HOST@"
is replaced at start time with the real virtual host name. is replaced at start time with the real virtual host name.
} }
\newcommand{\backend}[1]{\titem{\{backend, mnesia|odbc\}} \ind{options!backend}
Specify the backend used to store the tables: #1.
The default value is \term{mnesia}.
If configured to \term{odbc}, then you must also configure in ejabberd
the database connection (see the subsections of \ref{database}).
}
%% Title page %% Title page
\include{version} \include{version}
@ -646,9 +646,10 @@ Examples:
domain \jid{example.com} is using the \ind{LDAP}LDAP server running on the domain \jid{example.com} is using the \ind{LDAP}LDAP server running on the
domain \jid{localhost} to perform authentication: domain \jid{localhost} to perform authentication:
\begin{verbatim} \begin{verbatim}
{host_config, "example.net", [{auth_method, internal}]}. {host_config, "example.net", [{auth_method, storage},
{auth_storage, mnesia}]}.
{host_config, "example.com", [{auth_method, ldap}, {host_config, "example.com", [{auth_method, ldap],
{ldap_servers, ["localhost"]}, {ldap_servers, ["localhost"]},
{ldap_uids, [{"uid"}]}, {ldap_uids, [{"uid"}]},
{ldap_rootdn, "dc=localdomain"}, {ldap_rootdn, "dc=localdomain"},
@ -659,7 +660,8 @@ Examples:
while domain \jid{example.com} is using the LDAP servers running on the domains while domain \jid{example.com} is using the LDAP servers running on the domains
\jid{localhost} and \jid{otherhost}: \jid{localhost} and \jid{otherhost}:
\begin{verbatim} \begin{verbatim}
{host_config, "example.net", [{auth_method, odbc}, {host_config, "example.net", [{auth_method, storage},
{auth_storage, odbc},
{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}]}. {odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}]}.
{host_config, "example.com", [{auth_method, ldap}, {host_config, "example.com", [{auth_method, ldap},
@ -1163,39 +1165,72 @@ you have to make the transports log and do \ind{XDB}XDB by themselves:
\ind{authentication}\ind{options!auth\_method} \ind{authentication}\ind{options!auth\_method}
The option \option{auth\_method} defines the authentication methods that are used The option \option{auth\_method} defines the authentication methods that are used
for user authentication. The syntax is: for user authentication.
\esyntax{\{auth\_method, [Method, ...]\}.} Usually only one method is defined, with this syntax:
\esyntax{\{auth\_method, Method\}.}
This full syntax can be used to specify one or more methods:
\esyntax{\{auth\_method, [Method1, Method2, ...]\}.}
The following authentication methods are supported by \ejabberd{}: The following authentication methods are supported by \ejabberd{}:
\begin{itemize} \begin{itemize}
\item internal (default) --- See section~\ref{internalauth}. \item database storage in internal Mnesia or ODBC --- See section~\ref{authstorage}.
\item external --- See section~\ref{extauth}. \item external --- See section~\ref{extauth}.
\item ldap --- See section~\ref{ldap}. \item ldap --- See section~\ref{ldap}.
\item odbc --- See section~\ref{mysql}, \ref{pgsql},
\ref{mssql} and \ref{odbc}.
\item anonymous --- See section~\ref{saslanonymous}. \item anonymous --- See section~\ref{saslanonymous}.
\item pam --- See section~\ref{pam}. \item pam --- See section~\ref{pam}.
\end{itemize} \end{itemize}
Account creation is only supported by internal, external and odbc methods. Account creation is only supported by the methods:
internal Mnesia storage, ODBC storage, and external.
\makesubsubsection{internalauth}{Internal} \makesubsubsection{authstorage}{Database Storage}
\ind{internal authentication}\ind{Mnesia} \ind{storage authentication}\ind{Mnesia}
\ejabberd{} uses its internal Mnesia database as the default authentication method. You can configure \ejabberd{} to use the database storage authentication method,
The value \term{internal} will enable the internal authentication method. and store either in the internal Mnesia database or in an ODBC database.
The specific storage is configured with the option:
\begin{verbatim}
{auth_storage, mnesia|odbc}
\end{verbatim}
When the storage is configured for ODBC, the ODBC server is
configured with the \term{odbc\_server} option, see
\ref{mysql} for MySQL, \ref{pgsql} for PostgreSQL, \ref{mssql} for MSSQL, and \ref{odbc} for generic ODBC.
Examples: Examples:
\begin{itemize} \begin{itemize}
\item To use internal authentication on \jid{example.org} and LDAP \item To use internal Mnesia storage on all virtual hosts:
authentication on \jid{example.net}:
\begin{verbatim} \begin{verbatim}
{host_config, "example.org", [{auth_method, [internal]}]}. {auth_method, storage}.
{host_config, "example.net", [{auth_method, [ldap]}]}. {auth_storage, mnesia}.
\end{verbatim} \end{verbatim}
\item To use internal authentication on all virtual hosts: \item To use ODBC storage on all virtual hosts:
\begin{verbatim} \begin{verbatim}
{auth_method, internal}. {auth_method, storage}.
{auth_storage, odbc}.
\end{verbatim}
\item To use Mnesia storage on \jid{example.org},
ODBC storage in a MySQL database on \jid{example.com},
ODBC storage in a PostgreSQL database on \jid{example2.com},
and LDAP on \jid{example.net}:
\begin{verbatim}
{host_config, "example.org", [
{auth_method, storage},
{auth_storage, mnesia}
]}.
{host_config, "example.com", [
{auth_method, storage},
{auth_storage, odbc},
{odbc_server, {mysql, "localhost", "test", "root", "password"}}
]}.
{host_config, "example2.com", [
{auth_method, storage},
{auth_storage, odbc},
{odbc_server, "DSN=database;UID=ejabberd;PWD=password"}
]}.
{host_config, "example.net", [
{auth_method, ldap}
]}.
\end{verbatim} \end{verbatim}
\end{itemize} \end{itemize}
@ -1225,12 +1260,12 @@ These are the specific options:
the authentication information since the user last disconnected, the authentication information since the user last disconnected,
to verify again the user authentication without querying again the extauth script. to verify again the user authentication without querying again the extauth script.
Note: caching should not be enabled in a host if internal auth is also enabled. Note: caching should not be enabled in a host if internal auth is also enabled.
If caching is enabled, \term{mod\_last} or \term{mod\_last\_odbc} must be enabled also in that vhost. If caching is enabled, \term{mod\_last} must be enabled also in that vhost.
\end{description} \end{description}
This example sets external authentication, the extauth script, and enables caching for 10 minutes: This example sets external authentication, the extauth script, and enables caching for 10 minutes:
\begin{verbatim} \begin{verbatim}
{auth_method, [external]}. {auth_method, external}.
{extauth_program, "/etc/ejabberd/JabberAuth.class.php"}. {extauth_program, "/etc/ejabberd/JabberAuth.class.php"}.
{extauth_cache, 600}. {extauth_cache, 600}.
\end{verbatim} \end{verbatim}
@ -1268,33 +1303,33 @@ Examples:
\begin{itemize} \begin{itemize}
\item To enable anonymous login on all virtual hosts: \item To enable anonymous login on all virtual hosts:
\begin{verbatim} \begin{verbatim}
{auth_method, [anonymous]}. {auth_method, anonymous}.
{anonymous_protocol, login_anon}. {anonymous_protocol, login_anon}.
\end{verbatim} \end{verbatim}
\item Similar as previous example, but limited to \jid{public.example.org}: \item Similar as previous example, but limited to \jid{public.example.org}:
\begin{verbatim} \begin{verbatim}
{host_config, "public.example.org", [{auth_method, [anonymous]}, {host_config, "public.example.org", [{auth_method, anonymous},
{anonymous_protocol, login_anon}]}. {anonymous_protocol, login_anon}]}.
\end{verbatim} \end{verbatim}
\item To enable anonymous login and internal authentication on a virtual host: \item To enable anonymous login and internal authentication on a virtual host:
\begin{verbatim} \begin{verbatim}
{host_config, "public.example.org", [{auth_method, [internal,anonymous]}, {host_config, "public.example.org", [{auth_method, [internal, anonymous]},
{anonymous_protocol, login_anon}]}. {anonymous_protocol, login_anon}]}.
\end{verbatim} \end{verbatim}
\item To enable SASL Anonymous on a virtual host: \item To enable SASL Anonymous on a virtual host:
\begin{verbatim} \begin{verbatim}
{host_config, "public.example.org", [{auth_method, [anonymous]}, {host_config, "public.example.org", [{auth_method, anonymous},
{anonymous_protocol, sasl_anon}]}. {anonymous_protocol, sasl_anon}]}.
\end{verbatim} \end{verbatim}
\item To enable SASL Anonymous and anonymous login on a virtual host: \item To enable SASL Anonymous and anonymous login on a virtual host:
\begin{verbatim} \begin{verbatim}
{host_config, "public.example.org", [{auth_method, [anonymous]}, {host_config, "public.example.org", [{auth_method, anonymous},
{anonymous_protocol, both}]}. {anonymous_protocol, both}]}.
\end{verbatim} \end{verbatim}
\item To enable SASL Anonymous, anonymous login, and internal authentication on \item To enable SASL Anonymous, anonymous login, and internal authentication on
a virtual host: a virtual host:
\begin{verbatim} \begin{verbatim}
{host_config, "public.example.org", [{auth_method, [internal,anonymous]}, {host_config, "public.example.org", [{auth_method, [internal, anonymous]},
{anonymous_protocol, both}]}. {anonymous_protocol, both}]}.
\end{verbatim} \end{verbatim}
\end{itemize} \end{itemize}
@ -1323,7 +1358,7 @@ Default is \term{username}.
Example: Example:
\begin{verbatim} \begin{verbatim}
{auth_method, [pam]}. {auth_method, pam}.
{pam_service, "ejabberd"}. {pam_service, "ejabberd"}.
\end{verbatim} \end{verbatim}
@ -1835,7 +1870,8 @@ For example:
\begin{verbatim} \begin{verbatim}
{host_config, "public.example.org", [ {host_config, "public.example.org", [
{odbc_server, {pgsql, "localhost", "database-public-example-org", "ejabberd", "password"}}, {odbc_server, {pgsql, "localhost", "database-public-example-org", "ejabberd", "password"}},
{auth_method, [odbc]} {auth_method, storage},
{auth_storage, odbc}
]}. ]}.
\end{verbatim} \end{verbatim}
@ -1920,25 +1956,17 @@ You can modify this interval with this option:
\makesubsubsection{mysqlauth}{Authentication} \makesubsubsection{mysqlauth}{Authentication}
\ind{MySQL!authentication} \ind{MySQL!authentication}
The option value name may be misleading, as the \term{auth\_method} name is used See section~\ref{authstorage}.
for access to a relational database through ODBC, as well as through the native
MySQL interface. Anyway, the first configuration step is to define the odbc
\term{auth\_method}. For example:
\begin{verbatim}
{auth_method, [odbc]}.
\end{verbatim}
\makesubsubsection{mysqlstorage}{Storage} \makesubsubsection{mysqlstorage}{Storage}
\ind{MySQL!storage} \ind{MySQL!storage}
MySQL also can be used to store information into from several \ejabberd{} MySQL also can be used to store information into from several \ejabberd{}
modules. See section~\ref{modoverview} to see which modules have a version modules.
with the `\_odbc'. This suffix indicates that the module can be used with See section~\ref{modoverview} to see which modules support an ODBC storage backend.
relational databases like MySQL. To enable storage to your database, just make To configure the module to use ODBC as storage backend, add the option
sure that your database is running well (see previous sections), and replace the \term{\{backend, odbc\}} to the module.
suffix-less or ldap module variant with the odbc module variant. Keep in mind
that you cannot have several variants of the same module loaded!
\makesubsection{mssql}{Microsoft SQL Server} \makesubsection{mssql}{Microsoft SQL Server}
\ind{Microsoft SQL Server}\ind{Microsoft SQL Server!schema} \ind{Microsoft SQL Server}\ind{Microsoft SQL Server!schema}
@ -1972,9 +2000,7 @@ enabled. This can be done, by using next commands:
\makesubsubsection{configuremssql}{Database Connection} \makesubsubsection{configuremssql}{Database Connection}
\ind{Microsoft SQL Server!Database Connection} \ind{Microsoft SQL Server!Database Connection}
The configuration of Database Connection for a Microsoft SQL Server See section~\ref{authstorage}.
is the same as the configuration for
ODBC compatible servers (see section~\ref{configureodbc}).
\makesubsubsection{mssqlauth}{Authentication} \makesubsubsection{mssqlauth}{Authentication}
@ -1990,13 +2016,10 @@ ODBC compatible servers (see section~\ref{odbcauth}).
\ind{Microsoft SQL Server!storage} \ind{Microsoft SQL Server!storage}
Microsoft SQL Server also can be used to store information into from several Microsoft SQL Server also can be used to store information into from several
\ejabberd{} modules. See section~\ref{modoverview} to see which modules have \ejabberd{} modules.
a version with the `\_odbc'. This suffix indicates that the module can be used See section~\ref{modoverview} to see which modules support an ODBC storage backend.
with relational databases like Microsoft SQL Server. To enable storage to your To configure the module to use ODBC as storage backend, add the option
database, just make sure that your database is running well (see previous \term{\{backend, odbc\}} to the module.
sections), and replace the suffix-less or ldap module variant with the odbc
module variant. Keep in mind that you cannot have several variants of the same
module loaded!
\makesubsection{pgsql}{PostgreSQL} \makesubsection{pgsql}{PostgreSQL}
\ind{PostgreSQL}\ind{PostgreSQL!schema} \ind{PostgreSQL}\ind{PostgreSQL!schema}
@ -2075,25 +2098,17 @@ Specify in seconds: for example 28800 means 8 hours.
\makesubsubsection{pgsqlauth}{Authentication} \makesubsubsection{pgsqlauth}{Authentication}
\ind{PostgreSQL!authentication} \ind{PostgreSQL!authentication}
The option value name may be misleading, as the \term{auth\_method} name is used See section~\ref{authstorage}.
for access to a relational database through ODBC, as well as through the native
PostgreSQL interface. Anyway, the first configuration step is to define the odbc
\term{auth\_method}. For example:
\begin{verbatim}
{auth_method, [odbc]}.
\end{verbatim}
\makesubsubsection{pgsqlstorage}{Storage} \makesubsubsection{pgsqlstorage}{Storage}
\ind{PostgreSQL!storage} \ind{PostgreSQL!storage}
PostgreSQL also can be used to store information into from several \ejabberd{} PostgreSQL also can be used to store information into from several \ejabberd{}
modules. See section~\ref{modoverview} to see which modules have a version modules.
with the `\_odbc'. This suffix indicates that the module can be used with See section~\ref{modoverview} to see which modules support an ODBC storage backend.
relational databases like PostgreSQL. To enable storage to your database, just To configure the module to use ODBC as storage backend, add the option
make sure that your database is running well (see previous sections), and \term{\{backend, odbc\}} to the module.
replace the suffix-less or ldap module variant with the odbc module variant.
Keep in mind that you cannot have several variants of the same module loaded!
\makesubsection{odbc}{ODBC Compatible} \makesubsection{odbc}{ODBC Compatible}
\ind{databases!ODBC} \ind{databases!ODBC}
@ -2154,24 +2169,17 @@ Specify in seconds: for example 28800 means 8 hours.
\makesubsubsection{odbcauth}{Authentication} \makesubsubsection{odbcauth}{Authentication}
\ind{ODBC!authentication} \ind{ODBC!authentication}
The first configuration step is to define the odbc \term{auth\_method}. For See section~\ref{authstorage}.
example:
\begin{verbatim}
{auth_method, [odbc]}.
\end{verbatim}
\makesubsubsection{odbcstorage}{Storage} \makesubsubsection{odbcstorage}{Storage}
\ind{ODBC!storage} \ind{ODBC!storage}
An ODBC compatible database also can be used to store information into from An ODBC compatible database also can be used to store information into from
several \ejabberd{} modules. See section~\ref{modoverview} to see which several \ejabberd{} modules.
modules have a version with the `\_odbc'. This suffix indicates that the module See section~\ref{modoverview} to see which modules support an ODBC storage backend.
can be used with ODBC compatible relational databases. To enable storage to your To configure the module to use ODBC as storage backend, add the option
database, just make sure that your database is running well (see previous \term{\{backend, odbc\}} to the module.
sections), and replace the suffix-less or ldap module variant with the odbc
module variant. Keep in mind that you cannot have several variants of the same
module loaded!
\makesubsection{ldap}{LDAP} \makesubsection{ldap}{LDAP}
\ind{databases!LDAP} \ind{databases!LDAP}
@ -2494,33 +2502,26 @@ The following table lists all modules included in \ejabberd{}.
\hline \ahrefloc{modhttpbind}{\modhttpbind{}} & XMPP over Bosh service (HTTP Binding) & \\ \hline \ahrefloc{modhttpbind}{\modhttpbind{}} & XMPP over Bosh service (HTTP Binding) & \\
\hline \ahrefloc{modhttpfileserver}{\modhttpfileserver{}} & Small HTTP file server & \\ \hline \ahrefloc{modhttpfileserver}{\modhttpfileserver{}} & Small HTTP file server & \\
\hline \ahrefloc{modlast}{\modlast{}} & Last Activity (\xepref{0012}) & \\ \hline \ahrefloc{modlast}{\modlast{}} & Last Activity (\xepref{0012}) & \\
\hline \ahrefloc{modlast}{\modlastodbc{}} & Last Activity (\xepref{0012}) & supported DB (*) \\
\hline \ahrefloc{modmuc}{\modmuc{}} & Multi-User Chat (\xepref{0045}) & \\ \hline \ahrefloc{modmuc}{\modmuc{}} & Multi-User Chat (\xepref{0045}) & \\
\hline \ahrefloc{modmuclog}{\modmuclog{}} & Multi-User Chat room logging & \modmuc{} \\ \hline \ahrefloc{modmuclog}{\modmuclog{}} & Multi-User Chat room logging & \modmuc{} \\
\hline \ahrefloc{modmulticast}{\modmulticast{}} & Multicast Service (\xepref{0033}) & \\ \hline \ahrefloc{modmulticast}{\modmulticast{}} & Multicast Service (\xepref{0033}) & \\
\hline \ahrefloc{modoffline}{\modoffline{}} & Offline message storage (\xepref{0160}) & \\ \hline \ahrefloc{modoffline}{\modoffline{}} & Offline message storage (\xepref{0160}) & \\
\hline \ahrefloc{modoffline}{\modofflineodbc{}} & Offline message storage (\xepref{0160}) & supported DB (*) \\
\hline \ahrefloc{modping}{\modping{}} & XMPP Ping and periodic keepalives (\xepref{0199}) & \\ \hline \ahrefloc{modping}{\modping{}} & XMPP Ping and periodic keepalives (\xepref{0199}) & \\
\hline \ahrefloc{modprivacy}{\modprivacy{}} & Blocking Communication (XMPP IM) & \\ \hline \ahrefloc{modprivacy}{\modprivacy{}} & Blocking Communication (XMPP IM) & \\
\hline \ahrefloc{modprivacy}{\modprivacyodbc{}} & Blocking Communication (XMPP IM) & supported DB (*) \\
\hline \ahrefloc{modprivate}{\modprivate{}} & Private XML Storage (\xepref{0049}) & \\ \hline \ahrefloc{modprivate}{\modprivate{}} & Private XML Storage (\xepref{0049}) & \\
\hline \ahrefloc{modprivate}{\modprivateodbc{}} & Private XML Storage (\xepref{0049}) & supported DB (*) \\
\hline \ahrefloc{modproxy}{\modproxy{}} & SOCKS5 Bytestreams (\xepref{0065}) & \\ \hline \ahrefloc{modproxy}{\modproxy{}} & SOCKS5 Bytestreams (\xepref{0065}) & \\
\hline \ahrefloc{modpubsub}{\modpubsub{}} & Pub-Sub (\xepref{0060}), PEP (\xepref{0163}) & \modcaps{} \\ \hline \ahrefloc{modpubsub}{\modpubsub{}} & Pub-Sub (\xepref{0060}), PEP (\xepref{0163}) & \modcaps{} \\
\hline \ahrefloc{modpubsub}{\modpubsubodbc{}} & Pub-Sub (\xepref{0060}), PEP (\xepref{0163}) & supported DB (*) and \modcaps{} \\ \hline \ahrefloc{modpubsub}{\modpubsubodbc{}} & Pub-Sub (\xepref{0060}), PEP (\xepref{0163}) & supported DB (*) and \modcaps{} \\
\hline \ahrefloc{modregister}{\modregister{}} & In-Band Registration (\xepref{0077}) & \\ \hline \ahrefloc{modregister}{\modregister{}} & In-Band Registration (\xepref{0077}) & \\
\hline \ahrefloc{modroster}{\modroster{}} & Roster management (XMPP IM) & \\ \hline \ahrefloc{modroster}{\modroster{}} & Roster management (XMPP IM) & \\
\hline \ahrefloc{modroster}{\modrosterodbc{}} & Roster management (XMPP IM) & supported DB (*) \\
\hline \ahrefloc{modservicelog}{\modservicelog{}} & Copy user messages to logger service & \\ \hline \ahrefloc{modservicelog}{\modservicelog{}} & Copy user messages to logger service & \\
\hline \ahrefloc{modsharedroster}{\modsharedroster{}} & Shared roster management & \modroster{} or \\ \hline \ahrefloc{modsharedroster}{\modsharedroster{}} & Shared roster management & \modroster{} \\
& & \modrosterodbc\\
\hline \ahrefloc{modsic}{\modsic{}} & Server IP Check (\xepref{0279}) & \\ \hline \ahrefloc{modsic}{\modsic{}} & Server IP Check (\xepref{0279}) & \\
\hline \ahrefloc{modstats}{\modstats{}} & Statistics Gathering (\xepref{0039}) & \\ \hline \ahrefloc{modstats}{\modstats{}} & Statistics Gathering (\xepref{0039}) & \\
\hline \ahrefloc{modtime}{\modtime{}} & Entity Time (\xepref{0202}) & \\ \hline \ahrefloc{modtime}{\modtime{}} & Entity Time (\xepref{0202}) & \\
\hline \ahrefloc{modvcard}{\modvcard{}} & vcard-temp (\xepref{0054}) & \\ \hline \ahrefloc{modvcard}{\modvcard{}} & vcard-temp (\xepref{0054}) & \\
\hline \ahrefloc{modvcardldap}{\modvcardldap{}} & vcard-temp (\xepref{0054}) & LDAP server \\ \hline \ahrefloc{modvcardldap}{\modvcardldap{}} & vcard-temp (\xepref{0054}) & LDAP server \\
\hline \ahrefloc{modvcard}{\modvcardodbc{}} & vcard-temp (\xepref{0054}) & supported DB (*) \\ \hline \ahrefloc{modvcardxupdate}{\modvcardxupdate{}} & vCard-Based Avatars (\xepref{0153}) & \modvcard{} \\
\hline \ahrefloc{modvcardxupdate}{\modvcardxupdate{}} & vCard-Based Avatars (\xepref{0153}) & \modvcard{} or \modvcardodbc{} \\
\hline \ahrefloc{modversion}{\modversion{}} & Software Version (\xepref{0092}) & \\ \hline \ahrefloc{modversion}{\modversion{}} & Software Version (\xepref{0092}) & \\
\hline \hline
\end{tabular} \end{tabular}
@ -2533,27 +2534,22 @@ The following table lists all modules included in \ejabberd{}.
You can see which database backend each module needs by looking at the suffix: You can see which database backend each module needs by looking at the suffix:
\begin{itemize} \begin{itemize}
\item No suffix, this means that the modules uses Erlang's built-in database \item No suffix, this means that the modules uses Erlang's built-in database
Mnesia as backend. Mnesia as backend, or in some cases it can be configured to use ODBC.
\item `\_odbc', this means that the module needs a supported database \item `\_odbc', this means that the module needs a supported database
(see~\ref{database}) as backend. (see~\ref{database}) as backend.
\item `\_ldap', this means that the module needs an LDAP server as backend. \item `\_ldap', this means that the module needs an LDAP server as backend.
\end{itemize} \end{itemize}
If you want to, Those modules accept the option \term{\{backend, mnesia|odbc\}},
it is possible to use a relational database to store pieces of and can store the tables in the configured backend:
information. You can do this by changing the module name to a name with an
\term{\_odbc} suffix in \ejabberd{} config file. You can use a relational
database for the following data:
\begin{itemize} \begin{itemize}
\item Last connection date and time: Use \term{mod\_last\_odbc} instead of \item \ahrefloc{modlast}{\modlast{}}: Last connection date and time
\term{mod\_last}. \item \ahrefloc{modoffline}{\modoffline{}}: Offline messages
\item Offline messages: Use \term{mod\_offline\_odbc} instead of \item \ahrefloc{modprivacy}{\modprivacy{}}: User rules for blocking communications
\term{mod\_offline}. \item \ahrefloc{modprivate}{\modprivate{}}: Private XML storage
\item Rosters: Use \term{mod\_roster\_odbc} instead of \term{mod\_roster}. \item \ahrefloc{modroster}{\modroster{}}: Rosters
\item Users' VCARD: Use \term{mod\_vcard\_odbc} instead of \term{mod\_vcard}. \item \ahrefloc{modvcard}{\modvcard{}}: Users' vCard
\item Private XML storage: Use \term{mod\_private\_odbc} instead of \term{mod\_private}.
\item User rules for blocking communications: Use \term{mod\_privacy\_odbc} instead of \term{mod\_privacy}.
\end{itemize} \end{itemize}
You can find more You can find more
@ -2992,6 +2988,7 @@ connected user was last active on the server, or to query the uptime of the
Options: Options:
\begin{description} \begin{description}
\backend{\term{last\_activity}}
\iqdiscitem{Last activity (\ns{jabber:iq:last})} \iqdiscitem{Last activity (\ns{jabber:iq:last})}
\end{description} \end{description}
@ -3448,6 +3445,7 @@ online again. Thus it is very similar to how email works. Note that
and a resource-constraint error is returned to the sender. and a resource-constraint error is returned to the sender.
The default value is \term{max\_user\_offline\_messages}. The default value is \term{max\_user\_offline\_messages}.
Then you can define an access rule with a syntax similar to Then you can define an access rule with a syntax similar to
\backend{\term{offline\_msg}}
\term{max\_user\_sessions} (see \ref{configmaxsessions}). \term{max\_user\_sessions} (see \ref{configmaxsessions}).
\end{description} \end{description}
@ -3537,6 +3535,7 @@ their \XMPP{} client, they will be able to:
Options: Options:
\begin{description} \begin{description}
\backend{\term{privacy\_default\_list}, \term{privacy\_list} and \term{privacy\_list\_data}}
\iqdiscitem{Blocking Communication (\ns{jabber:iq:privacy})} \iqdiscitem{Blocking Communication (\ns{jabber:iq:privacy})}
\end{description} \end{description}
@ -3553,6 +3552,7 @@ of client-specific preferences; another is Bookmark Storage (\xepref{0048}).
Options: Options:
\begin{description} \begin{description}
\backend{\term{private\_storage}}
\iqdiscitem{Private XML Storage (\ns{jabber:iq:private})} \iqdiscitem{Private XML Storage (\ns{jabber:iq:private})}
\end{description} \end{description}
@ -3812,6 +3812,7 @@ It also supports Roster Versioning (\xepref{0237}).
Options: Options:
\begin{description} \begin{description}
\backend{\term{rosteritem} and \term{rostergroup}}
\iqdiscitem{Roster Management (\ns{jabber:iq:roster})} \iqdiscitem{Roster Management (\ns{jabber:iq:roster})}
\titem{\{versioning, false|true\}} \ind{options!versioning}Enables \titem{\{versioning, false|true\}} \ind{options!versioning}Enables
Roster Versioning. Roster Versioning.
@ -4059,6 +4060,7 @@ these users. Moreover, it enables the server to send its vCard when queried.
Options: Options:
\begin{description} \begin{description}
\backend{\term{vcard}}
\hostitem{vjud} \hostitem{vjud}
\iqdiscitem{\ns{vcard-temp}} \iqdiscitem{\ns{vcard-temp}}
\titem{\{search, true|false\}}\ind{options!search}This option specifies whether the search \titem{\{search, true|false\}}\ind{options!search}This option specifies whether the search
@ -4076,7 +4078,6 @@ Options:
\titem{\{search\_all\_hosts, true|false\}}\ind{options!search\_all\_hosts}If this option is set \titem{\{search\_all\_hosts, true|false\}}\ind{options!search\_all\_hosts}If this option is set
to \term{true}, search operations will apply to all virtual hosts. Otherwise to \term{true}, search operations will apply to all virtual hosts. Otherwise
only the current host will be searched. The default value is \term{true}. only the current host will be searched. The default value is \term{true}.
This option is available in \modvcard, but not available in \modvcardodbc.
\end{description} \end{description}
Examples: Examples: