|
|
|
|
@@ -1,24 +1,31 @@
|
|
|
|
|
from flask import Blueprint, jsonify, request, Response
|
|
|
|
|
from vona.federation import send_join
|
|
|
|
|
import vona.globals as globals
|
|
|
|
|
import vona.config as config
|
|
|
|
|
|
|
|
|
|
import base64
|
|
|
|
|
import re
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
from flask import (
|
|
|
|
|
Blueprint,
|
|
|
|
|
jsonify,
|
|
|
|
|
request,
|
|
|
|
|
Response,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
synapse = Blueprint("synapse", __name__)
|
|
|
|
|
|
|
|
|
|
# The absolute giant known as the Synapse admin API.
|
|
|
|
|
# Very messy, needs cleaning
|
|
|
|
|
# TODO: Very messy, needs cleaning
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/suspend/<user_id>", methods=["PUT"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/deactivate/<user_id>", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/reset_password/<user_id>", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/admin", methods=["PUT"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user_id>/delete_devices", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/shadow_ban", methods=["DELETE", "POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/override_ratelimit", methods=["GET", "POST", "DELETE"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/suspend/<user>", methods=["PUT"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/deactivate/<user>", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/reset_password/<user>", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/admin", methods=["PUT"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user>/delete_devices", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/shadow_ban", methods=["DELETE", "POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/override_ratelimit", methods=["GET", "POST", "DELETE"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/media/protect/<media_id>", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/media/unprotect/<media_id>", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/media/quarantine/<s>/<media_id>", methods=["POST"])
|
|
|
|
|
@@ -57,7 +64,7 @@ async def user_list():
|
|
|
|
|
"total": 1
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user_id>", methods=["GET", "PUT"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user>", methods=["GET", "PUT"])
|
|
|
|
|
async def user_info(user_id):
|
|
|
|
|
if request.method == "GET":
|
|
|
|
|
return jsonify({
|
|
|
|
|
@@ -84,7 +91,7 @@ async def user_info(user_id):
|
|
|
|
|
|
|
|
|
|
return jsonify({}), 201
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/whois/<user_id>")
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/whois/<user>")
|
|
|
|
|
async def whois(user_id):
|
|
|
|
|
return jsonify({
|
|
|
|
|
"user_id": f"@vona:{config.server_name}",
|
|
|
|
|
@@ -101,22 +108,22 @@ async def whois(user_id):
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/joined_rooms")
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/joined_rooms")
|
|
|
|
|
async def user_joined_rooms(user_id):
|
|
|
|
|
return jsonify({
|
|
|
|
|
"joined_rooms": [globals.make_event_id().replace("$", "!")],
|
|
|
|
|
"total": 1
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/sent_invite_count")
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/sent_invite_count")
|
|
|
|
|
async def invite_count(user_id):
|
|
|
|
|
return jsonify({"invite_count": config.the_funny_number})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/accountdata")
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/accountdata")
|
|
|
|
|
async def account_data(user_id):
|
|
|
|
|
return jsonify({"account_data":{"global":{}}})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/media", methods=["GET", "DELETE"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/media", methods=["GET", "DELETE"])
|
|
|
|
|
async def account_media(user_id):
|
|
|
|
|
if request.method == "GET":
|
|
|
|
|
return jsonify({
|
|
|
|
|
@@ -138,15 +145,15 @@ async def account_media(user_id):
|
|
|
|
|
"total": config.the_funny_number
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/login", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/login", methods=["POST"])
|
|
|
|
|
async def account_login(user_id):
|
|
|
|
|
return jsonify({"access_token": "vona"})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/_allow_cross_signing_replacement_without_uia", methods=["POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/_allow_cross_signing_replacement_without_uia", methods=["POST"])
|
|
|
|
|
async def stupid_mas_bullshit(user_id):
|
|
|
|
|
return jsonify({"updatable_without_uia_before_ms": config.the_funny_number})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user_id>/devices", methods=["GET", "POST"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user>/devices", methods=["GET", "POST"])
|
|
|
|
|
async def device_list(user_id):
|
|
|
|
|
if request.method == "GET":
|
|
|
|
|
return jsonify({
|
|
|
|
|
@@ -162,7 +169,7 @@ async def device_list(user_id):
|
|
|
|
|
|
|
|
|
|
return jsonify({})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user_id>/devices/<device_id>", methods=["GET", "PUT", "DELETE"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v2/users/<user>/devices/<device_id>", methods=["GET", "PUT", "DELETE"])
|
|
|
|
|
async def device_info(user_id, device_id):
|
|
|
|
|
if request.method == "GET":
|
|
|
|
|
return jsonify({
|
|
|
|
|
@@ -175,7 +182,7 @@ async def device_info(user_id, device_id):
|
|
|
|
|
|
|
|
|
|
return jsonify({})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user_id>/pushers")
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/users/<user>/pushers")
|
|
|
|
|
async def pushers(user_id):
|
|
|
|
|
return jsonify({"pushers": [], "total": config.the_funny_number})
|
|
|
|
|
|
|
|
|
|
@@ -188,7 +195,7 @@ async def username_available():
|
|
|
|
|
async def threepid(**kwargs):
|
|
|
|
|
return jsonify({"user_id": f"@vona:{config.server_name}"})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/<user_id>/redact")
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/<user>/redact")
|
|
|
|
|
async def redact(user_id):
|
|
|
|
|
return jsonify({"redact_id": os.urandom(16).hex()})
|
|
|
|
|
|
|
|
|
|
@@ -196,7 +203,7 @@ async def redact(user_id):
|
|
|
|
|
async def redact_status(redact_id):
|
|
|
|
|
return jsonify({"status":"active","failed_redactions":[]})
|
|
|
|
|
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/experimental_features/<user_id>", methods=["GET", "PUT"])
|
|
|
|
|
@synapse.route("/_synapse/admin/v1/experimental_features/<user>", methods=["GET", "PUT"])
|
|
|
|
|
async def experimental_features(user_id):
|
|
|
|
|
return jsonify({"features": {}})
|
|
|
|
|
|
|
|
|
|
|