anonymousland-synapse/synapse/http
Jason Little 56efa9b167
Experimental Unix socket support (#15353)
* Add IReactorUNIX to ISynapseReactor type hint.

* Create listen_unix().

Two options, 'path' to the file and 'mode' of permissions(not umask, recommend 666 as default as
nginx/other reverse proxies write to it and it's setup as user www-data)

For the moment, leave the option to always create a PID lockfile turned on by default

* Create UnixListenerConfig and wire it up.

Rename ListenerConfig to TCPListenerConfig, then Union them together into ListenerConfig.
This spidered around a bit, but I think I got it all. Metrics and manhole have been placed
behind a conditional in case of accidental putting them onto a unix socket.

Use new helpers to get if a listener is configured for TLS, and to help create a site tag
for logging.

There are 2 TODO things in parse_listener_def() to finish up at a later point.

* Refactor SynapseRequest to handle logging correctly when using a unix socket.

This prevents an exception when an IP address can not be retrieved for a request.

* Make the 'Synapse now listening on Unix socket' log line a little prettier.

* No silent failures on generic workers when trying to use a unix socket with metrics or manhole.

* Inline variables in app/_base.py

* Update docstring for listen_unix() to remove reference to a hardcoded permission of 0o666 and add a few comments saying where the default IS declared.

* Disallow both a unix socket and a ip/port combo on the same listener resource

* Linting

* Changelog

* review: simplify how listen_unix returns(and get rid of a type: ignore)

* review: fix typo from ConfigError in app/homeserver.py

* review: roll conditional for http_options.tag into get_site_tag() helper(and add docstring)

* review: enhance the conditionals for checking if a port or path is valid, remove a TODO line

* review: Try updating comment in get_client_ip_if_available to clarify what is being retrieved and why

* Pretty up how 'Synapse now listening on Unix Socket' looks by decoding the byte string.

* review: In parse_listener_def(), raise ConfigError if neither socket_path nor port is declared(and fix a typo)
2023-04-03 10:27:51 +01:00
..
federation Pull in netaddr type hints. (#15231) 2023-03-09 07:09:49 -05:00
__init__.py Add missing type hints to synapse.http. (#11571) 2021-12-14 07:00:47 -05:00
additional_resource.py Remove redundant types from comments. (#14412) 2022-11-16 15:25:24 +00:00
client.py Implement MSC3984 to proxy /keys/query requests to appservices. (#15321) 2023-03-30 08:39:38 -04:00
connectproxyclient.py Another batch of type annotations (#12726) 2022-05-13 12:35:31 +01:00
matrixfederationclient.py Small fixes to MatrixFederationHttpClient docstrings (#15148) 2023-02-27 13:03:22 +00:00
proxyagent.py Properly typecheck types.http (#14988) 2023-02-07 00:20:04 +00:00
request_metrics.py Reduce the number of "untyped defs" (#12716) 2022-05-12 14:33:50 +00:00
server.py Add Synapse-Trace-Id to access-control-expose-headers header (#14974) 2023-03-20 11:14:05 -07:00
servlet.py Reject mentions on the C-S API which are invalid. (#15311) 2023-03-24 08:31:14 -04:00
site.py Experimental Unix socket support (#15353) 2023-04-03 10:27:51 +01:00
types.py Unify HTTP query parameter type hints (#12415) 2022-04-08 13:06:51 +01:00