from flask import Flask, jsonify, request, redirect import vona.globals as globals from datetime import datetime import vona.config as config import threading import logging import os from vona.federation import server from vona.custom import custom from vona.identity import identity from vona.appservice import apps from vona.policy import policy from vona.client import client logging.getLogger("werkzeug").disabled = True logging.getLogger("flask").disabled = True app = Flask("vona") app.register_blueprint(identity) app.register_blueprint(policy) app.register_blueprint(client) app.register_blueprint(custom) app.register_blueprint(server) app.register_blueprint(apps) @app.before_request async def preflight(): if request.method == "OPTIONS": return "", 204 @app.after_request async def handle_logging(response): response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate" response.headers["Access-Control-Allow-Origin"] = "*" response.headers["Access-Control-Allow-Headers"] = "*" response.headers["Access-Control-Allow-Methods"] = "GET, HEAD, POST, PUT, DELETE, OPTIONS" if request.method == "OPTIONS": # Discard logs for OPTIONS return response origin = "unknown" try: if "Authorization" in request.headers: if request.headers["Authorization"].split()[0] == "X-Matrix": origin = request.headers["Authorization"].split('origin="')[1].split('"')[0] else: origin = "client" except: pass print(f'[{origin}] [{request.remote_addr}] [{datetime.now().strftime("%d/%b/%Y:%H:%M:%S")}] {request.method} {request.full_path} {response.status_code}') return response # Landing page @app.route("/") async def root(): return redirect("/_matrix/static/", 308) @app.route("/_matrix/static/") async def matrix_static(): return f'
Your Vona server is listening on this port and is ready for messages.
To use this server you\"ll need a Matrix client.
Welcome to the Matrix universe :)