from flask import Blueprint, request, jsonify from vona.globals import version import vona.config as config telo = Blueprint("telodendria", __name__) # The telodendria admin API as specified by # https://git.telodendria.org/Telodendria/Telodendria/src/branch/master/docs/user/admin/README.md @telo.route("/_telodendria/admin/v1/restart", methods=["POST"]) @telo.route("/_telodendria/admin/v1/shutdown", methods=["POST"]) async def process_management(**kwargs): return jsonify({}) @telo.route("/_telodendria/admin/v1/privileges/", methods=["GET", "PUT", "POST", "DELETE"]) @telo.route("/_telodendria/admin/v1/privileges/", methods=["GET", "POST"]) async def privileges(lp=None): return jsonify({ "privileges": [ "GRANT_PRIVILEGES", "PROC_CONTROL", "ISSUE_TOKENS", "DEACTIVATE", "CONFIG", "ALIAS", "ALL" ] }) @telo.route("/_telodendria/admin/v1/config", methods=["GET", "PUT", "POST"]) async def configuration(): if request.method == "GET": return jsonify({ "listen": [ { "tls": None, "port": config.port, "threads": 1, "maxConnections": 32 } ], "serverName": config.server_name, "pid": "/dev/null", "baseUrl": f"https://{config.server_name}/", "identityServer": f"https://{config.server_name}/", "runAs": None, "federation": True, "registration": config.users_can_register, "log": { "output": "stdout", "level": "message", "timestampFormat": "default", "color": True }, "maxCache": config.the_funny_number }) return jsonify({"restart_required": True}) @telo.route("/_telodendria/admin/v1/stats") async def stats(): return jsonify({ "memory_allocated": config.the_funny_number, "version": version }) @telo.route("/_telodendria/admin/v1/tokens/", methods=["GET", "DELETE"]) @telo.route("/_telodendria/admin/v1/tokens", methods=["GET", "POST"]) async def tokens(name=None): if request.method == "DELETE": return jsonify({}) return jsonify({ "name": "vona", "created_by": "vona", "created_on": config.the_funny_number, "expires_on": config.the_funny_number, "used": config.the_funny_number, "uses": config.the_funny_number })