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

Commit

Permalink
Merge pull request #4290 from matrix-org/rav/remove_webclient
Browse files Browse the repository at this point in the history
Stop installing Matrix Console by default
  • Loading branch information
richvdh authored Dec 11, 2018
2 parents 95c1f65 + df96177 commit 1889457
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 58 deletions.
9 changes: 1 addition & 8 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
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`:

Registering a new user from a client
Expand Down Expand Up @@ -372,10 +368,7 @@ ArchLinux

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
the necessary dependencies. If the default web client is to be served (enabled by default in
the generated config),
https://www.archlinux.org/packages/community/any/python2-matrix-angular-sdk/ will also need to
be installed.
the necessary dependencies.

pip may be outdated (6.0.7-1 and needs to be upgraded to 6.0.8-1 )::

Expand Down
4 changes: 4 additions & 0 deletions UPGRADE.rst
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@ Upgrading to v0.34.0
case a hypothetical future identity server was put there. If you don't
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
====================
Expand Down
1 change: 1 addition & 0 deletions changelog.d/4290.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove Matrix console from the default distribution
43 changes: 11 additions & 32 deletions synapse/app/homeserver.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
from synapse.metrics.background_process_metrics import run_as_background_process
from synapse.metrics.resource import METRICS_PREFIX, MetricsResource
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.tcp.resource import ReplicationStreamProtocolFactory
from synapse.rest import ClientRestResource
Expand All @@ -79,36 +79,6 @@ def gz_wrap(r):
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):
DATASTORE_CLASS = DataStore

Expand Down Expand Up @@ -240,7 +210,16 @@ def _configure_named_resource(self, name, compress=False):
resources[SERVER_KEY_V2_PREFIX] = KeyApiV2Resource(self)

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:
resources[METRICS_PREFIX] = MetricsResource(RegistryProxy)
Expand Down
42 changes: 27 additions & 15 deletions synapse/config/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ def read_config(self, config):
raise ConfigError(str(e))

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.soft_file_limit = config["soft_file_limit"]
self.daemonize = config.get("daemonize")
Expand Down Expand Up @@ -128,6 +127,9 @@ def read_config(self, config):
elif not bind_addresses:
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))

bind_port = config.get("bind_port")
Expand All @@ -136,16 +138,14 @@ def read_config(self, config):
bind_host = config.get("bind_host", "")
gzip_responses = config.get("gzip_responses", True)

names = ["client", "webclient"] if self.web_client else ["client"]

self.listeners.append({
"port": bind_port,
"bind_addresses": [bind_host],
"tls": True,
"type": "http",
"resources": [
{
"names": names,
"names": ["client"],
"compress": gzip_responses,
},
{
Expand All @@ -164,7 +164,7 @@ def read_config(self, config):
"type": "http",
"resources": [
{
"names": names,
"names": ["client"],
"compress": gzip_responses,
},
{
Expand Down Expand Up @@ -247,13 +247,9 @@ def default_config(self, server_name, **kwargs):
#
# cpu_affinity: 0xFFFFFFFF
# Whether to serve a web client from the HTTP/HTTPS root resource.
web_client: True
# 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
# The path to the web client which will be served at /_matrix/client/
# if 'webclient' is configured under the 'listeners' configuration.
#
# web_client_location: "/path/to/web/root"
# The public-facing base URL for the client API (not including _matrix/...)
Expand Down Expand Up @@ -320,8 +316,8 @@ def default_config(self, server_name, **kwargs):
-
# List of resources to host on this listener.
names:
- client # The client-server APIs, both v1 and v2
- webclient # The bundled webclient.
- client # The client-server APIs, both v1 and v2
# - webclient # A web client. Requires web_client_location to be set.
# Should synapse compress HTTP responses to clients that support it?
# This should be disabled if running synapse behind a load balancer
Expand All @@ -348,7 +344,7 @@ def default_config(self, server_name, **kwargs):
x_forwarded: false
resources:
- names: [client, webclient]
- names: [client]
compress: true
- names: [federation]
compress: false
Expand Down Expand Up @@ -452,3 +448,19 @@ def read_gc_thresholds(thresholds):
raise ConfigError(
"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
3 changes: 0 additions & 3 deletions synapse/python_dependencies.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@
}

CONDITIONAL_REQUIREMENTS = {
"web_client": {
"matrix_angular_sdk>=0.6.8": ["syweb>=0.6.8"],
},
"email.enable_notifs": {
"Jinja2>=2.8": ["Jinja2>=2.8"],
"bleach>=1.4.2": ["bleach>=1.4.2"],
Expand Down

0 comments on commit 1889457

Please sign in to comment.