|
|
@@ -13,14 +13,19 @@ import jinja2 |
|
|
|
|
|
|
|
# Utility functions |
|
|
|
def log(txt: str) -> None: |
|
|
|
print(txt, file=sys.stderr) |
|
|
|
print(txt) |
|
|
|
|
|
|
|
|
|
|
|
def error(txt: str) -> NoReturn: |
|
|
|
log(txt) |
|
|
|
print(txt, file=sys.stderr) |
|
|
|
sys.exit(2) |
|
|
|
|
|
|
|
|
|
|
|
def flush_buffers() -> None: |
|
|
|
sys.stdout.flush() |
|
|
|
sys.stderr.flush() |
|
|
|
|
|
|
|
|
|
|
|
def convert(src: str, dst: str, environ: Mapping[str, object]) -> None: |
|
|
|
"""Generate a file from a template |
|
|
|
|
|
|
@@ -131,10 +136,10 @@ def generate_config_from_template( |
|
|
|
|
|
|
|
if ownership is not None: |
|
|
|
log(f"Setting ownership on /data to {ownership}") |
|
|
|
subprocess.check_output(["chown", "-R", ownership, "/data"]) |
|
|
|
subprocess.run(["chown", "-R", ownership, "/data"], check=True) |
|
|
|
args = ["gosu", ownership] + args |
|
|
|
|
|
|
|
subprocess.check_output(args) |
|
|
|
subprocess.run(args, check=True) |
|
|
|
|
|
|
|
|
|
|
|
def run_generate_config(environ: Mapping[str, str], ownership: Optional[str]) -> None: |
|
|
@@ -158,7 +163,7 @@ def run_generate_config(environ: Mapping[str, str], ownership: Optional[str]) -> |
|
|
|
if ownership is not None: |
|
|
|
# make sure that synapse has perms to write to the data dir. |
|
|
|
log(f"Setting ownership on {data_dir} to {ownership}") |
|
|
|
subprocess.check_output(["chown", ownership, data_dir]) |
|
|
|
subprocess.run(["chown", ownership, data_dir], check=True) |
|
|
|
|
|
|
|
# create a suitable log config from our template |
|
|
|
log_config_file = "%s/%s.log.config" % (config_dir, server_name) |
|
|
@@ -185,6 +190,7 @@ def run_generate_config(environ: Mapping[str, str], ownership: Optional[str]) -> |
|
|
|
"--open-private-ports", |
|
|
|
] |
|
|
|
# log("running %s" % (args, )) |
|
|
|
flush_buffers() |
|
|
|
os.execv(sys.executable, args) |
|
|
|
|
|
|
|
|
|
|
@@ -267,8 +273,10 @@ running with 'migrate_config'. See the README for more details. |
|
|
|
args = [sys.executable] + args |
|
|
|
if ownership is not None: |
|
|
|
args = ["gosu", ownership] + args |
|
|
|
flush_buffers() |
|
|
|
os.execve("/usr/sbin/gosu", args, environ) |
|
|
|
else: |
|
|
|
flush_buffers() |
|
|
|
os.execve(sys.executable, args, environ) |
|
|
|
|
|
|
|
|
|
|
|