Stop installing Matrix Console by default

This is based on the work done by @krombel in #2601.
This commit is contained in:
Richard van der Hoff 2018-12-11 13:18:48 +00:00
parent a2ed0f287e
commit df96177ca7
6 changed files with 44 additions and 58 deletions

View file

@ -289,10 +289,6 @@ go back in your web client and proceed further.
If all goes well you should at least be able to log in, create a room, and If all goes well you should at least be able to log in, create a room, and
start sending messages. start sending messages.
(The homeserver runs a web client by default at https://localhost:8448/, though
as of the time of writing it is somewhat outdated and not really recommended -
https://github.com/matrix-org/synapse/issues/1527).
.. _`client-user-reg`: .. _`client-user-reg`:
Registering a new user from a client Registering a new user from a client
@ -372,10 +368,7 @@ ArchLinux
The quickest way to get up and running with ArchLinux is probably with the community package The quickest way to get up and running with ArchLinux is probably with the community package
https://www.archlinux.org/packages/community/any/matrix-synapse/, which should pull in most of https://www.archlinux.org/packages/community/any/matrix-synapse/, which should pull in most of
the necessary dependencies. If the default web client is to be served (enabled by default in the necessary dependencies.
the generated config),
https://www.archlinux.org/packages/community/any/python2-matrix-angular-sdk/ will also need to
be installed.
pip may be outdated (6.0.7-1 and needs to be upgraded to 6.0.8-1 ):: pip may be outdated (6.0.7-1 and needs to be upgraded to 6.0.8-1 )::

View file

@ -115,6 +115,10 @@ Upgrading to v0.34.0
case a hypothetical future identity server was put there. If you don't case a hypothetical future identity server was put there. If you don't
remove it, users may be unable to deactivate their accounts. remove it, users may be unable to deactivate their accounts.
3. This release no longer installs the (unmaintained) Matrix Console web client
as part of the default installation. It is possible to re-enable it by
installing it separately and setting the ``web_client_location`` config
option, but please consider switching to another client.
Upgrading to v0.33.7 Upgrading to v0.33.7
==================== ====================

1
changelog.d/4290.feature Normal file
View file

@ -0,0 +1 @@
Remove Matrix console from the default distribution

View file

@ -54,7 +54,7 @@ from synapse.metrics import RegistryProxy
from synapse.metrics.background_process_metrics import run_as_background_process from synapse.metrics.background_process_metrics import run_as_background_process
from synapse.metrics.resource import METRICS_PREFIX, MetricsResource from synapse.metrics.resource import METRICS_PREFIX, MetricsResource
from synapse.module_api import ModuleApi from synapse.module_api import ModuleApi
from synapse.python_dependencies import CONDITIONAL_REQUIREMENTS, check_requirements from synapse.python_dependencies import check_requirements
from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource from synapse.replication.http import REPLICATION_PREFIX, ReplicationRestResource
from synapse.replication.tcp.resource import ReplicationStreamProtocolFactory from synapse.replication.tcp.resource import ReplicationStreamProtocolFactory
from synapse.rest import ClientRestResource from synapse.rest import ClientRestResource
@ -79,36 +79,6 @@ def gz_wrap(r):
return EncodingResourceWrapper(r, [GzipEncoderFactory()]) return EncodingResourceWrapper(r, [GzipEncoderFactory()])
def build_resource_for_web_client(hs):
webclient_path = hs.get_config().web_client_location
if not webclient_path:
try:
import syweb
except ImportError:
quit_with_error(
"Could not find a webclient.\n\n"
"Please either install the matrix-angular-sdk or configure\n"
"the location of the source to serve via the configuration\n"
"option `web_client_location`\n\n"
"To install the `matrix-angular-sdk` via pip, run:\n\n"
" pip install '%(dep)s'\n"
"\n"
"You can also disable hosting of the webclient via the\n"
"configuration option `web_client`\n"
% {"dep": CONDITIONAL_REQUIREMENTS["web_client"].keys()[0]}
)
syweb_path = os.path.dirname(syweb.__file__)
webclient_path = os.path.join(syweb_path, "webclient")
# GZip is disabled here due to
# https://twistedmatrix.com/trac/ticket/7678
# (It can stay enabled for the API resources: they call
# write() with the whole body and then finish() straight
# after and so do not trigger the bug.
# GzipFile was removed in commit 184ba09
# return GzipFile(webclient_path) # TODO configurable?
return File(webclient_path) # TODO configurable?
class SynapseHomeServer(HomeServer): class SynapseHomeServer(HomeServer):
DATASTORE_CLASS = DataStore DATASTORE_CLASS = DataStore
@ -237,7 +207,16 @@ class SynapseHomeServer(HomeServer):
resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self) resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self)
if name == "webclient": if name == "webclient":
resources[WEB_CLIENT_PREFIX] = build_resource_for_web_client(self) webclient_path = self.get_config().web_client_location
if webclient_path is None:
logger.warning(
"Not enabling webclient resource, as web_client_location is unset."
)
else:
# GZip is disabled here due to
# https://twistedmatrix.com/trac/ticket/7678
resources[WEB_CLIENT_PREFIX] = File(webclient_path)
if name == "metrics" and self.get_config().enable_metrics: if name == "metrics" and self.get_config().enable_metrics:
resources[METRICS_PREFIX] = MetricsResource(RegistryProxy) resources[METRICS_PREFIX] = MetricsResource(RegistryProxy)

View file

@ -34,7 +34,6 @@ class ServerConfig(Config):
raise ConfigError(str(e)) raise ConfigError(str(e))
self.pid_file = self.abspath(config.get("pid_file")) self.pid_file = self.abspath(config.get("pid_file"))
self.web_client = config["web_client"]
self.web_client_location = config.get("web_client_location", None) self.web_client_location = config.get("web_client_location", None)
self.soft_file_limit = config["soft_file_limit"] self.soft_file_limit = config["soft_file_limit"]
self.daemonize = config.get("daemonize") self.daemonize = config.get("daemonize")
@ -128,6 +127,9 @@ class ServerConfig(Config):
elif not bind_addresses: elif not bind_addresses:
bind_addresses.append('') bind_addresses.append('')
if not self.web_client_location:
_warn_if_webclient_configured(self.listeners)
self.gc_thresholds = read_gc_thresholds(config.get("gc_thresholds", None)) self.gc_thresholds = read_gc_thresholds(config.get("gc_thresholds", None))
bind_port = config.get("bind_port") bind_port = config.get("bind_port")
@ -136,8 +138,6 @@ class ServerConfig(Config):
bind_host = config.get("bind_host", "") bind_host = config.get("bind_host", "")
gzip_responses = config.get("gzip_responses", True) gzip_responses = config.get("gzip_responses", True)
names = ["client", "webclient"] if self.web_client else ["client"]
self.listeners.append({ self.listeners.append({
"port": bind_port, "port": bind_port,
"bind_addresses": [bind_host], "bind_addresses": [bind_host],
@ -145,7 +145,7 @@ class ServerConfig(Config):
"type": "http", "type": "http",
"resources": [ "resources": [
{ {
"names": names, "names": ["client"],
"compress": gzip_responses, "compress": gzip_responses,
}, },
{ {
@ -164,7 +164,7 @@ class ServerConfig(Config):
"type": "http", "type": "http",
"resources": [ "resources": [
{ {
"names": names, "names": ["client"],
"compress": gzip_responses, "compress": gzip_responses,
}, },
{ {
@ -247,13 +247,9 @@ class ServerConfig(Config):
# #
# cpu_affinity: 0xFFFFFFFF # cpu_affinity: 0xFFFFFFFF
# Whether to serve a web client from the HTTP/HTTPS root resource. # The path to the web client which will be served at /_matrix/client/
web_client: True # if 'webclient' is configured under the 'listeners' configuration.
#
# The root directory to server for the above web client.
# If left undefined, synapse will serve the matrix-angular-sdk web client.
# Make sure matrix-angular-sdk is installed with pip if web_client is True
# and web_client_location is undefined
# web_client_location: "/path/to/web/root" # web_client_location: "/path/to/web/root"
# The public-facing base URL for the client API (not including _matrix/...) # The public-facing base URL for the client API (not including _matrix/...)
@ -321,7 +317,7 @@ class ServerConfig(Config):
# List of resources to host on this listener. # List of resources to host on this listener.
names: names:
- client # The client-server APIs, both v1 and v2 - client # The client-server APIs, both v1 and v2
- webclient # The bundled webclient. # - webclient # A web client. Requires web_client_location to be set.
# Should synapse compress HTTP responses to clients that support it? # Should synapse compress HTTP responses to clients that support it?
# This should be disabled if running synapse behind a load balancer # This should be disabled if running synapse behind a load balancer
@ -348,7 +344,7 @@ class ServerConfig(Config):
x_forwarded: false x_forwarded: false
resources: resources:
- names: [client, webclient] - names: [client]
compress: true compress: true
- names: [federation] - names: [federation]
compress: false compress: false
@ -452,3 +448,19 @@ def read_gc_thresholds(thresholds):
raise ConfigError( raise ConfigError(
"Value of `gc_threshold` must be a list of three integers if set" "Value of `gc_threshold` must be a list of three integers if set"
) )
NO_MORE_WEB_CLIENT_WARNING = """
Synapse no longer includes a web client. To enable a web client, configure
web_client_location. To remove this warning, remove 'webclient' from the 'listeners'
configuration.
"""
def _warn_if_webclient_configured(listeners):
for listener in listeners:
for res in listener.get("resources", []):
for name in res.get("names", []):
if name == 'webclient':
logger.warning(NO_MORE_WEB_CLIENT_WARNING)
return

View file

@ -69,9 +69,6 @@ REQUIREMENTS = {
} }
CONDITIONAL_REQUIREMENTS = { CONDITIONAL_REQUIREMENTS = {
"web_client": {
"matrix_angular_sdk>=0.6.8": ["syweb>=0.6.8"],
},
"email.enable_notifs": { "email.enable_notifs": {
"Jinja2>=2.8": ["Jinja2>=2.8"], "Jinja2>=2.8": ["Jinja2>=2.8"],
"bleach>=1.4.2": ["bleach>=1.4.2"], "bleach>=1.4.2": ["bleach>=1.4.2"],