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.mnesiaandrdbmsare 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_invitetotrue. 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 bymembersbecomemembersas 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 theroomnamefield 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)integerfloat
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. |