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.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:
        [[modules.mod_muc_light.config_schema]] 
          field = "roomname"
          value = "Untitled"

        [[modules.mod_muc_light.config_schema]] 
          field = "subject"
          value = ""
  • Example:
        [[modules.mod_muc_light.config_schema]] 
          field = "display-lines"
          value = 30
          internal_key = "display_lines"
          type = "integer"

Defines fields allowed in the room configuration.

Allowed config_schema items are (may be mixed):

  • Field name and a default value. The value has to be a string. An example:
field = "field_name"
value = "default_value"
  • Field name, a default value, an internal key representation string and a type. Valid config field types are:

    • binary (i.e. any valid XML CDATA)
    • integer
    • float

Useful only for debugging or custom applications. An example:

field = "display-lines"
value = 30
internal_key = "display_lines"
type = "integer"

WARNING! Lack of the roomname field will cause room names in Disco results and Roster items be set to the room username.

Example Configuration

[modules.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

  [[modules.mod_muc_light.config_schema]] 
    field = "roomname"
    value = "The Room"

  [[modules.mod_muc_light.config_schema]] 
    field = "display-lines"
    value = 30
    internal_key = "display_lines"
    type = "integer"

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.