# Copyright (C) 2010-2012 Cuckoo Sandbox Developers. # This file is part of Cuckoo Sandbox - http://www.cuckoosandbox.org # See the file 'docs/LICENSE' for copying permission. import os import ConfigParser from lib.cuckoo.common.constants import CUCKOO_ROOT from lib.cuckoo.common.abstracts import Dictionary from lib.cuckoo.common.exceptions import CuckooOperationalError class Config: """Configuration file parser.""" def __init__(self, cfg=os.path.join(CUCKOO_ROOT, "conf", "cuckoo.conf")): """@param cfg: configuration file path.""" config = ConfigParser.ConfigParser() config.read(cfg) for section in config.sections(): setattr(self, section, Dictionary()) for name, raw_value in config.items(section): try: value = config.getboolean(section, name) except ValueError: try: value = config.getint(section, name) except ValueError: value = config.get(section, name) setattr(getattr(self, section), name, value) def get(self, section): """Get option. @param section: section to fetch. @raise CuckooOperationalError: if section not found. @return: option value. """ try: return getattr(self, section) except AttributeError as e: raise CuckooOperationalError("Option %s is not found in configuration, error: %s" % (section, e)) .