Skip to content

Commit bc7a01c

Browse files
committed
Parse homeserver.software into enum
1 parent 5aa8d91 commit bc7a01c

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

mautrix/bridge/__init__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from ..util.async_getter_lock import async_getter_lock
2-
from .bridge import Bridge
2+
from .bridge import Bridge, HomeserverSoftware
33
from .config import BaseBridgeConfig
44
from .custom_puppet import (
55
AutologinError,
@@ -21,6 +21,7 @@
2121
__all__ = [
2222
"async_getter_lock",
2323
"Bridge",
24+
"HomeserverSoftware",
2425
"BaseBridgeConfig",
2526
"AutologinError",
2627
"CustomPuppetError",

mautrix/bridge/bridge.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
from typing import Any
99
from abc import ABC, abstractmethod
10+
from enum import Enum
1011
import sys
1112

1213
from aiohttp import web
@@ -30,6 +31,20 @@
3031
uvloop = None
3132

3233

34+
class HomeserverSoftware(Enum):
35+
STANDARD = "standard"
36+
ASMUX = "asmux"
37+
HUNGRY = "hungry"
38+
39+
@property
40+
def is_hungry(self) -> bool:
41+
return self == self.HUNGRY
42+
43+
@property
44+
def is_asmux(self) -> bool:
45+
return self == self.ASMUX
46+
47+
3348
class Bridge(Program, ABC):
3449
db: Database
3550
az: AppService
@@ -43,6 +58,7 @@ class Bridge(Program, ABC):
4358
repo_url: str
4459
markdown_version: str
4560
manhole: br.commands.manhole.ManholeState | None
61+
homeserver_software: HomeserverSoftware
4662

4763
def __init__(
4864
self,
@@ -104,6 +120,11 @@ def prepare(self) -> None:
104120
"Loaded config overrides from environment: %s", list(self.config.env.keys())
105121
)
106122
super().prepare()
123+
try:
124+
self.homeserver_software = HomeserverSoftware(self.config["homeserver.software"])
125+
except Exception:
126+
self.log.fatal("Invalid value for homeserver.software in config")
127+
sys.exit(11)
107128
self.prepare_db()
108129
self.prepare_appservice()
109130
self.prepare_bridge()

mautrix/bridge/matrix.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,14 @@ async def check_versions(self) -> None:
207207
self.minimum_spec_version,
208208
)
209209
sys.exit(18)
210+
if self.bridge.homeserver_software.is_hungry and not self.versions.supports(
211+
"com.beeper.hungry"
212+
):
213+
self.log.fatal(
214+
"The config claims the homeserver is hungryserv, "
215+
"but the /versions response didn't confirm it"
216+
)
217+
sys.exit(18)
210218

211219
async def wait_for_connection(self) -> None:
212220
self.log.info("Ensuring connectivity to homeserver")

mautrix/bridge/user.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ async def update_direct_chats(self, dms: dict[UserID, list[RoomID]] | None = Non
128128
self.log.debug("Updating m.direct list on homeserver")
129129
replace = dms is None
130130
dms = dms or await self.get_direct_chats()
131-
if self.bridge.config.get("homeserver.software", "standard") == "asmux":
131+
if self.bridge.homeserver_software.is_asmux:
132132
# This uses a secret endpoint for atomically updating the DM list
133133
await puppet.intent.api.request(
134134
Method.PUT if replace else Method.PATCH,

0 commit comments

Comments
 (0)