No description
synapse_invite_checker | ||
.gitignore | ||
pyproject.toml | ||
README.md |
Synapse Invite Checker Module
This is a Synapse module that checks incoming invites based on allowlist and blocklist rules. The module allows or blocks invites from certain homeservers depending on whether they appear in a dynamically fetched allowlist or blocklist JSON file.
Features
- Allowlist and Blocklist: Allows invites from homeservers in the allowlist, blocks invites from homeservers in the blocklist.
- Dynamic Fetching: The allowlist and blocklist are fetched dynamically from a provided URL, and cached.
- Support for MSC2313 Policy Rooms: This module supports fetching blocklists from MSC2313 policy rooms to block invites based on room state events.
- Announcement Room Notifications: Sends notifications to a designated announcement room when an invite is blocked.
- Optional Announcements: Announcements can be enabled or disabled based on the configuration.
Configuration
Add this module to your Synapse's homeserver.yaml
under the modules
section. Here’s an example configuration:
modules:
- module: synapse_invite_checker.InviteChecker
config:
# URL to fetch the JSON file containing the allowlist and blocklist
blocklist_allowlist_url: "https://example.com/invite-checker-lists.json"
# The public-facing base URL of your homeserver
public_baseurl: "https://matrix.example.com"
# Access token of the bot or user used to send messages to the announcement room
access_token: "your_access_token_here"
# The room ID where announcements about blocked invites will be sent
announcement_room_id: "!your_announcement_room_id:example.com"
# Enable or disable sending announcements when invites are blocked (default: false)
enable_announcement: true
# Optionally specify policy rooms for dynamic blocklist fetching via MSC2313
policy_room_ids:
- "!policy-room-1:matrix.org"
- "!policy-room-2:matrix.org"
# Whether to use the allowlist to allow certain homeservers (default: true)
use_allowlist: true
# Whether to use the blocklist to block certain homeservers (default: true)
use_blocklist: true
# List of room aliases or room IDs to block invites from (optional)
blocklist_rooms:
- "#test:matrix.org"
- "!dkgsemSiSMrGfxEwCb:ubuntu.com"
{
"use_allowlist": true,
"use_blocklist": true,
"allowlist": [
"trusted-homeserver.com",
"another-trusted-server.org"
],
"blocklist": [
"malicious-homeserver.com",
"blocked-server.org"
],
"blocklist_rooms": [
"#test:matrix.org", // Room alias to be resolved to room_id
"#private-room:example.org", // Another room alias
"!abc123:matrix.org" // Direct room ID
]
}