示例#1
0
文件: Options.py 项目: sbworth/bcfg2
 def getCFP(self):
     if not self.__cfp:
         self.__cfp = ConfigParser.ConfigParser()
         # FIXME: Remove this hack when except: pass below is fixed
         try:
             self.__cfp.readfp(open(self.cfpath))
         except IOError:
             e = sys.exc_info()[1]
             print("Unable to read bcfg2.conf: %s" % e)
     return self.__cfp
示例#2
0
def db_from_config(cfile):
    cp = ConfigParser.ConfigParser()
    cp.read([cfile])
    driver = cp.get('snapshots', 'driver')
    if driver == 'sqlite':
        path = cp.get('snapshots', 'database')
        return 'sqlite:///%s' % path
    elif driver in ['mysql', 'postgres']:
        user = cp.get('snapshots', 'user')
        password = cp.get('snapshots', 'password')
        host = cp.get('snapshots', 'host')
        db = cp.get('snapshots', 'database')
        return '%s://%s:%s@%s/%s' % (driver, user, password, host, db)
    else:
        raise Exception("unsupported db driver %s" % driver)
示例#3
0
文件: SSLCA.py 项目: mkdfh/bcfg2-dev
 def build_req_config(self, entry, metadata):
     """
     generates a temporary openssl configuration file that is
     used to generate the required certificate request
     """
     # create temp request config file
     conffile = open(tempfile.mkstemp()[1], 'w')
     cp = ConfigParser.ConfigParser({})
     cp.optionxform = str
     defaults = {
         'req': {
             'default_md': 'sha1',
             'distinguished_name': 'req_distinguished_name',
             'req_extensions': 'v3_req',
             'x509_extensions': 'v3_req',
             'prompt': 'no'
         },
         'req_distinguished_name': {},
         'v3_req': {
             'subjectAltName': '@alt_names'
         },
         'alt_names': {}
     }
     for section in list(defaults.keys()):
         cp.add_section(section)
         for key in defaults[section]:
             cp.set(section, key, defaults[section][key])
     x = 1
     altnames = list(metadata.aliases)
     altnames.append(metadata.hostname)
     for altname in altnames:
         cp.set('alt_names', 'DNS.' + str(x), altname)
         x += 1
     for item in ['C', 'L', 'ST', 'O', 'OU', 'emailAddress']:
         if self.cert_specs[entry.get('name')][item]:
             cp.set('req_distinguished_name', item,
                    self.cert_specs[entry.get('name')][item])
     cp.set('req_distinguished_name', 'CN', metadata.hostname)
     cp.write(conffile)
     conffile.close()
     return conffile.name
示例#4
0
    def __init__(self, logger, cfg, setup):
        self._initialised = False
        Bcfg2.Client.Tools.PkgTool.__init__(self, logger, cfg, setup)
        self._initialised = True
        self.__important__ = self.__important__ + ['/etc/make.conf']
        self._pkg_pattern = re.compile('(.*)-(\d.*)')
        self._ebuild_pattern = re.compile('(ebuild|binary)')
        self.cfg = cfg
        self.installed = {}
        self._binpkgonly = True

        # Used to get options from configuration file
        parser = ConfigParser.ConfigParser()
        parser.read(self.setup.get('setup'))
        for opt in ['binpkgonly']:
            if parser.has_option(self.name, opt):
                setattr(self, ('_%s' % opt),
                        self._StrToBoolIfBool(parser.get(self.name, opt)))

        if self._binpkgonly:
            self.pkgtool = self._binpkgtool
        self.RefreshPackages()
示例#5
0
def copy_section(src_file, tgt_cfg, section, newsection=None):
    if newsection is None:
        newsection = section

    cfg = ConfigParser.ConfigParser()
    if len(cfg.read(src_file)) == 1:
        if cfg.has_section(section):
            try:
                tgt_cfg.add_section(newsection)
            except ConfigParser.DuplicateSectionError:
                print("[%s] section already exists in %s, adding options" %
                      (newsection, setup['cfile']))
            for opt in cfg.options(section):
                val = cfg.get(section, opt)
                if tgt_cfg.has_option(newsection, opt):
                    print("%s in [%s] already populated in %s, skipping" %
                          (opt, newsection, setup['cfile']))
                    print("  %s: %s" %
                          (setup['cfile'], tgt_cfg.get(newsection, opt)))
                    print("  %s: %s" % (src_file, val))
                else:
                    print("Set %s in [%s] to %s" % (opt, newsection, val))
                    tgt_cfg.set(newsection, opt, val)
示例#6
0
 def getCFP(self):
     if not self.__cfp:
         self.__cfp = ConfigParser.ConfigParser()
         self.__cfp.readfp(open(self.cfpath))
     return self.__cfp
示例#7
0
    def HandleEvent(self, event=None):
        """
        Updates which files this plugin handles based upon filesystem events.
        Allows configuration items to be added/removed without server restarts.
        """
        action = event.code2str()
        if event.filename[0] == '/':
            return
        epath = "".join([self.data, self.handles[event.requestID],
                         event.filename])
        if posixpath.isdir(epath):
            ident = self.handles[event.requestID] + event.filename
        else:
            ident = self.handles[event.requestID][:-1]

        fname = "".join([ident, '/', event.filename])

        if event.filename.endswith('.xml'):
            if action in ['exists', 'created', 'changed']:
                if event.filename.endswith('key.xml'):
                    key_spec = dict(list(lxml.etree.parse(epath,
                                                          parser=Bcfg2.Server.XMLParser).find('Key').items()))
                    self.key_specs[ident] = {
                        'bits': key_spec.get('bits', 2048),
                        'type': key_spec.get('type', 'rsa')
                    }
                    self.Entries['Path'][ident] = self.get_key
                elif event.filename.endswith('cert.xml'):
                    cert_spec = dict(list(lxml.etree.parse(epath,
                                                           parser=Bcfg2.Server.XMLParser).find('Cert').items()))
                    ca = cert_spec.get('ca', 'default')
                    self.cert_specs[ident] = {
                        'ca': ca,
                        'format': cert_spec.get('format', 'pem'),
                        'key': cert_spec.get('key'),
                        'days': cert_spec.get('days', 365),
                        'C': cert_spec.get('c'),
                        'L': cert_spec.get('l'),
                        'ST': cert_spec.get('st'),
                        'OU': cert_spec.get('ou'),
                        'O': cert_spec.get('o'),
                        'emailAddress': cert_spec.get('emailaddress')
                    }
                    cp = ConfigParser.ConfigParser()
                    cp.read(self.core.cfile)
                    self.CAs[ca] = dict(cp.items('sslca_' + ca))
                    self.Entries['Path'][ident] = self.get_cert
            if action == 'deleted':
                if ident in self.Entries['Path']:
                    del self.Entries['Path'][ident]
        else:
            if action in ['exists', 'created']:
                if posixpath.isdir(epath):
                    self.AddDirectoryMonitor(epath[len(self.data):])
                if ident not in self.entries and posixpath.isfile(epath):
                    self.entries[fname] = self.__child__(epath)
                    self.entries[fname].HandleEvent(event)
            if action == 'changed':
                self.entries[fname].HandleEvent(event)
            elif action == 'deleted':
                if fname in self.entries:
                    del self.entries[fname]
                else:
                    self.entries[fname].HandleEvent(event)
示例#8
0
 def getCFP(self):
     if not self.__cfp:
         self.__cfp = ConfigParser.ConfigParser()
         self.__cfp.read(self.configfile)
     return self.__cfp
示例#9
0
import django
import os
import sys

# Compatibility import
from Bcfg2.Bcfg2Py3k import ConfigParser
# Django settings for bcfg2 reports project.
c = ConfigParser.ConfigParser()
if 'BCFG2_CONFIG_FILE' in os.environ:
    cfiles = os.environ['BCFG2_CONFIG_FILE']
else:
    cfiles = ['/etc/bcfg2.conf', '/etc/bcfg2-web.conf']
if len(c.read(cfiles)) == 0:
    raise ImportError("Please check that bcfg2.conf or bcfg2-web.conf exists "
                      "and is readable by your web server.")

try:
    DEBUG = c.getboolean('statistics', 'web_debug')
except:
    DEBUG = False

if DEBUG:
    print("Warning: Setting web_debug to True causes extraordinary memory "
          "leaks.  Only use this setting if you know what you're doing.")

TEMPLATE_DEBUG = DEBUG

ADMINS = (('Root', 'root'), )

MANAGERS = ADMINS
try: