From 74a36e0b34c62317bfa754d94773a20af0a16223 Mon Sep 17 00:00:00 2001 From: Kierre Date: Mon, 13 Oct 2025 15:20:01 -0400 Subject: [PATCH] Import configuration properly --- vona/federation/__init__.py | 75 ++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 43 deletions(-) diff --git a/vona/federation/__init__.py b/vona/federation/__init__.py index e2a59b0..bc22519 100644 --- a/vona/federation/__init__.py +++ b/vona/federation/__init__.py @@ -1,6 +1,6 @@ from flask import jsonify, Response, request, send_file, abort, Blueprint import vona.globals as globals -from vona.config import * +import vona.config as config import json import time import os @@ -24,13 +24,13 @@ def send_join(request, roomId) -> dict: create_event = { "content": { "m.federate": True, - "creator": f"@vona:{server_name}", + "creator": f"@vona:{config.server_name}", "room_version": globals.room_version_from_id(roomId) }, "event_id": event_ids[0], "origin_server_ts": 1, "room_id": roomId, - "sender": f"@vona:{server_name}", + "sender": f"@vona:{config.server_name}", "state_key": "", "depth": 1, "type": "m.room.create", @@ -44,12 +44,12 @@ def send_join(request, roomId) -> dict: our_join = { "content": { "displayname": "Vona", - "avatar_url": f"mxc://{server_name}/cat", + "avatar_url": f"mxc://{config.server_name}/cat", "membership": "join" }, "origin_server_ts": 2, - "sender": f"@vona:{server_name}", - "state_key": f"@vona:{server_name}", + "sender": f"@vona:{config.server_name}", + "state_key": f"@vona:{config.server_name}", "type": "m.room.member", "event_id": event_ids[1], "room_id": roomId, @@ -70,17 +70,17 @@ def send_join(request, roomId) -> dict: pls = { "content": { "users": { - f"@vona:{server_name}": "100" + f"@vona:{config.server_name}": "100" } }, "origin_server_ts": 3, "room_id": roomId, - "sender": f"@vona:{server_name}", + "sender": f"@vona:{config.server_name}", "state_key": "", "type": "m.room.power_levels", "event_id": event_ids[2], "depth": 3, - "user_id": f"@vona:{server_name}", + "user_id": f"@vona:{config.server_name}", "auth_events": [ [ screate_event["event_id"], @@ -105,7 +105,7 @@ def send_join(request, roomId) -> dict: "join_rule": "public" }, "origin_server_ts": 4, - "sender": f"@vona:{server_name}", + "sender": f"@vona:{config.server_name}", "state_key": "", "type": "m.room.join_rules", "event_id": event_ids[3], @@ -140,7 +140,7 @@ def send_join(request, roomId) -> dict: }, "origin_server_ts": 5, "depth": 5, - "sender": f"@vona:{server_name}", + "sender": f"@vona:{config.server_name}", "state_key": "", "type": "m.room.guest_access", "event_id": event_ids[4], @@ -173,7 +173,7 @@ def send_join(request, roomId) -> dict: "history_visibility": "shared" }, "type": "m.room.history_visibility", - "sender": f"@vona:{server_name}", + "sender": f"@vona:{config.server_name}", "state_key": "", "origin_server_ts": 6, "depth": 6, @@ -208,7 +208,7 @@ def send_join(request, roomId) -> dict: "auth_chain": event_chain, "event": remote_join, "members_omitted": False, - "servers_in_room": [server_name], + "servers_in_room": [config.server_name], "state": event_chain } @@ -228,10 +228,10 @@ async def version(): async def keys(): return jsonify(globals.sign_json({ "old_verify_keys": {}, - "server_name": server_name, + "server_name": config.server_name, "valid_until_ts": int(time.time() * 1000 + 604800000), "verify_keys": { - f"ed25519:{signing_key.split()[1]}": { + f"ed25519:{config.signing_key.split()[1]}": { "key": globals.pubkey() } } @@ -241,7 +241,7 @@ async def keys(): async def room_query(): return jsonify({ "room_id": globals.make_event_id().replace("$", "!"), - "servers": [server_name] + "servers": [config.server_name] }) @server.route("/_matrix/federation/v1/media/download/") @@ -250,7 +250,7 @@ async def download_media(media_id): # multipart despite not even using # it for anything. Minor annoyance. - with open(cat, "rb") as img_file: + with open(config.cat, "rb") as img_file: image_data = img_file.read() boundary = "----WebKitFormBoundary7MA4YWxkTrZu0gW" response_body = ( @@ -291,7 +291,7 @@ async def make_join(roomId, userId): }), 403 try: - if roomId.split(":")[1] != server_name: + if roomId.split(":")[1] != config.server_name: return not_invited() except: return not_invited() @@ -307,10 +307,10 @@ async def make_join(roomId, userId): join = { "content": { - "join_authorised_via_users_server": f"@vona:{server_name}", + "join_authorised_via_users_server": f"@vona:{config.server_name}", "membership": "join" }, - "origin": server_name, + "origin": config.server_name, "origin_server_ts": 7, "room_id": roomId, "sender": userId, @@ -344,6 +344,7 @@ async def make_join(roomId, userId): "room_version": globals.room_version_from_id(roomId) }) + @server.route("/_matrix/federation/v1/publicRooms", methods=["POST", "GET"]) async def room_directory(): return jsonify({ @@ -386,7 +387,7 @@ async def user_profile(): field = request.args.get("field") if field: if field == "avatar_url": - return jsonify({"avatar_url":f"mxc://{server_name}/cat"}) + return jsonify({"avatar_url":f"mxc://{config.server_name}/cat"}) elif field == "displayname": return jsonify({"displayname":"Vona"}) @@ -395,31 +396,24 @@ async def user_profile(): "error": "The requested profile key does not exist." }), 404 - return jsonify({"avatar_url": f"mxc://{server_name}/cat","displayname": "Vona"}) + return jsonify({"avatar_url": f"mxc://{config.server_name}/cat","displayname": "Vona"}) -# https://spec.matrix.org/latest/server-server-api/#device-management -@server.route(f"/_matrix/federation/v1/user/devices/@/:{server_name}") +@server.route(f"/_matrix/federation/v1/user/devices/@/:{config.server_name}") @server.route("/_matrix/federation/v1/user/devices/") async def user_devices(user): return jsonify({ "devices": [], "stream_id": the_funny_number, - "user_id": f"@vona:{server_name}" + "user_id": f"@vona:{config.server_name}" }) @server.route("/_matrix/federation/v1/user/keys/query", methods=["POST"]) async def user_keys(): - try: - users = request.json["device_keys"] - except: - return jsonify({ - "errcode": "M_NOT_FOUND", - "error": "User does not exist" - }), 404 - - return jsonify({"device_keys": users}) + return jsonify({ + "device_keys": request.json.get("device_keys", {}) + }) @server.route("/_matrix/federation/v2/invite//", methods=["PUT"]) @@ -429,15 +423,10 @@ async def invite_user_v2(room, txnId): @server.route("/_matrix/federation/v1/invite//", methods=["PUT"]) async def invite_user_v1(room, txnId): - return [200, invite_user(request.data)] + return [200, invite_user(request.json)] -def invite_user(data): - try: - invite_data = json.loads(data) - except: - return jsonify({"errcode":"M_NOT_JSON","error":"Content not JSON."}), - +def invite_user(invite_data): if "event" in invite_data: if "room_version" in invite_data: if invite_data["room_version"] not in ["1", "2"]: @@ -457,7 +446,7 @@ def invite_user(data): and "state_key" in event and "room_id" in event and content["membership"] == "invite" - and event["state_key"] == f"@vona:{server_name}" + and event["state_key"] == f"@vona:{config.server_name}" ): return jsonify({ "event": globals.sign_json_without_discard(invite_data["event"]), @@ -495,7 +484,7 @@ async def backfill(room): return {} return jsonify({ - "origin": server_name, + "origin": config.server_name, "origin_server_ts": int(str(time.time() * 1000).split(".")[0]), "pdus": send_join(bullshit, room)["state"] })