Import configuration properly

This commit is contained in:
2025-10-13 15:20:01 -04:00
parent b178011ad9
commit 74a36e0b34

View File

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