As per XEP-0313 >= 0.2, advertise the MAM feature in the service discovery information for the bare account JID. Some clients check the server's discovery information instead, so we'll continue to advertise the feature there as well (at least for the moment).
ejabberd-contrib
This is a collaborative development area for ejabberd module developers and users.
For users
To use an ejabberd module coming from this repository:
-
You need to have Erlang installed.
-
Read the module-specific
README.txtfile to see if special steps are required to deploy it. -
Run
./build.shorbuild.batin the root directory of the desired module. -
Copy generated
.beamfiles from theebindirectory to the directory where your ejabberd.beamfiles are. -
Use the configuration file examples provided in the
confdir to update yourejabberd.cfgorejabberd.ymlconfiguration file.
If during compilation of a module you get an error like:
{"init terminating in do_boot",{undef,[{make,all,[]},...
it means Erlang couldn't find its make.beam file. In Debian and other
distributions you can try to install packages like:
erlang-dev erlang-nox erlang-tools
For developers
The following organization has been set up for the development:
-
Development and compilation of modules should be possible without the ejabberd source code, as the
ejabberd-devhelper module contains the include files necessary to make compilation possible. -
The module directory structure is usually the following:
README.txt: Module description.LICENSE.txt: License for the module.Emakefile: Erlang Makefile to build the module (preferred way, if no dependencies on C code, as build will thus work on Windows).doc/: Documentation directory.src/: Source directory.src/msgs/: Directory with translation files (pot, po and msg).ebin/: Empty (target directory for the build).conf/: Directory containing example configuration for your module.build.sh: Unix/Linux build script.build.bat: Windows build script.
-
Module developers should note in the
README.txtfile whether the module has requirements or known incompatibilities with other modules (for example, by modifying the same main ejabberd modules).