87 lines
2.1 KiB
Python
87 lines
2.1 KiB
Python
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/<lp>", 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/<name>", 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
|
|
})
|