Update app.py

This commit is contained in:
2026-05-05 19:53:09 +02:00
parent 353e57e605
commit b1652c3c51
+27 -4
View File
@@ -174,7 +174,7 @@ def seed_known_users():
def periodic_seed(): def periodic_seed():
while True: while True:
seed_known_users() seed_known_users()
time.sleep(300) # 5 Minuten time.sleep(300)
# ============================================================ # ============================================================
# FALLBACK CHECK # FALLBACK CHECK
@@ -218,6 +218,27 @@ def is_user_in_local_rooms(user_id: str) -> bool:
return False return False
# ============================================================
# 🔥 HYBRID DM DETECTION
# ============================================================
def is_likely_dm_event(event):
content = event.get("content", {})
# 1️⃣ offizielles Flag
if content.get("is_direct") is True:
return True
# 2️⃣ Heuristik
unsigned = event.get("unsigned", {})
state = unsigned.get("invite_room_state", [])
member_events = [
e for e in state if e.get("type") == "m.room.member"
]
return len(member_events) <= 2
# ============================================================ # ============================================================
# ROUTES # ROUTES
# ============================================================ # ============================================================
@@ -241,16 +262,18 @@ def invite(room_id, event_id):
# whitelist # whitelist
if domain in config.domain_whitelist: if domain in config.domain_whitelist:
remember_user(sender) remember_user(sender)
return forward_request("PUT", return forward_request(
"PUT",
f"{config.tuwunel_url}/_matrix/federation/v2/invite/{room_id}/{event_id}", f"{config.tuwunel_url}/_matrix/federation/v2/invite/{room_id}/{event_id}",
request.headers, payload request.headers,
payload
) )
if config.block_external_dms and is_external(sender): if config.block_external_dms and is_external(sender):
if not is_known_user(sender): if not is_known_user(sender):
# 🔥 FALLBACK CHECK # 🔥 fallback check
if is_user_in_local_rooms(sender): if is_user_in_local_rooms(sender):
remember_user(sender) remember_user(sender)
else: else: