Implement Telodendria admin API
This commit is contained in:
2
TODO.md
2
TODO.md
@@ -1 +1 @@
|
|||||||
- Implement Telodendria [admin API](https://git.telodendria.org/Telodendria/Telodendria/src/branch/master/docs/user/admin/README.md)
|
Nothing yet...
|
||||||
|
|||||||
@@ -10,8 +10,10 @@ custom = Blueprint("custom", __name__)
|
|||||||
|
|
||||||
from .conduwuit import conduwuit
|
from .conduwuit import conduwuit
|
||||||
from .dendrite import dendrite
|
from .dendrite import dendrite
|
||||||
|
from .telodendria import telo
|
||||||
from .synapse import synapse
|
from .synapse import synapse
|
||||||
|
|
||||||
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(telo)
|
||||||
|
|||||||
86
vona/custom/telodendria.py
Normal file
86
vona/custom/telodendria.py
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
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
|
||||||
|
})
|
||||||
@@ -9,7 +9,7 @@ import copy
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
|
|
||||||
version = "1.4.2"
|
version = "1.4.3"
|
||||||
http_client = httpx.Client(headers={"User-Agent": f"Vona/{version}"})
|
http_client = httpx.Client(headers={"User-Agent": f"Vona/{version}"})
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user