No description
Find a file
2024-09-19 17:27:41 +02:00
synapse_invite_checker recover from failed JSON parse attempt 2024-09-19 17:27:41 +02:00
.gitignore fix .gitignore 2024-09-16 22:10:21 +02:00
pyproject.toml lower requirement to python 3.10 2024-09-16 16:35:38 +02:00
README.md update README.md 2024-09-16 20:02:36 +02:00

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. Heres 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
  ]
}