Bladeren bron

Support registering Application Services when running with workers under Complement. (#12826)

Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com>
tags/v1.60.0rc1
reivilibre 2 jaren geleden
committed by GitHub
bovenliggende
commit
67aae05ece
Geen bekende sleutel gevonden voor deze handtekening in de database GPG sleutel-ID: 4AEE18F83AFDEB23
4 gewijzigde bestanden met toevoegingen van 31 en 1 verwijderingen
  1. +1
    -0
      changelog.d/12826.misc
  2. +5
    -0
      docker/complement/conf-workers/start-complement-synapse-workers.sh
  3. +10
    -1
      docker/conf-workers/shared.yaml.j2
  4. +15
    -0
      docker/configure_workers_and_start.py

+ 1
- 0
changelog.d/12826.misc Bestand weergeven

@@ -0,0 +1 @@
Support registering Application Services when running with workers under Complement.

+ 5
- 0
docker/complement/conf-workers/start-complement-synapse-workers.sh Bestand weergeven

@@ -36,6 +36,11 @@ export SYNAPSE_WORKER_TYPES="\
appservice, \
pusher"

# Add Complement's appservice registration directory, if there is one
# (It can be absent when there are no application services in this test!)
if [ -d /complement/appservice ]; then
export SYNAPSE_AS_REGISTRATION_DIR=/complement/appservice
fi

# Generate a TLS key, then generate a certificate by having Complement's CA sign it
# Note that both the key and certificate are in PEM format (not DER).


+ 10
- 1
docker/conf-workers/shared.yaml.j2 Bestand weergeven

@@ -6,4 +6,13 @@
redis:
enabled: true

{{ shared_worker_config }}
{% if appservice_registrations is not none %}
## Application Services ##
# A list of application service config files to use.
app_service_config_files:
{%- for path in appservice_registrations %}
- "{{ path }}"
{%- endfor %}
{%- endif %}

{{ shared_worker_config }}

+ 15
- 0
docker/configure_workers_and_start.py Bestand weergeven

@@ -21,6 +21,8 @@
# * SYNAPSE_REPORT_STATS: Whether to report stats.
# * SYNAPSE_WORKER_TYPES: A comma separated list of worker names as specified in WORKER_CONFIG
# below. Leave empty for no workers, or set to '*' for all possible workers.
# * SYNAPSE_AS_REGISTRATION_DIR: If specified, a directory in which .yaml and .yml files
# will be treated as Application Service registration files.
# * SYNAPSE_TLS_CERT: Path to a TLS certificate in PEM format.
# * SYNAPSE_TLS_KEY: Path to a TLS key. If this and SYNAPSE_TLS_CERT are specified,
# Nginx will be configured to serve TLS on port 8448.
@@ -32,6 +34,7 @@
import os
import subprocess
import sys
from pathlib import Path
from typing import Any, Dict, List, Mapping, MutableMapping, NoReturn, Set

import jinja2
@@ -491,11 +494,23 @@ def generate_worker_files(
master_log_config = generate_worker_log_config(environ, "master", data_dir)
shared_config["log_config"] = master_log_config

# Find application service registrations
appservice_registrations = None
appservice_registration_dir = os.environ.get("SYNAPSE_AS_REGISTRATION_DIR")
if appservice_registration_dir:
# Scan for all YAML files that should be application service registrations.
appservice_registrations = [
str(reg_path.resolve())
for reg_path in Path(appservice_registration_dir).iterdir()
if reg_path.suffix.lower() in (".yaml", ".yml")
]

# Shared homeserver config
convert(
"/conf/shared.yaml.j2",
"/conf/workers/shared.yaml",
shared_worker_config=yaml.dump(shared_config),
appservice_registrations=appservice_registrations,
)

# Nginx config


Laden…
Annuleren
Opslaan