diff --git a/synapse/api/urls.py b/synapse/api/urls.py
index f9f9467dc1..bd49fa6a5f 100644
--- a/synapse/api/urls.py
+++ b/synapse/api/urls.py
@@ -28,7 +28,6 @@ FEDERATION_V1_PREFIX = FEDERATION_PREFIX + "/v1"
FEDERATION_V2_PREFIX = FEDERATION_PREFIX + "/v2"
FEDERATION_UNSTABLE_PREFIX = FEDERATION_PREFIX + "/unstable"
STATIC_PREFIX = "/_matrix/static"
-WEB_CLIENT_PREFIX = "/_matrix/client"
SERVER_KEY_V2_PREFIX = "/_matrix/key/v2"
MEDIA_R0_PREFIX = "/_matrix/media/r0"
MEDIA_V3_PREFIX = "/_matrix/media/v3"
diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index efedcc8889..24d55b0494 100644
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -21,7 +21,6 @@ from typing import Dict, Iterable, Iterator, List
from twisted.internet.tcp import Port
from twisted.web.resource import EncodingResourceWrapper, Resource
from twisted.web.server import GzipEncoderFactory
-from twisted.web.static import File
import synapse
import synapse.config.logger
@@ -33,7 +32,6 @@ from synapse.api.urls import (
MEDIA_V3_PREFIX,
SERVER_KEY_V2_PREFIX,
STATIC_PREFIX,
- WEB_CLIENT_PREFIX,
)
from synapse.app import _base
from synapse.app._base import (
@@ -53,7 +51,6 @@ from synapse.http.additional_resource import AdditionalResource
from synapse.http.server import (
OptionsResource,
RootOptionsRedirectResource,
- RootRedirect,
StaticResource,
)
from synapse.http.site import SynapseSite
@@ -134,15 +131,12 @@ class SynapseHomeServer(HomeServer):
# Try to find something useful to serve at '/':
#
# 1. Redirect to the web client if it is an HTTP(S) URL.
- # 2. Redirect to the web client served via Synapse.
- # 3. Redirect to the static "Synapse is running" page.
- # 4. Do not redirect and use a blank resource.
- if self.config.server.web_client_location_is_redirect:
+ # 2. Redirect to the static "Synapse is running" page.
+ # 3. Do not redirect and use a blank resource.
+ if self.config.server.web_client_location:
root_resource: Resource = RootOptionsRedirectResource(
self.config.server.web_client_location
)
- elif WEB_CLIENT_PREFIX in resources:
- root_resource = RootOptionsRedirectResource(WEB_CLIENT_PREFIX)
elif STATIC_PREFIX in resources:
root_resource = RootOptionsRedirectResource(STATIC_PREFIX)
else:
@@ -270,28 +264,6 @@ class SynapseHomeServer(HomeServer):
if name in ["keys", "federation"]:
resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self)
- if name == "webclient":
- # webclient listeners are deprecated as of Synapse v1.51.0, remove it
- # in > v1.53.0.
- webclient_loc = self.config.server.web_client_location
-
- if webclient_loc is None:
- logger.warning(
- "Not enabling webclient resource, as web_client_location is unset."
- )
- elif self.config.server.web_client_location_is_redirect:
- resources[WEB_CLIENT_PREFIX] = RootRedirect(webclient_loc)
- else:
- logger.warning(
- "Running webclient on the same domain is not recommended: "
- "https://github.com/matrix-org/synapse#security-note - "
- "after you move webclient to different host you can set "
- "web_client_location to its full URL to enable redirection."
- )
- # GZip is disabled here due to
- # https://twistedmatrix.com/trac/ticket/7678
- resources[WEB_CLIENT_PREFIX] = File(webclient_loc)
-
if name == "metrics" and self.config.metrics.enable_metrics:
resources[METRICS_PREFIX] = MetricsResource(RegistryProxy)
diff --git a/synapse/config/server.py b/synapse/config/server.py
index a0a00a9798..7bc9624546 100644
--- a/synapse/config/server.py
+++ b/synapse/config/server.py
@@ -179,7 +179,6 @@ KNOWN_RESOURCES = {
"openid",
"replication",
"static",
- "webclient",
}
@@ -519,16 +518,12 @@ class ServerConfig(Config):
self.listeners = l2
self.web_client_location = config.get("web_client_location", None)
- self.web_client_location_is_redirect = self.web_client_location and (
+ # Non-HTTP(S) web client location is not supported.
+ if self.web_client_location and not (
self.web_client_location.startswith("http://")
or self.web_client_location.startswith("https://")
- )
- # A non-HTTP(S) web client location is deprecated.
- if self.web_client_location and not self.web_client_location_is_redirect:
- logger.warning(NO_MORE_NONE_HTTP_WEB_CLIENT_LOCATION_WARNING)
-
- # Warn if webclient is configured for a worker.
- _warn_if_webclient_configured(self.listeners)
+ ):
+ raise ConfigError("web_client_location must point to a HTTP(S) URL.")
self.gc_thresholds = read_gc_thresholds(config.get("gc_thresholds", None))
self.gc_seconds = self.read_gc_intervals(config.get("gc_min_interval", None))
@@ -1351,11 +1346,16 @@ def parse_listener_def(listener: Any) -> ListenerConfig:
http_config = None
if listener_type == "http":
+ try:
+ resources = [
+ HttpResourceConfig(**res) for res in listener.get("resources", [])
+ ]
+ except ValueError as e:
+ raise ConfigError("Unknown listener resource") from e
+
http_config = HttpListenerConfig(
x_forwarded=listener.get("x_forwarded", False),
- resources=[
- HttpResourceConfig(**res) for res in listener.get("resources", [])
- ],
+ resources=resources,
additional_resources=listener.get("additional_resources", {}),
tag=listener.get("tag"),
)
@@ -1363,30 +1363,6 @@ def parse_listener_def(listener: Any) -> ListenerConfig:
return ListenerConfig(port, bind_addresses, listener_type, tls, http_config)
-NO_MORE_NONE_HTTP_WEB_CLIENT_LOCATION_WARNING = """
-Synapse no longer supports serving a web client. To remove this warning,
-configure 'web_client_location' with an HTTP(S) URL.
-"""
-
-
-NO_MORE_WEB_CLIENT_WARNING = """
-Synapse no longer includes a web client. To redirect the root resource to a web client, configure
-'web_client_location'. To remove this warning, remove 'webclient' from the 'listeners'
-configuration.
-"""
-
-
-def _warn_if_webclient_configured(listeners: Iterable[ListenerConfig]) -> None:
- for listener in listeners:
- if not listener.http_options:
- continue
- for res in listener.http_options.resources:
- for name in res.names:
- if name == "webclient":
- logger.warning(NO_MORE_WEB_CLIENT_WARNING)
- return
-
-
_MANHOLE_SETTINGS_SCHEMA = {
"type": "object",
"properties": {
|