25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-22 16:20:52 +01:00

Merge revisions from 1434 to revision 1444 from trunk.

SVN Revision: 1445
This commit is contained in:
Jean-Sébastien Pédron 2008-07-15 08:45:05 +00:00
parent 332fb55e3a
commit 574dbbfd08
42 changed files with 525 additions and 202 deletions

View File

@ -1,3 +1,66 @@
2008-07-15 Jean-Sébastien Pédron <js.pedron@meetic-corp.com>
Merge revisions from 1434 to revision 1444 from trunk.
* configure: Recreated with autoconf(1) after merge.
2008-07-14 Badlop <badlop@process-one.net>
* doc/guide.tex: Update what permissions does enable-user grant
* doc/guide.html: Likewise
* src/configure.ac: Don't explicitely put root privileges when a
user is not explicitely enabled
* src/configure: Likewise
* src/Makefile.in: Likewise
* src/Makefile.in: Fix docdir so it recognizes prefix. If sbin dir
does not exist, create it. Fix cookiefile permission
check. (EJAB-696)
2008-07-13 Badlop <badlop@process-one.net>
* src/configure.ac: Update installation permissions (EJAB-402)
* src/configure: Likewise
* src/Makefile.in: The mnesia, ebin and priv dirs are now
installed in different locations. Install header files and
documentation (EJAB-696)
* doc/guide.tex: Likewise
* doc/guide.html: Likewise
* include/*.hrl: Place for all ejabberd header files (EJAB-696)
* src/*/*.erl: Update references to header files
* src/*/Makefile.in: Include the include/ dir
* src/configure.ac: Allow to execute ejabberd with a normal
system user (thanks to Viq)(EJAB-402)
* src/configure: Likewise
* src/ejabberdctl.template: Likewise
* src/Makefile.in: Likewise
* doc/guide.tex: Likewise
* doc/guide.html: Likewise
2008-07-12 Badlop <badlop@process-one.net>
* src/configure.ac: Improve legibility
* src/aclocal.m4: Likewise
* src/configure: Likewise
* src/ejabberdctl.template: Remove garbage variable. Document node
option
* doc/guide.tex: Add references to sections.
* doc/guide.html: Likewise
2008-07-11 Badlop <badlop@process-one.net>
* src/mod_register.erl: Revert support for io_lib newline, since
there is a standard character that representes newline (EJAB-501)
* doc/guide.tex: Update documentation to explain newline character
* doc/guide.html: Likewise
* src/ejabberd.cfg.example: Likewise
2008-07-11 Jean-Sébastien Pédron <js.pedron@meetic-corp.com> 2008-07-11 Jean-Sébastien Pédron <js.pedron@meetic-corp.com>
Merge revisions from 1362 to revision 1434 from trunk. Merge revisions from 1362 to revision 1434 from trunk.

View File

@ -16,7 +16,7 @@ all: release pdf html
release: release:
@echo "Notes for the releaser:" @echo "Notes for the releaser:"
@echo "* Do not forget to add a link to the release notes in guide.tex" @echo "* Do not forget to add a link to the release notes in guide.tex"
@echo "* Do not forget to update the version number in src/ejabberd.hrl!" @echo "* Do not forget to update the version number in src/ejabberd.app!"
@echo "* Do not forget to update the features in introduction.tex (including \new{} and \improved{} tags)." @echo "* Do not forget to update the features in introduction.tex (including \new{} and \improved{} tags)."
@echo "Press any key to continue" @echo "Press any key to continue"
@read foo @read foo

View File

@ -333,14 +333,24 @@ Alternatively, the latest development version can be retrieved from the Subversi
</P><P>To compile <TT>ejabberd</TT> execute the commands: </P><P>To compile <TT>ejabberd</TT> execute the commands:
</P><PRE CLASS="verbatim">./configure </P><PRE CLASS="verbatim">./configure
make make
</PRE><P>The build configuration script provides several parameters. </PRE><P>The build configuration script allows several options.
To get the full list run the command: To get the full list run the command:
</P><PRE CLASS="verbatim">./configure --help </P><PRE CLASS="verbatim">./configure --help
</PRE><P>Some options that you may be interested in modifying: </PRE><P>Some options that you may be interested in modifying:
</P><DL CLASS="description"><DT CLASS="dt-description"> </P><DL CLASS="description"><DT CLASS="dt-description">
<B><TT>--prefix=/</TT></B></DT><DD CLASS="dd-description"> <B><TT>--prefix=/</TT></B></DT><DD CLASS="dd-description">
Specify the path prefix where the files will be copied when running the make install command.<P> </P></DD><DT CLASS="dt-description"><B><TT>--enable-pam</TT></B></DT><DD CLASS="dd-description"> Specify the path prefix where the files will be copied when running
Enable the PAM authentication method.<P> </P></DD><DT CLASS="dt-description"><B><TT>--enable-odbc or --enable-mssql</TT></B></DT><DD CLASS="dd-description"> the <TT>make install</TT> command.<P> </P></DD><DT CLASS="dt-description"><B><TT>--enable-user[=USER]</TT></B></DT><DD CLASS="dd-description">
Allow this normal system user to execute the ejabberdctl script
(see section&#XA0;<A HREF="#ejabberdctl">4.1</A>),
read the configuration files,
read and write in the spool directory,
read and write in the log directory.
The account user and group must exist in the machine
before running <TT>make install</TT>.
This account doesn&#X2019;t need an explicit HOME directory, because
<TT>/var/lib/ejabberd/</TT> will be used by default.<P> </P></DD><DT CLASS="dt-description"><B><TT>--enable-pam</TT></B></DT><DD CLASS="dd-description">
Enable the PAM authentication method (see section <A HREF="#pam">3.1.4</A>).<P> </P></DD><DT CLASS="dt-description"><B><TT>--enable-odbc or --enable-mssql</TT></B></DT><DD CLASS="dd-description">
Required if you want to use an external database. Required if you want to use an external database.
See section&#XA0;<A HREF="#database">3.2</A> for more information.<P> </P></DD><DT CLASS="dt-description"><B><TT>--enable-full-xml</TT></B></DT><DD CLASS="dd-description"> See section&#XA0;<A HREF="#database">3.2</A> for more information.<P> </P></DD><DT CLASS="dt-description"><B><TT>--enable-full-xml</TT></B></DT><DD CLASS="dd-description">
Enable the use of XML based optimisations. Enable the use of XML based optimisations.
@ -351,34 +361,43 @@ To get the full list run the command:
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc12">2.4.4</A>&#XA0;&#XA0;<A HREF="#install">Install</A></H3><!--SEC END --><P> <A NAME="install"></A> <H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc12">2.4.4</A>&#XA0;&#XA0;<A HREF="#install">Install</A></H3><!--SEC END --><P> <A NAME="install"></A>
</P><P>To install <TT>ejabberd</TT> in the destination directories, run the command: </P><P>To install <TT>ejabberd</TT> in the destination directories, run the command:
</P><PRE CLASS="verbatim">make install </P><PRE CLASS="verbatim">make install
</PRE><P>Note that you may need to have administrative privileges in the system.</P><P>The files and directories created are, by default: </PRE><P>Note that you probably need administrative privileges in the system
to install <TT>ejabberd</TT>.</P><P>The files and directories created are, by default:
</P><DL CLASS="description"><DT CLASS="dt-description"> </P><DL CLASS="description"><DT CLASS="dt-description">
<B><TT>/etc/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Configuration files: <B><TT>/etc/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Configuration directory:
<DL CLASS="description"><DT CLASS="dt-description"> <DL CLASS="description"><DT CLASS="dt-description">
<B><TT>ejabberd.cfg</TT></B></DT><DD CLASS="dd-description"> ejabberd configuration file <B><TT>ejabberd.cfg</TT></B></DT><DD CLASS="dd-description"> ejabberd configuration file
</DD><DT CLASS="dt-description"><B><TT>ejabberdctl.cfg</TT></B></DT><DD CLASS="dd-description"> Configuration file of the administration script </DD><DT CLASS="dt-description"><B><TT>ejabberdctl.cfg</TT></B></DT><DD CLASS="dd-description"> Configuration file of the administration script
</DD><DT CLASS="dt-description"><B><TT>inetrc</TT></B></DT><DD CLASS="dd-description"> Network DNS configuration </DD><DT CLASS="dt-description"><B><TT>inetrc</TT></B></DT><DD CLASS="dd-description"> Network DNS configuration file
</DD></DL> </DD></DL>
</DD><DT CLASS="dt-description"><B><TT>/sbin/ejabberdctl</TT></B></DT><DD CLASS="dd-description"> Administration script </DD><DT CLASS="dt-description"><B><TT>/lib/ejabberd/</TT></B></DT><DD CLASS="dd-description">
</DD><DT CLASS="dt-description"><B><TT>/var/lib/ejabberd/</TT></B></DT><DD CLASS="dd-description"> <DL CLASS="description"><DT CLASS="dt-description">
<B><TT>ebin/</TT></B></DT><DD CLASS="dd-description"> Erlang binary files (*.beam)
</DD><DT CLASS="dt-description"><B><TT>include/</TT></B></DT><DD CLASS="dd-description"> Erlang header files (*.hrl)
</DD><DT CLASS="dt-description"><B><TT>priv/</TT></B></DT><DD CLASS="dd-description"> Additional files required at runtime
<DL CLASS="description"><DT CLASS="dt-description">
<B><TT>bin/</TT></B></DT><DD CLASS="dd-description"> Binary C programs
</DD><DT CLASS="dt-description"><B><TT>lib/</TT></B></DT><DD CLASS="dd-description"> Binary system libraries (*.so)
</DD><DT CLASS="dt-description"><B><TT>msgs/</TT></B></DT><DD CLASS="dd-description"> Translation files (*.msgs)
</DD></DL>
</DD></DL>
</DD><DT CLASS="dt-description"><B><TT>/sbin/ejabberdctl</TT></B></DT><DD CLASS="dd-description"> Administration script (see section&#XA0;<A HREF="#ejabberdctl">4.1</A>)
</DD><DT CLASS="dt-description"><B><TT>/share/doc/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Documentation of ejabberd
</DD><DT CLASS="dt-description"><B><TT>/var/lib/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Spool directory:
<DL CLASS="description"><DT CLASS="dt-description"> <DL CLASS="description"><DT CLASS="dt-description">
<B><TT>.erlang.cookie</TT></B></DT><DD CLASS="dd-description"> Erlang cookie file (see section <A HREF="#cookie">5.3</A>) <B><TT>.erlang.cookie</TT></B></DT><DD CLASS="dd-description"> Erlang cookie file (see section <A HREF="#cookie">5.3</A>)
</DD><DT CLASS="dt-description"><B><TT>db</TT></B></DT><DD CLASS="dd-description"> Mnesia database spool files </DD><DT CLASS="dt-description"><B><TT>acl.DCD, ...</TT></B></DT><DD CLASS="dd-description"> Mnesia database spool files (*.DCD, *.DCL, *.DAT)
</DD><DT CLASS="dt-description"><B><TT>ebin</TT></B></DT><DD CLASS="dd-description"> Binary Erlang files (*.beam)
</DD><DT CLASS="dt-description"><B><TT>priv</TT></B></DT><DD CLASS="dd-description">
<DL CLASS="description"><DT CLASS="dt-description">
<B><TT>lib</TT></B></DT><DD CLASS="dd-description"> Binary system libraries (*.so)
</DD><DT CLASS="dt-description"><B><TT>msgs</TT></B></DT><DD CLASS="dd-description"> Translated strings (*.msgs)
</DD></DL> </DD></DL>
</DD></DL> </DD><DT CLASS="dt-description"><B><TT>/var/log/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Log directory (see section&#XA0;<A HREF="#logfiles">7.2</A>):
</DD><DT CLASS="dt-description"><B><TT>/var/log/ejabberd/</TT></B></DT><DD CLASS="dd-description"> Log files (see section&#XA0;<A HREF="#logfiles">7.2</A>):
<DL CLASS="description"><DT CLASS="dt-description"> <DL CLASS="description"><DT CLASS="dt-description">
<B><TT>ejabberd.log</TT></B></DT><DD CLASS="dd-description"> ejabberd service log <B><TT>ejabberd.log</TT></B></DT><DD CLASS="dd-description"> ejabberd service log
</DD><DT CLASS="dt-description"><B><TT>sasl.log</TT></B></DT><DD CLASS="dd-description"> Erlang/OTP system log </DD><DT CLASS="dt-description"><B><TT>sasl.log</TT></B></DT><DD CLASS="dd-description"> Erlang/OTP system log
</DD></DL> </DD></DL>
</DD></DL><P> <A NAME="start"></A> </P><!--TOC subsection Start--> </DD></DL><P> <A NAME="start"></A> </P><!--TOC subsection Start-->
<H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc13">2.4.5</A>&#XA0;&#XA0;<A HREF="#start">Start</A></H3><!--SEC END --><P> <A NAME="start"></A> <H3 CLASS="subsection"><!--SEC ANCHOR --><A NAME="htoc13">2.4.5</A>&#XA0;&#XA0;<A HREF="#start">Start</A></H3><!--SEC END --><P> <A NAME="start"></A>
</P><P>You can use the <TT>ejabberdctl</TT> command line administration script to start and stop <TT>ejabberd</TT>.</P><P>Usage example: </P><P>You can use the <TT>ejabberdctl</TT> command line administration script to start and stop <TT>ejabberd</TT>.
If you provided the configure option <TT>--enable-user=USER</TT> (see <A HREF="#compile">2.4.3</A>),
you can execute <TT>ejabberdctl</TT> with either that system account or root.</P><P>Usage example:
</P><PRE CLASS="verbatim">ejabberdctl start </P><PRE CLASS="verbatim">ejabberdctl start
ejabberdctl status ejabberdctl status
@ -939,7 +958,7 @@ for more information.
</PRE><P>Though it is quite easy to set up PAM support in <TT>ejabberd</TT>, PAM itself introduces some </PRE><P>Though it is quite easy to set up PAM support in <TT>ejabberd</TT>, PAM itself introduces some
security issues:</P><UL CLASS="itemize"><LI CLASS="li-itemize"> security issues:</P><UL CLASS="itemize"><LI CLASS="li-itemize">
To perform PAM authentication <TT>ejabberd</TT> uses external C-program called To perform PAM authentication <TT>ejabberd</TT> uses external C-program called
<TT>epam</TT>. By default, it is located in <CODE>/var/lib/ejabberd/priv/lib/</CODE> <TT>epam</TT>. By default, it is located in <CODE>/var/lib/ejabberd/priv/bin/</CODE>
directory. You have to set it root on execution in the case when your PAM module directory. You have to set it root on execution in the case when your PAM module
requires root privileges (<TT>pam_unix.so</TT> for example). Also you have to grant access requires root privileges (<TT>pam_unix.so</TT> for example). Also you have to grant access
for <TT>ejabberd</TT> to this file and remove all other permissions from it. for <TT>ejabberd</TT> to this file and remove all other permissions from it.
@ -2363,7 +2382,7 @@ restrictions by default).
</DD><DT CLASS="dt-description"><B><TT>welcome_message</TT></B></DT><DD CLASS="dd-description"> Set a welcome message that </DD><DT CLASS="dt-description"><B><TT>welcome_message</TT></B></DT><DD CLASS="dd-description"> Set a welcome message that
is sent to each newly registered account. The first string is the subject, and is sent to each newly registered account. The first string is the subject, and
the second string is the message body. the second string is the message body.
In the body you can set a newline with the characters: <TT>~n</TT>. In the body you can set a newline with the characters: <CODE>\n</CODE>
</DD><DT CLASS="dt-description"><B><TT>registration_watchers</TT></B></DT><DD CLASS="dd-description"> This option defines a </DD><DT CLASS="dt-description"><B><TT>registration_watchers</TT></B></DT><DD CLASS="dd-description"> This option defines a
list of JIDs which will be notified each time a new account is registered. list of JIDs which will be notified each time a new account is registered.
</DD><DT CLASS="dt-description"><B><TT>iqdisc</TT></B></DT><DD CLASS="dd-description"> This specifies </DD><DT CLASS="dt-description"><B><TT>iqdisc</TT></B></DT><DD CLASS="dd-description"> This specifies
@ -2414,7 +2433,7 @@ Also define a registration timeout of one hour:
... ...
{mod_register, {mod_register,
[ [
{welcome_message, {"Welcome!", "Hi.~nWelcome to this Jabber server.~n Check http://www.jabber.org~n~nBye"}}, {welcome_message, {"Welcome!", "Hi.\nWelcome to this Jabber server.\n Check http://www.jabber.org\n\nBye"}},
{registration_watchers, ["admin1@example.org", "boss@example.net"]} {registration_watchers, ["admin1@example.org", "boss@example.net"]}
]}, ]},
... ...
@ -2895,7 +2914,7 @@ Starts the Erlang system detached from the system console.
Specify the directory where Erlang binary files (*.beam) are located. Specify the directory where Erlang binary files (*.beam) are located.
</DD><DT CLASS="dt-description"><B><TT>-s ejabberd</TT></B></DT><DD CLASS="dd-description"> </DD><DT CLASS="dt-description"><B><TT>-s ejabberd</TT></B></DT><DD CLASS="dd-description">
Tell Erlang runtime system to start the <TT>ejabberd</TT> application. Tell Erlang runtime system to start the <TT>ejabberd</TT> application.
</DD><DT CLASS="dt-description"><B><TT>-mnesia dir "/var/lib/ejabberd/db/nodename"</TT></B></DT><DD CLASS="dd-description"> </DD><DT CLASS="dt-description"><B><TT>-mnesia dir "/var/lib/ejabberd/"</TT></B></DT><DD CLASS="dd-description">
Specify the Mnesia database directory. Specify the Mnesia database directory.
</DD><DT CLASS="dt-description"><B><TT>-sasl sasl_error_logger {file, "/var/log/ejabberd/sasl.log"}</TT></B></DT><DD CLASS="dd-description"> </DD><DT CLASS="dt-description"><B><TT>-sasl sasl_error_logger {file, "/var/log/ejabberd/sasl.log"}</TT></B></DT><DD CLASS="dd-description">
Path to the Erlang/OTP system log file. Path to the Erlang/OTP system log file.
@ -3065,10 +3084,10 @@ Contains IP addresses of clients.
If the loglevel is set to 5, it contains whole conversations and passwords. If the loglevel is set to 5, it contains whole conversations and passwords.
If a logrotate system is used, there may be several log files with similar information, If a logrotate system is used, there may be several log files with similar information,
so it is preferable to secure the whole <TT>/var/log/ejabberd/</TT> directory. so it is preferable to secure the whole <TT>/var/log/ejabberd/</TT> directory.
</DD><DT CLASS="dt-description"><B><TT>Mnesia database spool files: /var/lib/ejabberd/db/*</TT></B></DT><DD CLASS="dd-description"> </DD><DT CLASS="dt-description"><B><TT>Mnesia database spool files in /var/lib/ejabberd/</TT></B></DT><DD CLASS="dd-description">
The files store binary data, but some parts are still readable. The files store binary data, but some parts are still readable.
The files are generated by Mnesia and their permissions cannot be set directly, The files are generated by Mnesia and their permissions cannot be set directly,
so it is preferable to secure the whole <TT>/var/lib/ejabberd/db/</TT> directory. so it is preferable to secure the whole <TT>/var/lib/ejabberd/</TT> directory.
</DD><DT CLASS="dt-description"><B><TT>Erlang cookie file: /var/lib/ejabberd/.erlang.cookie</TT></B></DT><DD CLASS="dd-description"> </DD><DT CLASS="dt-description"><B><TT>Erlang cookie file: /var/lib/ejabberd/.erlang.cookie</TT></B></DT><DD CLASS="dd-description">
See section <A HREF="#cookie">5.3</A>. See section <A HREF="#cookie">5.3</A>.
</DD></DL><P> <A NAME="clustering"></A> </P><!--TOC chapter Clustering--> </DD></DL><P> <A NAME="clustering"></A> </P><!--TOC chapter Clustering-->

View File

@ -313,7 +313,7 @@ To compile \ejabberd{} execute the commands:
make make
\end{verbatim} \end{verbatim}
The build configuration script provides several parameters. The build configuration script allows several options.
To get the full list run the command: To get the full list run the command:
\begin{verbatim} \begin{verbatim}
./configure --help ./configure --help
@ -322,10 +322,22 @@ To get the full list run the command:
Some options that you may be interested in modifying: Some options that you may be interested in modifying:
\begin{description} \begin{description}
\titem{--prefix=/} \titem{--prefix=/}
Specify the path prefix where the files will be copied when running the make install command. Specify the path prefix where the files will be copied when running
the \term{make install} command.
\titem{--enable-user[=USER]}
Allow this normal system user to execute the ejabberdctl script
(see section~\ref{ejabberdctl}),
read the configuration files,
read and write in the spool directory,
read and write in the log directory.
The account user and group must exist in the machine
before running \term{make install}.
This account doesn't need an explicit HOME directory, because
\term{/var/lib/ejabberd/} will be used by default.
\titem{--enable-pam} \titem{--enable-pam}
Enable the PAM authentication method. Enable the PAM authentication method (see section \ref{pam}).
\titem{--enable-odbc or --enable-mssql} \titem{--enable-odbc or --enable-mssql}
Required if you want to use an external database. Required if you want to use an external database.
@ -348,29 +360,36 @@ To install \ejabberd{} in the destination directories, run the command:
\begin{verbatim} \begin{verbatim}
make install make install
\end{verbatim} \end{verbatim}
Note that you may need to have administrative privileges in the system. Note that you probably need administrative privileges in the system
to install \term{ejabberd}.
The files and directories created are, by default: The files and directories created are, by default:
\begin{description} \begin{description}
\titem{/etc/ejabberd/} Configuration files: \titem{/etc/ejabberd/} Configuration directory:
\begin{description} \begin{description}
\titem{ejabberd.cfg} ejabberd configuration file \titem{ejabberd.cfg} ejabberd configuration file
\titem{ejabberdctl.cfg} Configuration file of the administration script \titem{ejabberdctl.cfg} Configuration file of the administration script
\titem{inetrc} Network DNS configuration \titem{inetrc} Network DNS configuration file
\end{description} \end{description}
\titem{/sbin/ejabberdctl} Administration script \titem{/lib/ejabberd/}
\titem{/var/lib/ejabberd/} \begin{description}
\titem{ebin/} Erlang binary files (*.beam)
\titem{include/} Erlang header files (*.hrl)
\titem{priv/} Additional files required at runtime
\begin{description}
\titem{bin/} Binary C programs
\titem{lib/} Binary system libraries (*.so)
\titem{msgs/} Translation files (*.msgs)
\end{description}
\end{description}
\titem{/sbin/ejabberdctl} Administration script (see section~\ref{ejabberdctl})
\titem{/share/doc/ejabberd/} Documentation of ejabberd
\titem{/var/lib/ejabberd/} Spool directory:
\begin{description} \begin{description}
\titem{.erlang.cookie} Erlang cookie file (see section \ref{cookie}) \titem{.erlang.cookie} Erlang cookie file (see section \ref{cookie})
\titem{db} Mnesia database spool files \titem{acl.DCD, ...} Mnesia database spool files (*.DCD, *.DCL, *.DAT)
\titem{ebin} Binary Erlang files (*.beam)
\titem{priv}
\begin{description}
\titem{lib} Binary system libraries (*.so)
\titem{msgs} Translated strings (*.msgs)
\end{description} \end{description}
\end{description} \titem{/var/log/ejabberd/} Log directory (see section~\ref{logfiles}):
\titem{/var/log/ejabberd/} Log files (see section~\ref{logfiles}):
\begin{description} \begin{description}
\titem{ejabberd.log} ejabberd service log \titem{ejabberd.log} ejabberd service log
\titem{sasl.log} Erlang/OTP system log \titem{sasl.log} Erlang/OTP system log
@ -382,6 +401,8 @@ The files and directories created are, by default:
\ind{install!start} \ind{install!start}
You can use the \term{ejabberdctl} command line administration script to start and stop \ejabberd{}. You can use the \term{ejabberdctl} command line administration script to start and stop \ejabberd{}.
If you provided the configure option \term{--enable-user=USER} (see \ref{compile}),
you can execute \term{ejabberdctl} with either that system account or root.
Usage example: Usage example:
\begin{verbatim} \begin{verbatim}
@ -393,6 +414,7 @@ ejabberd is running
ejabberdctl stop ejabberdctl stop
\end{verbatim} \end{verbatim}
Please refer to the section~\ref{ejabberdctl} for details about \term{ejabberdctl}, Please refer to the section~\ref{ejabberdctl} for details about \term{ejabberdctl},
and configurable options to fine tune the Erlang runtime system. and configurable options to fine tune the Erlang runtime system.
@ -1117,7 +1139,7 @@ security issues:
\begin{itemize} \begin{itemize}
\item To perform PAM authentication \ejabberd{} uses external C-program called \item To perform PAM authentication \ejabberd{} uses external C-program called
\term{epam}. By default, it is located in \verb|/var/lib/ejabberd/priv/lib/| \term{epam}. By default, it is located in \verb|/var/lib/ejabberd/priv/bin/|
directory. You have to set it root on execution in the case when your PAM module directory. You have to set it root on execution in the case when your PAM module
requires root privileges (\term{pam\_unix.so} for example). Also you have to grant access requires root privileges (\term{pam\_unix.so} for example). Also you have to grant access
for \ejabberd{} to this file and remove all other permissions from it. for \ejabberd{} to this file and remove all other permissions from it.
@ -3036,7 +3058,7 @@ Options:
\titem{welcome\_message} \ind{options!welcomem}Set a welcome message that \titem{welcome\_message} \ind{options!welcomem}Set a welcome message that
is sent to each newly registered account. The first string is the subject, and is sent to each newly registered account. The first string is the subject, and
the second string is the message body. the second string is the message body.
In the body you can set a newline with the characters: \term{\~\ n}. In the body you can set a newline with the characters: \verb|\n|
\titem{registration\_watchers} \ind{options!rwatchers}This option defines a \titem{registration\_watchers} \ind{options!rwatchers}This option defines a
list of JIDs which will be notified each time a new account is registered. list of JIDs which will be notified each time a new account is registered.
\iqdiscitem{In-Band Registration (\ns{jabber:iq:register})} \iqdiscitem{In-Band Registration (\ns{jabber:iq:register})}
@ -3095,7 +3117,7 @@ Also define a registration timeout of one hour:
... ...
{mod_register, {mod_register,
[ [
{welcome_message, {"Welcome!", "Hi.~nWelcome to this Jabber server.~n Check http://www.jabber.org~n~nBye"}}, {welcome_message, {"Welcome!", "Hi.\nWelcome to this Jabber server.\n Check http://www.jabber.org\n\nBye"}},
{registration_watchers, ["admin1@example.org", "boss@example.net"]} {registration_watchers, ["admin1@example.org", "boss@example.net"]}
]}, ]},
... ...
@ -3708,7 +3730,7 @@ The command line parameters:
Specify the directory where Erlang binary files (*.beam) are located. Specify the directory where Erlang binary files (*.beam) are located.
\titem{-s ejabberd} \titem{-s ejabberd}
Tell Erlang runtime system to start the \ejabberd{} application. Tell Erlang runtime system to start the \ejabberd{} application.
\titem{-mnesia dir "/var/lib/ejabberd/db/nodename"} \titem{-mnesia dir "/var/lib/ejabberd/"}
Specify the Mnesia database directory. Specify the Mnesia database directory.
\titem{-sasl sasl\_error\_logger \{file, "/var/log/ejabberd/sasl.log"\}} \titem{-sasl sasl\_error\_logger \{file, "/var/log/ejabberd/sasl.log"\}}
Path to the Erlang/OTP system log file. Path to the Erlang/OTP system log file.
@ -3941,10 +3963,10 @@ write and execute those files and directories.
If the loglevel is set to 5, it contains whole conversations and passwords. If the loglevel is set to 5, it contains whole conversations and passwords.
If a logrotate system is used, there may be several log files with similar information, If a logrotate system is used, there may be several log files with similar information,
so it is preferable to secure the whole \term{/var/log/ejabberd/} directory. so it is preferable to secure the whole \term{/var/log/ejabberd/} directory.
\titem{Mnesia database spool files: /var/lib/ejabberd/db/*} \titem{Mnesia database spool files in /var/lib/ejabberd/}
The files store binary data, but some parts are still readable. The files store binary data, but some parts are still readable.
The files are generated by Mnesia and their permissions cannot be set directly, The files are generated by Mnesia and their permissions cannot be set directly,
so it is preferable to secure the whole \term{/var/lib/ejabberd/db/} directory. so it is preferable to secure the whole \term{/var/lib/ejabberd/} directory.
\titem{Erlang cookie file: /var/lib/ejabberd/.erlang.cookie} \titem{Erlang cookie file: /var/lib/ejabberd/.erlang.cookie}
See section \ref{cookie}. See section \ref{cookie}.
\end{description} \end{description}

View File

@ -12,37 +12,53 @@ ERLANG_CFLAGS= @ERLANG_CFLAGS@
EXPAT_LIBS = @EXPAT_LIBS@ EXPAT_LIBS = @EXPAT_LIBS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
ERLC_FLAGS += @ERLANG_SSL39@
ASN_FLAGS = -bber_bin +der +compact_bit_string +optimize +noobj ASN_FLAGS = -bber_bin +der +compact_bit_string +optimize +noobj
INSTALLUSER=@INSTALLUSER@
# if no user was enabled, don't set privileges or ownership
ifeq ($(INSTALLUSER),)
O_USER=
G_USER=
CHOWN_COMMAND=echo
CHOWN_OUTPUT=/dev/null
else
O_USER=-o $(INSTALLUSER)
G_USER=-g $(INSTALLUSER)
CHOWN_COMMAND=chown
CHOWN_OUTPUT=&1
endif
EFLAGS += @ERLANG_SSL39@
EFLAGS += -I ../include
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
ERLC_FLAGS+=+debug_info EFLAGS+=+debug_info
endif endif
ifdef ejabberd_debug ifdef ejabberd_debug
ERLC_FLAGS+=-Dejabberd_debug EFLAGS+=-Dejabberd_debug
endif endif
ifeq (@hipe@, true) ifeq (@hipe@, true)
ERLC_FLAGS+=+native EFLAGS+=+native
endif endif
ifeq (@roster_gateway_workaround@, true) ifeq (@roster_gateway_workaround@, true)
ERLC_FLAGS+=-DROSTER_GATEWAY_WORKAROUND EFLAGS+=-DROSTER_GATEWAY_WORKAROUND
endif endif
ifeq (@full_xml@, true) ifeq (@full_xml@, true)
ERLC_FLAGS+=-DFULL_XML_SUPPORT EFLAGS+=-DFULL_XML_SUPPORT
endif endif
ifeq (@transient_supervisors@, false) ifeq (@transient_supervisors@, false)
ERLC_FLAGS+=-DNO_TRANSIENT_SUPERVISORS EFLAGS+=-DNO_TRANSIENT_SUPERVISORS
endif endif
INSTALL_EPAM= INSTALL_EPAM=
ifeq (@pam@, pam) ifeq (@pam@, pam)
INSTALL_EPAM=install -m 750 epam $(PBINDIR) INSTALL_EPAM=install -m 750 $(O_USER) epam $(PBINDIR)
endif endif
prefix = @prefix@ prefix = @prefix@
@ -58,17 +74,47 @@ BEAMS = $(SOURCES:.erl=.beam)
DESTDIR = DESTDIR =
EJABBERDDIR = $(DESTDIR)@localstatedir@/lib/ejabberd # /etc/ejabberd/
BEAMDIR = $(EJABBERDDIR)/ebin
SPOOLDIR = $(EJABBERDDIR)/db
PRIVDIR = $(EJABBERDDIR)/priv
SODIR = $(PRIVDIR)/lib
PBINDIR = $(PRIVDIR)/bin
MSGSDIR = $(PRIVDIR)/msgs
LOGDIR = $(DESTDIR)@localstatedir@/log/ejabberd
ETCDIR = $(DESTDIR)@sysconfdir@/ejabberd ETCDIR = $(DESTDIR)@sysconfdir@/ejabberd
# /sbin/
SBINDIR = $(DESTDIR)@sbindir@ SBINDIR = $(DESTDIR)@sbindir@
# /lib/ejabberd/
EJABBERDDIR = $(DESTDIR)@libdir@/ejabberd
# /share/doc/ejabberd
PACKAGE_TARNAME = @PACKAGE_TARNAME@
datarootdir = @datarootdir@
DOCDIR = @docdir@
# /usr/lib/ejabberd/ebin/
BEAMDIR = $(EJABBERDDIR)/ebin
# /usr/lib/ejabberd/include/
INCLUDEDIR = $(EJABBERDDIR)/include
# /usr/lib/ejabberd/priv/
PRIVDIR = $(EJABBERDDIR)/priv
# /usr/lib/ejabberd/priv/bin
PBINDIR = $(PRIVDIR)/bin
# /usr/lib/ejabberd/priv/lib
SODIR = $(PRIVDIR)/lib
# /usr/lib/ejabberd/priv/msgs
MSGSDIR = $(PRIVDIR)/msgs
# /var/lib/ejabberd/
SPOOLDIR = $(DESTDIR)@localstatedir@/lib/ejabberd
# /var/lib/ejabberd/.erlang.cookie
COOKIEFILE = $(SPOOLDIR)/.erlang.cookie
# /var/log/ejabberd/
LOGDIR = $(DESTDIR)@localstatedir@/log/ejabberd
ifeq ($(shell uname),Darwin) ifeq ($(shell uname),Darwin)
DYNAMIC_LIB_CFLAGS = -fPIC -bundle -flat_namespace -undefined suppress DYNAMIC_LIB_CFLAGS = -fPIC -bundle -flat_namespace -undefined suppress
else else
@ -85,7 +131,7 @@ $(BEAMS): $(ERLBEHAVBEAMS)
all-recursive: $(ERLBEHAVBEAMS) all-recursive: $(ERLBEHAVBEAMS)
%.beam: %.erl %.beam: %.erl
@ERLC@ -W $(ERLC_FLAGS) $< @ERLC@ -W $(EFLAGS) $<
all-recursive install-recursive uninstall-recursive \ all-recursive install-recursive uninstall-recursive \
@ -100,7 +146,7 @@ mostlyclean-recursive maintainer-clean-recursive:
%.hrl: %.asn1 %.hrl: %.asn1
@ERLC@ $(ASN_FLAGS) $< @ERLC@ $(ASN_FLAGS) $<
@ERLC@ -W $(ERLC_FLAGS) $*.erl @ERLC@ -W $(EFLAGS) $*.erl
$(ERLSHLIBS): %.so: %.c $(ERLSHLIBS): %.so: %.c
$(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) \ $(CC) $(CFLAGS) $(LDFLAGS) $(LIBS) \
@ -113,39 +159,90 @@ $(ERLSHLIBS): %.so: %.c
$(DYNAMIC_LIB_CFLAGS) $(DYNAMIC_LIB_CFLAGS)
install: all install: all
#
# Configuration files
install -d -m 750 $(G_USER) $(ETCDIR)
[ -f $(ETCDIR)/ejabberd.cfg ] \
&& install -b -m 640 $(G_USER) ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg-new \
|| install -b -m 640 $(G_USER) ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg
sed -e "s*@rootdir@*@prefix@*" \
-e "s*@installuser@*@INSTALLUSER@*" \
-e "s*@LIBDIR@*@libdir@*" \
-e "s*@SYSCONFDIR@*@sysconfdir@*" \
-e "s*@LOCALSTATEDIR@*@localstatedir@*" \
-e "s*@erl@*@ERL@*" ejabberdctl.template \
> ejabberdctl.example
[ -f $(ETCDIR)/ejabberdctl.cfg ] \
&& install -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \
|| install -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
install -b -m 644 $(G_USER) inetrc $(ETCDIR)/inetrc
#
# Administration script
[ -d $(SBINDIR) ] || install -d 750 $(SBINDIR)
install -m 550 $(G_USER) ejabberdctl.example $(SBINDIR)/ejabberdctl
#
# Binary Erlang files
install -d $(BEAMDIR) install -d $(BEAMDIR)
install -m 644 *.app $(BEAMDIR)
install -m 644 *.beam $(BEAMDIR) install -m 644 *.beam $(BEAMDIR)
rm -f $(BEAMDIR)/configure.beam rm -f $(BEAMDIR)/configure.beam
install -m 644 *.app $(BEAMDIR) #
install -d -m 750 $(SPOOLDIR) # ejabberd header files
install -d $(SODIR) install -d $(INCLUDEDIR)
install -m 644 ../include/*.hrl $(INCLUDEDIR)
#
# Binary C programs
install -d $(PBINDIR) install -d $(PBINDIR)
install -m 644 *.so $(SODIR)
$(INSTALL_EPAM) $(INSTALL_EPAM)
#
# Binary system libraries
install -d $(SODIR)
install -m 644 *.so $(SODIR)
#
# Translated strings
install -d $(MSGSDIR) install -d $(MSGSDIR)
install -m 644 msgs/*.msg $(MSGSDIR) install -m 644 msgs/*.msg $(MSGSDIR)
install -d -m 750 $(ETCDIR) #
[ -f $(ETCDIR)/ejabberd.cfg ] && install -b -m 644 ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg-new || install -b -m 644 ejabberd.cfg.example $(ETCDIR)/ejabberd.cfg # Spool directory
sed -e "s*@rootdir@*@prefix@*" ejabberdctl.template > ejabberdctl.example install -d -m 750 $(O_USER) $(SPOOLDIR)
[ -f $(ETCDIR)/ejabberdctl.cfg ] && install -b -m 644 ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new || install -b -m 644 ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg $(CHOWN_COMMAND) -R @INSTALLUSER@ $(SPOOLDIR) >$(CHOWN_OUTPUT)
install -b -m 644 inetrc $(ETCDIR)/inetrc chmod -R 750 $(SPOOLDIR)
install -d $(SBINDIR) [ ! -f $(COOKIEFILE) ] || { $(CHOWN_COMMAND) @INSTALLUSER@ $(COOKIEFILE) >$(CHOWN_OUTPUT) ; chmod 400 $(COOKIEFILE) ; }
install -m 755 ejabberdctl.example $(SBINDIR)/ejabberdctl #
install -d -m 750 $(LOGDIR) # Log directory
install -d -m 750 $(O_USER) $(LOGDIR)
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(LOGDIR) >$(CHOWN_OUTPUT)
chmod -R 750 $(LOGDIR)
#
# Documentation
install -d $(DOCDIR)
install ../doc/guide.html $(DOCDIR)
install ../doc/*.png $(DOCDIR)
install ../doc/*.txt $(DOCDIR)
uninstall: uninstall-binary uninstall: uninstall-binary
uninstall-binary: uninstall-binary:
rm -rf $(BEAMDIR) rm -f $(SBINDIR)/ejabberdctl
rm -rf $(SODIR) rm -fr $(DOCDIR)
rm -rf $(MSGSDIR) rm -f $(BEAMDIR)/*.beam
rm -rf $(PRIVDIR) rm -f $(BEAMDIR)/*.app
rm -rf $(SBINDIR)/ejabberdctl rm -fr $(BEAMDIR)
rm -f $(INCLUDEDIR)/*.hrl
rm -fr $(INCLUDEDIR)
rm -fr $(PBINDIR)
rm -f $(SODIR)/*.so
rm -fr $(SODIR)
rm -f $(MSGSDIR)/*.msgs
rm -fr $(MSGSDIR)
rm -fr $(PRIVDIR)
rm -fr $(EJABBERDDIR)
uninstall-all: uninstall-binary uninstall-all: uninstall-binary
rm -rf $(ETCDIR) rm -rf $(ETCDIR)
rm -rf $(LOGDIR)
rm -rf $(EJABBERDDIR) rm -rf $(EJABBERDDIR)
rm -rf $(SPOOLDIR)
rm -rf $(LOGDIR)
clean: clean-recursive clean-local clean: clean-recursive clean-local

15
src/aclocal.m4 vendored
View File

@ -1,6 +1,6 @@
AC_DEFUN(AM_WITH_EXPAT, AC_DEFUN(AM_WITH_EXPAT,
[ AC_ARG_WITH(expat, [ AC_ARG_WITH(expat,
[ --with-expat=PREFIX prefix where EXPAT is installed]) [AC_HELP_STRING([--with-expat=PREFIX], [prefix where EXPAT is installed])])
EXPAT_CFLAGS= EXPAT_CFLAGS=
EXPAT_LIBS= EXPAT_LIBS=
@ -34,7 +34,7 @@ AC_DEFUN(AM_WITH_EXPAT,
AC_DEFUN(AM_WITH_ZLIB, AC_DEFUN(AM_WITH_ZLIB,
[ AC_ARG_WITH(zlib, [ AC_ARG_WITH(zlib,
[ --with-zlib=PREFIX prefix where zlib is installed]) [AC_HELP_STRING([--with-zlib=PREFIX], [prefix where zlib is installed])])
ZLIB_CFLAGS= ZLIB_CFLAGS=
ZLIB_LIBS= ZLIB_LIBS=
@ -68,7 +68,7 @@ AC_DEFUN(AM_WITH_ZLIB,
AC_DEFUN(AM_WITH_PAM, AC_DEFUN(AM_WITH_PAM,
[ AC_ARG_WITH(pam, [ AC_ARG_WITH(pam,
[ --with-pam=PREFIX prefix where PAM is installed]) [AC_HELP_STRING([--with-pam=PREFIX], [prefix where PAM is installed])])
PAM_CFLAGS= PAM_CFLAGS=
PAM_LIBS= PAM_LIBS=
@ -102,7 +102,7 @@ AC_DEFUN(AM_WITH_PAM,
AC_DEFUN(AM_WITH_ERLANG, AC_DEFUN(AM_WITH_ERLANG,
[ AC_ARG_WITH(erlang, [ AC_ARG_WITH(erlang,
[ --with-erlang=PREFIX path to erlc and erl ]) [AC_HELP_STRING([--with-erlang=PREFIX], [path to erlc and erl])])
AC_PATH_TOOL(ERLC, erlc, , $with_erlang:$with_erlang/bin:$PATH) AC_PATH_TOOL(ERLC, erlc, , $with_erlang:$with_erlang/bin:$PATH)
AC_PATH_TOOL(ERL, erl, , $with_erlang:$with_erlang/bin:$PATH) AC_PATH_TOOL(ERL, erl, , $with_erlang:$with_erlang/bin:$PATH)
@ -204,14 +204,13 @@ _EOF
AC_SUBST(ERL) AC_SUBST(ERL)
]) ])
AC_DEFUN(AC_MOD_ENABLE, AC_DEFUN(AC_MOD_ENABLE,
[ [
$1= $1=
make_$1= make_$1=
AC_MSG_CHECKING([whether build $1]) AC_MSG_CHECKING([whether build $1])
AC_ARG_ENABLE($1, AC_ARG_ENABLE($1,
[ --enable-$1 enable $1 (default: $2)], [AC_HELP_STRING([--enable-$1], [enable $1 (default: $2)])],
[mr_enable_$1="$enableval"], [mr_enable_$1="$enableval"],
[mr_enable_$1=$2]) [mr_enable_$1=$2])
if test "$mr_enable_$1" = "yes"; then if test "$mr_enable_$1" = "yes"; then
@ -232,7 +231,7 @@ AC_DEFUN([AM_ICONV],
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
dnl those with the standalone portable GNU libiconv installed). dnl those with the standalone portable GNU libiconv installed).
AC_ARG_WITH([libiconv-prefix], AC_ARG_WITH([libiconv-prefix],
[ --with-libiconv-prefix=PREFIX prefix where libiconv is installed], [ [AC_HELP_STRING([--with-libiconv-prefix=PREFIX], [prefix where libiconv is installed])], [
for dir in `echo "$withval" | tr : ' '`; do for dir in `echo "$withval" | tr : ' '`; do
if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
if test -d $dir/include; then CFLAGS="$CFLAGS -I$dir/include"; fi if test -d $dir/include; then CFLAGS="$CFLAGS -I$dir/include"; fi
@ -317,7 +316,7 @@ size_t iconv();
dnl <openssl> dnl <openssl>
AC_DEFUN(AM_WITH_OPENSSL, AC_DEFUN(AM_WITH_OPENSSL,
[ AC_ARG_WITH(openssl, [ AC_ARG_WITH(openssl,
[ --with-openssl=PREFIX prefix where OPENSSL is installed ]) [AC_HELP_STRING([--with-openssl=PREFIX], [prefix where OPENSSL is installed])])
unset SSL_LIBS; unset SSL_LIBS;
unset SSL_CFLAGS; unset SSL_CFLAGS;
have_openssl=no have_openssl=no

126
src/configure vendored
View File

@ -1,6 +1,8 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61. # Generated by GNU Autoconf 2.61 for ejabberd.erl version.
#
# Report bugs to <ejabberd@process-one.net>.
# #
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@ -570,13 +572,12 @@ MAKEFLAGS=
SHELL=${CONFIG_SHELL-/bin/sh} SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME= PACKAGE_NAME='ejabberd.erl'
PACKAGE_TARNAME= PACKAGE_TARNAME='ejabberd'
PACKAGE_VERSION= PACKAGE_VERSION='version'
PACKAGE_STRING= PACKAGE_STRING='ejabberd.erl version'
PACKAGE_BUGREPORT= PACKAGE_BUGREPORT='ejabberd@process-one.net'
ac_unique_file="ejabberd.erl"
# Factoring default headers for most tests. # Factoring default headers for most tests.
ac_includes_default="\ ac_includes_default="\
#include <stdio.h> #include <stdio.h>
@ -703,6 +704,7 @@ transient_supervisors
full_xml full_xml
SSL_LIBS SSL_LIBS
SSL_CFLAGS SSL_CFLAGS
INSTALLUSER
LTLIBOBJS' LTLIBOBJS'
ac_subst_files='' ac_subst_files=''
ac_precious_vars='build_alias ac_precious_vars='build_alias
@ -752,7 +754,7 @@ sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var' localstatedir='${prefix}/var'
includedir='${prefix}/include' includedir='${prefix}/include'
oldincludedir='/usr/include' oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE}' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info' infodir='${datarootdir}/info'
htmldir='${docdir}' htmldir='${docdir}'
dvidir='${docdir}' dvidir='${docdir}'
@ -1216,7 +1218,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures this package to adapt to many kinds of systems. \`configure' configures ejabberd.erl version to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1264,7 +1266,7 @@ Fine tuning of the installation directories:
--infodir=DIR info documentation [DATAROOTDIR/info] --infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale] --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man] --mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] --docdir=DIR documentation root [DATAROOTDIR/doc/ejabberd]
--htmldir=DIR html documentation [DOCDIR] --htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR]
@ -1276,7 +1278,9 @@ _ACEOF
fi fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of ejabberd.erl version:";;
esac
cat <<\_ACEOF cat <<\_ACEOF
Optional Features: Optional Features:
@ -1292,17 +1296,27 @@ Optional Features:
--enable-tls enable tls (default: yes) --enable-tls enable tls (default: yes)
--enable-odbc enable odbc (default: no) --enable-odbc enable odbc (default: no)
--enable-ejabberd_zlib enable ejabberd_zlib (default: yes) --enable-ejabberd_zlib enable ejabberd_zlib (default: yes)
--enable-hipe Compile natively with HiPE, not recommended (default: no) --enable-hipe compile natively with HiPE, not recommended
--enable-roster-gateway-workaround Turn on workaround for processing gateway subscriptions (default: no) (default: no)
--enable-mssql Use Microsoft SQL Server database (default: no, requires --enable-odbc) --enable-roster-gateway-workaround
--enable-transient_supervisors Use Erlang supervision for transient process (default: yes) turn on workaround for processing gateway
--enable-full-xml Use XML features in XMPP stream (ex: CDATA) (default: no, requires XML compliant clients) subscriptions (default: no)
--enable-mssql use Microsoft SQL Server database (default: no,
requires --enable-odbc)
--enable-transient_supervisors
use Erlang supervision for transient process
(default: yes)
--enable-full-xml use XML features in XMPP stream (ex: CDATA)
(default: no, requires XML compliant clients)
--enable-user[=USER] allow this system user to start ejabberd (default:
no)
Optional Packages: Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-erlang=PREFIX path to erlc and erl --with-erlang=PREFIX path to erlc and erl
--with-libiconv-prefix=PREFIX prefix where libiconv is installed --with-libiconv-prefix=PREFIX
prefix where libiconv is installed
--with-expat=PREFIX prefix where EXPAT is installed --with-expat=PREFIX prefix where EXPAT is installed
--with-zlib=PREFIX prefix where zlib is installed --with-zlib=PREFIX prefix where zlib is installed
--with-pam=PREFIX prefix where PAM is installed --with-pam=PREFIX prefix where PAM is installed
@ -1321,6 +1335,7 @@ Some influential environment variables:
Use these variables to override the choices made by `configure' or to help Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations. it to find libraries and programs with nonstandard names/locations.
Report bugs to <ejabberd@process-one.net>.
_ACEOF _ACEOF
ac_status=$? ac_status=$?
fi fi
@ -1381,7 +1396,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
configure ejabberd.erl configure version
generated by GNU Autoconf 2.61 generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@ -1395,7 +1410,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was It was created by ejabberd.erl $as_me version, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@ $ $0 $@
@ -1728,6 +1743,14 @@ fi
@ -4131,7 +4154,12 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## --------------------------------------- ##
## Report this to ejabberd@process-one.net ##
## --------------------------------------- ##
_ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;; ;;
esac esac
{ echo "$as_me:$LINENO: checking for $ac_header" >&5 { echo "$as_me:$LINENO: checking for $ac_header" >&5
@ -4376,7 +4404,12 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## --------------------------------------- ##
## Report this to ejabberd@process-one.net ##
## --------------------------------------- ##
_ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;; ;;
esac esac
{ echo "$as_me:$LINENO: checking for $ac_header" >&5 { echo "$as_me:$LINENO: checking for $ac_header" >&5
@ -4620,7 +4653,12 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## --------------------------------------- ##
## Report this to ejabberd@process-one.net ##
## --------------------------------------- ##
_ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;; ;;
esac esac
{ echo "$as_me:$LINENO: checking for $ac_header" >&5 { echo "$as_me:$LINENO: checking for $ac_header" >&5
@ -4888,7 +4926,12 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## --------------------------------------- ##
## Report this to ejabberd@process-one.net ##
## --------------------------------------- ##
_ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;; ;;
esac esac
{ echo "$as_me:$LINENO: checking for $ac_header" >&5 { echo "$as_me:$LINENO: checking for $ac_header" >&5
@ -5676,7 +5719,12 @@ echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## --------------------------------------- ##
## Report this to ejabberd@process-one.net ##
## --------------------------------------- ##
_ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;; ;;
esac esac
{ echo "$as_me:$LINENO: checking for $ac_header" >&5 { echo "$as_me:$LINENO: checking for $ac_header" >&5
@ -5849,7 +5897,12 @@ echo "$as_me: WARNING: krb5.h: section \"Present But Cannot Be Compiled\"" >
echo "$as_me: WARNING: krb5.h: proceeding with the preprocessor's result" >&2;} echo "$as_me: WARNING: krb5.h: proceeding with the preprocessor's result" >&2;}
{ echo "$as_me:$LINENO: WARNING: krb5.h: in the future, the compiler will take precedence" >&5 { echo "$as_me:$LINENO: WARNING: krb5.h: in the future, the compiler will take precedence" >&5
echo "$as_me: WARNING: krb5.h: in the future, the compiler will take precedence" >&2;} echo "$as_me: WARNING: krb5.h: in the future, the compiler will take precedence" >&2;}
( cat <<\_ASBOX
## --------------------------------------- ##
## Report this to ejabberd@process-one.net ##
## --------------------------------------- ##
_ASBOX
) | sed "s/^/$as_me: WARNING: /" >&2
;; ;;
esac esac
{ echo "$as_me:$LINENO: checking for krb5.h" >&5 { echo "$as_me:$LINENO: checking for krb5.h" >&5
@ -5866,6 +5919,22 @@ fi
ENABLEUSER=""
# Check whether --enable-user was given.
if test "${enable_user+set}" = set; then
enableval=$enable_user; case "${enableval}" in
yes) ENABLEUSER=`whoami` ;;
no) ENABLEUSER="" ;;
*) ENABLEUSER=$enableval
esac
fi
if test "$ENABLEUSER" != ""; then
echo "allow this system user to start ejabberd: $ENABLEUSER"
INSTALLUSER=$ENABLEUSER
fi
cat >confcache <<\_ACEOF cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure # This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure # tests run on this system so they can be shared between configure
@ -6292,7 +6361,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by $as_me, which was This file was extended by ejabberd.erl $as_me version, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -6335,7 +6404,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
config.status ejabberd.erl config.status version
configured by $0, generated by GNU Autoconf 2.61, configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
@ -6594,10 +6663,11 @@ transient_supervisors!$transient_supervisors$ac_delim
full_xml!$full_xml$ac_delim full_xml!$full_xml$ac_delim
SSL_LIBS!$SSL_LIBS$ac_delim SSL_LIBS!$SSL_LIBS$ac_delim
SSL_CFLAGS!$SSL_CFLAGS$ac_delim SSL_CFLAGS!$SSL_CFLAGS$ac_delim
INSTALLUSER!$INSTALLUSER$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF _ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 90; then if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 91; then
break break
elif $ac_last_try; then elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5

View File

@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script. # Process this file with autoconf to produce a configure script.
AC_PREREQ(2.53) AC_PREREQ(2.53)
AC_INIT(ejabberd.erl,, ejabberd@process-one.net) AC_INIT(ejabberd.erl, version, [ejabberd@process-one.net], [ejabberd])
# Checks for programs. # Checks for programs.
AC_PROG_CC AC_PROG_CC
@ -48,7 +48,7 @@ AC_MOD_ENABLE(odbc, no)
AC_MOD_ENABLE(ejabberd_zlib, yes) AC_MOD_ENABLE(ejabberd_zlib, yes)
AC_ARG_ENABLE(hipe, AC_ARG_ENABLE(hipe,
[ --enable-hipe Compile natively with HiPE, not recommended (default: no)], [AC_HELP_STRING([--enable-hipe], [compile natively with HiPE, not recommended (default: no)])],
[case "${enableval}" in [case "${enableval}" in
yes) hipe=true ;; yes) hipe=true ;;
no) hipe=false ;; no) hipe=false ;;
@ -57,7 +57,7 @@ esac],[hipe=false])
AC_SUBST(hipe) AC_SUBST(hipe)
AC_ARG_ENABLE(roster_gateway_workaround, AC_ARG_ENABLE(roster_gateway_workaround,
[ --enable-roster-gateway-workaround Turn on workaround for processing gateway subscriptions (default: no)], [AC_HELP_STRING([--enable-roster-gateway-workaround], [turn on workaround for processing gateway subscriptions (default: no)])],
[case "${enableval}" in [case "${enableval}" in
yes) roster_gateway_workaround=true ;; yes) roster_gateway_workaround=true ;;
no) roster_gateway_workaround=false ;; no) roster_gateway_workaround=false ;;
@ -66,7 +66,7 @@ esac],[roster_gateway_workaround=false])
AC_SUBST(roster_gateway_workaround) AC_SUBST(roster_gateway_workaround)
AC_ARG_ENABLE(mssql, AC_ARG_ENABLE(mssql,
[ --enable-mssql Use Microsoft SQL Server database (default: no, requires --enable-odbc)], [AC_HELP_STRING([--enable-mssql], [use Microsoft SQL Server database (default: no, requires --enable-odbc)])],
[case "${enableval}" in [case "${enableval}" in
yes) db_type=mssql ;; yes) db_type=mssql ;;
no) db_type=generic ;; no) db_type=generic ;;
@ -75,7 +75,7 @@ esac],[db_type=generic])
AC_SUBST(db_type) AC_SUBST(db_type)
AC_ARG_ENABLE(transient_supervisors, AC_ARG_ENABLE(transient_supervisors,
[ --enable-transient_supervisors Use Erlang supervision for transient process (default: yes)], [AC_HELP_STRING([--enable-transient_supervisors], [use Erlang supervision for transient process (default: yes)])],
[case "${enableval}" in [case "${enableval}" in
yes) transient_supervisors=true ;; yes) transient_supervisors=true ;;
no) transient_supervisors=false ;; no) transient_supervisors=false ;;
@ -84,7 +84,7 @@ esac],[transient_supervisors=true])
AC_SUBST(transient_supervisors) AC_SUBST(transient_supervisors)
AC_ARG_ENABLE(full_xml, AC_ARG_ENABLE(full_xml,
[ --enable-full-xml Use XML features in XMPP stream (ex: CDATA) (default: no, requires XML compliant clients)], [AC_HELP_STRING([--enable-full-xml], [use XML features in XMPP stream (ex: CDATA) (default: no, requires XML compliant clients)])],
[case "${enableval}" in [case "${enableval}" in
yes) full_xml=true ;; yes) full_xml=true ;;
no) full_xml=false ;; no) full_xml=false ;;
@ -122,4 +122,18 @@ else
fi fi
AC_CHECK_HEADER(krb5.h,,) AC_CHECK_HEADER(krb5.h,,)
ENABLEUSER=""
AC_ARG_ENABLE(user,
[AS_HELP_STRING([--enable-user[[[[=USER]]]]], [allow this system user to start ejabberd (default: no)])],
[case "${enableval}" in
yes) ENABLEUSER=`whoami` ;;
no) ENABLEUSER="" ;;
*) ENABLEUSER=$enableval
esac],
[])
if test "$ENABLEUSER" != ""; then
echo "allow this system user to start ejabberd: $ENABLEUSER"
AC_SUBST([INSTALLUSER], [$ENABLEUSER])
fi
AC_OUTPUT AC_OUTPUT

View File

@ -459,7 +459,7 @@
%% a message with this subject and body. %% a message with this subject and body.
%% %%
{welcome_message, {"Welcome!", {welcome_message, {"Welcome!",
"Hi.~nWelcome to this Jabber server."}}, "Hi.\nWelcome to this Jabber server."}},
%% %%
%% When a user registers, send a notification to %% When a user registers, send a notification to

View File

@ -58,7 +58,7 @@
]). ]).
-include("ejabberd.hrl"). -include("ejabberd.hrl").
-include("eldap/eldap.hrl"). -include("eldap.hrl").
-record(state, {host, -record(state, {host,
eldap_id, eldap_id,

View File

@ -19,7 +19,8 @@ else
DYNAMIC_LIB_CFLAGS = -fpic -shared DYNAMIC_LIB_CFLAGS = -fpic -shared
endif endif
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -11,13 +11,15 @@ ERL_MAX_ETS_TABLES=1400
NODE=ejabberd NODE=ejabberd
HOST=localhost HOST=localhost
ERLANG_NODE=$NODE@$HOST ERLANG_NODE=$NODE@$HOST
ROOTDIR=@rootdir@ ERL=@erl@
EJABBERD_CONFIG_PATH=$ROOTDIR/etc/ejabberd/ejabberd.cfg INSTALLUSER=@installuser@
LOGS_DIR=$ROOTDIR/var/log/ejabberd/ ETCDIR=@SYSCONFDIR@/ejabberd
EJABBERD_DB=$ROOTDIR/var/lib/ejabberd/db/$NODE EJABBERD_CONFIG_PATH=$ETCDIR/ejabberd.cfg
LOGDIR=@LOCALSTATEDIR@/log/ejabberd
SPOOLDIR=@LOCALSTATEDIR@/lib/ejabberd
# read custom configuration # read custom configuration
CONFIG=$ROOTDIR/etc/ejabberd/ejabberdctl.cfg CONFIG=$ETCDIR/ejabberdctl.cfg
[ -f "$CONFIG" ] && . "$CONFIG" [ -f "$CONFIG" ] && . "$CONFIG"
# parse command line parameters # parse command line parameters
@ -30,12 +32,27 @@ while [ $# -ne 0 ] ; do
--node) ERLANG_NODE=$1; shift ;; --node) ERLANG_NODE=$1; shift ;;
--config) EJABBERD_CONFIG_PATH=$1 ; shift ;; --config) EJABBERD_CONFIG_PATH=$1 ; shift ;;
--ctl-config) CONFIG=$1 ; shift ;; --ctl-config) CONFIG=$1 ; shift ;;
--logs) LOGS_DIR=$1 ; shift ;; --logs) LOGDIR=$1 ; shift ;;
--spool) EJABBERD_DB=$1 ; shift ;; --spool) SPOOLDIR=$1 ; shift ;;
*) ARGS="$ARGS $PARAM" ;; *) ARGS="$ARGS $PARAM" ;;
esac esac
done done
# check the proper system user is used
ID=`id -g`
EJID=`id -g $INSTALLUSER`
EXEC_CMD="false"
if [ $ID -eq 0 ] ; then
EXEC_CMD="su ${INSTALLUSER} -c"
fi
if [ "$ID" -eq "$EJID" ] ; then
EXEC_CMD="sh -c"
fi
if [ "$EXEC_CMD" = "false" ] ; then
echo "This command can only be run by root or the user $INSTALLUSER" >&2
exit 1
fi
NAME=-name NAME=-name
[ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && NAME=-sname [ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && NAME=-sname
@ -48,31 +65,36 @@ fi
ERLANG_OPTS="+K $POLL -smp $SMP +P $ERL_PROCESSES $KERNEL_OPTS" ERLANG_OPTS="+K $POLL -smp $SMP +P $ERL_PROCESSES $KERNEL_OPTS"
# define additional environment variables # define additional environment variables
EJABBERD_EBIN=$ROOTDIR/var/lib/ejabberd/ebin EJABBERDDIR=@LIBDIR@/ejabberd
EJABBERD_MSGS_PATH=$ROOTDIR/var/lib/ejabberd/priv/msgs BEAMDIR=$EJABBERDDIR/ebin
EJABBERD_SO_PATH=$ROOTDIR/var/lib/ejabberd/priv/lib PRIVDIR=$EJABBERDDIR/priv
EJABBERD_BIN_PATH=$ROOTDIR/var/lib/ejabberd/priv/bin PBINDIR=$PRIVDIR/bin
EJABBERD_LOG_PATH=$LOGS_DIR/ejabberd.log SODIR=$PRIVDIR/lib
SASL_LOG_PATH=$LOGS_DIR/sasl.log MSGSDIR=$PRIVDIR/msgs
EJABBERD_LOG_PATH=$LOGDIR/ejabberd.log
SASL_LOG_PATH=$LOGDIR/sasl.log
DATETIME=`date "+%Y%m%d-%H%M%S"` DATETIME=`date "+%Y%m%d-%H%M%S"`
ERL_CRASH_DUMP=$LOGS_DIR/erl_crash_$DATETIME.dump ERL_CRASH_DUMP=$LOGDIR/erl_crash_$DATETIME.dump
ERL_INETRC=$ROOTDIR/etc/ejabberd/inetrc ERL_INETRC=$ETCDIR/inetrc
HOME=$ROOTDIR/var/lib/ejabberd HOME=$SPOOLDIR
# create the home dir with the proper user if doesn't exist, because it stores cookie file
[ -d $HOME ] || $EXEC_CMD "mkdir -p $HOME"
# export global variables # export global variables
export EJABBERD_CONFIG_PATH export EJABBERD_CONFIG_PATH
export EJABBERD_MSGS_PATH export MSGSDIR
export EJABBERD_LOG_PATH export EJABBERD_LOG_PATH
export EJABBERD_SO_PATH export SODIR
export EJABBERD_BIN_PATH export PBINDIR
export ERL_CRASH_DUMP export ERL_CRASH_DUMP
export ERL_INETRC export ERL_INETRC
export ERL_MAX_PORTS export ERL_MAX_PORTS
export ERL_MAX_ETS_TABLES export ERL_MAX_ETS_TABLES
export HOME export HOME
export EXEC_CMD
[ -d $EJABBERD_DB ] || mkdir -p $EJABBERD_DB
[ -d $LOGS_DIR ] || mkdir -p $LOGS_DIR
# Compatibility in ZSH # Compatibility in ZSH
#setopt shwordsplit 2>/dev/null #setopt shwordsplit 2>/dev/null
@ -80,14 +102,14 @@ export HOME
# start server # start server
start () start ()
{ {
erl \ $EXEC_CMD "$ERL \
$NAME $ERLANG_NODE \ $NAME $ERLANG_NODE \
-noinput -detached \ -noinput -detached \
-pa $EJABBERD_EBIN \ -pa $BEAMDIR \
-mnesia dir "\"$EJABBERD_DB\"" \ -mnesia dir \"\\\"$SPOOLDIR\\\"\" \
-s ejabberd \ -s ejabberd \
-sasl sasl_error_logger \{file,\"$SASL_LOG_PATH\"\} \ -sasl sasl_error_logger \\{file,\\\"$SASL_LOG_PATH\\\"\\} \
$ERLANG_OPTS $ARGS "$@" $ERLANG_OPTS $ARGS \"$@\""
} }
# attach to server # attach to server
@ -109,10 +131,10 @@ debug ()
echo "Press any key to continue" echo "Press any key to continue"
read foo read foo
echo "" echo ""
erl \ $EXEC_CMD "$ERL \
$NAME ${NODE}debug \ $NAME ${NODE}debug \
-remsh $ERLANG_NODE \ -remsh $ERLANG_NODE \
$ERLANG_OPTS $ARGS "$@" $ERLANG_OPTS $ARGS \"$@\""
} }
# start interactive server # start interactive server
@ -133,23 +155,22 @@ live ()
echo "Press any key to continue" echo "Press any key to continue"
read foo read foo
echo "" echo ""
erl \ $EXEC_CMD "$ERL \
$NAME $ERLANG_NODE \ $NAME $ERLANG_NODE \
$ERLANG_OPTS \ -pa $BEAMDIR \
-pa $EJABBERD_EBIN \ -mnesia dir \"\\\"$SPOOLDIR\\\"\" \
-mnesia dir "\"$EJABBERD_DB\"" \
-s ejabberd \ -s ejabberd \
$ERLANG_OPTS $ARGS "$@" $ERLANG_OPTS $ARGS \"$@\""
} }
# common control function # common control function
ctl () ctl ()
{ {
erl \ $EXEC_CMD "$ERL \
$NAME ejabberdctl \ $NAME ejabberdctl \
-noinput \ -noinput \
-pa $EJABBERD_EBIN \ -pa $BEAMDIR \
-s ejabberd_ctl -extra $ERLANG_NODE $@ -s ejabberd_ctl -extra $ERLANG_NODE $@"
result=$? result=$?
case $result in case $result in
0) :;; 0) :;;
@ -163,8 +184,9 @@ ctl ()
echo "Optional parameters when starting an ejabberd node:" echo "Optional parameters when starting an ejabberd node:"
echo " --config file Config file of ejabberd: $EJABBERD_CONFIG_PATH" echo " --config file Config file of ejabberd: $EJABBERD_CONFIG_PATH"
echo " --ctl-config file Config file of ejabberdctl: $CONFIG" echo " --ctl-config file Config file of ejabberdctl: $CONFIG"
echo " --logs dir Directory for logs: $LOGS_DIR" echo " --logs dir Directory for logs: $LOGDIR"
echo " --spool dir Database spool dir: $EJABBERD_DB" echo " --spool dir Database spool dir: $SPOOLDIR"
echo " --node nodename ejabberd node name: $ERLANG_NODE"
echo "";; echo "";;
esac esac
return $result return $result

View File

@ -9,7 +9,8 @@ LIBS = @LIBS@
ERLANG_CFLAGS = @ERLANG_CFLAGS@ ERLANG_CFLAGS = @ERLANG_CFLAGS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -16,7 +16,9 @@ else
DYNAMIC_LIB_CFLAGS = -fpic -shared DYNAMIC_LIB_CFLAGS = -fpic -shared
endif endif
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -9,7 +9,9 @@ LIBS = @LIBS@
ERLANG_CFLAGS = @ERLANG_CFLAGS@ ERLANG_CFLAGS = @ERLANG_CFLAGS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -43,8 +43,8 @@
-include("ejabberd.hrl"). -include("ejabberd.hrl").
-include("jlib.hrl"). -include("jlib.hrl").
-include("web/ejabberd_http.hrl"). -include("ejabberd_http.hrl").
-include("web/ejabberd_web_admin.hrl"). -include("ejabberd_web_admin.hrl").
-record(offline_msg, {us, timestamp, expire, from, to, packet}). -record(offline_msg, {us, timestamp, expire, from, to, packet}).

View File

@ -42,8 +42,8 @@
-include("ejabberd.hrl"). -include("ejabberd.hrl").
-include("jlib.hrl"). -include("jlib.hrl").
-include("web/ejabberd_http.hrl"). -include("ejabberd_http.hrl").
-include("web/ejabberd_web_admin.hrl"). -include("ejabberd_web_admin.hrl").
-record(offline_msg, {user, timestamp, expire, from, to, packet}). -record(offline_msg, {user, timestamp, expire, from, to, packet}).

View File

@ -9,7 +9,9 @@ LIBS = @LIBS@
ERLANG_CFLAGS = @ERLANG_CFLAGS@ ERLANG_CFLAGS = @ERLANG_CFLAGS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -41,8 +41,8 @@
%% API. %% API.
-export([start_link/2]). -export([start_link/2]).
-include("../ejabberd.hrl"). -include("ejabberd.hrl").
-include("../jlib.hrl"). -include("jlib.hrl").
-define(PROCNAME, ejabberd_mod_proxy65_service). -define(PROCNAME, ejabberd_mod_proxy65_service).

View File

@ -58,7 +58,7 @@
]). ]).
-include("mod_proxy65.hrl"). -include("mod_proxy65.hrl").
-include("../ejabberd.hrl"). -include("ejabberd.hrl").
-define(WAIT_TIMEOUT, 60000). %% 1 minute (is it enough?) -define(WAIT_TIMEOUT, 60000). %% 1 minute (is it enough?)

View File

@ -9,7 +9,9 @@ LIBS = @LIBS@
ERLANG_CFLAGS = @ERLANG_CFLAGS@ ERLANG_CFLAGS = @ERLANG_CFLAGS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -241,13 +241,12 @@ send_welcome_message(JID) ->
{"", ""} -> {"", ""} ->
ok; ok;
{Subj, Body} -> {Subj, Body} ->
BodyFormatted = io_lib:format(Body, []),
ejabberd_router:route( ejabberd_router:route(
jlib:make_jid("", Host, ""), jlib:make_jid("", Host, ""),
JID, JID,
{xmlelement, "message", [{"type", "normal"}], {xmlelement, "message", [{"type", "normal"}],
[{xmlelement, "subject", [], [{xmlcdata, Subj}]}, [{xmlelement, "subject", [], [{xmlcdata, Subj}]},
{xmlelement, "body", [], [{xmlcdata, BodyFormatted}]}]}); {xmlelement, "body", [], [{xmlcdata, Body}]}]});
_ -> _ ->
ok ok
end. end.

View File

@ -47,8 +47,8 @@
-include("ejabberd.hrl"). -include("ejabberd.hrl").
-include("jlib.hrl"). -include("jlib.hrl").
-include("mod_roster.hrl"). -include("mod_roster.hrl").
-include("web/ejabberd_http.hrl"). -include("ejabberd_http.hrl").
-include("web/ejabberd_web_admin.hrl"). -include("ejabberd_web_admin.hrl").
start(Host, Opts) -> start(Host, Opts) ->

View File

@ -46,8 +46,8 @@
-include("ejabberd.hrl"). -include("ejabberd.hrl").
-include("jlib.hrl"). -include("jlib.hrl").
-include("mod_roster.hrl"). -include("mod_roster.hrl").
-include("web/ejabberd_http.hrl"). -include("ejabberd_http.hrl").
-include("web/ejabberd_web_admin.hrl"). -include("ejabberd_web_admin.hrl").
start(Host, Opts) -> start(Host, Opts) ->

View File

@ -52,8 +52,8 @@
-include("ejabberd.hrl"). -include("ejabberd.hrl").
-include("jlib.hrl"). -include("jlib.hrl").
-include("mod_roster.hrl"). -include("mod_roster.hrl").
-include("web/ejabberd_http.hrl"). -include("ejabberd_http.hrl").
-include("web/ejabberd_web_admin.hrl"). -include("ejabberd_web_admin.hrl").
-record(sr_group, {group_host, opts}). -record(sr_group, {group_host, opts}).
-record(sr_user, {us, group_host}). -record(sr_user, {us, group_host}).

View File

@ -50,7 +50,7 @@
]). ]).
-include("ejabberd.hrl"). -include("ejabberd.hrl").
-include("eldap/eldap.hrl"). -include("eldap.hrl").
-include("jlib.hrl"). -include("jlib.hrl").
-define(PROCNAME, ejabberd_mod_vcard_ldap). -define(PROCNAME, ejabberd_mod_vcard_ldap).

View File

@ -9,7 +9,9 @@ LIBS = @LIBS@
ERLANG_CFLAGS = @ERLANG_CFLAGS@ ERLANG_CFLAGS = @ERLANG_CFLAGS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -9,7 +9,9 @@ LIBS = @LIBS@ @PAM_LIBS@
ERLANG_CFLAGS = @ERLANG_CFLAGS@ ERLANG_CFLAGS = @ERLANG_CFLAGS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -19,7 +19,9 @@ else
DYNAMIC_LIB_CFLAGS = -fpic -shared DYNAMIC_LIB_CFLAGS = -fpic -shared
endif endif
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info

View File

@ -9,7 +9,9 @@ LIBS = @LIBS@
ERLANG_CFLAGS = @ERLANG_CFLAGS@ ERLANG_CFLAGS = @ERLANG_CFLAGS@
ERLANG_LIBS = @ERLANG_LIBS@ ERLANG_LIBS = @ERLANG_LIBS@
EFLAGS = -I .. -pz .. EFLAGS += -I ../../include
EFLAGS += -pz ..
# make debug=true to compile Erlang module with debug informations. # make debug=true to compile Erlang module with debug informations.
ifdef debug ifdef debug
EFLAGS+=+debug_info EFLAGS+=+debug_info
@ -21,7 +23,7 @@ BEAMS = $(addprefix $(OUTDIR)/,$(SOURCES:.erl=.beam))
all: $(BEAMS) all: $(BEAMS)
$(OUTDIR)/%.beam: %.erl ejabberd_http.hrl $(OUTDIR)/%.beam: %.erl
@ERLC@ -W $(EFLAGS) -o $(OUTDIR) $< @ERLC@ -W $(EFLAGS) -o $(OUTDIR) $<
clean: clean: