diff --git a/snikket_web/main.py b/snikket_web/main.py index 03d34dd..4eef595 100644 --- a/snikket_web/main.py +++ b/snikket_web/main.py @@ -101,6 +101,10 @@ async def about() -> str: extra_versions["babel"] = babel.__version__ extra_versions["wtforms"] = wtforms.__version__ extra_versions["flask-wtf"] = flask_wtf.__version__ + try: + extra_versions["Prosody"] = await client.get_server_version() + except quart.exceptions.Unauthorized: + extra_versions["Prosody"] = "unknown" return await render_template( "about.html", diff --git a/snikket_web/prosodyclient.py b/snikket_web/prosodyclient.py index eb70791..bd2ed26 100644 --- a/snikket_web/prosodyclient.py +++ b/snikket_web/prosodyclient.py @@ -503,6 +503,22 @@ class ProsodyClient: async with session.post(self._rest_endpoint, data=req) as resp: return resp.status == 200 + @autosession + async def get_server_version(self, session: aiohttp.ClientSession) -> str: + _, domain, _ = split_jid(self.session_address) + req = { + "kind": "iq", + "type": "get", + "version": True, + "to": domain, + } + + async with session.post(self._rest_endpoint, data=req) as resp: + try: + return (await resp.json())["version"]["version"] + except: + return "unknown" + @autosession async def get_user_nickname( self,