Implement Hammerhead debug API
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
from vona.federation import send_join
|
|
||||||
import vona.globals as globals
|
import vona.globals as globals
|
||||||
import vona.config as config
|
import vona.config as config
|
||||||
import time
|
import time
|
||||||
@@ -9,6 +8,11 @@ from flask import (
|
|||||||
jsonify,
|
jsonify,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from vona.federation import (
|
||||||
|
send_join,
|
||||||
|
bullshit,
|
||||||
|
)
|
||||||
|
|
||||||
hammerhead = Blueprint("hammerhead", __name__)
|
hammerhead = Blueprint("hammerhead", __name__)
|
||||||
|
|
||||||
# Hammerhead endpoints. Not documented, but code is at:
|
# Hammerhead endpoints. Not documented, but code is at:
|
||||||
@@ -24,6 +28,7 @@ async def uptime():
|
|||||||
async def version():
|
async def version():
|
||||||
return jsonify({"version": globals.version})
|
return jsonify({"version": globals.version})
|
||||||
|
|
||||||
|
|
||||||
@hammerhead.route("/_hammerhead/admin/reload-config")
|
@hammerhead.route("/_hammerhead/admin/reload-config")
|
||||||
async def reload_config():
|
async def reload_config():
|
||||||
return jsonify({})
|
return jsonify({})
|
||||||
@@ -61,10 +66,6 @@ async def server_info(server):
|
|||||||
|
|
||||||
@hammerhead.route("/_hammerhead/admin/rooms/<room>/state-resolver")
|
@hammerhead.route("/_hammerhead/admin/rooms/<room>/state-resolver")
|
||||||
async def room_state(room):
|
async def room_state(room):
|
||||||
class bullshit:
|
|
||||||
def get_json():
|
|
||||||
return {}
|
|
||||||
|
|
||||||
state = send_join(bullshit, room)["state"]
|
state = send_join(bullshit, room)["state"]
|
||||||
formatted_state = {}
|
formatted_state = {}
|
||||||
event_cache = {}
|
event_cache = {}
|
||||||
@@ -90,3 +91,44 @@ async def room_state(room):
|
|||||||
"room_id": room,
|
"room_id": room,
|
||||||
"room_version": globals.room_version_from_id(room)
|
"room_version": globals.room_version_from_id(room)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@hammerhead.route("/_hammerhead/admin/rooms/<room>/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
|
||||||
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user