This commit is contained in:
2025-10-18 17:16:41 -04:00
parent 6056268a2e
commit 647916b749
2 changed files with 48 additions and 5 deletions

View File

@@ -231,7 +231,13 @@ async def capabilities():
"9": "stable", "9": "stable",
"10": "stable", "10": "stable",
"11": "stable", "11": "stable",
"12": "stable" "12": "stable",
"org.matrix.msc3757.10": "stable",
"org.matrix.msc3757.11": "stable",
"org.matrix.hydra.11": "stable",
"org.matrix.msc3667": "stable",
"org.matrix.msc3787": "stable",
"org.matrix.msc4014": "unstable",
}, },
"org.matrix.msc3244.room_capabilities": { "org.matrix.msc3244.room_capabilities": {
"knock": { "knock": {
@@ -461,6 +467,7 @@ async def room_query(room):
return jsonify({}) return jsonify({})
@client.route("/_matrix/client/v3/rooms/<room>/aliases") @client.route("/_matrix/client/v3/rooms/<room>/aliases")
async def room_aliases(room): async def room_aliases(room):
return jsonify({ return jsonify({
@@ -475,6 +482,7 @@ async def room_aliases(room):
async def room_visibility(room): async def room_visibility(room):
return jsonify({"visibility": "public"}) return jsonify({"visibility": "public"})
@client.route("/_matrix/client/v3/search", methods=["POST"]) @client.route("/_matrix/client/v3/search", methods=["POST"])
async def search(): async def search():
room = globals.make_event_id().replace("$", "!") room = globals.make_event_id().replace("$", "!")
@@ -546,6 +554,7 @@ async def url_preview():
"og:title": "cool cat" "og:title": "cool cat"
}) })
@client.route("/_matrix/client/v1/media/preview_url") @client.route("/_matrix/client/v1/media/preview_url")
async def media_preview(): async def media_preview():
response = send_file(config.cat) response = send_file(config.cat)
@@ -553,6 +562,7 @@ async def media_preview():
response.headers["Content-Type"] = "image/jpg" response.headers["Content-Type"] = "image/jpg"
return response return response
@client.route("/_matrix/media/v3/upload", methods=["POST"]) @client.route("/_matrix/media/v3/upload", methods=["POST"])
@client.route("/_matrix/media/r0/upload", methods=["POST"]) @client.route("/_matrix/media/r0/upload", methods=["POST"])
@client.route("/_matrix/media/v1/create", methods=["POST"]) @client.route("/_matrix/media/v1/create", methods=["POST"])
@@ -581,6 +591,7 @@ async def profile_keys(userId, key):
return jsonify({}) return jsonify({})
@client.route("/_matrix/client/v3/profile/<userId>") @client.route("/_matrix/client/v3/profile/<userId>")
@client.route("/_matrix/client/r0/profile/<userId>") @client.route("/_matrix/client/r0/profile/<userId>")
async def user_profile(userId): async def user_profile(userId):
@@ -611,6 +622,7 @@ async def room_messages(roomId):
"start": f"{os.urandom(16).hex()}" "start": f"{os.urandom(16).hex()}"
}) })
@client.route("/_matrix/client/v3/keys/query", methods=["POST"]) @client.route("/_matrix/client/v3/keys/query", methods=["POST"])
@client.route("/_matrix/client/r0/keys/query", methods=["POST"]) @client.route("/_matrix/client/r0/keys/query", methods=["POST"])
async def query_keys(): async def query_keys():
@@ -622,6 +634,7 @@ async def query_keys():
"user_signing_keys": user "user_signing_keys": user
}) })
@client.route("/_matrix/client/api/v1/createRoom", methods=["POST"]) @client.route("/_matrix/client/api/v1/createRoom", methods=["POST"])
@client.route("/_matrix/client/v3/createRoom", methods=["POST"]) @client.route("/_matrix/client/v3/createRoom", methods=["POST"])
@client.route("/_matrix/client/r0/createRoom", methods=["POST"]) @client.route("/_matrix/client/r0/createRoom", methods=["POST"])

View File

@@ -1,10 +1,32 @@
from resolvematrix import ServerResolver
import urllib.parse, time, json, httpx import urllib.parse, time, json, httpx
import vona.globals as globals import vona.globals as globals
import vona.config as config import vona.config as config
http_client = globals.http_client() http_client = globals.http_client()
versions = [
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"org.matrix.msc3757.10",
"org.matrix.msc3757.11",
"org.matrix.hydra.11",
"org.matrix.msc3667",
"org.matrix.msc3787",
"org.matrix.msc4014",
]
verparams = "&".join(f"ver={ver}" for ver in versions)
def get_user_input(prompt): def get_user_input(prompt):
try: try:
@@ -28,13 +50,11 @@ except Exception as e:
print(f"Error reading server names: {e}") print(f"Error reading server names: {e}")
exit(1) exit(1)
resolver = ServerResolver(client=http_client)
try: try:
print("\nSending make_join request..") print("\nSending make_join request..")
make_join_response = http_client.get( make_join_response = http_client.get(
path=f"/_matrix/federation/v1/make_join/{room_id}/%40{username}%3A{config.server_name}?ver=1&ver=2&ver=3&ver=4&ver=5&ver=6&ver=7&ver=8&ver=9&ver=10&ver=11&ver=12", path=f"/_matrix/federation/v1/make_join/{room_id}/%40{username}%3A{config.server_name}?{verparams}",
destination=server_name, destination=server_name,
) )
@@ -57,6 +77,16 @@ if make_join.get("room_version", "1") in ["1", "2"]:
# NOTE: if we always make it opaque than Synapse will 500 lmao # NOTE: if we always make it opaque than Synapse will 500 lmao
join_event["event_id"] = globals.make_event_id() join_event["event_id"] = globals.make_event_id()
elif make_join.get("room_version", "1") == "org.matrix.msc4014":
# dendrite dislikes this :p
join_event["sender_key"] = globals.pubkey()
join_event["content"]["mxid_mapping"] = globals.sign_json({
"sender_key": globals.pubkey(),
"user_id": f"@{username}:{config.server_name}"
})
timestamp = input("\nTimestamp (leave blank for now):\n\t") timestamp = input("\nTimestamp (leave blank for now):\n\t")
try: try:
join_event["origin_server_ts"] = int(timestamp) join_event["origin_server_ts"] = int(timestamp)