From eb3c2015c33746597695d82946549d728eee492b Mon Sep 17 00:00:00 2001 From: Kierre Date: Wed, 1 Oct 2025 11:06:58 -0400 Subject: [PATCH] Make Vona a Python module --- .hgignore | 3 ++- TODO.txt | 1 - pyproject.toml | 19 +++++++++++++++++++ requirements.txt | 2 -- vona/__init__.py | 1 + src/main.py => vona/__main__.py | 16 ++++++++-------- .../appservice/__init__.py | 2 +- src/c2s.py => vona/client/__init__.py | 17 +++++++++++------ src/config.py => vona/config/__init__.py | 0 vona/config/__main__.py | 1 + src/custom.py => vona/custom/__init__.py | 4 ++-- src/s2s.py => vona/federation/__init__.py | 6 +++--- src/globals.py => vona/globals/__init__.py | 5 +++-- src/identity.py => vona/identity/__init__.py | 2 +- src/policy.py => vona/policy/__init__.py | 0 cmd/generate_key.py => vona/utils/makekey.py | 0 16 files changed, 52 insertions(+), 27 deletions(-) delete mode 100644 TODO.txt create mode 100644 pyproject.toml delete mode 100644 requirements.txt create mode 100644 vona/__init__.py rename src/main.py => vona/__main__.py (93%) rename src/appservice.py => vona/appservice/__init__.py (96%) rename src/c2s.py => vona/client/__init__.py (98%) rename src/config.py => vona/config/__init__.py (100%) create mode 100644 vona/config/__main__.py rename src/custom.py => vona/custom/__init__.py (99%) rename src/s2s.py => vona/federation/__init__.py (99%) rename src/globals.py => vona/globals/__init__.py (97%) rename src/identity.py => vona/identity/__init__.py (98%) rename src/policy.py => vona/policy/__init__.py (100%) rename cmd/generate_key.py => vona/utils/makekey.py (100%) diff --git a/.hgignore b/.hgignore index 01a822d..723d090 100644 --- a/.hgignore +++ b/.hgignore @@ -1,2 +1,3 @@ __pycache__ -servers.json \ No newline at end of file +servers.json +poetry.lock diff --git a/TODO.txt b/TODO.txt deleted file mode 100644 index 7e38f99..0000000 --- a/TODO.txt +++ /dev/null @@ -1 +0,0 @@ -- make Vona a proper Python project diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..43e578e --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,19 @@ +[project] +name = "vona" +version = "1.4.1" +description = "Flazing bast Matrix homeserver" +authors = [ + {name = "Kierre",email = "vel@riseup.net"} +] +license = {text = "Velicense"} +requires-python = ">=3.13" +dependencies = [ + "httpx (>=0.28.1,<0.29.0)", + "pynacl (>=1.6.0,<2.0.0)", + "flask[async] (>=3.1.2,<4.0.0)", +] + + +[build-system] +requires = ["poetry-core>=2.0.0,<3.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index a143bb3..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -flask[async] -nacl diff --git a/vona/__init__.py b/vona/__init__.py new file mode 100644 index 0000000..7e98d8f --- /dev/null +++ b/vona/__init__.py @@ -0,0 +1 @@ +# read __main__.py diff --git a/src/main.py b/vona/__main__.py similarity index 93% rename from src/main.py rename to vona/__main__.py index 2f1ffdc..0f5adf8 100644 --- a/src/main.py +++ b/vona/__main__.py @@ -1,15 +1,15 @@ from flask import Flask, jsonify, request, redirect +import vona.globals as globals from datetime import datetime +import vona.config as config import logging -import globals -import config -from identity import identity -from appservice import apps -from custom import custom -from policy import policy -from c2s import client -from s2s import server +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 diff --git a/src/appservice.py b/vona/appservice/__init__.py similarity index 96% rename from src/appservice.py rename to vona/appservice/__init__.py index 0cdc1e0..d90a2d2 100644 --- a/src/appservice.py +++ b/vona/appservice/__init__.py @@ -1,5 +1,5 @@ from flask import Blueprint, jsonify -from config import the_funny_number +from vona.config import the_funny_number import asyncio apps = Blueprint("appservice", __name__) diff --git a/src/c2s.py b/vona/client/__init__.py similarity index 98% rename from src/c2s.py rename to vona/client/__init__.py index 898a2a7..96348ea 100644 --- a/src/c2s.py +++ b/vona/client/__init__.py @@ -1,8 +1,8 @@ from flask import Blueprint, jsonify, request, send_file -from s2s import send_join -import globals +from vona.federation import send_join +import vona.globals as globals +import vona.config as config import asyncio -import config import random import os @@ -26,6 +26,7 @@ client = Blueprint("c2s", __name__) @client.route("/_matrix/client/r0/rooms//leave", methods=["POST"]) @client.route("/_matrix/client/v3/rooms//read_markers", methods=["POST"]) @client.route("/_matrix/client/r0/rooms//read_markers", methods=["POST"]) +@client.route("/_matrix/client/v3/rooms//typing/", methods=["PUT"]) @client.route("/_matrix/client/v3/keys/device_signing/upload", methods=["POST"]) @client.route("/_matrix/client/v3/rooms//receipt//", methods=["POST"]) @client.route("/_matrix/client/v3/users//report", methods=["POST"]) @@ -434,7 +435,6 @@ async def refresh(): @client.route("/_matrix/client/unstable/im.nheko.summary/summary/") @client.route("/_matrix/client/v1/room_summary/") async def room_summary(roomId): - room = config.room_dir_room["chunk"][0] return jsonify({ "room_id": globals.make_event_id().replace("$", "!"), "avatar_url": f"mxc://{config.server_name}/cat", @@ -614,8 +614,13 @@ async def room_messages(roomId): @client.route("/_matrix/client/v3/keys/query", methods=["POST"]) @client.route("/_matrix/client/r0/keys/query", methods=["POST"]) async def query_keys(): - # Should be replaced eventually - return jsonify({}) + user = request.get_json()["device_keys"] + return jsonify({ + "device_keys": user, + "master_keys": user, + "self_signing_keys": user, + "user_signing_keys": user + }) @client.route("/_matrix/client/api/v1/createRoom", methods=["POST"]) @client.route("/_matrix/client/v3/createRoom", methods=["POST"]) diff --git a/src/config.py b/vona/config/__init__.py similarity index 100% rename from src/config.py rename to vona/config/__init__.py diff --git a/vona/config/__main__.py b/vona/config/__main__.py new file mode 100644 index 0000000..c56b35b --- /dev/null +++ b/vona/config/__main__.py @@ -0,0 +1 @@ +import vona.config \ No newline at end of file diff --git a/src/custom.py b/vona/custom/__init__.py similarity index 99% rename from src/custom.py rename to vona/custom/__init__.py index 5e7f8ea..39eb2bc 100644 --- a/src/custom.py +++ b/vona/custom/__init__.py @@ -1,6 +1,6 @@ from flask import Blueprint, jsonify, request, Response -import globals -import config +import vona.globals as globals +import vona.config as config import base64 import re import os diff --git a/src/s2s.py b/vona/federation/__init__.py similarity index 99% rename from src/s2s.py rename to vona/federation/__init__.py index bc17984..d2d928e 100644 --- a/src/s2s.py +++ b/vona/federation/__init__.py @@ -1,12 +1,12 @@ from flask import jsonify, Response, request, send_file, abort, Blueprint -from config import * -import globals +from vona.config import * +import vona.globals as globals import httpx import json import time import os -server = Blueprint("s2s", __name__) +server = Blueprint("federation", __name__) def send_join(request, roomId) -> dict: diff --git a/src/globals.py b/vona/globals/__init__.py similarity index 97% rename from src/globals.py rename to vona/globals/__init__.py index 0ebbc6d..9c2c5f5 100644 --- a/src/globals.py +++ b/vona/globals/__init__.py @@ -1,13 +1,14 @@ +from importlib.metadata import version +import vona.config as config import nacl.signing import hashlib import base64 -import config import random import copy import json import re -vona_version = "1.4.1" +vona_version = version("vona") def canonical_json(value): diff --git a/src/identity.py b/vona/identity/__init__.py similarity index 98% rename from src/identity.py rename to vona/identity/__init__.py index 46b7a9d..e252f48 100644 --- a/src/identity.py +++ b/vona/identity/__init__.py @@ -1,5 +1,5 @@ from flask import Blueprint, jsonify, request -from config import server_name, the_funny_number +from vona.config import server_name, the_funny_number import time identity = Blueprint("identity", __name__) diff --git a/src/policy.py b/vona/policy/__init__.py similarity index 100% rename from src/policy.py rename to vona/policy/__init__.py diff --git a/cmd/generate_key.py b/vona/utils/makekey.py similarity index 100% rename from cmd/generate_key.py rename to vona/utils/makekey.py