add the "fp" command to dump fingerprints; minor fixes to the help doc
[stack/cam.git] / cam / config.py
1 import ConfigParser
2 import os
3 from cam import cert
4 from cam import ca
5
6
7 class ConfigError(Exception):
8     pass
9
10
11 def read_config(filename):
12     parser = ConfigParser.ConfigParser()
13     if not parser.read(filename):
14         raise ConfigError('File not found: %s' % filename)
15     root_dir = os.path.dirname(os.path.abspath(filename))
16     global_config = {}
17     if parser.has_section('global'):
18         global_config = dict(parser.items('global'))
19         root_dir = global_config.get('root_dir', root_dir)
20     ca_obj = ca.CA(root_dir, dict(parser.items('ca')))
21     certs = []
22     for section in parser.sections():
23         if section in ('ca', 'global'):
24             continue
25         certs.append(cert.Cert(ca_obj, section, dict(parser.items(section))))
26     return global_config, ca_obj, certs