Privileges

Note

Setting up slidge as a privileged entity (XEP-0356) is recommended for the user experience, but it can only work of the XMPP user account is on the same server as slidge.

With privileges, slidge can:

  • automatically add/remove “puppet contacts” from the XMPP roster of slidge users

  • reflect on the XMPP side messages sent by users via a non-XMPP client, such official apps of the legacy service

  • synchronize other actions done via a non-XMPP client, such as read state, emoji reactions, retractions, etc.

  • automatically add XMPP bookmarks (XEP-0402) for MUCs (XEP-0045)

Privileges with Prosody

mod_privilege installation

Starting with prosody 0.12, installing the mod_privilege community module is as easy as:

prosodyctl install --server=https://modules.prosody.im/rocks/ mod_privilege

Privileges configuration

In prosody.cfg.lua, add mod_privilege to the modules_enabled list.

Define the gateway component’s privileges in the appropriate virtualhost block:

VirtualHost "example.org"
  privileged_entities = {
    ["superduper.example.org"] = {
      roster = "both";
      message = "outgoing";
      iq = {
        ["http://jabber.org/protocol/pubsub"] = "both";
        ["http://jabber.org/protocol/pubsub#owner"] = "set";
      };
    }
  }

Then either restart the prosody server, or reload config. You might need to use mod_reload_component, and activate/deactivate hosts for all changes to be taken into account (restarting prosody is the easiest way to go).

Privileges with ejabberd

Warning

If you want to set up privileges, you need ejabberd with version 23.10 or newer because of these two issues: https://github.com/processone/ejabberd/issues/3990 and https://github.com/processone/ejabberd/issues/3942

acl:
  slidge_acl:
    server:
    # Make sure to include all of your slidge bridges that need privileges here:
      - "superduper.example.org"
      - "other-walled-garden.example.org"

access_rules:
  slidge_rule:
    - allow: slidge_acl

modules:
  mod_privilege:
    roster:
      both: slidge_rule
    message:
      outgoing: slidge_rule
  mod_roster:
    versioning: true