File

mod_muc_members_json/README.md @ 6057:cc665f343690

mod_firewall: SUBSCRIBED: Flip subscription check to match documentation The documentation claims that this condition checks whether the recipient is subscribed to the sender. However, it was using the wrong method, and actually checking whether the sender was subscribed to the recipient. A quick poll of folk suggested that the documentation's approach is the right one, so this should fix the code to match the documentation. This should also fix the bundled anti-spam rules from blocking presence from JIDs that you subscribe do (but don't have a mutual subscription with).
author Matthew Wild <mwild1@gmail.com>
date Fri, 22 Nov 2024 13:50:48 +0000
parent 5716:6696075e26e2
line wrap: on
line source

---
labels:
- 'Stage-Beta'
summary: 'Import MUC membership info from a JSON file'
...

Introduction
============

This module allows you to import MUC membership information from an external
URL in JSON format.

Details
=======

If you have an organization or community and lots of members and/or channels,
it can be frustrating to manage MUC affiliations manually. This module will
fetch a JSON file from a configured URL, and use that to automatically set the
MUC affiliations.

It also supports hats/badges.

Configuration
=============

Add the module to the MUC host (not the global modules\_enabled):

        Component "conference.example.com" "muc"
            modules_enabled = { "muc_members_json" }

You can define (globally or per-MUC component) the following options:

  Name                  Description
  --------------------- --------------------------------------------------
  muc_members_json_url  The URL to the JSON file describing memberships
  muc_members_json_mucs The MUCs to manage, and their associated configuration

The `muc_members_json_mucs` setting determines which rooms will be managed by
the plugin, and how to map roles to hats (if desired).

``` lua
muc_members_json_mucs = {
	-- This configures hats for the myroom@<this MUC host> MUC
	myroom = {
		-- The optional field 'member_hat' defines a hat that will be
		-- added to any user that is listed in the members JSON
		-- (regardless of what roles they have, if any)
		member_hat = {
			id = "urn:uuid:6a1b143a-1c5c-11ee-80aa-4ff1ce4867dc";
			title = "Cool Member";
		};
		-- The optional field 'team_hats' defines one or more hats
		-- that will be assigned to users that have the specified
		-- roles in the JSON.
		team_hats = {
			janitor = {
				id = "urn:uuid:ec32f550-7d5f-11ee-81ee-6b139cac3bf6";
				title = "Janitor";
			}
		}
	};
}
```

JSON format
===========

``` json
{
  "members": [
    {
      "jids": [
        "user@example.com",
        "user2@example.com"
      ]
    },
    {
      "jids": ["user3@example.com"],
      "roles": ["janitor"]
    }
  ]
}
```

The JSON format must be an object with a `members` array.

Each member must have a `jids` field, and optionally a `roles` field (both are
arrays of strings).

Compatibility
=============

  ------- ------------------
  trunk   Works
  0.12    Works
  ------- ------------------