Import configuration properly
This commit is contained in:
@@ -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"]
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user