Skip to content

Commit bb72d6e

Browse files
committed
unix socket support
1 parent c29c371 commit bb72d6e

File tree

3 files changed

+20
-6
lines changed

3 files changed

+20
-6
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ dist/
66
pip-selfcheck.json
77
*.pyc
88
__pycache__
9+
.idea

mautrix/api.py

+10-4
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import platform
1717
import time
1818

19-
from aiohttp import ClientResponse, ClientSession, __version__ as aiohttp_version
19+
from aiohttp import ClientResponse, ClientSession, __version__ as aiohttp_version, UnixConnector
2020
from aiohttp.client_exceptions import ClientError, ContentTypeError
2121
from yarl import URL
2222

@@ -229,9 +229,15 @@ def __init__(
229229
self.base_url = URL(base_url)
230230
self.token = token
231231
self.log = log or logging.getLogger("mau.http")
232-
self.session = client_session or ClientSession(
233-
loop=loop, headers={"User-Agent": self.default_ua}
234-
)
232+
if client_session:
233+
self.session = client_session
234+
else:
235+
connector = None
236+
if base_url.startswith('unix://'):
237+
connector = UnixConnector(path=base_url.replace('unix://', ''))
238+
self.session = ClientSession(
239+
loop=loop, headers={"User-Agent": self.default_ua}, connector=connector
240+
)
235241
self.as_user_id = as_user_id
236242
self.as_device_id = as_device_id
237243
if txn_id is not None:

mautrix/appservice/appservice.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,11 @@ async def __aexit__(self) -> None:
152152
async def start(self, host: str = "127.0.0.1", port: int = 8080) -> None:
153153
await self.state_store.open()
154154
self.log.debug(f"Starting appservice web server on {host}:{port}")
155-
if self.server.startswith("https://") and not self.verify_ssl:
155+
if self.server.startswith("unix://"):
156+
path = self.server.replace('unix://', '')
157+
self.server = 'http://localhost'
158+
connector = aiohttp.UnixConnector(limit=self.connection_limit, path=path)
159+
elif self.server.startswith("https://") and not self.verify_ssl:
156160
connector = aiohttp.TCPConnector(limit=self.connection_limit, verify_ssl=False)
157161
else:
158162
connector = aiohttp.TCPConnector(limit=self.connection_limit)
@@ -176,7 +180,10 @@ async def start(self, host: str = "127.0.0.1", port: int = 8080) -> None:
176180
ssl_ctx.load_cert_chain(self.tls_cert, self.tls_key)
177181
self.runner = web.AppRunner(self.app)
178182
await self.runner.setup()
179-
site = web.TCPSite(self.runner, host, port, ssl_context=ssl_ctx)
183+
if host.startswith("/"):
184+
site = web.UnixSite(self.runner, host)
185+
else:
186+
site = web.TCPSite(self.runner, host, port, ssl_context=ssl_ctx)
180187
await site.start()
181188

182189
async def stop(self) -> None:

0 commit comments

Comments
 (0)