mod_muc_light
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
modules.mod_muc_light.host
- Syntax: string, a valid subdomain
- Default:
"muclight.@HOST@"
- Example:
host = "group.@HOST@"
Domain for the MUC Light service to reside under. @HOST@
is replaced with each served domain.
modules.mod_muc_light.backend
- Syntax: string, one of
"mnesia"
,"rdbms"
- Default:
"mnesia"
- Example:
backend = "rdbms"
Database backend to use.
modules.mod_muc_light.cache_affs.*
- Syntax: TOML section
- Default: not declared
- Example:
[modules.mod_muc_light.cache_affs]
Enables caching affiliations for rooms, this has the advantage that the list of affiliations of a given room is stored locally, instead of being fetched from the DB on each message delivered to a room. On the other hand, in an edge case of a network split when the affiliations of a room are changed, there's a risk of inconsistencies for the cache having values in one node not yet synchronised with the other.
If caching is enabled, it will spawn its own segmented cache cache. To configure the cache parameters, the same config can be stored under the cache_affs
section. To see details about the meaning of each flag, see mod_cache_users
.
1 2 3 |
|
modules.mod_muc_light.equal_occupants
- Syntax: boolean
- Default:
false
- Example:
equal_occupants = true
When enabled, MUC Light rooms won't have owners.
It means that every occupant will be a member
, even the room creator.
Warning
This option does not implicitly set all_can_invite
to true
.
If that option is set to false
, nobody will be able to join the room after the initial creation request.
modules.mod_muc_light.legacy_mode
- Syntax: boolean
- Default:
false
- Example:
legacy_mode = true
Enables XEP-0045 compatibility mode. It allows using a subset of classic MUC stanzas with some MUC Light functions limited.
modules.mod_muc_light.rooms_per_user
- Syntax: positive integer or the string
"infinity"
- Default:
"infinity"
- Example:
rooms_per_user = 100
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.
modules.mod_muc_light.blocking
- Syntax: boolean
- Default:
true
- Example:
blocking = false
Blocking feature enabled/disabled.
modules.mod_muc_light.all_can_configure
- Syntax: boolean
- Default:
false
- Example:
all_can_configure = true
When enabled, all room occupants can change all configuration options. If disabled, everyone can still change the room subject.
modules.mod_muc_light.all_can_invite
- Syntax: boolean
- Default:
false
- Example:
all_can_invite = true
When enabled, all room occupants can add new occupants to the room.
Occupants added by members
become members
as well.
modules.mod_muc_light.max_occupants
- Syntax: positive integer or the string
"infinity"
- Default:
"infinity"
- Example:
max_occupants = 100
Specifies a cap on the occupant count per room.
modules.mod_muc_light.rooms_per_page
- Syntax: positive integer or the string
"infinity"
- Default:
10
- Example:
rooms_per_page = 100
Specifies maximal number of rooms returned for a single Disco request.
modules.mod_muc_light.rooms_in_rosters
- Syntax: boolean
- Default:
false
- Example:
rooms_in_rosters = true
When enabled, rooms the user occupies are included in their roster.
modules.mod_muc_light.config_schema
- Syntax: an array of
config_schema
items, as described below - Default:
1 2 3 4 5 6 7 |
|
- Example:
1 2 3 4 |
|
Defines fields allowed in the room configuration.
Each config_schema
item is a TOML table with the following keys:
field
- mandatory, non-empty string - field name.string_value
,integer_value
,float_value
- exactly one of them has to be present, depending on the type of the field:string_value
- string,integer_value
- integer,float_value
- floating-point number.
internal_key
- optional, non-empty string - field name used in the internal representation, useful only for debugging or custom applications. By default it is the same asfield
.
Warning
Lack of the roomname
field will cause room names in Disco results and Roster items be set to the room username.
Example Configuration
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Metrics
If you'd like to learn more about metrics in MongooseIM, please visit MongooseIM metrics page.
Backend action | Description (when it gets incremented) |
---|---|
create_room |
A new room is stored in a DB. |
destroy_room |
Room data is removed from a DB. |
room_exists |
A room existence is checked. |
get_user_rooms |
A list of rooms the user is a participant of is retrieved from a DB. |
remove_user |
All MUC Light related user data is removed from a DB. |
get_config |
A room config is retrieved from a DB. |
set_config |
A room config is updated in a DB. |
get_blocking |
Blocking data is fetched from a DB. |
set_blocking |
Blocking data is updated in a DB. |
get_aff_users |
An affiliated users list is fetched from a DB. |
modify_aff_users |
Affiliations in a room are updated in a DB. |