Module Description
This module implements Multi-User Chat Light.
It's an experimental XMPP group chat solution.
This extension consists of several modules but only mod_muc_light
needs to be enabled in the config file.
Options
- host (string, default:
"muclight.@HOST@"
) - Domain for the MUC Light service to reside under.@HOST@
is replaced with each served domain. - backend (atom, default:
mnesia
) - Database backend to use.mnesia
andrdbms
are supported. - equal_occupants (boolean, default:
false
) - When enabled, MUC Light rooms won't have owners. It means that every occupant will be amember
, even the room creator. Warning: This option does not implicitly setall_can_invite
totrue
. If that option is set tofalse
, nobody will be able to join the room after the initial creation request. - legacy_mode (boolean, default:
false
) - Enables XEP-0045 compatibility mode. It allows using a subset of classic MUC stanzas with some MUC Light functions limited. - rooms_per_user (positive integer or
infinity
, default:infinity
) - Specifies a cap on a number of rooms a user can occupy. Warning: Setting such a limit may trigger expensive DB queries for every occupant addition. - blocking (boolean, default:
true
) - Blocking feature enabled/disabled. - all_can_configure (boolean, default:
false
) - When enabled, all room occupants can change all configuration options. If disabled, everyone can still the change room subject. - all_can_invite (boolean, default:
false
) - When enabled, all room occupants can add new occupants to the room. Occupants added bymembers
becomemembers
as well. - max_occupants (positive integer or
infinity
, default:infinity
) - Specifies a cap on the occupant count per room. - rooms_per_page (positive integer or
infinity
, default: 10) - Specifies maximal number of rooms returned for a single Disco request. - rooms_in_rosters (boolean, default:
false
) - When enabled, rooms the user occupies are included in their roster. - config_schema (list; see below, default:
["roomname", "subject"]
) - A list of fields allowed in the room configuration. The field type may be specified but the default is "binary", i.e. effectively a string. WARNING! Lack of theroomname
field will cause room names in Disco results and Roster items be set to the room username. - default_config (list, default:
[{"roomname, "Untitled"}, {"subject", ""}]
) - Custom default room configuration; must be a subset of config schema. It's a list of KV tuples with string keys and values of appriopriate type. String values will be converted to binary automatically.
Config schema
Allowed config_schema
list items are (may be mixed):
- Just the field name:
"field"
- will be expanded to "field" of a typebinary
- Field name and a type:
{"field", integer}
- Field name, an atom and a type:
{"field", field, float}
- useful only for debugging or unusual applications
Example of such list: ["roomname", {"subject", binary}, {"priority", priority, integer}]
Valid config field types are:
binary
(i.e. any valid XML CDATA)integer
float
Example Configuration
{mod_muc_light, [
{host, "muclight.example.com"},
{equal_occupants, true},
{legacy_mode, true},
{rooms_per_user, 10},
{blocking, false},
{all_can_configure, true},
{all_can_invite, true},
{max_occupants, 50},
{rooms_per_page, 5},
{rooms_in_rosters, true},
{config_schema, ["roomname", {"display-lines", integer}]},
{default_config, [{"roomname", "The Room"}, {"display-lines", 30}]}
]},
Metrics
If you'd like to learn more about metrics in MongooseIM, please visit MongooseIM metrics page.
Name | Type | Description (when it gets incremented) |
---|---|---|
[global, backends, mod_muc_light, create_room] |
histogram | Time it takes to store the new room data in a DB. |
[global, backends, mod_muc_light, destroy_room] |
histogram | Time it takes to remove the room data from a DB. |
[global, backends, mod_muc_light, room_exists] |
histogram | Time it takes to check if a room exists in a DB. |
[global, backends, mod_muc_light, get_user_rooms] |
histogram | Time it takes to get a list of rooms the user is a participant of from a DB. |
[global, backends, mod_muc_light, remove_user] |
histogram | Time it takes to remove all MUC Light related user data from a DB. |
[global, backends, mod_muc_light, get_config] |
histogram | Time it takes to get the room config from a DB. |
[global, backends, mod_muc_light, set_config] |
histogram | Time it takes to set the room config in a DB. |
[global, backends, mod_muc_light, get_blocking] |
histogram | Time it takes to retrieve blocking data from a DB. |
[global, backends, mod_muc_light, set_blocking] |
histogram | Time it takes to set blocking data in a DB. |
[global, backends, mod_muc_light, get_aff_users] |
histogram | Time it takes to get an affiliated users list from a DB. |
[global, backends, mod_muc_light, modify_aff_users] |
histogram | Time it takes to update affiliations in a room in a DB. |