upgrade to CAM v2.0
[stack/cam.git] / cam / config.py
diff --git a/cam/config.py b/cam/config.py
new file mode 100644 (file)
index 0000000..4e73a2b
--- /dev/null
@@ -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