some Citadel endpoints

This commit is contained in:
2025-10-13 15:44:57 -04:00
parent 74a36e0b34
commit 753625ad5c
2 changed files with 66 additions and 4 deletions

View File

@@ -2,10 +2,9 @@ from flask import Blueprint
custom = Blueprint("custom", __name__) custom = Blueprint("custom", __name__)
# This implements custom endpoints # This implements non-standard
# used by other homeserver # endpoints created by other
# implementations. They do not start # homeserver implementations.
# with /_matrix/
from .hammerhead import hammerhead from .hammerhead import hammerhead
@@ -13,9 +12,11 @@ from .conduwuit import conduwuit
from .dendrite import dendrite from .dendrite import dendrite
from .telodendria import telo from .telodendria import telo
from .synapse import synapse from .synapse import synapse
from .citadel import citadel
custom.register_blueprint(hammerhead) custom.register_blueprint(hammerhead)
custom.register_blueprint(conduwuit) custom.register_blueprint(conduwuit)
custom.register_blueprint(dendrite) custom.register_blueprint(dendrite)
custom.register_blueprint(synapse) custom.register_blueprint(synapse)
custom.register_blueprint(citadel)
custom.register_blueprint(telo) custom.register_blueprint(telo)

61
vona/custom/citadel.py Normal file
View File

@@ -0,0 +1,61 @@
from flask import Blueprint, jsonify, request
import vona.config as config
import base64
import os
citadel = Blueprint("citadel", __name__)
# These are endpoints made by Thales Citadel
# TODO: Add more endpoints, this likely
# isn't all of them
@citadel.route("/_matrix/client/r0/citadel/stats/m.news/<event>", methods=["GET", "PUT"])
async def news_stats(event):
if request.method == "PUT":
return jsonify({"success": True})
return jsonify({
"total_clicks": config.the_funny_number,
"user_readings": config.the_funny_number
})
@citadel.route("/_matrix/client/r0/citadel/rooms/<room>/closeRoom", methods=["POST"])
async def close_room(room):
store_response = request.json.get("store_response", True)
operation_id = base64.b64encode(
bytes(
os.urandom(8).hex(),
"utf-8"
)
).decode("utf-8")[:14]
if store_response:
resp = {"operation_id": operation_id}
else:
resp = {
"operation_id": operation_id,
"previous_state": {
"progress": {
"steps": {
"step_kick_users": {
"status": "complete"
},
"step_purge_history": {
"status": "complete"
},
"step_purge_media": {
"status": "complete"
}
}
},
"status": "complete"
}
}
return jsonify(resp)