Example #1
0
 def read_config(self):
     '''Reads the config file into memory
     '''
     if "%(configdir)s" in self.defaults['config']:
         # fix the config path
         self.defaults['config'] = self.defaults['config'] \
             % {'configdir': self.defaults['configdir']}
     for key in self.defaults:
         self.defaults[key] = self._sub_(self.defaults[key])
     defaults = OrderedDict()
     # Add only the defaults we want in the configparser
     for key in ['gkeysdir', 'keyring', 'sign-keydir', 'logdir', 'seedsdir',
         'keyserver']:
         defaults[key] = self.defaults[key]
     self.configparser = SaneConfigParser(defaults)
     self.configparser.read(self.defaults['config'])
     # I consider this hacky, but due to shortcomings of ConfigParser
     # we need to reset the defaults redefined in the 'base' section
     for key in self.configparser.options('base'):
         self.defaults[key] = self.configparser.get('base', key)
         defaults[key] = self.defaults[key]
     self.configparser._defaults = defaults
     for section in self.configparser.sections():
         if section == 'base':
             continue
         for key in self.configparser.options(section):
             self.defaults[section][key] = self.configparser.get(section, key)
Example #2
0
 def read_config(self, filename=None):
     '''Reads the config file into memory
     '''
     if "%(configdir)s" in self.defaults['config']:
         # fix the config path
         self.defaults['config'] = self.defaults['config'] \
             % {'configdir': self.defaults['configdir']}
     for key in self.defaults:
         self.defaults[key] = self._sub_(self.defaults[key])
     defaults = OrderedDict()
     # Add only the defaults we want in the configparser
     for key in ['gkeysdir', 'homedir', 'keyring', 'sign-keydir', 'logdir',
         'seedsdir', 'keyserver']:
         defaults[key] = self.defaults[key]
     if filename == None:
         filename = self.defaults['config']
     if "foo-bar'd" in filename:
         print("Config: read_config(); Configuration ERROR: filename: %s, access: %s"
             % (filename, os.access(filename, os.R_OK)))
     self.configparser = SaneConfigParser(defaults)
     self.configparser.read(filename)
     if self.configparser.has_section('base'):
         # I consider this hacky, but due to shortcomings of ConfigParser
         # we need to reset the defaults redefined in the 'base' section
         for key in self.configparser.options('base'):
             self.defaults[key] = self.configparser.get('base', key)
             defaults[key] = self.defaults[key]
     self.configparser._defaults = defaults
     for section in self.configparser.sections():
         if section == 'base':
             continue
         for key in self.configparser.options(section):
             if section not in self.defaults:
                 self.defaults[section] = {}
             self.defaults[section][key] = self.configparser.get(section, key)
Example #3
0
 def read_config(self, filename=None):
     '''Reads the config file into memory
     '''
     if "%(configdir)s" in self.defaults['config']:
         # fix the config path
         self.defaults['config'] = self.defaults['config'] \
             % {'configdir': self.defaults['configdir']}
     for key in self.defaults:
         self.defaults[key] = self._sub_(self.defaults[key])
     defaults = OrderedDict()
     # Add only the defaults we want in the configparser
     for key in [
             'gkeysdir', 'homedir', 'keyring', 'sign-keydir', 'logdir',
             'seedsdir', 'keyserver'
     ]:
         defaults[key] = self.defaults[key]
     if filename == None:
         filename = self.defaults['config']
     if "foo-bar'd" in filename:
         print(
             "Config: read_config(); Configuration ERROR: filename: %s, access: %s"
             % (filename, os.access(filename, os.R_OK)))
     self.configparser = SaneConfigParser(defaults)
     self.configparser.read(filename)
     if self.configparser.has_section('base'):
         # I consider this hacky, but due to shortcomings of ConfigParser
         # we need to reset the defaults redefined in the 'base' section
         for key in self.configparser.options('base'):
             self.defaults[key] = self.configparser.get('base', key)
             defaults[key] = self.defaults[key]
     self.configparser._defaults = defaults
     for section in self.configparser.sections():
         if section == 'base':
             continue
         for key in self.configparser.options(section):
             if section not in self.defaults:
                 self.defaults[section] = {}
             self.defaults[section][key] = self.configparser.get(
                 section, key)
Example #4
0
class GKeysConfig(GPGConfig):
    """ Configuration superclass which holds our gentoo-keys
    config settings for pygpg """
    def __init__(self, config=None, root=None, read_configfile=False):
        """ Class initialiser """
        GPGConfig.__init__(self)

        self.logger = None
        self.root = root or ''
        self.defaults = OrderedDict(self.defaults)
        if config:
            self.defaults['config'] = config
            self.defaults['configdir'] = os.path.dirname(config)
        else:
            self._set_default_config()
        self.configparser = None
        self._add_gkey_defaults()
        if read_configfile:
            self.read_config()

    def _set_default_config(self):
        self.defaults['homedir'] = os.path.expanduser('~')
        self.defaults['userconfigdir'] = os.path.join(self.defaults['homedir'],
                                                      '.config', 'gkeys')
        self.defaults['configdir'] = self.defaults['userconfigdir']
        self.defaults['config'] = os.path.join(self.defaults['userconfigdir'],
                                               'gkeys.conf')
        if not os.path.exists(self.defaults['config']):
            self.defaults['configdir'] = path(
                [self.root, EPREFIX, '/etc/gkeys'])
            self.defaults['config'] = '%(configdir)s/gkeys.conf'

    def _add_gkey_defaults(self):
        self.defaults['gkeysdir'] = path(
            [self.root, EPREFIX, '/var/lib/gentoo/gkeys'])
        self.defaults['keyring'] = '%(gkeysdir)s/keyrings'
        self.defaults['sign-keydir'] = '%(gkeysdir)s/sign',
        self.defaults['logdir'] = '/var/log/gkeys'
        # local directory to scan for seed files installed via ebuild, layman
        # or manual install.
        self.defaults['seedsdir'] = '%(gkeysdir)s/seeds'
        self.defaults['seeds'] = {}
        self.defaults['keyserver'] = 'pool.sks-keyservers.net'
        # NOTE: files is umask mode in octal, directories is chmod mode in octal
        self.defaults['permissions'] = {
            'files': '0o002',
            'directories': '0o775',
        }
        self.defaults['seedurls'] = {}
        self.defaults['sign'] = {
            'key': 'fingerprint',
            'keydir': '~/.gkeys',
            'keyring': None,
            'type': 'clearsign',
        }
        self.defaults['verify-keyring'] = 'gentoo'
        self.defaults['verify-nick'] = 'gkeys'
        self.defaults['verify-seeds'] = {}

    def read_config(self, filename=None):
        '''Reads the config file into memory
        '''
        if "%(configdir)s" in self.defaults['config']:
            # fix the config path
            self.defaults['config'] = self.defaults['config'] \
                % {'configdir': self.defaults['configdir']}
        for key in self.defaults:
            self.defaults[key] = self._sub_(self.defaults[key])
        defaults = OrderedDict()
        # Add only the defaults we want in the configparser
        for key in [
                'gkeysdir', 'homedir', 'keyring', 'sign-keydir', 'logdir',
                'seedsdir', 'keyserver'
        ]:
            defaults[key] = self.defaults[key]
        if filename == None:
            filename = self.defaults['config']
        if "foo-bar'd" in filename:
            print(
                "Config: read_config(); Configuration ERROR: filename: %s, access: %s"
                % (filename, os.access(filename, os.R_OK)))
        self.configparser = SaneConfigParser(defaults)
        self.configparser.read(filename)
        if self.configparser.has_section('base'):
            # I consider this hacky, but due to shortcomings of ConfigParser
            # we need to reset the defaults redefined in the 'base' section
            for key in self.configparser.options('base'):
                self.defaults[key] = self.configparser.get('base', key)
                defaults[key] = self.defaults[key]
        self.configparser._defaults = defaults
        for section in self.configparser.sections():
            if section == 'base':
                continue
            for key in self.configparser.options(section):
                if section not in self.defaults:
                    self.defaults[section] = {}
                self.defaults[section][key] = self.configparser.get(
                    section, key)

    def get_key(self, key, subkey=None):
        return self._get_(key, subkey)

    def _get_(self, key, subkey=None):
        if subkey:
            if key in self.options and subkey in self.options[key]:
                return self._sub_(self.options[key][subkey])
            elif key in self.defaults and subkey in self.defaults[key]:
                return self._sub_(self.defaults[key][subkey])
            else:
                return super(GKeysConfig, self)._get_(key, subkey)
        else:
            return super(GKeysConfig, self)._get_(key, subkey)
Example #5
0
class GKeysConfig(GPGConfig):
    """ Configuration superclass which holds our gentoo-keys
    config settings for pygpg """

    def __init__(self, config=None, root=None, read_configfile=False):
        """ Class initialiser """
        GPGConfig.__init__(self)

        self.logger = None
        self.root = root or ''
        self.defaults = OrderedDict(self.defaults)
        if config:
            self.defaults['config'] = config
            self.defaults['configdir'] = os.path.dirname(config)
        else:
            homedir = os.path.expanduser('~')
            self.defaults['configdir'] = homedir
            self.defaults['config']= os.path.join(homedir, '.gkeys.conf')
            if not os.path.exists(self.defaults['config']):
                self.defaults['configdir'] = path([self.root, EPREFIX, '/etc/gkeys'])
                self.defaults['config'] = '%(configdir)s/gkeys.conf'
        self.configparser = None
        self._add_gkey_defaults()
        if read_configfile:
            self.read_config()


    def _add_gkey_defaults(self):
        self.defaults['gkeysdir'] = path([self.root, EPREFIX, '/var/lib/gentoo/gkeys'])
        self.defaults['keyring'] = '%(gkeysdir)s/keyring'
        self.defaults['sign-keydir'] = '%(gkeysdir)s/sign',
        self.defaults['logdir'] = '/var/log/gkeys'
        # local directory to scan for seed files installed via ebuild, layman
        # or manual install.
        self.defaults['seedsdir'] = '%(gkeysdir)s/seeds'
        self.defaults['seeds'] = {}
        self.defaults['keyserver'] = 'pool.sks-keyservers.net'
        # NOTE: files is umask mode in octal, directories is chmod mode in octal
        self.defaults['permissions'] = {'files': '0o002', 'directories': '0o775',}
        self.defaults['seedurls'] = {}
        self.defaults['sign'] = {
            'key': 'fingerprint',
            'keydir': '~/.gkeys',
            'keyring': None,
            'type': 'clearsign',
        }
        self.defaults['verify-keyring'] = ''
        self.defaults['verify-seeds'] = {}


    def read_config(self):
        '''Reads the config file into memory
        '''
        if "%(configdir)s" in self.defaults['config']:
            # fix the config path
            self.defaults['config'] = self.defaults['config'] \
                % {'configdir': self.defaults['configdir']}
        for key in self.defaults:
            self.defaults[key] = self._sub_(self.defaults[key])
        defaults = OrderedDict()
        # Add only the defaults we want in the configparser
        for key in ['gkeysdir', 'keyring', 'sign-keydir', 'logdir', 'seedsdir',
            'keyserver']:
            defaults[key] = self.defaults[key]
        self.configparser = SaneConfigParser(defaults)
        self.configparser.read(self.defaults['config'])
        # I consider this hacky, but due to shortcomings of ConfigParser
        # we need to reset the defaults redefined in the 'base' section
        for key in self.configparser.options('base'):
            self.defaults[key] = self.configparser.get('base', key)
            defaults[key] = self.defaults[key]
        self.configparser._defaults = defaults
        for section in self.configparser.sections():
            if section == 'base':
                continue
            for key in self.configparser.options(section):
                self.defaults[section][key] = self.configparser.get(section, key)

    def get_key(self, key, subkey=None):
        return self._get_(key, subkey)


    def _get_(self, key, subkey=None):
        if subkey:
            if key in self.options and subkey in self.options[key]:
                return self._sub_(self.options[key][subkey])
            elif key in self.defaults and subkey in self.defaults[key]:
                return self._sub_(self.defaults[key][subkey])
            else:
                return super(GKeysConfig, self)._get_(key, subkey)
        else:
            return super(GKeysConfig, self)._get_(key, subkey)