mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-15 10:03:54 +01:00
More helpful error messages for missing config
This commit is contained in:
parent
ab0637c2c3
commit
d45f89c95b
3 changed files with 29 additions and 6 deletions
|
@ -21,6 +21,10 @@ import os
|
||||||
import yaml
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class Config(object):
|
class Config(object):
|
||||||
def __init__(self, args):
|
def __init__(self, args):
|
||||||
pass
|
pass
|
||||||
|
@ -29,8 +33,25 @@ class Config(object):
|
||||||
def abspath(file_path):
|
def abspath(file_path):
|
||||||
return os.path.abspath(file_path) if file_path else file_path
|
return os.path.abspath(file_path) if file_path else file_path
|
||||||
|
|
||||||
@staticmethod
|
@classmethod
|
||||||
def read_file(file_path):
|
def check_file(cls, file_path, config_name):
|
||||||
|
if file_path is None:
|
||||||
|
raise ConfigError(
|
||||||
|
"Missing config for %s."
|
||||||
|
" Try running again with --generate-config"
|
||||||
|
% (config_name,)
|
||||||
|
)
|
||||||
|
if not os.path.exists(file_path):
|
||||||
|
raise ConfigError(
|
||||||
|
"File % config for %s doesn't exist."
|
||||||
|
" Try running again with --generate-config"
|
||||||
|
% (config_name,)
|
||||||
|
)
|
||||||
|
return cls.abspath(file_path)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def read_file(cls, file_path, config_name):
|
||||||
|
cls.check_file(file_path, config_name)
|
||||||
with open(file_path) as file_stream:
|
with open(file_path) as file_stream:
|
||||||
return file_stream.read()
|
return file_stream.read()
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ class ServerConfig(Config):
|
||||||
" service on the given port.")
|
" service on the given port.")
|
||||||
|
|
||||||
def read_signing_key(self, signing_key_path):
|
def read_signing_key(self, signing_key_path):
|
||||||
signing_key_base64 = self.read_file(signing_key_path)
|
signing_key_base64 = self.read_file(signing_key_path, "signing_key")
|
||||||
signing_key_bytes = decode_base64(signing_key_base64)
|
signing_key_bytes = decode_base64(signing_key_base64)
|
||||||
return nacl.signing.SigningKey(signing_key_bytes)
|
return nacl.signing.SigningKey(signing_key_bytes)
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,9 @@ class TlsConfig(Config):
|
||||||
self.tls_private_key = self.read_tls_private_key(
|
self.tls_private_key = self.read_tls_private_key(
|
||||||
args.tls_private_key_path
|
args.tls_private_key_path
|
||||||
)
|
)
|
||||||
self.tls_dh_params_path = self.abspath(args.tls_dh_params_path)
|
self.tls_dh_params_path = self.check_path(
|
||||||
|
args.tls_dh_params_path, "tls_dh_params"
|
||||||
|
)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def add_arguments(cls, parser):
|
def add_arguments(cls, parser):
|
||||||
|
@ -45,11 +47,11 @@ class TlsConfig(Config):
|
||||||
help="PEM dh parameters for ephemeral keys")
|
help="PEM dh parameters for ephemeral keys")
|
||||||
|
|
||||||
def read_tls_certificate(self, cert_path):
|
def read_tls_certificate(self, cert_path):
|
||||||
cert_pem = self.read_file(cert_path)
|
cert_pem = self.read_file(cert_path, "tls_certificate")
|
||||||
return crypto.load_certificate(crypto.FILETYPE_PEM, cert_pem)
|
return crypto.load_certificate(crypto.FILETYPE_PEM, cert_pem)
|
||||||
|
|
||||||
def read_tls_private_key(self, private_key_path):
|
def read_tls_private_key(self, private_key_path):
|
||||||
private_key_pem = self.read_file(private_key_path)
|
private_key_pem = self.read_file(private_key_path, "tls_private_key")
|
||||||
return crypto.load_privatekey(crypto.FILETYPE_PEM, private_key_pem)
|
return crypto.load_privatekey(crypto.FILETYPE_PEM, private_key_pem)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
Loading…
Reference in a new issue