Allow filtering direct chats with filter config (#892)
This commit is contained in:
@@ -205,6 +205,7 @@ class Config(BaseBridgeConfig):
|
|||||||
|
|
||||||
copy("bridge.filter.mode")
|
copy("bridge.filter.mode")
|
||||||
copy("bridge.filter.list")
|
copy("bridge.filter.list")
|
||||||
|
copy("bridge.filter.users")
|
||||||
|
|
||||||
copy("bridge.command_prefix")
|
copy("bridge.command_prefix")
|
||||||
|
|
||||||
|
|||||||
@@ -483,7 +483,6 @@ bridge:
|
|||||||
# Filter rooms that can/can't be bridged. Can also be managed using the `filter` and
|
# Filter rooms that can/can't be bridged. Can also be managed using the `filter` and
|
||||||
# `filter-mode` management commands.
|
# `filter-mode` management commands.
|
||||||
#
|
#
|
||||||
# Filters do not affect direct chats.
|
|
||||||
# An empty blacklist will essentially disable the filter.
|
# An empty blacklist will essentially disable the filter.
|
||||||
filter:
|
filter:
|
||||||
# Filter mode to use. Either "blacklist" or "whitelist".
|
# Filter mode to use. Either "blacklist" or "whitelist".
|
||||||
@@ -492,6 +491,11 @@ bridge:
|
|||||||
mode: blacklist
|
mode: blacklist
|
||||||
# The list of group/channel IDs to filter.
|
# The list of group/channel IDs to filter.
|
||||||
list: []
|
list: []
|
||||||
|
# How to handle direct chats:
|
||||||
|
# If users is "null", direct chats will follow the previous settings.
|
||||||
|
# If users is "true", direct chats will always be bridged.
|
||||||
|
# If users is "false", direct chats will never be bridged.
|
||||||
|
users: true
|
||||||
|
|
||||||
# The prefix for commands. Only required in non-management rooms.
|
# The prefix for commands. Only required in non-management rooms.
|
||||||
command_prefix: "!tg"
|
command_prefix: "!tg"
|
||||||
|
|||||||
@@ -281,6 +281,7 @@ class Portal(DBPortal, BasePortal):
|
|||||||
# Config cache
|
# Config cache
|
||||||
filter_mode: str
|
filter_mode: str
|
||||||
filter_list: list[int]
|
filter_list: list[int]
|
||||||
|
filter_users: bool | None
|
||||||
|
|
||||||
max_initial_member_sync: int
|
max_initial_member_sync: int
|
||||||
sync_channel_members: bool
|
sync_channel_members: bool
|
||||||
@@ -455,8 +456,8 @@ class Portal(DBPortal, BasePortal):
|
|||||||
def allow_bridging(self) -> bool:
|
def allow_bridging(self) -> bool:
|
||||||
if self._bridging_blocked_at_runtime:
|
if self._bridging_blocked_at_runtime:
|
||||||
return False
|
return False
|
||||||
elif self.peer_type == "user":
|
elif self.peer_type == "user" and self.filter_users is not None:
|
||||||
return True
|
return self.filter_users
|
||||||
elif self.filter_mode == "whitelist":
|
elif self.filter_mode == "whitelist":
|
||||||
return self.tgid in self.filter_list
|
return self.tgid in self.filter_list
|
||||||
elif self.filter_mode == "blacklist":
|
elif self.filter_mode == "blacklist":
|
||||||
@@ -487,6 +488,7 @@ class Portal(DBPortal, BasePortal):
|
|||||||
cls.private_chat_portal_meta = cls.config["bridge.private_chat_portal_meta"]
|
cls.private_chat_portal_meta = cls.config["bridge.private_chat_portal_meta"]
|
||||||
cls.filter_mode = cls.config["bridge.filter.mode"]
|
cls.filter_mode = cls.config["bridge.filter.mode"]
|
||||||
cls.filter_list = cls.config["bridge.filter.list"]
|
cls.filter_list = cls.config["bridge.filter.list"]
|
||||||
|
cls.filter_users = cls.config["bridge.filter.filter_users"]
|
||||||
cls.hs_domain = cls.config["homeserver.domain"]
|
cls.hs_domain = cls.config["homeserver.domain"]
|
||||||
cls.backfill_msc2716 = cls.config["bridge.backfill.msc2716"]
|
cls.backfill_msc2716 = cls.config["bridge.backfill.msc2716"]
|
||||||
cls.backfill_enable = cls.config["bridge.backfill.enable"]
|
cls.backfill_enable = cls.config["bridge.backfill.enable"]
|
||||||
|
|||||||
Reference in New Issue
Block a user