Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
Add Unix socket support to the proxyagent
Browse files Browse the repository at this point in the history
  • Loading branch information
realtyem committed Jul 6, 2023
1 parent fdb07e8 commit cd1579b
Showing 1 changed file with 24 additions and 4 deletions.
28 changes: 24 additions & 4 deletions synapse/http/proxyagent.py
Expand Up @@ -24,7 +24,11 @@
from zope.interface import implementer

from twisted.internet import defer
from twisted.internet.endpoints import HostnameEndpoint, wrapClientTLS
from twisted.internet.endpoints import (
HostnameEndpoint,
UNIXClientEndpoint,
wrapClientTLS,
)
from twisted.internet.interfaces import (
IProtocol,
IProtocolFactory,
Expand All @@ -42,7 +46,11 @@
from twisted.web.http_headers import Headers
from twisted.web.iweb import IAgent, IBodyProducer, IPolicyForHTTPS, IResponse

from synapse.config.workers import InstanceLocationConfig, InstanceTcpLocationConfig
from synapse.config.workers import (
InstanceLocationConfig,
InstanceTcpLocationConfig,
InstanceUnixLocationConfig,
)
from synapse.http import redact_uri
from synapse.http.connectproxyclient import HTTPConnectProxyEndpoint, ProxyCredentials
from synapse.logging.context import run_in_background
Expand Down Expand Up @@ -142,8 +150,9 @@ def __init__(

self._federation_proxy_endpoint: Optional[IStreamClientEndpoint] = None
if federation_proxies:
endpoints = []
endpoints: List[IStreamClientEndpoint] = []
for federation_proxy in federation_proxies:
endpoint: IStreamClientEndpoint
if isinstance(federation_proxy, InstanceTcpLocationConfig):
endpoint = HostnameEndpoint(
self.proxy_reactor,
Expand All @@ -160,7 +169,18 @@ def __init__(
)
endpoint = wrapClientTLS(tls_connection_creator, endpoint)

endpoints.append(endpoint)
elif isinstance(federation_proxy, InstanceUnixLocationConfig):
endpoint = UNIXClientEndpoint(
self.proxy_reactor, federation_proxy.path
)

else:
# It is supremely unlikely we ever hit this
raise SchemeNotSupported(
f"Unknown type of Endpoint requested, check {federation_proxy}"
)

endpoints.append(endpoint)

self._federation_proxy_endpoint = _ProxyEndpoints(endpoints)

Expand Down

0 comments on commit cd1579b

Please sign in to comment.