Update app.py
This commit is contained in:
@@ -174,7 +174,7 @@ def seed_known_users():
|
||||
def periodic_seed():
|
||||
while True:
|
||||
seed_known_users()
|
||||
time.sleep(300) # 5 Minuten
|
||||
time.sleep(300)
|
||||
|
||||
# ============================================================
|
||||
# FALLBACK CHECK
|
||||
@@ -218,6 +218,27 @@ def is_user_in_local_rooms(user_id: str) -> bool:
|
||||
|
||||
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
|
||||
# ============================================================
|
||||
@@ -241,16 +262,18 @@ def invite(room_id, event_id):
|
||||
# whitelist
|
||||
if domain in config.domain_whitelist:
|
||||
remember_user(sender)
|
||||
return forward_request("PUT",
|
||||
return forward_request(
|
||||
"PUT",
|
||||
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 not is_known_user(sender):
|
||||
|
||||
# 🔥 FALLBACK CHECK
|
||||
# 🔥 fallback check
|
||||
if is_user_in_local_rooms(sender):
|
||||
remember_user(sender)
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user