Skip to content

Commit

Permalink
More helpful error messages for missing config
Browse files Browse the repository at this point in the history
  • Loading branch information
Mark Haines committed Sep 2, 2014
1 parent ab0637c commit d45f89c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 6 deletions.
25 changes: 23 additions & 2 deletions synapse/config/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
import yaml


class ConfigError(Exception):
pass


class Config(object):
def __init__(self, args):
pass
Expand All @@ -29,8 +33,25 @@ def __init__(self, args):
def abspath(file_path):
return os.path.abspath(file_path) if file_path else file_path

@staticmethod
def read_file(file_path):
@classmethod
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:
return file_stream.read()

Expand Down
2 changes: 1 addition & 1 deletion synapse/config/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def add_arguments(cls, parser):
" service on the given port.")

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)
return nacl.signing.SigningKey(signing_key_bytes)

Expand Down
8 changes: 5 additions & 3 deletions synapse/config/tls.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ def __init__(self, args):
self.tls_private_key = self.read_tls_private_key(
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
def add_arguments(cls, parser):
Expand All @@ -45,11 +47,11 @@ def add_arguments(cls, parser):
help="PEM dh parameters for ephemeral keys")

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)

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)

@classmethod
Expand Down

0 comments on commit d45f89c

Please sign in to comment.