Update app.py
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
Reference in New Issue
Block a user