diff --git a/vona/client/__init__.py b/vona/client/__init__.py index 21ee8cc..49ada79 100644 --- a/vona/client/__init__.py +++ b/vona/client/__init__.py @@ -56,7 +56,7 @@ async def spec_versions(): @client.route("/_matrix/client/v3/admin/whois/") @client.route("/_matrix/client/r0/admin/whois/") async def whois(user): - if userId.startswith("@"): + if user.startswith("@"): return jsonify({ "devices": { "": { @@ -643,15 +643,11 @@ async def mutual_rooms(): async def presence(user): if request.method == "PUT": return jsonify({}) - - return jsonify({ - "presence": "online" - }) + + return jsonify({"presence": "online"}) +@client.route("/_matrix/client/v3/publicRooms", methods=["GET", "POST"]) @client.route("/_matrix/client/r0/publicRooms", methods=["GET", "POST"]) async def room_directory(): - return jsonify({ - "chunk": [], - "total_room_count_estimate": 0 - }) + return jsonify(globals.room_dir) diff --git a/vona/custom/synapse.py b/vona/custom/synapse.py index e6385af..b3b41d8 100644 --- a/vona/custom/synapse.py +++ b/vona/custom/synapse.py @@ -24,9 +24,9 @@ synapse = Blueprint("synapse", __name__) @synapse.route("/_synapse/admin/v1/media/unquarantine//", methods=["POST"]) @synapse.route("/_synapse/admin/v1/federation/destinations//reset_connection", methods=["POST"]) @synapse.route("/_synapse/admin/v1/rooms/") -@synapse.route("/_synapse/admin/v1/rooms//timestamp_to_event") +@synapse.route("/_synapse/admin/v1/rooms//timestamp_to_event") @synapse.route("/_synapse/admin/v2/rooms/delete_status/") -@synapse.route("/_synapse/admin/v1/rooms//make_room_admin", methods=["POST"]) +@synapse.route("/_synapse/admin/v1/rooms//make_room_admin", methods=["POST"]) async def response(**kwargs): return jsonify({}) @@ -118,9 +118,24 @@ async def account_data(user_id): @synapse.route("/_synapse/admin/v1/users//media", methods=["GET", "DELETE"]) async def account_media(user_id): if request.method == "GET": - return jsonify({"media": [{"created_ts":config.the_funny_number,"last_access_ts":config.the_funny_number,"media_id":"cat","media_length":config.the_funny_number,"media_type":"image/jpeg","quarantined_by":"null","safe_from_quarantine":False,"upload_name":"cat.jpg"}], "total": config.the_funny_number}) + return jsonify({ + "media": [{ + "created_ts": config.the_funny_number, + "last_access_ts": config.the_funny_number, + "media_id": "cat", + "media_length": config.the_funny_number, + "media_type": "image/jpeg", + "quarantined_by": None, + "safe_from_quarantine": False, + "upload_name": "cat.jpg" + }], + "total": config.the_funny_number + }) - return jsonify({"deleted_media": ["cat"], "total": config.the_funny_number}) + return jsonify({ + "deleted_media": ["cat"], + "total": config.the_funny_number + }) @synapse.route("/_synapse/admin/v1/users//login", methods=["POST"]) async def account_login(user_id): @@ -137,7 +152,7 @@ async def device_list(user_id): "devices": [{ "device_id": "VVOONNAA", "display_name": "Vona", - "last_seen_ip": "127.0.0.1", + "last_seen_ip": config.addr, "last_seen_ts": config.the_funny_number, "last_seen_user_agent": f"Vona/{globals.version}" }], @@ -152,7 +167,7 @@ async def device_info(user_id, device_id): return jsonify({ "device_id": "VVOONNAA", "display_name": "Vona", - "last_seen_ip": "127.0.0.1", + "last_seen_ip": config.addr, "last_seen_ts": config.the_funny_number, "last_seen_user_agent": f"Vona/{globals.version}" }) @@ -169,11 +184,11 @@ async def username_available(): @synapse.route("/_synapse/admin/v1/threepid//users/") @synapse.route("/_synapse/admin/v1/auth_providers//users/") -async def threepid(p, a): +async def threepid(**kwargs): return jsonify({"user_id": f"@vona:{config.server_name}"}) @synapse.route("/_synapse/admin/v1//redact") -def redact(user_id): +async def redact(user_id): return jsonify({"redact_id": os.urandom(16).hex()}) @synapse.route("/_synapse/admin/v1/user/redact_status/") @@ -191,8 +206,8 @@ async def register(): return jsonify({"access_token": "vona"}) -@synapse.route("/_synapse/admin/v1/join/", methods=["POST"]) -async def membership_manipulation(roomId): +@synapse.route("/_synapse/admin/v1/join/", methods=["POST"]) +async def membership_manipulation(room): return jsonify({"room_id": globals.make_event_id().replace("$", "!")}) @synapse.route("/_synapse/admin/v1/account_validity/validity", methods=["POST"]) @@ -204,8 +219,8 @@ async def account_validity(): async def server_notice(**kwargs): return jsonify({"event_id": globals.make_event_id()}) -@synapse.route("/_synapse/admin/v1/purge_history//", methods=["POST"]) -@synapse.route("/_synapse/admin/v1/purge_history/", methods=["POST"]) +@synapse.route("/_synapse/admin/v1/purge_history//", methods=["POST"]) +@synapse.route("/_synapse/admin/v1/purge_history/", methods=["POST"]) async def purge_event(**kwargs): return jsonify({"purge_id": os.urandom(16).hex()}) @@ -213,12 +228,12 @@ async def purge_event(**kwargs): async def purge_status(purge_id): return jsonify({"status":"active"}) -@synapse.route("/_synapse/admin/v1/room//media") -async def room_media(room_id): +@synapse.route("/_synapse/admin/v1/room//media") +async def room_media(room): return jsonify({"local": [f"mxc://{config.server_name}/cat"], "remote": []}) -@synapse.route("/_synapse/admin/v1/room//media/quarantine", methods=["POST"]) -async def quarantine_room_media(room_id): +@synapse.route("/_synapse/admin/v1/room//media/quarantine", methods=["POST"]) +async def quarantine_room_media(room): return jsonify({"num_quarantined": config.the_funny_number}) @synapse.route("/_synapse/admin/v1/media//delete", methods=["POST"]) @@ -233,7 +248,15 @@ async def delete_remote_media(): @synapse.route("/_synapse/admin/v1/statistics/users/media") async def media_stats(): - return jsonify({"users":[{"displayname":"Vona","media_count":config.the_funny_number,"media_length":config.the_funny_number,"user_id":f"@vona:{config.server_name}"}],"total":config.the_funny_number}) + return jsonify({ + "users": [{ + "displayname": "Vona", + "media_count": config.the_funny_number, + "media_length": config.the_funny_number, + "user_id": f"@vona:{config.server_name}" + }], + "total": config.the_funny_number + }) @synapse.route("/_synapse/admin/v1/statistics/database/rooms") async def room_stats(): @@ -302,7 +325,7 @@ async def interact_with_reported_event(report_id): @synapse.route("/_synapse/admin/v1/federation/destinations") async def federation_destinations(): return jsonify({ - "destinations": [{}], + "destinations": [], "total": 0 }) @@ -366,7 +389,7 @@ async def rooms(): "total_rooms": 0 }) -@synapse.route("/_synapse/admin/v1/rooms//members") +@synapse.route("/_synapse/admin/v1/rooms//members") async def room_members(room): return jsonify({ "members": [ @@ -375,11 +398,11 @@ async def room_members(room): "total": 1 }) -@synapse.route("/_synapse/admin/v1/rooms//state") +@synapse.route("/_synapse/admin/v1/rooms//state") async def room_state(room): return jsonify({"state": []}) -@synapse.route("/_synapse/admin/v1/rooms//state") +@synapse.route("/_synapse/admin/v1/rooms//state") async def room_messages(room): return jsonify({ "chunk": [], @@ -387,11 +410,11 @@ async def room_messages(room): "start": "vona" }) -@synapse.route("/_synapse/admin/v1/rooms//block", methods=["GET", "PUT"]) +@synapse.route("/_synapse/admin/v1/rooms//block", methods=["GET", "PUT"]) async def block_room(room): return jsonify({"block": False}) -@synapse.route("/_synapse/admin/v1/rooms/", methods=["DELETE"]) +@synapse.route("/_synapse/admin/v1/rooms/", methods=["DELETE"]) async def room_delete(room): return jsonify({ "kicked_users": [ @@ -399,18 +422,18 @@ async def room_delete(room): ], "failed_to_kick_users": [], "local_aliases": [], - "new_room_id": f"!vona:{config.server_name}" + "new_room_id": globals.make_event_id(seed=room) }) -@synapse.route("/_synapse/admin/v2/rooms/", methods=["DELETE"]) +@synapse.route("/_synapse/admin/v2/rooms/", methods=["DELETE"]) async def room_delete_v2(room): return jsonify({"delete_id": "vona"}) -@synapse.route("/_synapse/admin/v2/rooms//delete_status") +@synapse.route("/_synapse/admin/v2/rooms//delete_status") async def room_delete_status(room): return jsonify({"results": []}) -@synapse.route("/_synapse/admin/v1/rooms//forward_extremities", methods=["GET"]) +@synapse.route("/_synapse/admin/v1/rooms//forward_extremities", methods=["GET"]) async def forward_extremities(room): if request.method == "DELETE": return jsonify({"deleted": 0}) diff --git a/vona/federation/__init__.py b/vona/federation/__init__.py index 18f1abc..2174473 100644 --- a/vona/federation/__init__.py +++ b/vona/federation/__init__.py @@ -347,10 +347,7 @@ async def make_join(roomId, userId): @server.route("/_matrix/federation/v1/publicRooms", methods=["POST", "GET"]) async def room_directory(): - return jsonify({ - "chunk": [], - "total_room_count_estimate": 0 - }) + return jsonify(globals.room_dir) # https://spec.matrix.org/latest/server-server-api/#transactions diff --git a/vona/globals/__init__.py b/vona/globals/__init__.py index 622521c..ef8a777 100644 --- a/vona/globals/__init__.py +++ b/vona/globals/__init__.py @@ -254,3 +254,19 @@ def room_version_from_id(room_id): return most_common[0] if most_common else None return most_common_character(nums)[0] + +room_dir = { + "chunk": [{ + "avatar_url": f"mxc://{config.server_name}/cat", + "guest_can_join": False, + "join_rule": "public", + "name": "Vona", + "num_joined_members": 1, + "room_id": make_event_id().replace("$", "!"), + "room_type": "m.room", + "topic": "", + "world_readable": False, + "via": [config.server_name] + }], + "total_room_count_estimate": 1 +}