diff --git a/vona/custom/hammerhead.py b/vona/custom/hammerhead.py index 01710e7..8a73a2f 100644 --- a/vona/custom/hammerhead.py +++ b/vona/custom/hammerhead.py @@ -1,5 +1,4 @@ from datetime import datetime, timezone -from vona.federation import send_join import vona.globals as globals import vona.config as config import time @@ -9,6 +8,11 @@ from flask import ( jsonify, ) +from vona.federation import ( + send_join, + bullshit, +) + hammerhead = Blueprint("hammerhead", __name__) # Hammerhead endpoints. Not documented, but code is at: @@ -24,6 +28,7 @@ async def uptime(): async def version(): return jsonify({"version": globals.version}) + @hammerhead.route("/_hammerhead/admin/reload-config") async def reload_config(): return jsonify({}) @@ -61,10 +66,6 @@ async def server_info(server): @hammerhead.route("/_hammerhead/admin/rooms//state-resolver") async def room_state(room): - class bullshit: - def get_json(): - return {} - state = send_join(bullshit, room)["state"] formatted_state = {} event_cache = {} @@ -90,3 +91,44 @@ async def room_state(room): "room_id": room, "room_version": globals.room_version_from_id(room) }) + + +@hammerhead.route("/_hammerhead/admin/rooms//debug") +async def debug_room(room): + state = send_join(bullshit, room)["state"] + formatted_state = {} + event_cache = {} + + for event in state: + key = f"({event["type"]},'{event["state_key"]}')" + formatted_state[key] = event + + if "event_id" in event: + event_id = event["event_id"] + else: + event_id = globals.make_ref_hash( + event, + int(globals.room_version_from_id(room)) + ) + + event_cache[event_id] = event + + + if globals.room_version_from_id(room) in ["1", "2"]: + extremity = globals.make_event_id(seed=f"6_{room}") + else: + extremity = globals.make_ref_hash( + state[5], + int(globals.room_version_from_id(room)), + ) + + + return jsonify({ + "aliases": [f"#vona:{config.server_name}"], + "current_state": formatted_state, + "event_cache": event_cache, + "room_id": room, + "room_version": globals.room_version_from_id(room), + "forward_extremities": [extremity], + "servers": None + })