Prosody - the service powering KodeNet XMPP/Jabber communication services is customized to use modules, synonymous to plugins to add features and functionality. These modules are defined by their respective XMPP specification. We will be highlighting some of the more common modules that are loaded and available for KodeNet XMPP users.
The blocklist module implements the blocking extension for Simple Communications Blocking support. This module defined by XEP-0191 replaces the depcrecated Privacy Lists XEP-0016.
Enable BOSH clients, also known as "Jabber over HTTP" available at
Message Carbons allows users to maintain a shared and synchronized view of all conversations across all your online clients and devices.
The purpose of push notifications is to inform users of new messages or other pertinent information even when they have no XMPP clients online. Notifications are typically delivered to a user's mobile device.
This module implements Client State Indication, a way for mobile clients to tell the server that they are sitting in someones pocket and would rather not get some less urgent things pushed to it. Client State Indication works in conjunction with
csi_battery_saver to properly support timestamping, carbon copies, encrypted message handling and correctly handled smacks events.
This module is used between XMPP servers to provide identity verification. Server Dialback uses the Domain Name System (DNS) as the basis for verifying identity; the basic approach is that when a receiving server accepts a server-to-server connection from an initiating server, it does not process XMPP stanzas over the connection until it has verified the initiating server's identity.
With this module clients can discover services and features available on the server. Some clients will automatically take advantage of the available items while others will need manual configuration.
This module implements XEP-0363, versions 0.2 and 0.3, which let clients upload files over HTTP.
This module allows users with an account to generate single-use invite URLs using an ad-hoc command. After the account is created, the inviter and the invitee are automatically added to the other’s roster. The inviter of a user is stored, so can be used later (for example, for detecting spammers).
Jingle provides peer-to-peer (P2P) session control (signaling) for multimedia interactions such as in Voice over IP (VoIP) or videoconferencing communications. See the list of supported XMPP Jingle clients to use voice and video chat with your KodeNet Jabber account.
With this module users can query how long another user has been idle.
Message Archive Management will archive all messages that match the simple rules setup by the user, and allow the user to access this archive.
Because XEP-0136 defines a ‘conversation’ concept not present in XEP-0313, we have to assume some periods of chat history as ‘conversations’. Conversation interval defaults to one day, to provide for a convenient usage.
This module allows sending a message to another MUC room. For example, doing
@other-room: hello will allow the message to appear in the other room as
This module logs the conversation of chatrooms running on the server to Prosody’s archive storage. To access them you will need a client with support for XEP-0313: Message Archive Management.
The Multi-User Chat specification defines an XMPP protocol extension for multi-user text chat, whereby multiple XMPP users can exchange messages in the context of a room or channel, similar to Internet Relay Chat (IRC).
OMEMO, a recursive acronym for "OMEMO Multi-End Message and Object Encryption" provides multi-end to multi-end encryption, allowing messages to be synchronized securely across multiple clients, even if some of them are offline.
Enables users to publish their mood, activity, playing music and more.
This module pushes the users nickname and avatar from vCards into PEP, or into vCards from PEP. This allows interop between older clients that use XEP-0153: vCard-Based Avatars to see the avatars of clients that use XEP-0084: User Avatar and vice versa.
Some clients offer users the ability to store arbitrary notes or client specific information on the server such as chatroom bookmarks which Prosody supports via mod_private (for room bookmarks, etc).
Pubsub (Publish-Subscribe) is an XMPP extension that allows pieces of data to be published to 'nodes', and then automatically broadcast to any subscribers to those nodes. This is similar to technologies like RSS, except that instead of subscribers continuously checking for new data it is pushed to them in realtime.
This module allows Prosody to fetch Atom and RSS feeds for users, and push new results to subscribers over XMPP.
This module allows users to register new accounts and change passwords. User passwords can be changed even if new user registration is disabled.
This module adds support for Remote Roster Management which is commonly used to allow components such as transports to modify the rosters of local users.
Any modifications made by a user to their roster is shared between all clients but some clients may need to log out and back in or manually request the updated roster before the changes are displayed. Rosters can also include user-defined groups.
This module periodically sends XEP-0199 ping requests to remote servers to keep your connection alive.
With this module various types of contact addresses are set (abuse, staff, feedback, security, contact).
This module provides reliability and fast reconnects for XMPP. By default XMPP is as reliable as your network is. Unfortunately in some cases that is not very reliable - in some network conditions disconnects can be frequent and message loss can occur. This is where the smacks module comes in.
When someone reports spam or abuse, a line about this is logged and an event is fired so that other modules can act on the report.
This module adds a default contact to newly registered accounts. The support or staff contact can be removed and re-added at any time.
The time module implements XEP-0202 and the obsolete XEP-0090 for compatibility with older clients. This module lets others know the time here on the KodeNet XMPP servers.
This module adds support for secure TLS (Transport Layer Security) encryption on connected streams. By default TLS on KodeNet XMPP is required between client-to-client and server-to-server connections.
This module arose from discussions at the XMPP Summit about enforcing better ciphers in TLS. It may seem attractive to disallow some insecure ciphers or require forward secrecy, but doing this at the TLS level would provide the user with an unhelpful "Encryption failed" message. This module does this enforcing at the application level, allowing better error messages. KodeNet XMPP is set to allow only ciphers that enable forward secrecy.
This module implements XEP-0012 and allows the server to respond to requests for how long it has been running.
Using this module allows the servers to respond to software version requests.
This module allow users to set vCards containing contact information. Users are not required to fill in a vCard and can supply as much or as little as they like.
Quite often you may want to publish your Jabber status to your blog or website. The webpresence module allows you to do exactly this with the following code.
<a href="xmpp:<jid>@kode.im"><img src="https://im.koderoot.net/status/<jid>@kode.im" alt="xmpp online status"/> </a>
WebSockets available at
https://im.koderoot.net/xmpp-websocket is a protocol for providing web pages with simple two-way communication with a web server. This module allows browsers to communicate via XMPP over WebSockets. This usually induces less overhead than using BOSH.
This XEP provides an easy way for clients to bypass restrictive firewalls that only allow HTTPS by making XMPP connections possible even if the client's network blocks the standard XMPP client ports. For example, whether a KodeNet XMPP user is at the airport, hotel or a public wireless network, the XMPP client can still establish a connection over port 443.