mod_groups

mod_groups was designed to allow administrators to create virtual groups of users that automatically see each other in their contact lists. The shared groups will be sent to the user along with their usual roster without overriding or permanently adding the contacts. There is no need for the user to authorise the these contacts in their contact list - this is done automatically on the server.

As an example, if you have a team of people working together on a project, you can create a group for that team. They will automatically be added to each others' contact lists, and the list can easily be modified on the server at any time to add and remove people.

Details

Currently the shared groups can only be modified by changing the configuration. Any changes the user makes to the shared group contacts in their client will be lost the next time they log in. Modifications made to the shared groups on the server may not be visible to logged in users unless they log out and back in using their client.

Usage

modules_enabled = {
    -- Other modules
    "groups"; -- Enable mod_groups
}

Configuration

Option Default Notes
groups_file nil Path to a text file where the shared groups are defined. If this path is empty then mod_groups does nothing.

Text File Syntax

The text file uses syntax similar to ini files. Take a look at the example for more info. Make sure Prosody has sufficient permissions to read this file.

Groups are written in brackets, like [This Group], followed by the JIDs that should be in the group. Optionally, a nickname may be given after an equals sign, eg a@example.org=Adam.

Example

modules_enabled = {
    -- Other modules
    "groups"; -- Enable mod_groups
}
 
groups_file = "/var/etc/prosody/sharedgroups.txt"

Example contents of /var/etc/prosody/sharedgroups.txt:

[Support Team]
support@example.com
john.doe@example.com

[Development Team]
hardworkingdeveloper@example.net=Joe Coder
other.dev@example.com=Mel

You can see the last two entries here have custom names - if no name is given then it is up to the user's client to find a suitable name (e.g. take it from the contact's vcard/profile).