X-Git-Url: https://v.licheni.net/stack/cam.git/blobdiff_plain/de74ecfb399e9c18e476104744856fde67ea2e81..112c04e3926d62291efd902a1dcb0b2d24feeb59:/cam/config.py diff --git a/cam/config.py b/cam/config.py new file mode 100644 index 0000000..4e73a2b --- /dev/null +++ b/cam/config.py @@ -0,0 +1,26 @@ +import ConfigParser +import os +from cam import cert +from cam import ca + + +class ConfigError(Exception): + pass + + +def read_config(filename): + parser = ConfigParser.ConfigParser() + if not parser.read(filename): + raise ConfigError('File not found: %s' % filename) + root_dir = os.path.dirname(os.path.abspath(filename)) + global_config = {} + if parser.has_section('global'): + global_config = dict(parser.items('global')) + root_dir = global_config.get('root_dir', root_dir) + ca_obj = ca.CA(root_dir, dict(parser.items('ca'))) + certs = [] + for section in parser.sections(): + if section in ('ca', 'global'): + continue + certs.append(cert.Cert(ca_obj, section, dict(parser.items(section)))) + return global_config, ca_obj, certs