Options: Extension Modules
MongooseIM provides a wide range of pluggable and configurable modules,
that implement various features including XEPs.
For instance mod_muc
enables Multi-User Chat (group chat),
mod_mam
gives us Message Archive Management,
and mod_stream_management
is for stanza acknowledgement and stream resumption.
This modular architecture provides great flexibility for everyday operations and feature development.
A module configuration generally looks like this:
1 2 3 4 |
|
IQ processing policies
Some of the modules feature an iqdisc
parameter.
It defines the method for handling incoming IQ stanzas.
The server may use one of the following strategies to handle incoming IQ stanzas:
modules.*.iqdisc.type
- Syntax: string, one of
"one_queue"
,"no_queue"
,"queues"
, or"parallel"
- Example:
iqdisc.type = "one_queue"
Note
In the "queues"
case alone, the following key becomes mandatory:
modules.*.iqdisc.workers
- Syntax: positive integer
- Example:
iqdisc.workers = 50
Their semantics works as follows:
no_queue
registers a new IQ handler, which will be called in the context of the process serving the connection on which the IQ arrives.one_queue
spawns a new process by which the incoming IQ stanzas will be handled.queues
spawns N worker processes, as provided by theiqdisc.workers
key. Every incoming stanza will be then handled by one of those processes.parallel
registers the handler without spawning any process: a new process will be spawned in place, for each incoming stanza.
Modules list
mod_adhoc
Implements XEP-0050: Ad-Hoc Commands for advertising and executing application-specific commands, such as those related to a configuration workflow, using XEP-0004: Data Forms in order to structure the information exchange. This is extremely useful for use cases such as remote administration, user engagement via polls, and ChatBots.
mod_amp
Implements a subset of XEP-0079: Advanced Message Processing functionality, that enables entities to request, and servers to perform advanced processing of XMPP message stanzas, including reliable data transport, time-sensitive delivery, and expiration of transient messages.
mod_auth_token
A module used by SASL X-OAUTH mechanism. It provides an API to manage custom OAuth tokens. It requires mod_keystore as an actual key database.
mod_blocking
Implements XEP-0191: Blocking Command, a simplified interface to privacy lists.
mod_bind2
Implements XEP-0386: Bind 2.
mod_bosh
Allows users to connect to MongooseIM using BOSH (Bidirectional-streams Over Synchronous HTTP), the HTTP long-polling technique described in XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH) and XEP-0206: XMPP Over BOSH.
mod_caps
Implements XEP-0115: Entity Capabilities. It queries clients for their supported functionalities and caches them in Mnesia. This module tightly cooperates with mod_pubsub in order to deliver PEP events to user's subscribers.
mod_carboncopy
Implements XEP-0280: Message Carbons in order to keep all IM clients for a user engaged in a real-time conversation by carbon-copying all inbound and outbound messages to all interested resources (Full JIDs).
mod_csi
Enables the XEP-0352: Client State Indication functionality.
mod_disco
Implements XEP-0030: Service Discovery for discovering information (capabilities, protocols, features) about other XMPP entities.
mod_event_pusher
A framework module to build other notification-based modules on.
mod_event_pusher_sns
Allows sending online/offline notifications, chat and groupchat messages as events to Amazon Simple Notification Service.
mod_event_pusher_rabbit
Allows sending presence changes (to available/unavailable), chat and groupchat messages as events to a RabbitMQ server.
mod_event_pusher_push
Implements XEP-0357: Push Notifications to provide push notifications to clients that are temporary unavailable.
mod_event_pusher_http
Forward events to an external HTTP service. This applies to situations such as sending messages or presences to mobile/SMS/email push service, big data, or an analytics service.
mod_extdisco
Implements XEP-0215: External Service Discovery for discovering information about services external to the XMPP network. The main use-case is to help discover STUN/TURN servers to allow for negotiating media exchanges.
mod_http_upload
Implements XEP-0363: HTTP File Upload for coordinating with an XMPP server to upload files via HTTP and receive URLs that can be shared in messages.
mod_inbox
Implements custom inbox XEP
mod_global_distrib
Enables sharing a single XMPP domain between distinct datacenters (experimental).
mod_jingle_sip
Enables Jingle to SIP and SIP to Jingle translator.
mod_keystore
Serves as a storage for crypto keys for mod_auth_token
.
mod_last
Implements XEP-0012: Last Activity for communicating information about the last activity associated with an XMPP entity (most recent presence information from an offline contact).
mod_mam
Implements XEP-0313: Message Archive Management, that defines a protocol to query and control an archive of messages stored on a server.
mod_muc
Implements XEP-0045: Multi-User Chat, for a featureful multi-user text chat (group chat), whereby multiple XMPP users can exchange messages in the context of a chat room. It is tightly coupled with user presence in chat rooms.
mod_muc_log
Implements a logging subsystem for mod_muc.
mod_muc_light
Implements XEP Multi-User Chat Light.
mod_offline
Provides an offline messages storage that is compliant with XEP-0160: Best Practices for Handling Offline Messages.
mod_offline_stub
Prevents <service-unavailable/>
error when the message recipient is offline.
mod_ping
Implements XEP-0199: XMPP Ping, enabling periodic XMPP pings sent to clients and responds to those sent from clients.
mod_privacy
This module implements XEP-0016: Privacy Lists, for enabling or disabling communication with other entities on a network.
mod_private
Implements XEP-0049: Private XML Storage to store and query private user data in XML format.
mod_pubsub
This extension implements XEP-0060: Publish-Subscribe. It is a pluggable implementation using behaviours provided by node_*.erl
and nodetree_*.erl
modules.
mod_push_service_mongoosepush
Handles push notifications generated by mod_pubsub's node_push
and passes them to MongoosePush service.
mod_register
Implements XEP-0077: In-Band Registration, that enables creating an account and changing the password once connected. This does not provide a solution to the forgotten password use case via SMS or email.
mod_roster
Roster support, specified in RFC 6121. Includes support for XEP-0237: Roster Versioning.
mod_sasl2
Implements XEP-0388: Extensible SASL Profile.
mod_shared_roster_ldap
This module, when enabled, will inject roster entries fetched from LDAP.
mod_sic
Implements XEP-0279: Server IP Check that enables a client to discover its external IP address.
mod_stream_management
Enables XEP-0198: Stream Management functionality that defines the active management of an XML stream between two XMPP entities, including features for stanza acknowledgements and stream resumption.
mod_time
XEP-0202: Entity Time implementation. With this extensions, clients can get the current server time.
mod_vcard
Provides support for vCards, as specified in XEP-0054: vcard-temp and XEP-0055: Jabber Search.
mod_version
This module provides the functionality specified in XEP-0092: Software Version.
Modules incompatible with dynamic domains
There are some modules that don't support dynamic domains for now.
These must not be enabled when using host types in modules
or host_config.modules
sections:
- mod_event_pusher
- mod_global_distrib
- mod_jingle_sip
- mod_pubsub
- mod_push_service_mongoosepush
- mod_shared_roster_ldap
Please note, that s2s
and the XMPP components (XEP-0114) mechanism, as configured in the listen.service
section, do not support dynamic domains as well.