summaryrefslogtreecommitdiff
path: root/synapse/app/generic_worker.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/app/generic_worker.py')
-rw-r--r--synapse/app/generic_worker.py40
1 files changed, 23 insertions, 17 deletions
diff --git a/synapse/app/generic_worker.py b/synapse/app/generic_worker.py
index 21882674..502cc8e8 100644
--- a/synapse/app/generic_worker.py
+++ b/synapse/app/generic_worker.py
@@ -14,11 +14,10 @@
# limitations under the License.
import logging
import sys
-from typing import Dict, Optional
+from typing import Dict, List, Optional, Tuple
from twisted.internet import address
-from twisted.web.resource import IResource
-from twisted.web.server import Request
+from twisted.web.resource import Resource
import synapse
import synapse.events
@@ -27,7 +26,8 @@ from synapse.api.urls import (
CLIENT_API_PREFIX,
FEDERATION_PREFIX,
LEGACY_MEDIA_PREFIX,
- MEDIA_PREFIX,
+ MEDIA_R0_PREFIX,
+ MEDIA_V3_PREFIX,
SERVER_KEY_V2_PREFIX,
)
from synapse.app import _base
@@ -44,7 +44,7 @@ from synapse.config.server import ListenerConfig
from synapse.federation.transport.server import TransportLayerServer
from synapse.http.server import JsonResource, OptionsResource
from synapse.http.servlet import RestServlet, parse_json_object_from_request
-from synapse.http.site import SynapseSite
+from synapse.http.site import SynapseRequest, SynapseSite
from synapse.logging.context import LoggingContext
from synapse.metrics import METRICS_PREFIX, MetricsResource, RegistryProxy
from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource
@@ -119,6 +119,7 @@ from synapse.storage.databases.main.stats import StatsStore
from synapse.storage.databases.main.transactions import TransactionWorkerStore
from synapse.storage.databases.main.ui_auth import UIAuthWorkerStore
from synapse.storage.databases.main.user_directory import UserDirectoryStore
+from synapse.types import JsonDict
from synapse.util.httpresourcetree import create_resource_tree
from synapse.util.versionstring import get_version_string
@@ -143,7 +144,9 @@ class KeyUploadServlet(RestServlet):
self.http_client = hs.get_simple_http_client()
self.main_uri = hs.config.worker.worker_main_http_uri
- async def on_POST(self, request: Request, device_id: Optional[str]):
+ async def on_POST(
+ self, request: SynapseRequest, device_id: Optional[str]
+ ) -> Tuple[int, JsonDict]:
requester = await self.auth.get_user_by_req(request, allow_guest=True)
user_id = requester.user.to_string()
body = parse_json_object_from_request(request)
@@ -187,9 +190,8 @@ class KeyUploadServlet(RestServlet):
# If the header exists, add to the comma-separated list of the first
# instance of the header. Otherwise, generate a new header.
if x_forwarded_for:
- x_forwarded_for = [
- x_forwarded_for[0] + b", " + previous_host
- ] + x_forwarded_for[1:]
+ x_forwarded_for = [x_forwarded_for[0] + b", " + previous_host]
+ x_forwarded_for.extend(x_forwarded_for[1:])
else:
x_forwarded_for = [previous_host]
headers[b"X-Forwarded-For"] = x_forwarded_for
@@ -253,13 +255,16 @@ class GenericWorkerSlavedStore(
SessionStore,
BaseSlavedStore,
):
- pass
+ # Properties that multiple storage classes define. Tell mypy what the
+ # expected type is.
+ server_name: str
+ config: HomeServerConfig
class GenericWorkerServer(HomeServer):
- DATASTORE_CLASS = GenericWorkerSlavedStore
+ DATASTORE_CLASS = GenericWorkerSlavedStore # type: ignore
- def _listen_http(self, listener_config: ListenerConfig):
+ def _listen_http(self, listener_config: ListenerConfig) -> None:
port = listener_config.port
bind_addresses = listener_config.bind_addresses
@@ -267,10 +272,10 @@ class GenericWorkerServer(HomeServer):
site_tag = listener_config.http_options.tag
if site_tag is None:
- site_tag = port
+ site_tag = str(port)
# We always include a health resource.
- resources: Dict[str, IResource] = {"/health": HealthResource()}
+ resources: Dict[str, Resource] = {"/health": HealthResource()}
for res in listener_config.http_options.resources:
for name in res.names:
@@ -334,7 +339,8 @@ class GenericWorkerServer(HomeServer):
resources.update(
{
- MEDIA_PREFIX: media_repo,
+ MEDIA_R0_PREFIX: media_repo,
+ MEDIA_V3_PREFIX: media_repo,
LEGACY_MEDIA_PREFIX: media_repo,
"/_synapse/admin": admin_resource,
}
@@ -386,7 +392,7 @@ class GenericWorkerServer(HomeServer):
logger.info("Synapse worker now listening on port %d", port)
- def start_listening(self):
+ def start_listening(self) -> None:
for listener in self.config.worker.worker_listeners:
if listener.type == "http":
self._listen_http(listener)
@@ -411,7 +417,7 @@ class GenericWorkerServer(HomeServer):
self.get_tcp_replication().start_replication(self)
-def start(config_options):
+def start(config_options: List[str]) -> None:
try:
config = HomeServerConfig.load_config("Synapse worker", config_options)
except ConfigError as e: