跳转到主要内容

为Tchap定制的房间访问规则

项目描述

房间访问规则

此模块实现了对 im.vector.room.access_rules 状态事件的处理。下面描述了此事件的规范。

im.vector.room.access_rules

基于所选预设限制对房间的访问。主体

{
    "rule": "<rule>"
}

<rule>restrictedunrestricteddirect 之一。

不同预设的实现位于 synapse.third_party_rules.access_rules 模块中。

restricted 预设

非直接房间(即未使用 "is_direct": true 创建的房间)的默认预设。

禁止对属于模块配置中提供的黑名单服务器(domains_forbidden_when_restricted)的用户进行任何邀请和成员更新。如果邀请是 3PID 邀请,则查询配置的身份服务器的自定义 /_matrix/identity/api/v1/info 端点,以检查被邀请的电子邮件地址是否属于黑名单服务器,在这种情况下,邀请将被拒绝。

unrestricted 预设

不对谁可以加入房间进行任何限制。

禁止任何 m.room.power_levels 事件,该事件会:

  • users_default 权力级别更改为非 0 值,或
  • 将来自黑名单服务器(有关 restricted 预设的详细信息)的用户的权力级别更改为非默认值

direct 预设

直接房间(即使用 "is_direct": true 创建的房间)的默认预设。

通过为每种类型的 m.room.memberm.room.third_party_invite 事件运行以下算法,只允许房间中有两个成员

  1. 从房间状态中检索成员资格列表和 3PID 邀请令牌,这在实践中意味着检索房间状态中每个 m.room.memberm.room.third_party_invite 事件的状态键(忽略内容为空的 3PID 邀请事件)

  2. 如果事件是 m.room.third_party_invite 类型,并且房间状态中已有相同类型的事件,如果新事件的状态键不匹配现有事件之一的状态键,则拒绝新事件。

  3. 否则,如果房间中已有两个成员

    2.1. 如果事件是 3PID 邀请,则拒绝它

    2.2. 如果事件是成员资格更新,如果目标不是房间的当前成员之一,则拒绝它

  4. else,如果房间状态中有一个成员资格事件和一个 3PID 邀请

    3.1. 如果事件是成员资格事件,如果它不是从房间状态中的 3PID 邀请交换的邀请,则拒绝它

    3.2. 否则,拒绝事件

  5. else,接受事件

还禁止向房间发送类型为 m.room.namem.room.avatar_urlm.room.topic 的事件。

m.room.join_rules 的交互

当房间的预设不是 restricted 时,禁止将房间的加入规则更改为 public。这是为了确保黑名单服务器(有关 restricted 预设的详细信息)的用户除非被邀请,否则不能加入房间。

安装

待办事项

配置

将以下内容添加到您的 Synapse 配置中

modules:
  - module: room_access_rules.RoomAccessRules
    config:
        # List of domains (server names) that can't be invited to rooms if the
        # "restricted" rule is set. Defaults to an empty list.
        domains_forbidden_when_restricted: []
    
        # Identity server to use when checking the homeserver an email address belongs to
        # using the /info endpoint. Required.
        id_server: "vector.im"

开发和测试

此存储库使用 tox 运行测试。

测试

此存储库使用 unittest 运行位于 tests 目录中的测试。可以使用 tox -e tests 运行它们。

发布版本

git tag -s vX.Y
python3 setup.py sdist
twine upload dist/synapse-room-access-rules-X.Y.tar.gz
git push origin vX.Y

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

synapse-room-access-rules-1.0.0.tar.gz (19.2 kB 查看哈希值)

上传时间 源代码

由以下机构支持