* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-22 23:11 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-22 23:11 UTC (permalink / raw
To: gentoo-commits
commit: 64596f0e270fa7642c95fc227343e651a55cbb50
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 21 00:26:25 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Mon Dec 22 22:58:09 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=64596f0e
gkeys/actions.py: fix rebase error in Available_Actions
---
gkeys/gkeys/actions.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index a224372..be59fb3 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -26,7 +26,7 @@ from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
Available_Actions = ['listseed', 'addseed', 'removeseed', 'moveseed', 'fetchseed',
'listseedfiles', 'listkey', 'installkey', 'removekey', 'movekey',
- 'installed', 'importkey', 'verify', 'checkkey', 'sign', 'speccheck']
+ 'installed', 'importkey', 'verify', 'checkkey', 'sign', 'speccheck',
'refreshkey']
Action_Options = {
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-22 23:11 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-22 23:11 UTC (permalink / raw
To: gentoo-commits
commit: 62c2253da57fe8fdbbc52ee0066c260ed24d9a8d
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 22 22:27:30 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Mon Dec 22 22:58:09 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=62c2253d
gkeys/checks.py: Correctly set the exiry to 5 years (glep 63)
---
gkeys/gkeys/checks.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index db3d59f..b66165b 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -54,15 +54,15 @@ TEST_SPEC = {
'DSA': 2048,
'RSA': 2048,
},
- 'expire': 3 * 365, # in days
+ 'expire': 5 * 365, # in days
'subkeys': { # warning/error mode
'encrypt': {
'mode': 'notice',
- 'expire': 3 * 365,
+ 'expire': 5 * 365,
},
'sign': {
'mode': 'error',
- 'expire': 365,
+ 'expire': 5 * 365,
},
},
'algorithms': ['DSA', 'RSA', '1', '2', '3', '17'],
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-23 0:13 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-23 0:13 UTC (permalink / raw
To: gentoo-commits
commit: 7e2f8e8ca345ee38fd5814ec7d151f6bfed56574
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 22 22:27:30 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 00:11:33 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=7e2f8e8c
gkeys/checks.py: Correctly set the exiry to 5 years (glep 63)
---
gkeys/gkeys/checks.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index db3d59f..b66165b 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -54,15 +54,15 @@ TEST_SPEC = {
'DSA': 2048,
'RSA': 2048,
},
- 'expire': 3 * 365, # in days
+ 'expire': 5 * 365, # in days
'subkeys': { # warning/error mode
'encrypt': {
'mode': 'notice',
- 'expire': 3 * 365,
+ 'expire': 5 * 365,
},
'sign': {
'mode': 'error',
- 'expire': 365,
+ 'expire': 5 * 365,
},
},
'algorithms': ['DSA', 'RSA', '1', '2', '3', '17'],
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-23 2:50 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-23 2:50 UTC (permalink / raw
To: gentoo-commits
commit: d2092c5d6d32265f237544616e4d46d88f009eeb
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 22 22:27:30 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 02:48:33 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=d2092c5d
gkeys/checks.py: Correctly set the exiry to 5 years (glep 63)
---
gkeys/gkeys/checks.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index db3d59f..b66165b 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -54,15 +54,15 @@ TEST_SPEC = {
'DSA': 2048,
'RSA': 2048,
},
- 'expire': 3 * 365, # in days
+ 'expire': 5 * 365, # in days
'subkeys': { # warning/error mode
'encrypt': {
'mode': 'notice',
- 'expire': 3 * 365,
+ 'expire': 5 * 365,
},
'sign': {
'mode': 'error',
- 'expire': 365,
+ 'expire': 5 * 365,
},
},
'algorithms': ['DSA', 'RSA', '1', '2', '3', '17'],
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-23 2:50 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-23 2:50 UTC (permalink / raw
To: gentoo-commits
commit: d0530210fad7fefead404d07c0af4b57c8f35fca
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 02:40:01 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 02:48:33 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=d0530210
gkeys/config.py: Fix the config defaults to do % substitution for the defaults
If it did not find and loada valid config file, the defaults did not have the % subtitution applied.
The logger calls were not using the logger setting in the config. So I changed that
---
gkeys/gkeys/base.py | 2 +-
gkeys/gkeys/config.py | 17 +++++++++++------
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 95142f9..a5e3bfa 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -203,7 +203,7 @@ class CliBase(object):
logger = set_logger('gkeys', self.config['logdir'], args.debug,
dirmode=int(self.config.get_key('permissions', 'directories'),0),
filemask=int(self.config.get_key('permissions', 'files'),0))
- config.logger = logger
+ self.config.logger = logger
fileops.logger = logger
seed.logger = logger
lib.logger = logger
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 775ea1f..e6789ff 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -13,6 +13,8 @@
import os
import sys
+from collections import OrderedDict
+
# py3.2
if sys.hexversion >= 0x30200f0:
import configparser as ConfigParser
@@ -27,7 +29,6 @@ from pyGPG.config import GPGConfig
from gkeys import log
from gkeys.utils import path
-logger = log.logger
# establish the eprefix, initially set so eprefixify can
@@ -60,7 +61,9 @@ class GKeysConfig(GPGConfig):
""" 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)
@@ -115,6 +118,8 @@ class GKeysConfig(GPGConfig):
# 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 = self.get_defaults()
# remove some defaults from being entered into the configparser
for key in ['gpg_defaults', 'only_usable', 'refetch', 'tasks']:
@@ -130,8 +135,8 @@ class GKeysConfig(GPGConfig):
def _get_(self, key, subkey=None):
if subkey:
if self.configparser and self.configparser.has_option(key, subkey):
- if logger:
- logger.debug("Found %s in configparser... %s"
+ if self.logger:
+ self.logger.debug("Found %s in configparser... %s"
% (key, str(self.configparser.get(key, subkey))))
return self._sub_(self.configparser.get(key, subkey))
#print("CONFIG: key, subkey", key, subkey)
@@ -142,10 +147,10 @@ class GKeysConfig(GPGConfig):
else:
return super(GKeysConfig, self)._get_(key, subkey)
elif self.configparser and self.configparser.has_option('DEFAULT', key):
- if logger:
- logger.debug("Found %s in configparser... %s"
+ if self.logger:
+ self.logger.debug("Found %s in configparser... %s"
% (key, str(self.configparser.get('DEFAULT', key))))
- #logger.debug("type(key)= %s"
+ #self.logger.debug("type(key)= %s"
# % str(type(self.configparser.get('DEFAULT', key))))
return self.configparser.get('DEFAULT', key)
else:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: 316554e0b6875e86e4ecd96a9eca48fa1966140f
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:11:57 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:11:57 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=316554e0
gkeys/base.py: Make the category/seedfile choices dynamic
---
gkeys/gkeys/base.py | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index a5e3bfa..af66ff3 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -80,7 +80,7 @@ class CliBase(object):
@staticmethod
def _option_category(parser=None):
parser.add_argument('-C', '--category',
- choices=['rel', 'dev', 'overlays', 'sign'], dest='category', default=None,
+ dest='category', default=None,
help='The key or seed directory category to use or update')
@staticmethod
@@ -216,6 +216,16 @@ class CliBase(object):
logger.debug("Main: run; Found alternate config request: %s"
% args.config)
+ # check if a -C, --category was input
+ # if it was, check if the category is listed in the [seeds]
+ cat = None
+ if 'category' in args:
+ cat = args.category
+ elif 'seedfile' in args:
+ cat = args.seedfile
+ if not self._check_category(cat):
+ return False
+
# establish our actions instance
self.actions = self.cli_config['Actions'](self.config, self.output_results, logger)
@@ -251,3 +261,18 @@ class CliBase(object):
def output_failed(self, failed):
pass
+
+
+ def _check_category(self, category=None):
+ '''Checks that the category (seedfile) is listed
+ in the [seeds] config or defaults['seeds'] section
+
+ @param args: configparser instance
+ @return boolean
+ '''
+ available_cats = list(self.config.defaults['seeds'])
+ if category and category not in available_cats:
+ self.config.logger.error("Invalid category or seedfile entered: %s" % category)
+ self.config.logger.error("Available categories or seedfiles: %s" % ', '.join(sorted(available_cats)))
+ return False
+ return True
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: 6ccce1de425884f2279435381b756a50cec5b34b
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:10:47 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:10:47 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=6ccce1de
gkeys/config.py: Subclass ConfigParser to be able to set defaults in the config
Allow some base defaults to be set in the [base] section of the config.
Reset our defaults from those changes.
Resave the new defaults back to the configparser for interpolation when retrieving the values.
---
gkeys/gkeys/SaneConfigParser.py | 27 ++++++++++++++++++
gkeys/gkeys/config.py | 63 ++++++++++++++---------------------------
2 files changed, 48 insertions(+), 42 deletions(-)
diff --git a/gkeys/gkeys/SaneConfigParser.py b/gkeys/gkeys/SaneConfigParser.py
new file mode 100644
index 0000000..3bb69b5
--- /dev/null
+++ b/gkeys/gkeys/SaneConfigParser.py
@@ -0,0 +1,27 @@
+
+import sys
+
+# py3.2
+if sys.hexversion >= 0x30200f0:
+ from configparser import configparser as ConfigParser
+ from configparser import NoSectionError
+ py3 = True
+else:
+ from ConfigParser import ConfigParser, NoSectionError
+ py3 = False
+
+
+class SaneConfigParser(ConfigParser):
+ '''This class overrides what I consider a buggy RawConfigParser.options()'''
+
+
+ def options(self, section):
+ """Return a list of option names for the given section name."""
+ try:
+ opts = self._sections[section].copy()
+ except KeyError:
+ raise NoSectionError(section)
+ if '__name__' in opts:
+ del opts['__name__']
+ return list(opts.keys())
+
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index e6789ff..7e31909 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -11,22 +11,13 @@
"""
import os
-import sys
from collections import OrderedDict
-
-# py3.2
-if sys.hexversion >= 0x30200f0:
- import configparser as ConfigParser
-else:
- import ConfigParser
-
from collections import namedtuple
-
from pyGPG.config import GPGConfig
-from gkeys import log
+from gkeys.SaneConfigParser import SaneConfigParser
from gkeys.utils import path
@@ -82,27 +73,17 @@ class GKeysConfig(GPGConfig):
def _add_gkey_defaults(self):
self.defaults['gkeysdir'] = path([self.root, EPREFIX, '/var/lib/gentoo/gkeys'])
- self.defaults['dev-keydir'] = '%(gkeysdir)s/devs'
- self.defaults['rel-keydir'] = '%(gkeysdir)s/release'
self.defaults['keyring'] = '%(gkeysdir)s/keyring'
- self.defaults['overlays-keydir'] = '%(gkeysdir)s/overlays'
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'] = {
- 'gentoo': '%(seedsdir)s/gentoo.seeds',
- 'gentoodevs': '%(seedsdir)s/gentoodevs.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'] = {
- 'gentoo': 'https://api.gentoo.org/gentoo-keys/seeds/gentoo.seeds',
- 'gentoodevs': 'https://api.gentoo.org/gentoo-keys/seeds/gentoodevs.seeds',
- 'gkey': 'gkeys',
- }
+ self.defaults['seedurls'] = {}
self.defaults['sign'] = {
'key': 'fingerprint',
'keydir': '~/.gkeys',
@@ -120,13 +101,24 @@ class GKeysConfig(GPGConfig):
% {'configdir': self.defaults['configdir']}
for key in self.defaults:
self.defaults[key] = self._sub_(self.defaults[key])
- defaults = self.get_defaults()
- # remove some defaults from being entered into the configparser
- for key in ['gpg_defaults', 'only_usable', 'refetch', 'tasks']:
- defaults.pop(key)
- self.configparser = ConfigParser.ConfigParser(defaults)
- self.configparser.read(defaults['config'])
-
+ 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)
@@ -134,25 +126,12 @@ class GKeysConfig(GPGConfig):
def _get_(self, key, subkey=None):
if subkey:
- if self.configparser and self.configparser.has_option(key, subkey):
- if self.logger:
- self.logger.debug("Found %s in configparser... %s"
- % (key, str(self.configparser.get(key, subkey))))
- return self._sub_(self.configparser.get(key, subkey))
- #print("CONFIG: key, subkey", key, 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)
- elif self.configparser and self.configparser.has_option('DEFAULT', key):
- if self.logger:
- self.logger.debug("Found %s in configparser... %s"
- % (key, str(self.configparser.get('DEFAULT', key))))
- #self.logger.debug("type(key)= %s"
- # % str(type(self.configparser.get('DEFAULT', key))))
- return self.configparser.get('DEFAULT', key)
else:
return super(GKeysConfig, self)._get_(key, subkey)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: 16cc8210932e1f34b5faa6f9984bf14acfb9ea42
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:16:17 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:16:17 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=16cc8210
gkeys: Use the new category handling system
---
gkeys/gkeys/actions.py | 39 +++++++++++++++++++++++++--------------
gkeys/gkeys/seedhandler.py | 8 ++++----
2 files changed, 29 insertions(+), 18 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index be59fb3..82d608d 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -175,8 +175,9 @@ class Actions(object):
# get confirmation
# fill in code here
if not args.category:
- args.category = 'rel'
- catdir = self.config.get_key(args.category + "-category")
+ args.category = 'gentoo'
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: listkey; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
handler = SeedHandler(self.logger, self.config)
@@ -270,7 +271,8 @@ class Actions(object):
return (False, ["Search failed for search term"])
# get confirmation
# fill in code here
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.seedfile)
self.logger.debug("ACTIONS: installkey; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
results = {}
@@ -305,7 +307,8 @@ class Actions(object):
self.logger.debug("ACTIONS: checkkey; args: %s" % str(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category)
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: checkkey; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
results = {}
@@ -352,7 +355,8 @@ class Actions(object):
self.logger.debug("ACTIONS: speccheck; args: %s" % str(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category)
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: speccheck; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
results = {}
@@ -494,7 +498,8 @@ class Actions(object):
if ans in ["no", "n"]:
messages = ["Key removal aborted... Nothing to be done."]
else:
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
rm_candidate = os.path.join(catdir, gkey.nick)
self.logger.debug("ACTIONS: removekey; catdir = %s" % catdir)
if args.category:
@@ -515,7 +520,8 @@ class Actions(object):
def importkey(self, args):
'''Add a specified key to a specified keyring'''
if args.category:
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
keyring_dir = self.config.get_key("keyring")
self.logger.debug("ACTIONS: importkey; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
@@ -538,8 +544,8 @@ class Actions(object):
if not results[gkey.name][0].failed:
print("Importing: ", gkey.name)
self.logger.debug("ACTIONS: importkey; importing key: %s", gkey.name)
- keyring = os.path.join(keyring_dir,args.keyring + '.gpg')
- self.gpg.add_to_keyring(gkey, catdir, keyring)
+ _keyring = os.path.join(catdir, args.keyring + '.gpg')
+ self.gpg.add_to_keyring(gkey, catdir, _keyring)
if failed and self.output:
self.output([failed], "\n Failed to install:")
if len(failed):
@@ -552,7 +558,8 @@ class Actions(object):
def installed(self, args):
'''Lists the installed key directories'''
if args.category:
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
else:
return (False, ["Please specify a category."])
self.logger.debug("ACTIONS: installed; catdir = %s" % catdir)
@@ -599,12 +606,13 @@ class Actions(object):
if not args.filename:
return (False, ['Please provide a signed file.'])
if not args.category:
- args.category = 'rel'
+ args.category = 'gentoo'
(success, data) = self.installed(args)
keys = data[1]
if not keys:
return (False, ['No installed keys found, try installkey action.'])
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: verify; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
filepath, signature = args.filename, args.signature
@@ -697,6 +705,8 @@ class Actions(object):
if not args.filename:
return (False, ['Please provide a file to sign.'])
+ if not args.nick:
+ args.nick = self.config.get_key("sign", "nick")
if isinstance(args.nick, str):
nicks = [args.nick]
else:
@@ -706,7 +716,7 @@ class Actions(object):
self.seeds = handler.load_category('sign', nicks)
if not self.seeds.seeds:
return (False, ['No installed keys, try installkey action.', ''])
- basedir = self.config.get_key("sign-category")
+ basedir = self.config.get_key("sign-keydir")
keydir = self.config.get_key("sign", "keydir")
task = self.config.get_key("sign", "type")
keyring = self.config.get_key("sign", "keyring")
@@ -747,7 +757,8 @@ class Actions(object):
self.logger.debug("ACTIONS: refreshkey; args: %s" % str(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category)
- catdir = self.config.get_key(args.category + "-category")
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: refreshkey; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
results = {}
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index cc797b9..0e66b69 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -87,11 +87,11 @@ class SeedHandler(object):
@return Seeds class object
'''
seeds = Seeds(config=self.config)
- if category:
- catdir = self.config.get_key(category + "-category")
+ if category == 'sign':
+ catdir = self.config.get_key('sign-keydir')
else:
- self.logger.debug("SeedHandler: load_category; Error invalid category: %s." % (str(category)))
- return seeds
+ keyrings = self.config.get_key('keyring')
+ catdir = os.path.join(keyrings, category)
self.logger.debug("SeedHandler: load_category; catdir = %s" % catdir)
try:
if not nicks:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: 2e6471b039548e303519f2253fbe2645b8c84812
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:12:49 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:12:49 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=2e6471b0
gkeys/lib.py: fix a missed mode setting for an ensure_dirs() call
---
gkeys/gkeys/lib.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 50ed63e..67c94ae 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -132,7 +132,8 @@ class GkeysGPG(GPG):
self.set_keydir(gkey.keydir, 'recv-keys', reset=True)
self.set_keyring('pubring.gpg', 'recv-keys', reset=False)
logger.debug("LIB: add_key; ensure dirs: " + self.keydir)
- ensure_dirs(str(self.keydir))
+ mode = int(self.config.get_key('permissions', 'directories'),0)
+ ensure_dirs(str(self.keydir), mode=mode)
self.set_keyseedfile(trap_errors=False)
results = []
for fingerprint in gkey.fingerprint:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: 3456ab0d1b163cda2ab6449ef5e5fe16be5e1793
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:18:57 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:18:57 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3456ab0d
gkeys/actions.py: Fix listseed action for the new category/seedfile handling
---
gkeys/gkeys/actions.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index cba2c1c..094ea71 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -68,7 +68,7 @@ class Actions(object):
self.logger.debug("ACTIONS: listseed; kwargs: %s" % str(kwargs))
if not self.seeds:
try:
- self.seeds = handler.load_seeds(args.seedfile, args.filename)
+ self.seeds = handler.load_seeds(args.seedfile, args.nick)
except ValueError:
return (False, ["Failed to load seed file. Consider fetching seedfiles."])
if self.seeds:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: 9287582dbc97699f80f5bbe4c52819b378510d89
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:18:08 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:18:08 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=9287582d
gkeys/actions.py: Improve category error message
---
gkeys/gkeys/actions.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 92dbb70..cba2c1c 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -304,7 +304,7 @@ class Actions(object):
def checkkey(self, args):
'''Check keys actions'''
if not args.category:
- return (False, ["Please specify seeds type."])
+ return (False, ["Please specify seeds category."])
self.logger.debug("ACTIONS: checkkey; args: %s" % str(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category)
@@ -352,7 +352,7 @@ class Actions(object):
def speccheck(self, args):
'''Check keys actions'''
if not args.category:
- return (False, ["Please specify seeds type."])
+ return (False, ["Please specify seeds category."])
self.logger.debug("ACTIONS: speccheck; args: %s" % str(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: ec872348954a8850c071d0a56d502731389b03ea
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 23:52:48 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 23:52:48 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=ec872348
gkeys: Use -C, --category exclusivley for consistency
No longer use -S, --seedfile for seed file operations.
With the new dynamic category handling, it was redundant.
---
gkeys/gkeys/actions.py | 20 ++++++++++----------
gkeys/gkeys/base.py | 2 --
2 files changed, 10 insertions(+), 12 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 094ea71..172b43e 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -31,14 +31,14 @@ Available_Actions = ['listcats', 'listseed', 'addseed', 'removeseed', 'moveseed'
Action_Options = {
'listcats': [],
- 'listseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile', '1file'],
- 'addseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile'],
- 'removeseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile'],
- 'moveseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile', 'dest'],
- 'fetchseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile'],
+ 'listseed': ['nick', 'name', 'keydir', 'fingerprint', 'category', '1file'],
+ 'addseed': ['nick', 'name', 'keydir', 'fingerprint', 'category'],
+ 'removeseed': ['nick', 'name', 'keydir', 'fingerprint', 'category'],
+ 'moveseed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'dest'],
+ 'fetchseed': ['nick', 'name', 'keydir', 'fingerprint', 'category'],
'listseedfiles': [],
'listkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'gpgsearch', 'keyid'],
- 'installkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'seedfile', '1file'],
+ 'installkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', '1file'],
'removekey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
'movekey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'dest'],
'installed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
@@ -68,7 +68,7 @@ class Actions(object):
self.logger.debug("ACTIONS: listseed; kwargs: %s" % str(kwargs))
if not self.seeds:
try:
- self.seeds = handler.load_seeds(args.seedfile, args.nick)
+ self.seeds = handler.load_seeds(args.category, args.nick)
except ValueError:
return (False, ["Failed to load seed file. Consider fetching seedfiles."])
if self.seeds:
@@ -82,7 +82,7 @@ class Actions(object):
'''Download the selected seed file(s)'''
self.logger.debug("ACTIONS: fetchseed; args: %s" % str(args))
handler = SeedHandler(self.logger, self.config)
- success, messages = handler.fetch_seeds(args.seedfile, args, self.verify)
+ success, messages = handler.fetch_seeds(args.category, args, self.verify)
messages.append("")
messages.append("Fetch operation completed")
@@ -273,7 +273,7 @@ class Actions(object):
# get confirmation
# fill in code here
keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.seedfile)
+ catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: installkey; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
results = {}
@@ -696,7 +696,7 @@ class Actions(object):
def listcats(self, args):
'''List seed file definitions found in the config'''
seeds = list(self.config.get_key('seeds'))
- return (True, {"Categories/Seedfiles defined: %s\n"
+ return (True, {"Categories defined: %s\n"
% (", ".join(seeds)): True})
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index af66ff3..cadafc7 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -221,8 +221,6 @@ class CliBase(object):
cat = None
if 'category' in args:
cat = args.category
- elif 'seedfile' in args:
- cat = args.seedfile
if not self._check_category(cat):
return False
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-24 19:59 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-24 19:59 UTC (permalink / raw
To: gentoo-commits
commit: ffab5352db1f82250f57c234f2bc296abe413eaa
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 23 21:17:16 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue Dec 23 21:17:16 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=ffab5352
gkeys/actions.py: Add a listcats action
---
gkeys/gkeys/actions.py | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 82d608d..92dbb70 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -24,12 +24,13 @@ from gkeys.seedhandler import SeedHandler
from gkeys.config import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
-Available_Actions = ['listseed', 'addseed', 'removeseed', 'moveseed', 'fetchseed',
+Available_Actions = ['listcats', 'listseed', 'addseed', 'removeseed', 'moveseed', 'fetchseed',
'listseedfiles', 'listkey', 'installkey', 'removekey', 'movekey',
'installed', 'importkey', 'verify', 'checkkey', 'sign', 'speccheck',
'refreshkey']
Action_Options = {
+ 'listcats': [],
'listseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile', '1file'],
'addseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile'],
'removeseed': ['nick', 'name', 'keydir', 'fingerprint', 'seedfile'],
@@ -692,6 +693,13 @@ class Actions(object):
return (verified, messages)
+ def listcats(self, args):
+ '''List seed file definitions found in the config'''
+ seeds = list(self.config.get_key('seeds'))
+ return (True, {"Categories/Seedfiles defined: %s\n"
+ % (", ".join(seeds)): True})
+
+
def listseedfiles(self, args):
'''List seed files found in the configured seed directory'''
seedsdir = self.config.get_key('seedsdir')
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-25 20:43 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-25 20:43 UTC (permalink / raw
To: gentoo-commits
commit: 3bc9f57e8a2f2abe668b496803a5cd35f8ae2dd1
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 25 18:38:41 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Dec 25 18:38:41 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3bc9f57e
gkeys/base.py: Pass the cli_config['prog'] to the logger initialization
---
gkeys/gkeys/base.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index cadafc7..e7dd710 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -200,7 +200,7 @@ class CliBase(object):
self.config.read_config()
# establish our logger and update it in the imported files
- logger = set_logger('gkeys', self.config['logdir'], args.debug,
+ logger = set_logger(self.cli_config['prog'], self.config['logdir'], args.debug,
dirmode=int(self.config.get_key('permissions', 'directories'),0),
filemask=int(self.config.get_key('permissions', 'files'),0))
self.config.logger = logger
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-25 20:43 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-25 20:43 UTC (permalink / raw
To: gentoo-commits
commit: 26352316808100b05b5504b69ed8d1b22053ddb2
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 25 20:38:17 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Dec 25 20:38:17 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=26352316
gkeys/base.py: Py3 compatibility fix
---
gkeys/gkeys/base.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index e7dd710..5ad92e7 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -15,11 +15,16 @@ from __future__ import print_function
import argparse
+import sys
from gkeys import config, fileops, seed, lib
from gkeys.log import log_levels, set_logger
+if sys.version_info[0] >= 3:
+ unicode = str
+
+
class CliBase(object):
'''Common cli and argsparse options class'''
@@ -246,7 +251,7 @@ class CliBase(object):
if header:
print(header)
for msg in results:
- if isinstance(msg, str) or isinstance(msg, unicode):
+ if type(msg) in [str, unicode]:
print(' ', msg)
else:
try:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-25 20:43 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-25 20:43 UTC (permalink / raw
To: gentoo-commits
commit: 5cbb4cb9100dc4451d359e7a711d2bd84837c64c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 25 20:31:35 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Dec 25 20:31:35 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=5cbb4cb9
gkeys/SaneConfigParser: Fix py3 imports
---
gkeys/gkeys/SaneConfigParser.py | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/gkeys/gkeys/SaneConfigParser.py b/gkeys/gkeys/SaneConfigParser.py
index 3bb69b5..0616335 100644
--- a/gkeys/gkeys/SaneConfigParser.py
+++ b/gkeys/gkeys/SaneConfigParser.py
@@ -1,14 +1,11 @@
import sys
-# py3.2
-if sys.hexversion >= 0x30200f0:
- from configparser import configparser as ConfigParser
+try:
+ from configparser import ConfigParser
from configparser import NoSectionError
- py3 = True
-else:
+except:
from ConfigParser import ConfigParser, NoSectionError
- py3 = False
class SaneConfigParser(ConfigParser):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-25 22:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-25 22:07 UTC (permalink / raw
To: gentoo-commits
commit: 4f03ed0fc2f6f7b076758f35ca83334cecd407eb
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 25 22:04:07 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Dec 25 22:04:07 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=4f03ed0f
gkeys/base.py: Fix >=py3.3 argparse regression handling subparsers
---
gkeys/gkeys/base.py | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 5ad92e7..4184cfc 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -180,7 +180,12 @@ class CliBase(object):
action_parser.set_defaults(action=name)
self._add_options(action_parser, self.cli_config['Action_Options'][name])
- return parser.parse_args(args)
+ parsed_args = parser.parse_args(args)
+ action = getattr(parsed_args, 'action', None)
+ if not action:
+ parser.print_help()
+ sys.exit(1)
+ return parsed_args
def _add_options(self, parser, options):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-25 22:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-25 22:07 UTC (permalink / raw
To: gentoo-commits
commit: 8fb33b3e010e36ae3c669494eccb5fac79ffcc4e
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 25 20:51:21 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Dec 25 20:51:21 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=8fb33b3e
gkeys.actions.py: Remove global ssl-fetch import in favor of the embedded import
For server installations (currently vulture.g.o) it may not need ssl-fetch nor have dev-python/requests installed.
---
gkeys/gkeys/actions.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 172b43e..de8446d 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -17,7 +17,6 @@ import os
from collections import defaultdict
from json import load
from shutil import rmtree
-from sslfetch.connections import Connector
from gkeys.lib import GkeysGPG
from gkeys.seedhandler import SeedHandler
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-26 5:02 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-26 5:02 UTC (permalink / raw
To: gentoo-commits
commit: 9403b0561283b504880e5808dd9efada2c89eeb8
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 26 04:58:56 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Dec 26 04:58:56 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=9403b056
gkeys/actions.py: py2/py3 fixes for input/raw_input
---
gkeys/gkeys/actions.py | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index dddd48a..aa1aa08 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -13,6 +13,13 @@
from __future__ import print_function
import os
+import sys
+
+if sys.version_info[0] >= 3:
+ py_input = input
+else:
+ py_input = raw_input
+
from collections import defaultdict
from json import load
@@ -494,10 +501,10 @@ class Actions(object):
success = False
else:
self.output(['', [gkey]], '\n Found GKEY seed:')
- ans = raw_input("Do you really want to remove %s?[y/n]: "
+ ans = py_input ("Do you really want to remove %s?[y/n]: "
% kwargs['nick']).lower()
while ans not in ["yes", "y", "no", "n"]:
- ans = raw_input("Do you really want to remove %s?[y/n]: "
+ ans = py_input ("Do you really want to remove %s?[y/n]: "
% kwargs['nick']).lower()
if ans in ["no", "n"]:
messages = ["Key removal aborted... Nothing to be done."]
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-26 5:02 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-26 5:02 UTC (permalink / raw
To: gentoo-commits
commit: 8c2c8fb37f5ad311e18b94f3ea3960ea4405376f
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 26 04:59:32 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Dec 26 04:59:32 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=8c2c8fb3
gkeys/actions.py: Verification output formatting tweaks
---
gkeys/gkeys/actions.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index aa1aa08..4814389 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -697,11 +697,11 @@ class Actions(object):
verified = True
messages = ["Verification succeeded.: %s" % (filepath),
"Key info...............: %s <%s>, %s"
- % ( key.name, key.nick,keyid)]
+ % ( key.name, key.nick, keyid)]
else:
- messages = ["Verification failed.....:" % (filepath),
+ messages = ["Verification failed..... %s:" % (filepath),
"Key info................: %s <%s>, %s"
- % ( key.name, key.nick,keyid)]
+ % ( key.name, key.nick, keyid)]
return (verified, messages)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-26 5:02 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-26 5:02 UTC (permalink / raw
To: gentoo-commits
commit: 4f703027bb652c69c5328bc9745efcff2e6ed31c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 26 05:00:09 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Dec 26 05:00:09 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=4f703027
gkeys/base.py: Tweak -k, --keyring help message
---
gkeys/gkeys/base.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 4184cfc..2b32908 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -69,8 +69,8 @@ class CliBase(object):
@staticmethod
def _option_keyring(parser=None):
- parser.add_argument('-k', '--keyring', dest='keyring', default='trusted_keyring',
- help='The name of the keyring to use')
+ parser.add_argument('-k', '--keyring', dest='keyring', default=None,
+ help='The name of the keyring to use for verification, etc.')
@staticmethod
def _option_nick(parser=None):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-26 18:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-26 18:37 UTC (permalink / raw
To: gentoo-commits
commit: 9f1d92c2e9c48af8a39dfcf1bdc044595ee3180c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 26 09:29:17 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Dec 26 09:29:17 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=9f1d92c2
gkeys/base.py: Improve help layout, unify no action help with py2.7
---
gkeys/gkeys/base.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 2b32908..b09082f 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -164,7 +164,10 @@ class CliBase(object):
help='The logging level to set for the logfile')
- subparsers = parser.add_subparsers(help='actions')
+ subparsers = parser.add_subparsers(
+ title='Subcommands',
+ description='Valid subcommands',
+ help='Additional help')
for name in self.cli_config['Available_Actions']:
action_method = getattr(self.cli_config['Actions'], name)
actiondoc = action_method.__doc__
@@ -183,7 +186,7 @@ class CliBase(object):
parsed_args = parser.parse_args(args)
action = getattr(parsed_args, 'action', None)
if not action:
- parser.print_help()
+ parser.print_usage()
sys.exit(1)
return parsed_args
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-26 18:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-26 18:37 UTC (permalink / raw
To: gentoo-commits
commit: aa706673eb76355bedfd714f5b4966ab87d1d7d6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 26 09:41:38 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Dec 26 09:41:38 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=aa706673
gkeys: Separate and sort the avaialbe actions into groups
Create false actions for the 3 groups to help improve the argparse help output.
These stubb functions can be used later to organize and print the group specific actions only.
---
gkeys/gkeys/actions.py | 35 +++++++++++++++++++++++++++++++----
gkeys/gkeys/base.py | 3 +++
2 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 4814389..ea42b6d 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -30,10 +30,16 @@ from gkeys.seedhandler import SeedHandler
from gkeys.config import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
-Available_Actions = ['listcats', 'listseed', 'addseed', 'removeseed', 'moveseed', 'fetchseed',
- 'listseedfiles', 'listkey', 'installkey', 'removekey', 'movekey',
- 'installed', 'importkey', 'verify', 'checkkey', 'sign', 'speccheck',
- 'refreshkey']
+
+Seed_Actions = ['SEED_COMMANDS', 'addseed', 'fetchseed', 'listcats', 'listseed', 'listseedfiles',
+ 'moveseed', 'removeseed']
+
+Key_Actions = ['KEY_COMMANDS', 'checkkey', 'importkey', 'installed', 'installkey', 'listkey',
+ 'movekey', 'refreshkey', 'removekey']
+
+General_Actions = ['GENERAL_COMMANDS', 'sign','verify']
+
+Available_Actions = Seed_Actions + Key_Actions + General_Actions
Action_Options = {
'listcats': [],
@@ -54,6 +60,9 @@ Action_Options = {
'sign': ['nick', 'name', 'keydir', 'fingerprint', 'file', 'keyring'],
'speccheck': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'],
'refreshkey': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'],
+ 'GENERAL_COMMANDS': [],
+ 'SEED_COMMANDS': [],
+ 'KEY_COMMANDS': [],
}
@@ -67,6 +76,24 @@ class Actions(object):
self.seeds = None
+ @staticmethod
+ def SEED_COMMANDS(args):
+ '''------< seed actions >-------'''
+ pass
+
+
+ @staticmethod
+ def KEY_COMMANDS(args):
+ '''-------< key actions >--------'''
+ pass
+
+
+ @staticmethod
+ def GENERAL_COMMANDS(args):
+ '''-----< general actions >------'''
+ pass
+
+
def listseed(self, args):
'''Pretty-print the selected seed file(s)'''
handler = SeedHandler(self.logger, self.config)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index f9a019f..c37d536 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -187,6 +187,9 @@ class CliBase(object):
if not action:
parser.print_usage()
sys.exit(1)
+ elif action in ['GENERAL_COMMANDS', 'KEY_COMMANDS', 'SEED_COMMANDS']:
+ parser.print_help()
+ sys.exit(1)
return parsed_args
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-26 18:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-26 18:37 UTC (permalink / raw
To: gentoo-commits
commit: c3a16fa68f5f85de440f5e8526800ac69090a4c9
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 26 09:46:44 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Dec 26 09:46:44 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=c3a16fa6
gkeys/base.py: Add a justdoit option, fix boolean options
---
gkeys/gkeys/base.py | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index c37d536..201f31c 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -128,8 +128,8 @@ class CliBase(object):
@staticmethod
def _option_timestamp(parser=None):
- parser.add_argument('-t', '--timestamp', dest='timestamp', type=bool,
- default=False,
+ parser.add_argument('-t', '--timestamp', dest='timestamp',
+ action='store_true', default=False,
help='Turn on timestamp use')
@staticmethod
@@ -139,9 +139,16 @@ class CliBase(object):
@staticmethod
def _option_status(parser=None):
- parser.add_argument('-A', '--status', default=False,
+ parser.add_argument('-A', '--status', action='store_true',
+ default=False,
help='The active status of the member')
+ @staticmethod
+ def _option_justdoit(parser=None):
+ parser.add_argument('--justdoit', dest='justdoit',
+ action='store_true', default=False,
+ help='Just Do It')
+
def parse_args(self, args):
'''Parse a list of aruments
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 244ace4fee1054945eb97aad31919dba71374b0b
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 26 21:15:22 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:25 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=244ace4f
gkeys: Add key-search action
Add _list_search() sub function.
Add category output and grouping.
Fix arg as a list searching as well as seed values as a list.
Use recursion to get to single value searches.
Make nick search to be partial unless --exact specified.
Move main key_search code to SeedHandler class, it is much better suited to this class.
Add 1name subparser option for single name entries only
Add seen tracking in key_search to eliminate duplicates
Add --all option to key-search
If --all is specified, it filters out search results to match a seed for all criteria specified.
---
gkeys/gkeys/actions.py | 34 ++++++++++++++++++++++++++++++++--
gkeys/gkeys/base.py | 17 +++++++++++++++++
gkeys/gkeys/seed.py | 43 ++++++++++++++++++++++++++++++++++++++++++-
gkeys/gkeys/seedhandler.py | 25 +++++++++++++++++++++++++
4 files changed, 116 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index ded3df7..be1823f 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -35,7 +35,7 @@ Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed', 'list-cats',
'list-seed', 'list-seedfiles', 'move-seed', 'remove-seed']
Key_Actions = ['----keys-----', 'check-key', 'import-key', 'installed',
- 'install-key', 'list-key', 'move-key', 'refresh-key', 'remove-key',
+ 'install-key', 'key-search', 'list-key', 'move-key', 'refresh-key', 'remove-key',
'spec-check']
General_Actions = ['---general---', 'sign','verify']
@@ -56,6 +56,7 @@ Action_Options = {
'move-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'dest'],
'installed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
'import-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
+ 'key-search': ['nick', '1name', 'keydir', 'fingerprint', 'keyid', 'category', 'exact', 'all'],
'verify': ['dest', 'nick', 'name', 'keydir', 'fingerprint', 'category', '1file', 'signature', 'timestamp'],
'check-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'],
'sign': ['nick', 'name', 'keydir', 'fingerprint', 'file', 'keyring'],
@@ -80,6 +81,7 @@ Action_Map = {
'move-key': 'movekey',
'installed': 'installed',
'import-key': 'importkey',
+ 'key-search': 'key_search',
'verify': 'verify',
'check-key': 'checkkey',
'sign': 'sign',
@@ -845,5 +847,33 @@ class Actions(object):
return (True, ['Completed'])
-
+ def key_search(self, args):
+ '''Search for a key's seed field in the installed keys db'''
+ handler = SeedHandler(self.logger, self.config)
+ results = {}
+ search_args = [x for x in
+ ['nick', 'name', 'keydir', 'fingerprint', 'keyid']
+ if getattr(args, x)]
+ if args.category:
+ handler.load_category(args.category)
+ results[args.category] = handler.key_search(args, search_args)
+ else:
+ for cat in list(self.config.get_key('seeds')):
+ handler.load_category(cat)
+ found = handler.key_search(args, search_args)
+ if found:
+ if cat in results:
+ results[cat].extend(found)
+ else:
+ results[cat] = found
+ msgs = []
+ for cat in results:
+ msgs.append("Category: %s" % cat)
+ seen = []
+ for result in results[cat]:
+ if result and result.nick not in seen:
+ if isinstance(result, GKEY):
+ seen.append(result)
+ msgs.append(seen)
+ return (True, msgs)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 499c291..541a12c 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -46,11 +46,23 @@ class CliBase(object):
@staticmethod
+ def _option_all(parser=None):
+ parser.add_argument('-a', '--all', dest='all',
+ action='store_true', default=False,
+ help='Match all inputs arguments in searches')
+
+ @staticmethod
def _option_dest(parser=None):
parser.add_argument('-d', '--dest', dest='destination', default=None,
help='The destination seed file or keydir for move, copy operations')
@staticmethod
+ def _option_exact(parser=None):
+ parser.add_argument('-e', '--exact', dest='exact',
+ action='store_true', default=False,
+ help='Use CASE matching in searches')
+
+ @staticmethod
def _option_fingerprint(parser=None):
parser.add_argument('-f', '--fingerprint', dest='fingerprint',
default=None, nargs='+',
@@ -83,6 +95,11 @@ class CliBase(object):
default=None, help='The name of the the key')
@staticmethod
+ def _option_1name(parser=None):
+ parser.add_argument('-N', '--name', dest='name',
+ default=None, help='The name of the the key')
+
+ @staticmethod
def _option_category(parser=None):
parser.add_argument('-C', '--category',
dest='category', default=None,
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index f0cb019..2406c1a 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -160,7 +160,48 @@ class Seeds(object):
try:
return self.seeds[nick]
except KeyError:
- return None
+ return []
+
+
+ def field_search(self, field, value, exact=False):
+ '''Searches the seeds for a matching nick
+
+ @param keyid: string
+ @returns GKEY instance or None
+ '''
+ results = []
+ if field == 'nick' and exact:
+ return self.nick_search(value)
+ for nick in self.seeds:
+ seed = self.seeds[nick]
+ val = getattr(seed, field)
+ if isinstance(val, list) or isinstance(value, list):
+ if self._list_search(value, val, exact):
+ results.append(seed)
+ elif exact:
+ if value in val:
+ results.append(seed)
+ else:
+ if value.lower() in val.lower():
+ results.append(seed)
+
+ return results
+
+
+ def _list_search(self, find, values, exact):
+ if isinstance(find, list):
+ found = []
+ for f in find:
+ found.append(self._list_search(f, values, exact))
+ return True in found
+ for val in values:
+ if exact:
+ if find in val:
+ return True
+ else:
+ if find.lower() in val.lower():
+ return True
+ return False
def _error(self, err):
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index bb233f9..2222bd2 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -26,6 +26,7 @@ class SeedHandler(object):
self.logger = logger
self.fingerprint_re = re.compile('[0-9A-Fa-f]{40}')
self.finerprint_re2 = re.compile('[0-9A-Fa-f]{4}( [0-9A-Fa-f]{4}){9}')
+ self.seeds = None
def new(self, args, checkgkey=False):
@@ -77,6 +78,7 @@ class SeedHandler(object):
"%s" % filepath)
seeds = Seeds(config=self.config)
seeds.load(filepath)
+ self.seeds = seeds
return seeds
def load_category(self, category, nicks=None):
@@ -113,6 +115,7 @@ class SeedHandler(object):
except OSError as error:
self.logger.debug("SeedHandler: load_category; OSError for %s" % catdir)
self.logger.debug("Error was: %s" % str(error))
+ self.seeds = seeds
return seeds
def fetch_seeds(self, seeds, args, verified_dl=None):
@@ -188,3 +191,25 @@ class SeedHandler(object):
self.logger.error(' GPGKey: Non hexadecimal digits in ' + 'fingerprint for fingerprint: ' + fingerprint)
is_good = False
return is_good, fingerprint
+
+ def key_search(self, args, search_args):
+ '''Performs a search for all listed args in the seeds'''
+ results = []
+ self.logger.debug("_field_search search_args: %s" % str(search_args))
+ found = {}
+ search_args.sort()
+ for arg in search_args:
+ seeds = self.seeds.field_search(arg, getattr(args, arg), args.exact)
+ for seed in seeds:
+ if seed.nick in found:
+ found[seed.nick]['args'].append(arg)
+ else:
+ found[seed.nick] = {'args': [arg], 'seed': seed}
+ if args.all:
+ for possible in sorted(found):
+ if search_args == found[possible]['args']:
+ results.append(found[possible]['seed'])
+ else:
+ for nick in sorted(found):
+ results.append(found[nick]['seed'])
+ return results
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 5d9e409c8e2dbd6c93052f848b02740bf8dc58c2
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 27 21:37:23 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=5d9e409c
gkeys/gkey.py: Add keys and uid fields, update() to GKEY
keys field will hold the primary key fingerprints for the (to be/) installed GKEY.
fingerprints and uid fileds will be populated with all uid's and fingerprints defined in subkeys using the update().
---
gkeys/gkeys/gkey.py | 32 +++++++++++++++++++++++++++++---
1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/gkey.py b/gkeys/gkeys/gkey.py
index 41c6d8b..463f007 100644
--- a/gkeys/gkeys/gkey.py
+++ b/gkeys/gkeys/gkey.py
@@ -18,6 +18,7 @@ GKEY_STRING = ''' ----------
Name.........: %(name)s
Nick.........: %(nick)s
Keydir.......: %(keydir)s
+ UID..........: %(uid)s
'''
GKEY_FINGERPRINTS = \
@@ -26,10 +27,11 @@ GKEY_FINGERPRINTS = \
'''
-class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
+class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'uid'])):
'''Class to hold the relavent info about a key'''
- field_types = {'nick': str, 'name': str, 'keydir': str, 'fingerprint': list}
+ field_types = {'nick': str, 'name': str, 'keydir': str, 'keys': list,
+ 'fingerprint': list, 'uid': list}
__slots__ = ()
@@ -42,7 +44,12 @@ class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
@property
def pretty_print(self):
'''Pretty printing a GKEY'''
- gkey = {'name': self.name, 'nick': self.nick, 'keydir': self.keydir}
+ gkey = {
+ 'name': self.name,
+ 'nick': self.nick,
+ 'keydir': self.keydir,
+ 'uid': self.uid,
+ }
output = GKEY_STRING % gkey
for f in self.fingerprint:
fingerprint = {'fingerprint': f, 'keyid': '0x' + f[-16:]}
@@ -50,6 +57,25 @@ class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
return output
+ def update(self, result_list):
+ '''Processes a results instance from a colon listing
+ and mines all fingerprints found.
+
+ @param result_list: list of pyGPG.output.GPGResult instances
+ (one for each fingerprint in the list)
+ @return: A new, updated GKEY instance
+ '''
+ fingerprints = set()
+ uids = set()
+ for result in result_list:
+ for data in result.status.data:
+ if data.name == "FPR":
+ fingerprints.add(data.fingerprint)
+ elif data.name == "UID":
+ uids.add(data.user_ID)
+ return self._make([self.nick, self.name, self.keydir, self.keys, list(fingerprints), sorted(uids)])
+
+
class GKEY_CHECK(namedtuple('GKEY_CHECK', ['keyid', 'revoked', 'expired', 'invalid', 'sign'])):
__slots__ = ()
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: ffb2d93b1085c600cee9bd6fa2cf17c098c3bc2c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 27 21:33:07 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=ffb2d93b
gkeys: Move all GKEYS definitions to it's own file
Fix imports in other files.
---
gkeys/gkeys/actions.py | 2 +-
gkeys/gkeys/checks.py | 2 +-
gkeys/gkeys/config.py | 41 +---------------------------------
gkeys/gkeys/gkey.py | 55 ++++++++++++++++++++++++++++++++++++++++++++++
gkeys/gkeys/seed.py | 2 +-
gkeys/gkeys/seedhandler.py | 2 +-
6 files changed, 60 insertions(+), 44 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index be1823f..9baecaa 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -27,7 +27,7 @@ from shutil import rmtree
from gkeys.lib import GkeysGPG
from gkeys.seedhandler import SeedHandler
-from gkeys.config import GKEY
+from gkeys.gkey import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index 69df9c4..bddad5f 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -12,7 +12,7 @@
import time
from collections import namedtuple, OrderedDict
-from gkeys.config import GKEY_CHECK
+from gkeys.gkey import GKEY_CHECK
from pyGPG.mappings import (ALGORITHM_CODES, CAPABILITY_MAP,
KEY_VERSION_FPR_LEN, VALIDITY_MAP, VALID_LIST)
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 6eba2b3..8fa4c1b 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -6,14 +6,13 @@
Holds configuration keys and values
- @copyright: 2012 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
@license: GNU GNU GPL2, see COPYING for details.
"""
import os
from collections import OrderedDict
-from collections import namedtuple
from pyGPG.config import GPGConfig
@@ -30,16 +29,6 @@ EPREFIX = "@GENTOO_PORTAGE_EPREFIX@"
if "GENTOO_PORTAGE_EPREFIX" in EPREFIX:
EPREFIX = ''
-GKEY_STRING = ''' ----------
- Name.........: %(name)s
- Nick.........: %(nick)s
- Keydir.......: %(keydir)s
-'''
-
-GKEY_FINGERPRINTS = \
-''' Keyid........: %(keyid)s
- Fingerprint: %(fingerprint)s
-'''
MAPSEEDS = { 'dev' : 'gentoodevs.seeds', 'rel': 'gentoo.seeds' }
@@ -137,31 +126,3 @@ class GKeysConfig(GPGConfig):
else:
return super(GKeysConfig, self)._get_(key, subkey)
-
-class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
- '''Class to hold the relavent info about a key'''
-
- field_types = {'nick': str, 'name': str, 'keydir': str, 'fingerprint': list}
- __slots__ = ()
-
-
- @property
- def keyid(self):
- '''Keyid is a substring value of the fingerprint'''
- return ['0x' + x[-16:] for x in self.fingerprint]
-
-
- @property
- def pretty_print(self):
- '''Pretty printing a GKEY'''
- gkey = {'name': self.name, 'nick': self.nick, 'keydir': self.keydir}
- output = GKEY_STRING % gkey
- for f in self.fingerprint:
- fingerprint = {'fingerprint': f, 'keyid': '0x' + f[-16:]}
- output += GKEY_FINGERPRINTS % fingerprint
- return output
-
-
-class GKEY_CHECK(namedtuple('GKEY_CHECK', ['keyid', 'revoked', 'expired', 'invalid', 'sign'])):
-
- __slots__ = ()
diff --git a/gkeys/gkeys/gkey.py b/gkeys/gkeys/gkey.py
new file mode 100644
index 0000000..41c6d8b
--- /dev/null
+++ b/gkeys/gkeys/gkey.py
@@ -0,0 +1,55 @@
+#
+#-*- coding:utf-8 -*-
+
+"""
+ Gentoo-keys - gkey.py
+
+ Holds GKEY class and related values
+
+ @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
+ @license: GNU GNU GPL2, see COPYING for details.
+"""
+
+
+from collections import namedtuple
+
+
+GKEY_STRING = ''' ----------
+ Name.........: %(name)s
+ Nick.........: %(nick)s
+ Keydir.......: %(keydir)s
+'''
+
+GKEY_FINGERPRINTS = \
+''' Keyid........: %(keyid)s
+ Fingerprint: %(fingerprint)s
+'''
+
+
+class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
+ '''Class to hold the relavent info about a key'''
+
+ field_types = {'nick': str, 'name': str, 'keydir': str, 'fingerprint': list}
+ __slots__ = ()
+
+
+ @property
+ def keyid(self):
+ '''Keyid is a substring value of the fingerprint'''
+ return ['0x' + x[-16:] for x in self.fingerprint]
+
+
+ @property
+ def pretty_print(self):
+ '''Pretty printing a GKEY'''
+ gkey = {'name': self.name, 'nick': self.nick, 'keydir': self.keydir}
+ output = GKEY_STRING % gkey
+ for f in self.fingerprint:
+ fingerprint = {'fingerprint': f, 'keyid': '0x' + f[-16:]}
+ output += GKEY_FINGERPRINTS % fingerprint
+ return output
+
+
+class GKEY_CHECK(namedtuple('GKEY_CHECK', ['keyid', 'revoked', 'expired', 'invalid', 'sign'])):
+
+ __slots__ = ()
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 2406c1a..16fe0fd 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -20,7 +20,7 @@ import json
import os
from gkeys.log import logger
-from gkeys.config import GKEY
+from gkeys.gkey import GKEY
from gkeys.fileops import ensure_dirs
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 2222bd2..33ed787 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -14,7 +14,7 @@ import os
import re
from json import load
-from gkeys.config import GKEY
+from gkeys.gkey import GKEY
from gkeys.seed import Seeds
from gkeys.fileops import ensure_dirs
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 4a7e7e54a6b6ce280a221a0b039bebafd9d49701
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 27 21:51:17 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=4a7e7e54
gkeys: Add keys and uid options to actions and seed handling
Add code to auto-update existing installed gkey.seeds files with the additional data.
---
gkeys/gkeys/actions.py | 32 ++++++++++++++++----------------
gkeys/gkeys/base.py | 11 +++++++++++
gkeys/gkeys/seed.py | 6 ++++++
gkeys/gkeys/seedhandler.py | 5 +++++
4 files changed, 38 insertions(+), 16 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 9baecaa..4a4f0eb 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -44,24 +44,24 @@ Available_Actions = General_Actions + Key_Actions + Seed_Actions
Action_Options = {
'list-cats': [],
- 'list-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category', '1file'],
- 'add-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category'],
- 'remove-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category'],
- 'move-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'dest'],
- 'fetch-seed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
+ 'list-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', '1file'],
+ 'add-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'uid'],
+ 'remove-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category'],
+ 'move-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'dest'],
+ 'fetch-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
'list-seedfiles': [],
- 'list-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'gpgsearch', 'keyid'],
- 'install-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', '1file'],
- 'remove-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
- 'move-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'dest'],
- 'installed': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
- 'import-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring'],
- 'key-search': ['nick', '1name', 'keydir', 'fingerprint', 'keyid', 'category', 'exact', 'all'],
- 'verify': ['dest', 'nick', 'name', 'keydir', 'fingerprint', 'category', '1file', 'signature', 'timestamp'],
- 'check-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'],
+ 'list-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'gpgsearch', 'keyid'],
+ 'install-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', '1file'],
+ 'remove-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
+ 'move-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'dest'],
+ 'installed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
+ 'import-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
+ 'key-search': ['nick', '1name', 'keydir', 'keys', 'fingerprint', 'keyid', 'category', 'exact', 'all'],
+ 'verify': ['dest', 'nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', '1file', 'signature', 'timestamp'],
+ 'check-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
'sign': ['nick', 'name', 'keydir', 'fingerprint', 'file', 'keyring'],
- 'spec-check': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'],
- 'refresh-key': ['nick', 'name', 'keydir', 'fingerprint', 'category', 'keyring', 'keyid'],
+ 'spec-check': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
+ 'refresh-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
'---general---': [],
'----seeds----': [],
'----keys-----': [],
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 541a12c..2c0e114 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -85,6 +85,12 @@ class CliBase(object):
help='The name of the keyring to use for verification, etc.')
@staticmethod
+ def _option_keys(parser=None):
+ parser.add_argument('-K', '--keys', dest='keys', nargs='*',
+ default=None,
+ help='The name of the keyring to use for verification, etc.')
+
+ @staticmethod
def _option_nick(parser=None):
parser.add_argument('-n', '--nick', dest='nick', default=None,
help='The nick associated with the the key')
@@ -167,6 +173,11 @@ class CliBase(object):
action='store_true', default=False,
help='Just Do It')
+ @staticmethod
+ def _option_uid(parser=None):
+ parser.add_argument('-u', '--uid', dest='uid', nargs='*', default=None,
+ help='The user ID, gpg key uid')
+
def parse_args(self, args):
'''Parse a list of aruments
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 16fe0fd..67354f3 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -57,6 +57,12 @@ class Seeds(object):
self._error(err)
return False
for seed in list(seedlines.items()):
+ # GKEY class change auto-update
+ if not 'uid' in list(seed[1]):
+ seed[1]['uid'] = []
+ if not 'keys' in list(seed[1]):
+ seed[1]['keys'] = seed[1]['fingerprint'][:]
+
#try:
self.seeds[seed[0]] = GKEY(**seed[1])
#except Exception as err:
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 33ed787..a9fb720 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -111,6 +111,11 @@ class SeedHandler(object):
if seed:
for nick in sorted(seed):
key = seed[nick]
+ # GKEY class change auto-update
+ if not 'uid' in list(key):
+ key['uid'] = []
+ if not 'keys' in list(key):
+ key['keys'] = key['fingerprint'][:]
seeds.add(nick, GKEY(**key))
except OSError as error:
self.logger.debug("SeedHandler: load_category; OSError for %s" % catdir)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 7878398cdf5743d138987d5e6230b2a4d5c095a4
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 08:38:40 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=7878398c
gkeys/actions.py: Add uid search support
---
gkeys/gkeys/actions.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 03789fa..391d478 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -56,7 +56,7 @@ Action_Options = {
'move-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'dest'],
'installed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
'import-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
- 'key-search': ['nick', '1name', 'keydir', 'keys', 'fingerprint', 'keyid', 'category', 'exact', 'all'],
+ 'key-search': ['nick', '1name', 'keydir', 'keys', 'fingerprint', 'keyid', 'uid', 'category', 'exact', 'all'],
'verify': ['dest', 'nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', '1file', 'signature', 'timestamp'],
'check-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
'sign': ['nick', 'name', 'keydir', 'fingerprint', 'file', 'keyring'],
@@ -881,7 +881,7 @@ class Actions(object):
handler = SeedHandler(self.logger, self.config)
results = {}
search_args = [x for x in
- ['nick', 'name', 'keydir', 'fingerprint', 'keyid']
+ ['nick', 'name', 'keydir', 'fingerprint', 'keyid', 'uid']
if getattr(args, x)]
if args.category:
handler.load_category(args.category)
@@ -909,6 +909,6 @@ class Actions(object):
for cat in list(keys):
msgs.append("Category: %s" % cat)
msgs.append(keys[cat])
- del keys, found, cat, result, handler
+ del keys, cat, handler
return (True, msgs)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 6933a2cc528c124aeb8f1b6d59ac636b9819b167
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 08:44:06 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=6933a2cc
gkeys/actions.py: Alignment tweak for key-search message
---
gkeys/gkeys/actions.py | 2 +-
gkeys/gkeys/base.py | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 391d478..0dbdf24 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -907,7 +907,7 @@ class Actions(object):
return keys
msgs = []
for cat in list(keys):
- msgs.append("Category: %s" % cat)
+ msgs.append("Category.....: %s" % cat)
msgs.append(keys[cat])
del keys, cat, handler
return (True, msgs)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 2c0e114..2ec4375 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -300,7 +300,7 @@ class CliBase(object):
print(header)
for msg in results:
if type(msg) in [str, unicode]:
- print(' ', msg)
+ print(' ', msg)
else:
try:
print("\n".join([x.pretty_print for x in msg]))
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: eef89beeb23c6c539944b9f09d038fa821912667
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 16:54:10 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=eef89bee
gkeys/exception.py: Initial creation of GkeyException classes
Mostly copied, modified from PortageException code.
---
gkeys/gkeys/exception.py | 78 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 78 insertions(+)
diff --git a/gkeys/gkeys/exception.py b/gkeys/gkeys/exception.py
new file mode 100644
index 0000000..21a2e97
--- /dev/null
+++ b/gkeys/gkeys/exception.py
@@ -0,0 +1,78 @@
+# Copyright 1998-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+
+import sys
+
+
+if sys.version_info[0] >= 3:
+ # pylint: disable=W0622
+ basestring = str
+
+ def _unicode_encode(s, encoding='utf_8', errors='backslashreplace'):
+ if isinstance(s, str):
+ s = s.encode(encoding, errors)
+ return s
+
+ def _unicode_decode(s, encoding='utf_8', errors='replace'):
+ if isinstance(s, bytes):
+ s = str(s, encoding=encoding, errors=errors)
+ return s
+
+else:
+
+ def _unicode_encode(s, encoding='utf_8', errors='backslashreplace'):
+ if isinstance(s, unicode):
+ s = s.encode(encoding, errors)
+ return s
+
+ def _unicode_decode(s, encoding='utf_8', errors='replace'):
+ if isinstance(s, bytes):
+ s = unicode(s, encoding=encoding, errors=errors)
+ return s
+
+
+class GkeysException(Exception):
+ if sys.version_info[0] >= 3:
+ def __init__(self, value):
+ self.value = value[:]
+
+ def __str__(self):
+ if isinstance(self.value, str):
+ return self.value
+ else:
+ return repr(self.value)
+ else:
+ def __init__(self, value):
+ self.value = value[:]
+ if isinstance(self.value, basestring):
+ self.value = _unicode_decode(self.value,
+ encoding='utf_8', errors='replace')
+
+ def __unicode__(self):
+ if isinstance(self.value, unicode):
+ return self.value
+ else:
+ return _unicode_decode(repr(self.value),
+ encoding='utf_8', errors='replace')
+
+ def __str__(self):
+ if isinstance(self.value, unicode):
+ return _unicode_encode(self.value,
+ encoding='utf_8', errors='backslashreplace')
+ else:
+ return repr(self.value)
+
+
+class UpdateDbError(GkeysException):
+ '''%s
+
+ Please Run: 'gkeys refresh-key -C {foo}'
+ on all installed keyring categories
+ Then continue with normal gkey operations.'''
+ def __init__(self, value):
+ doc = self.__doc__ % (value)
+ GkeysException.__init__(self, doc)
+
+
+
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: b738dd11378cb4229fa2db3632f815627c2d746b
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 00:56:25 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=b738dd11
gkeys/actions.py: Improve verification messages and info
---
gkeys/gkeys/actions.py | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index b92f3a2..1d3a927 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -680,10 +680,13 @@ class Actions(object):
return (False, ['No installed keys found, try installkey action.'])
key = handler.seeds.nick_search(args.nick)
if not key:
- messages.append("Failed to find nick: %s in %s category"
- % (args.nick, args.category))
+ if args.nick:
+ messages.append("Failed to find.........: %s in category: %s"
+ % (args.category, args.nick))
args.category = self.config.get_key('verify-keyring')
args.nick = self.config.get_key('verify-nick')
+ messages.append("Using config defaults..: %s %s"
+ % (args.category, args.nick))
return self.verify(args, messages)
keyrings = self.config.get_key('keyring')
@@ -759,14 +762,15 @@ class Actions(object):
verified = True
messages.extend(["Verification succeeded.: %s" % (filepath),
"Key info...............: %s <%s>, %s"
- % ( key.name, key.nick, keyid)])
+ % ( key.name, key.nick, keyid),
+ " category, nick.....: %s %s" % (args.category, args.nick)])
else:
messages.extend(["Verification failed....: %s" % (filepath),
"Key info...............: %s <%s>, %s"
% ( key.name, key.nick, keyid)])
has_no_pubkey, s_keyid = results.no_pubkey
if has_no_pubkey:
- messages.append("Auto-searching for key.: %s" % s_keyid)
+ messages.append("Auto-searching for key.: 0x%s" % s_keyid)
# reset all but keyid and pass thru data
args.keyid = s_keyid
args.keydir = None
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 1626d81d20474cb55620bf19aa12924b28a795e9
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 27 21:56:14 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=1626d81d
gkeys/lib.py: Add the new GKEY.update() to add_key and refresh_key
This updates our installed gkey.seed with all fingerprints including sub-keys and uid's. This way searches for keys used to sign files can be found if the key used to sign the file was not a primary key.
---
gkeys/gkeys/lib.py | 24 +++++++++++++++++-------
1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 67c94ae..f8e6615 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -158,9 +158,8 @@ class GkeysGPG(GPG):
message += "\n gkey..: %s" % (str(gkey.fingerprint))
logger.error(message)
# Save the gkey seed to the installed db
- self.seedfile.update(gkey)
- if not self.seedfile.save():
- logger.error("GkeysGPG.add_key(); failed to save seed: " + gkey.nick)
+ success = self.update_gkey(gkey, save=True)
+ if not success:
return []
results.append(result)
return results
@@ -190,21 +189,32 @@ class GkeysGPG(GPG):
self.set_keyserver()
self.set_keydir(gkey.keydir, 'refresh-keys', reset=True)
self.set_keyring('pubring.gpg', 'refresh-keys', reset=False)
+ self.set_keyseedfile()
logger.debug("LIB: refresh_key, gkey: %s" % str(gkey))
logger.debug("** Calling runGPG with Running 'gpg %s --refresh-keys' for: %s"
% (' '.join(self.config.get_key('tasks', 'refresh-keys')), str(gkey)))
result = self.runGPG(task='refresh-keys', inputfile='')
logger.info('GPG return code: ' + str(result.returncode))
+ self.update_gkey(gkey, save=True)
return result
- def update_key(self, gkey, keydir):
+ def update_gkey(self, gkey, save=False):
'''Update the specified key in the specified keydir
@param key: tuple of (name, nick, keydir, fingerprint)
@param keydir: the keydir to add the key to
'''
- return []
+ # Update the gkey seed and save it to the installed db
+ lresults = []
+ for fpr in gkey.keys:
+ lresults.append(self.list_keys(gkey.keydir, fpr, colons=True))
+ self.seedfile.update(gkey.update(lresults))
+ if save and not self.seedfile.save():
+ logger.error("GkeysGPG.refresh_key(); failed to save seed: " + gkey.nick)
+ return False
+ return True
+
def list_keys(self, keydir, fingerprint=None, colons=False):
@@ -225,7 +235,7 @@ class GkeysGPG(GPG):
task = 'list-keys'
target = keydir
self.set_keydir(keydir, task, fingerprint=True)
- self.config.options['tasks'][task].extend(['--keyid-format', 'long', '--with-fingerprint'])
+ self.config.options['tasks'][task].extend(['--keyid-format', 'long', '--fingerprint', '--fingerprint'])
if colons:
task_value = ['--with-colons']
self.config.options['tasks'][task].extend(task_value)
@@ -315,7 +325,7 @@ class GkeysGPG(GPG):
return results
- def set_keyseedfile(self, trap_errors):
+ def set_keyseedfile(self, trap_errors=True):
if not self.keydir:
logger.debug("GkeysGPG.set_keyseedfile(); self.keydir error")
self.seedfile = Seeds(pjoin(self.keydir, 'gkey.seeds'), self.config)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: c9fbd425cd4637972aa951f7b159ec3bae9655cf
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 17:38:19 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:27 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=c9fbd425
gkeys/actions.py: Rename key-search action to search-key for consistency
---
gkeys/gkeys/actions.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 2a68739..9b44cc8 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -35,7 +35,7 @@ Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed', 'list-cats',
'list-seed', 'list-seedfiles', 'move-seed', 'remove-seed']
Key_Actions = ['----keys-----', 'check-key', 'import-key', 'installed',
- 'install-key', 'key-search', 'list-key', 'move-key', 'refresh-key', 'remove-key',
+ 'install-key', 'search-key', 'list-key', 'move-key', 'refresh-key', 'remove-key',
'spec-check']
General_Actions = ['---general---', 'sign','verify']
@@ -56,7 +56,7 @@ Action_Options = {
'move-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'dest'],
'installed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
'import-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
- 'key-search': ['nick', '1name', 'keydir', 'keys', 'fingerprint', 'keyid', 'uid', 'category', 'exact', 'all'],
+ 'search-key': ['nick', '1name', 'keydir', 'keys', 'fingerprint', 'keyid', 'uid', 'category', 'exact', 'all'],
'verify': ['dest', 'nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', '1file', 'signature', 'timestamp'],
'check-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
'sign': ['nick', 'name', 'keydir', 'fingerprint', 'file', 'keyring'],
@@ -81,7 +81,7 @@ Action_Map = {
'move-key': 'movekey',
'installed': 'installed',
'import-key': 'importkey',
- 'key-search': 'key_search',
+ 'search-key': 'key_search',
'verify': 'verify',
'check-key': 'checkkey',
'sign': 'sign',
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: d1c8f1bcf372055636628ae9b219d4c73f91a0d2
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 08:23:36 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=d1c8f1bc
gkeys/actions.py: Fix broken key-search printing
---
gkeys/gkeys/actions.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 1d3a927..03789fa 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -908,8 +908,7 @@ class Actions(object):
msgs = []
for cat in list(keys):
msgs.append("Category: %s" % cat)
- for result in keys[cat]:
- msgs.append(result)
+ msgs.append(keys[cat])
del keys, found, cat, result, handler
return (True, msgs)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 9ee49f508de378f6b7a366d8c9dba062e2be3f24
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 00:25:24 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=9ee49f50
gkeys/actions.py: Add auto-search capability to verify
If verification fails with NO_PUBKEY, it then does a search for the correct verification keyring to verify with.
---
gkeys/gkeys/actions.py | 86 ++++++++++++++++++++++++++++++++++----------------
1 file changed, 59 insertions(+), 27 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 4a4f0eb..b92f3a2 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -659,14 +659,15 @@ class Actions(object):
pass
- def verify(self, args):
- '''File verification action'''
- connector_output = {
- 'info': self.logger.debug,
- 'error': self.logger.error,
- 'kwargs-info': {},
- 'kwargs-error': {},
- }
+ def verify(self, args, messages=None):
+ '''File verification action
+
+ @ param args: argparse.parse_args instance
+ @param messages: list, private internal option used for recursion only
+ '''
+ if messages == None:
+ messages = []
+
if not args.filename:
return (False, ['Please provide a signed file.'])
if not args.category:
@@ -677,10 +678,24 @@ class Actions(object):
keys = handler.load_category(args.category)
if not keys:
return (False, ['No installed keys found, try installkey action.'])
+ key = handler.seeds.nick_search(args.nick)
+ if not key:
+ messages.append("Failed to find nick: %s in %s category"
+ % (args.nick, args.category))
+ args.category = self.config.get_key('verify-keyring')
+ args.nick = self.config.get_key('verify-nick')
+ return self.verify(args, messages)
+
keyrings = self.config.get_key('keyring')
catdir = os.path.join(keyrings, args.category)
self.logger.debug("ACTIONS: verify; catdir = %s" % catdir)
self.gpg = GkeysGPG(self.config, catdir)
+ return self._verify(args, handler, key, messages)
+
+
+ def _verify(self, args, handler, key, messages=None):
+ if messages == None:
+ messages = []
filepath, signature = args.filename, args.signature
timestamp_path = None
isurl = success = verified = False
@@ -715,7 +730,7 @@ class Actions(object):
self.logger.debug("ACTIONS: verify; local file %s" % filepath)
success = os.path.isfile(filepath)
if not success:
- messages = ["File %s cannot be retrieved." % filepath]
+ messages.append("File %s cannot be retrieved." % filepath)
else:
if not signature:
EXTENSIONS = ['.sig', '.asc', 'gpg','.gpgsig']
@@ -735,26 +750,36 @@ class Actions(object):
break
else:
sig_path = signature
- messages = []
self.logger.info("Verifying file...")
verified = False
- key = keys.nick_search(args.nick)
- if not key:
- messages.append("Failed to find nick: %s in %s category"
- % (args.nick, args.category))
- return (False, messages)
results = self.gpg.verify_file(key, sig_path, filepath)
keyid = key.keyid[0]
(valid, trust) = results.verified
if valid:
verified = True
- messages = ["Verification succeeded.: %s" % (filepath),
+ messages.extend(["Verification succeeded.: %s" % (filepath),
"Key info...............: %s <%s>, %s"
- % ( key.name, key.nick, keyid)]
+ % ( key.name, key.nick, keyid)])
else:
- messages = ["Verification failed..... %s:" % (filepath),
- "Key info................: %s <%s>, %s"
- % ( key.name, key.nick, keyid)]
+ messages.extend(["Verification failed....: %s" % (filepath),
+ "Key info...............: %s <%s>, %s"
+ % ( key.name, key.nick, keyid)])
+ has_no_pubkey, s_keyid = results.no_pubkey
+ if has_no_pubkey:
+ messages.append("Auto-searching for key.: %s" % s_keyid)
+ # reset all but keyid and pass thru data
+ args.keyid = s_keyid
+ args.keydir = None
+ args.fingerprint = None
+ args.exact = False
+ args.category = None
+ args.nick = None
+ args.name = None
+ args.all = False
+ keys = self.key_search(args, data_only=True)
+ args.category = list(keys)[0]
+ args.nick = keys[args.category][0].nick
+ return self.verify(args, messages)
return (verified, messages)
@@ -847,7 +872,7 @@ class Actions(object):
return (True, ['Completed'])
- def key_search(self, args):
+ def key_search(self, args, data_only=False):
'''Search for a key's seed field in the installed keys db'''
handler = SeedHandler(self.logger, self.config)
results = {}
@@ -866,14 +891,21 @@ class Actions(object):
results[cat].extend(found)
else:
results[cat] = found
- msgs = []
+ keys = {}
for cat in results:
- msgs.append("Category: %s" % cat)
- seen = []
+ keys[cat] = []
for result in results[cat]:
- if result and result.nick not in seen:
+ if result and result.nick not in keys[cat]:
if isinstance(result, GKEY):
- seen.append(result)
- msgs.append(seen)
+ keys[cat].append(result)
+ if data_only:
+ del found, cat, result, handler
+ return keys
+ msgs = []
+ for cat in list(keys):
+ msgs.append("Category: %s" % cat)
+ for result in keys[cat]:
+ msgs.append(result)
+ del keys, found, cat, result, handler
return (True, msgs)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 6d02096f1b8afbf3ed2126def65cfbe2d65d0237
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 08:24:22 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=6d02096f
gkeys/gkey.py: Separate uid string printing for list type output
---
gkeys/gkeys/gkey.py | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/gkey.py b/gkeys/gkeys/gkey.py
index 463f007..130a5d5 100644
--- a/gkeys/gkeys/gkey.py
+++ b/gkeys/gkeys/gkey.py
@@ -18,7 +18,10 @@ GKEY_STRING = ''' ----------
Name.........: %(name)s
Nick.........: %(nick)s
Keydir.......: %(keydir)s
- UID..........: %(uid)s
+'''
+
+GKEY_UID = \
+''' UID..........: %(uid)s
'''
GKEY_FINGERPRINTS = \
@@ -48,9 +51,10 @@ class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'keys', 'fingerprint',
'name': self.name,
'nick': self.nick,
'keydir': self.keydir,
- 'uid': self.uid,
}
output = GKEY_STRING % gkey
+ for uid in self.uid:
+ output += GKEY_UID % {'uid': uid}
for f in self.fingerprint:
fingerprint = {'fingerprint': f, 'keyid': '0x' + f[-16:]}
output += GKEY_FINGERPRINTS % fingerprint
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2014-12-31 21:34 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2014-12-31 21:34 UTC (permalink / raw
To: gentoo-commits
commit: 3a59f3c4f95e5136d03805049c9af638de96dde4
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 28 17:03:35 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 21:42:26 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3a59f3c4
gkeys: Add UpdateDbError exception usage
---
gkeys/gkeys/actions.py | 2 +-
gkeys/gkeys/lib.py | 6 +++---
gkeys/gkeys/seed.py | 7 ++++++-
gkeys/gkeys/seedhandler.py | 11 ++++++++---
4 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 0dbdf24..2a68739 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -858,7 +858,7 @@ class Actions(object):
return (False, ["Please specify seeds type."])
self.logger.debug("ACTIONS: refreshkey; args: %s" % str(args))
handler = SeedHandler(self.logger, self.config)
- seeds = handler.load_category(args.category)
+ seeds = handler.load_category(args.category, refresh=True)
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: refreshkey; catdir = %s" % catdir)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index f8e6615..724abfc 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -189,7 +189,7 @@ class GkeysGPG(GPG):
self.set_keyserver()
self.set_keydir(gkey.keydir, 'refresh-keys', reset=True)
self.set_keyring('pubring.gpg', 'refresh-keys', reset=False)
- self.set_keyseedfile()
+ self.set_keyseedfile(refresh=True)
logger.debug("LIB: refresh_key, gkey: %s" % str(gkey))
logger.debug("** Calling runGPG with Running 'gpg %s --refresh-keys' for: %s"
% (' '.join(self.config.get_key('tasks', 'refresh-keys')), str(gkey)))
@@ -325,11 +325,11 @@ class GkeysGPG(GPG):
return results
- def set_keyseedfile(self, trap_errors=True):
+ def set_keyseedfile(self, trap_errors=True, refresh=False):
if not self.keydir:
logger.debug("GkeysGPG.set_keyseedfile(); self.keydir error")
self.seedfile = Seeds(pjoin(self.keydir, 'gkey.seeds'), self.config)
- self.seedfile.load(trap_errors=trap_errors)
+ self.seedfile.load(trap_errors=trap_errors, refresh=refresh)
def sign_file(self, gkey, mode, fingerprint, filepath):
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 67354f3..1a2bae2 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -19,6 +19,7 @@ with gentoo-keys specific convienience functions.
import json
import os
+from gkeys.exception import UpdateDbError
from gkeys.log import logger
from gkeys.gkey import GKEY
from gkeys.fileops import ensure_dirs
@@ -38,7 +39,7 @@ class Seeds(object):
self.seeds = {}
- def load(self, filename=None, trap_errors=True):
+ def load(self, filename=None, trap_errors=True, refresh=False):
'''Load the seed file into memory'''
if filename:
self.filename = filename
@@ -59,8 +60,12 @@ class Seeds(object):
for seed in list(seedlines.items()):
# GKEY class change auto-update
if not 'uid' in list(seed[1]):
+ if not refresh:
+ raise UpdateDbError(filename)
seed[1]['uid'] = []
if not 'keys' in list(seed[1]):
+ if not refresh:
+ raise UpdateDbError(filename)
seed[1]['keys'] = seed[1]['fingerprint'][:]
#try:
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index a9fb720..5ddccbe 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -14,6 +14,7 @@ import os
import re
from json import load
+from gkeys.exception import UpdateDbError
from gkeys.gkey import GKEY
from gkeys.seed import Seeds
from gkeys.fileops import ensure_dirs
@@ -58,7 +59,7 @@ class SeedHandler(object):
pass
return keyinfo
- def load_seeds(self, seedfile=None, filepath=None):
+ def load_seeds(self, seedfile=None, filepath=None, refresh=False):
'''Load seed file
@param seeds: string of the short name seed file
@@ -77,11 +78,11 @@ class SeedHandler(object):
self.logger.debug("SeedHandler: load_seeds; seeds filepath to load: "
"%s" % filepath)
seeds = Seeds(config=self.config)
- seeds.load(filepath)
+ seeds.load(filepath, refresh=refresh)
self.seeds = seeds
return seeds
- def load_category(self, category, nicks=None):
+ def load_category(self, category, nicks=None, refresh=False):
'''Loads the designated key directories
@param category: string
@@ -113,8 +114,12 @@ class SeedHandler(object):
key = seed[nick]
# GKEY class change auto-update
if not 'uid' in list(key):
+ if not refresh:
+ raise UpdateDbError(category)
key['uid'] = []
if not 'keys' in list(key):
+ if not refresh:
+ raise UpdateDbError(category)
key['keys'] = key['fingerprint'][:]
seeds.add(nick, GKEY(**key))
except OSError as error:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-01 17:44 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-01 17:44 UTC (permalink / raw
To: gentoo-commits
commit: 7813ed25a711a2e13d3f9dcf0896e5b45db69501
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 30 18:42:40 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Dec 30 22:07:04 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=7813ed25
gkeys/base.py: Sort the _option_* functions
---
gkeys/gkeys/base.py | 101 +++++++++++++++++++++++++++-------------------------
1 file changed, 53 insertions(+), 48 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 2ec4375..c9faf0e 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -46,15 +46,40 @@ class CliBase(object):
@staticmethod
+ def _option_status(parser=None):
+ parser.add_argument('-A', '--status', action='store_true',
+ default=False,
+ help='The active status of the member')
+
+ @staticmethod
def _option_all(parser=None):
parser.add_argument('-a', '--all', dest='all',
action='store_true', default=False,
help='Match all inputs arguments in searches')
@staticmethod
+ def _option_category(parser=None):
+ parser.add_argument('-C', '--category',
+ dest='category', default=None,
+ help='The key or seed directory category to use or update')
+
+ @staticmethod
+ def _option_cleankey(parser=None):
+ parser.add_argument('--clean-key',
+ dest='cleankey', default=False,
+ help='Clean the key from the keyring due to failures')
+
+ @staticmethod
+ def _option_cleanseed(parser=None):
+ parser.add_argument('--clean-seed',
+ dest='cleanseed', default=False,
+ help='Clean the seed from the seedfile due to failures. '
+ 'Used during binary keyring release creation.')
+
+ @staticmethod
def _option_dest(parser=None):
parser.add_argument('-d', '--dest', dest='destination', default=None,
- help='The destination seed file or keydir for move, copy operations')
+ help='The destination for move, copy, create operations')
@staticmethod
def _option_exact(parser=None):
@@ -63,6 +88,17 @@ class CliBase(object):
help='Use CASE matching in searches')
@staticmethod
+ def _option_file(parser=None):
+ parser.add_argument('-F', '--file', dest='filename', default=None,
+ nargs='+',
+ help='The path/URL to use for the (signed) file')
+
+ @staticmethod
+ def _option_1file(parser=None):
+ parser.add_argument('-F', '--file', dest='filename', default=None,
+ help='The path/URL to use for the (signed) file')
+
+ @staticmethod
def _option_fingerprint(parser=None):
parser.add_argument('-f', '--fingerprint', dest='fingerprint',
default=None, nargs='+',
@@ -74,12 +110,23 @@ class CliBase(object):
help='Do a gpg search operations, rather than a gkey search')
@staticmethod
+ def _option_homedir(parser=None):
+ parser.add_argument('-H', '--homedir', dest='homedir', default=None,
+ help='The destination for the generated key')
+
+ @staticmethod
def _option_keyid(parser=None):
parser.add_argument('-i', '--keyid', dest='keyid', default=None,
nargs='+',
help='The long keyid of the gpg key to search for')
@staticmethod
+ def _option_justdoit(parser=None):
+ parser.add_argument('--justdoit', dest='justdoit',
+ action='store_true', default=False,
+ help='Just Do It')
+
+ @staticmethod
def _option_keyring(parser=None):
parser.add_argument('-k', '--keyring', dest='keyring', default=None,
help='The name of the keyring to use for verification, etc.')
@@ -91,6 +138,11 @@ class CliBase(object):
help='The name of the keyring to use for verification, etc.')
@staticmethod
+ def _option_mail(parser=None):
+ parser.add_argument('-m', '--mail', dest='mail', default=None,
+ help='The email address to search for')
+
+ @staticmethod
def _option_nick(parser=None):
parser.add_argument('-n', '--nick', dest='nick', default=None,
help='The nick associated with the the key')
@@ -106,25 +158,6 @@ class CliBase(object):
default=None, help='The name of the the key')
@staticmethod
- def _option_category(parser=None):
- parser.add_argument('-C', '--category',
- dest='category', default=None,
- help='The key or seed directory category to use or update')
-
- @staticmethod
- def _option_cleankey(parser=None):
- parser.add_argument('--clean-key',
- dest='cleankey', default=False,
- help='Clean the key from the keyring due to failures')
-
- @staticmethod
- def _option_cleanseed(parser=None):
- parser.add_argument('--clean-seed',
- dest='cleanseed', default=False,
- help='Clean the seed from the seedfile due to failures. '
- 'Used during binary keyring release creation.')
-
- @staticmethod
def _option_keydir(parser=None):
parser.add_argument('-r', '--keydir', dest='keydir', default=None,
help='The keydir to use, update or search for/in')
@@ -135,17 +168,6 @@ class CliBase(object):
help='The seedfile to use from the gkeys.conf file')
@staticmethod
- def _option_file(parser=None):
- parser.add_argument('-F', '--file', dest='filename', default=None,
- nargs='+',
- help='The path/URL to use for the (signed) file')
-
- @staticmethod
- def _option_1file(parser=None):
- parser.add_argument('-F', '--file', dest='filename', default=None,
- help='The path/URL to use for the (signed) file')
-
- @staticmethod
def _option_signature(parser=None):
parser.add_argument('-s','--signature', dest='signature', default=None,
help='The path/URL to use for the signature')
@@ -157,23 +179,6 @@ class CliBase(object):
help='Turn on timestamp use')
@staticmethod
- def _option_mail(parser=None):
- parser.add_argument('-m', '--mail', dest='mail', default=None,
- help='The email address to search for')
-
- @staticmethod
- def _option_status(parser=None):
- parser.add_argument('-A', '--status', action='store_true',
- default=False,
- help='The active status of the member')
-
- @staticmethod
- def _option_justdoit(parser=None):
- parser.add_argument('--justdoit', dest='justdoit',
- action='store_true', default=False,
- help='Just Do It')
-
- @staticmethod
def _option_uid(parser=None):
parser.add_argument('-u', '--uid', dest='uid', nargs='*', default=None,
help='The user ID, gpg key uid')
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-01 17:44 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-01 17:44 UTC (permalink / raw
To: gentoo-commits
commit: 3ea4ac8ff20626008d02a44c09211e2a67c54fcd
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 30 19:38:23 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 1 02:39:51 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3ea4ac8f
gkeys/config.py: Make it possible to read more than one config file
Save homedir to the config class for re-use in gkeys-gen
multiple configs fix
---
gkeys/gkeys/base.py | 19 ++++++++++++-------
gkeys/gkeys/cli.py | 12 +++++++++---
gkeys/gkeys/config.py | 25 +++++++++++++++----------
3 files changed, 36 insertions(+), 20 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index d03efc4..052d45f 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -185,10 +185,10 @@ class CliBase(object):
help='The user ID, gpg key uid')
- def parse_args(self, args):
+ def parse_args(self, argv):
'''Parse a list of aruments
- @param args: list
+ @param argv: list
@returns argparse.Namespace object
'''
#self.logger.debug('CliBase: parse_args; args: %s' % args)
@@ -225,7 +225,7 @@ class CliBase(object):
action_parser.set_defaults(action=name)
self._add_options(action_parser, self.cli_config['Action_Options'][name])
- parsed_args = parser.parse_args(args)
+ parsed_args = parser.parse_args(argv)
action = getattr(parsed_args, 'action', None)
if not action:
parser.print_usage()
@@ -241,10 +241,11 @@ class CliBase(object):
getattr(self, '_option_%s' % opt)(parser)
- def run(self, args):
- '''Run the args passed in
+ def setup(self, args, configs):
+ '''Set up the args and configs passed in
@param args: list or argparse.Namespace object
+ @param configs: list
'''
message = None
if not args:
@@ -253,8 +254,9 @@ class CliBase(object):
args = self.parse_args(args)
if args.config:
self.config.defaults['config'] = args.config
- # now make it load the config file
- self.config.read_config()
+ self.config.read_config()
+ else:
+ self.config.read_config(configs)
# establish our logger and update it in the imported files
self.logger = set_logger(self.cli_config['prog'], self.config['logdir'], args.debug,
@@ -278,7 +280,10 @@ class CliBase(object):
cat = args.category
if not self._check_category(cat):
return False
+ return True
+
+ def run(self, args):
# establish our actions instance
self.actions = self.cli_config['Actions'](self.config, self.output_results, self.logger)
diff --git a/gkeys/gkeys/cli.py b/gkeys/gkeys/cli.py
index df81882..31457e0 100644
--- a/gkeys/gkeys/cli.py
+++ b/gkeys/gkeys/cli.py
@@ -13,6 +13,7 @@
from __future__ import print_function
+import os
import sys
from gkeys.base import CliBase
@@ -52,7 +53,12 @@ class Main(CliBase):
Defaults to sys.argv[1:]
"""
if args:
- return self.run(self.parse_args(args))
+ ok = self.setup(args)
+ if ok:
+ return self.run(self.parse_args(args))
else:
- return self.run(self.parse_args(sys.argv[1:]))
-
+ args = self.parse_args(sys.argv[1:])
+ ok = self.setup(args, os.path.join(self.config['configdir'],'gkeys.conf'))
+ if ok:
+ return self.run(args)
+ return False
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 8fa4c1b..5d3923f 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -48,9 +48,9 @@ class GKeysConfig(GPGConfig):
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')
+ self.homedir = os.path.expanduser('~')
+ self.defaults['configdir'] = self.homedir
+ self.defaults['config']= os.path.join(self.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'
@@ -83,7 +83,7 @@ class GKeysConfig(GPGConfig):
self.defaults['verify-seeds'] = {}
- def read_config(self):
+ def read_config(self, filename=None):
'''Reads the config file into memory
'''
if "%(configdir)s" in self.defaults['config']:
@@ -97,18 +97,23 @@ class GKeysConfig(GPGConfig):
for key in ['gkeysdir', 'keyring', 'sign-keydir', 'logdir', 'seedsdir',
'keyserver']:
defaults[key] = self.defaults[key]
+ if filename == None:
+ filename = self.defaults['config']
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.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):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-01 17:44 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-01 17:44 UTC (permalink / raw
To: gentoo-commits
commit: 51f847f29ddfb4af33df09eb495781850bdcb293
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 30 19:06:19 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 1 02:39:37 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=51f847f2
gkeys: Remove the need to import gkeys seed.py and lib.py
Pass in the logger to GkeysGPG initialization.
Pass in logger to Seeds class initialization.
This removes the need to import and set the logger in base.py.
It can then be used in gkeys-gen and gkeys-ldap without those imports.
Remove no longer needed imports.
---
gkeys/gkeys/actions.py | 16 ++++-----
gkeys/gkeys/base.py | 26 +++++++--------
gkeys/gkeys/lib.py | 82 +++++++++++++++++++++++-----------------------
gkeys/gkeys/seed.py | 23 ++++++-------
gkeys/gkeys/seedhandler.py | 4 +--
5 files changed, 75 insertions(+), 76 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 9b44cc8..7682dd2 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -243,7 +243,7 @@ class Actions(object):
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: listkey; catdir = %s" % catdir)
- self.gpg = GkeysGPG(self.config, catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
handler = SeedHandler(self.logger, self.config)
if args.keydir:
self.gpg.set_keydir(args.keydir, "list-keys")
@@ -338,7 +338,7 @@ class Actions(object):
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: installkey; catdir = %s" % catdir)
- self.gpg = GkeysGPG(self.config, catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
failed = []
for key in gkey:
@@ -374,7 +374,7 @@ class Actions(object):
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: checkkey; catdir = %s" % catdir)
- self.gpg = GkeysGPG(self.config, catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
failed = defaultdict(list)
kwargs = handler.build_gkeydict(args)
@@ -422,7 +422,7 @@ class Actions(object):
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: speccheck; catdir = %s" % catdir)
- self.gpg = GkeysGPG(self.config, catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
failed = defaultdict(list)
kwargs = handler.build_gkeydict(args)
@@ -588,7 +588,7 @@ class Actions(object):
catdir = os.path.join(keyring, args.category)
keyring_dir = self.config.get_key("keyring")
self.logger.debug("ACTIONS: importkey; catdir = %s" % catdir)
- self.gpg = GkeysGPG(self.config, catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
success, gkeys = self.listseed(args)[1]
results = {}
failed = []
@@ -692,7 +692,7 @@ class Actions(object):
keyrings = self.config.get_key('keyring')
catdir = os.path.join(keyrings, args.category)
self.logger.debug("ACTIONS: verify; catdir = %s" % catdir)
- self.gpg = GkeysGPG(self.config, catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
return self._verify(args, handler, key, messages)
@@ -827,7 +827,7 @@ class Actions(object):
self.logger.debug("ACTIONS: sign; keydir = %s" % keydir)
- self.gpg = GkeysGPG(self.config, basedir)
+ self.gpg = GkeysGPG(self.config, basedir, self.logger)
self.gpg.set_keydir(keydir, task)
if keyring not in ['', None]:
self.gpg.set_keyring(keyring, task)
@@ -862,7 +862,7 @@ class Actions(object):
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
self.logger.debug("ACTIONS: refreshkey; catdir = %s" % catdir)
- self.gpg = GkeysGPG(self.config, catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
kwargs = handler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index c9faf0e..d03efc4 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -17,7 +17,7 @@ from __future__ import print_function
import argparse
import sys
-from gkeys import fileops, seed, lib
+from gkeys import fileops
from gkeys.log import log_levels, set_logger
@@ -43,6 +43,7 @@ class CliBase(object):
self.args = None
self.seeds = None
self.actions = None
+ self.logger = None
@staticmethod
@@ -190,7 +191,7 @@ class CliBase(object):
@param args: list
@returns argparse.Namespace object
'''
- #logger.debug('CliBase: parse_args; args: %s' % args)
+ #self.logger.debug('CliBase: parse_args; args: %s' % args)
parser = argparse.ArgumentParser(
prog=self.cli_config['prog'],
description=self.cli_config['description'],
@@ -245,7 +246,6 @@ class CliBase(object):
@param args: list or argparse.Namespace object
'''
- global logger
message = None
if not args:
message = "Main: run; invalid args argument passed in"
@@ -257,20 +257,18 @@ class CliBase(object):
self.config.read_config()
# establish our logger and update it in the imported files
- logger = set_logger(self.cli_config['prog'], self.config['logdir'], args.debug,
+ self.logger = set_logger(self.cli_config['prog'], self.config['logdir'], args.debug,
dirmode=int(self.config.get_key('permissions', 'directories'),0),
filemask=int(self.config.get_key('permissions', 'files'),0))
- self.config.logger = logger
- fileops.logger = logger
- seed.logger = logger
- lib.logger = logger
+ self.config.logger = self.logger
+ fileops.logger = self.logger
if message:
- logger.error(message)
+ self.logger.error(message)
# now that we have a logger, record the alternate config setting
if args.config:
- logger.debug("Main: run; Found alternate config request: %s"
+ self.logger.debug("Main: run; Found alternate config request: %s"
% args.config)
# check if a -C, --category was input
@@ -282,12 +280,12 @@ class CliBase(object):
return False
# establish our actions instance
- self.actions = self.cli_config['Actions'](self.config, self.output_results, logger)
+ self.actions = self.cli_config['Actions'](self.config, self.output_results, self.logger)
# run the action
func = getattr(self.actions, '%s'
% self.cli_config['Action_Map'][args.action])
- logger.debug('Main: run; Found action: %s' % args.action)
+ self.logger.debug('Main: run; Found action: %s' % args.action)
success, results = func(args)
if not results:
print("No results found. Check your configuration and that the",
@@ -328,7 +326,7 @@ class CliBase(object):
'''
available_cats = list(self.config.defaults['seeds'])
if category and category not in available_cats:
- self.config.logger.error("Invalid category or seedfile entered: %s" % category)
- self.config.logger.error("Available categories or seedfiles: %s" % ', '.join(sorted(available_cats)))
+ self.logger.error("Invalid category or seedfile entered: %s" % category)
+ self.logger.error("Available categories or seedfiles: %s" % ', '.join(sorted(available_cats)))
return False
return True
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 724abfc..6bb3d5b 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -26,14 +26,13 @@ from os.path import join as pjoin
from pyGPG.gpg import GPG
from gkeys.checks import KeyChecks
from gkeys.fileops import ensure_dirs
-from gkeys.log import logger
from gkeys.seed import Seeds
class GkeysGPG(GPG):
'''Gentoo-keys primary gpg class'''
- def __init__(self, config, basedir):
+ def __init__(self, config, basedir, logger):
'''class init function
@param config: GKeysConfig config instance to use
@@ -43,6 +42,7 @@ class GkeysGPG(GPG):
GPG.__init__(self, config, logger)
self.config = config
self.basedir = basedir
+ self.logger = logger
self.keydir = None
self.server = None
@@ -54,10 +54,10 @@ class GkeysGPG(GPG):
return
self.server = server or self.config['keyserver']
self.config.options['gpg_defaults'] = self.config.defaults['gpg_defaults'][:]
- logger.debug("keyserver: %s" % (self.server))
+ self.logger.debug("keyserver: %s" % (self.server))
server_value = ['--keyserver', self.server]
self.config.options['gpg_defaults'].extend(server_value)
- logger.debug("self.config.options['gpg_defaults']: %s"
+ self.logger.debug("self.config.options['gpg_defaults']: %s"
% (self.config.options['gpg_defaults']))
return
@@ -65,7 +65,7 @@ class GkeysGPG(GPG):
def set_keyring(self, keyring, task, importkey=False, reset=True):
'''Sets the keyring to use as well as related task options
'''
- logger.debug("keydir: %s, keyring: %s" % (self.keydir, keyring))
+ self.logger.debug("keydir: %s, keyring: %s" % (self.keydir, keyring))
if reset:
self.config.options['tasks'][task] = self.config.defaults['tasks'][task][:]
# --keyring file | Note that this adds a keyring to the current list.
@@ -79,12 +79,12 @@ class GkeysGPG(GPG):
mode=int(self.config.get_key('permissions', 'directories'),0))
task_value = ['--no-default-keyring', '--keyring', keyring]
self.config.options['tasks'][task].extend(task_value)
- logger.debug("set_keyring: New task options: %s" %str(self.config.options['tasks'][task]))
+ self.logger.debug("set_keyring: New task options: %s" %str(self.config.options['tasks'][task]))
return
def set_keydir(self, keydir, task, fingerprint=True, reset=True):
- logger.debug("basedir: %s, keydir: %s" % (self.basedir, keydir))
+ self.logger.debug("basedir: %s, keydir: %s" % (self.basedir, keydir))
self.keydir = pjoin(self.basedir, keydir)
self.task = task
if reset:
@@ -94,7 +94,7 @@ class GkeysGPG(GPG):
task_value.append('--fingerprint')
task_value.extend(['--homedir', self.keydir])
self.config.options['tasks'][task].extend(task_value)
- logger.debug("set_keydir: New task options: %s" %str(self.config.options['tasks'][task]))
+ self.logger.debug("set_keydir: New task options: %s" %str(self.config.options['tasks'][task]))
return
@@ -109,13 +109,13 @@ class GkeysGPG(GPG):
self.set_keydir(keydir, 'import', reset=True)
self.set_keyring(keyring, 'import', importkey=True, reset=False)
results = []
- logger.debug("LIB: import_to_keyring; name: " + gkey.name)
- logger.debug("** Calling runGPG with Running: gpg %s --import' for: %s"
+ self.logger.debug("LIB: import_to_keyring; name: " + gkey.name)
+ self.logger.debug("** Calling runGPG with Running: gpg %s --import' for: %s"
% (' '.join(self.config.get_key('tasks', 'import')),
gkey.name))
pubring_path = pjoin(self.keydir, gkey.keydir, 'pubring.gpg')
result = self.runGPG(task='import', inputfile=pubring_path)
- logger.info('GPG return code: ' + str(result.returncode))
+ self.logger.info('GPG return code: ' + str(result.returncode))
results.append(result)
print(result.stderr_out)
return results
@@ -131,32 +131,32 @@ class GkeysGPG(GPG):
self.set_keyserver()
self.set_keydir(gkey.keydir, 'recv-keys', reset=True)
self.set_keyring('pubring.gpg', 'recv-keys', reset=False)
- logger.debug("LIB: add_key; ensure dirs: " + self.keydir)
+ self.logger.debug("LIB: add_key; ensure dirs: " + self.keydir)
mode = int(self.config.get_key('permissions', 'directories'),0)
ensure_dirs(str(self.keydir), mode=mode)
self.set_keyseedfile(trap_errors=False)
results = []
for fingerprint in gkey.fingerprint:
- logger.debug("LIB: add_key; adding fingerprint " + fingerprint)
- logger.debug("** Calling runGPG with Running 'gpg %s --recv-keys %s' for: %s"
+ self.logger.debug("LIB: add_key; adding fingerprint " + fingerprint)
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --recv-keys %s' for: %s"
% (' '.join(self.config.get_key('tasks', 'recv-keys')),
fingerprint, gkey.name))
result = self.runGPG(task='recv-keys', inputfile=fingerprint)
- logger.info('GPG return code: ' + str(result.returncode))
+ self.logger.info('GPG return code: ' + str(result.returncode))
if result.fingerprint in gkey.fingerprint:
result.failed = False
message = "Fingerprints match... Import successful: "
message += "%s, fingerprint: %s" % (gkey.nick, fingerprint)
message += "\n result len: %s, %s" % (len(result.fingerprint), result.fingerprint)
message += "\n gkey len: %s, %s" % (len(gkey.fingerprint[0]), gkey.fingerprint[0])
- logger.info(message)
+ self.logger.info(message)
else:
result.failed = True
message = "Fingerprints do not match... Import failed for "
message += "%s, fingerprint: %s" % (gkey.nick, fingerprint)
message += "\n result: %s" % (result.fingerprint)
message += "\n gkey..: %s" % (str(gkey.fingerprint))
- logger.error(message)
+ self.logger.error(message)
# Save the gkey seed to the installed db
success = self.update_gkey(gkey, save=True)
if not success:
@@ -190,11 +190,11 @@ class GkeysGPG(GPG):
self.set_keydir(gkey.keydir, 'refresh-keys', reset=True)
self.set_keyring('pubring.gpg', 'refresh-keys', reset=False)
self.set_keyseedfile(refresh=True)
- logger.debug("LIB: refresh_key, gkey: %s" % str(gkey))
- logger.debug("** Calling runGPG with Running 'gpg %s --refresh-keys' for: %s"
+ self.logger.debug("LIB: refresh_key, gkey: %s" % str(gkey))
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --refresh-keys' for: %s"
% (' '.join(self.config.get_key('tasks', 'refresh-keys')), str(gkey)))
result = self.runGPG(task='refresh-keys', inputfile='')
- logger.info('GPG return code: ' + str(result.returncode))
+ self.logger.info('GPG return code: ' + str(result.returncode))
self.update_gkey(gkey, save=True)
return result
@@ -211,7 +211,7 @@ class GkeysGPG(GPG):
lresults.append(self.list_keys(gkey.keydir, fpr, colons=True))
self.seedfile.update(gkey.update(lresults))
if save and not self.seedfile.save():
- logger.error("GkeysGPG.refresh_key(); failed to save seed: " + gkey.nick)
+ self.logger.error("GkeysGPG.refresh_key(); failed to save seed: " + gkey.nick)
return False
return True
@@ -225,7 +225,7 @@ class GkeysGPG(GPG):
@param colons: bool to enable colon listing
'''
if not keydir:
- logger.debug("LIB: list_keys(), invalid keydir parameter: %s"
+ self.logger.debug("LIB: list_keys(), invalid keydir parameter: %s"
% str(keydir))
return []
if fingerprint:
@@ -239,11 +239,11 @@ class GkeysGPG(GPG):
if colons:
task_value = ['--with-colons']
self.config.options['tasks'][task].extend(task_value)
- logger.debug("** Calling runGPG with Running 'gpg %s --%s %s'"
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --%s %s'"
% (' '.join(self.config['tasks'][task]), task, keydir)
)
result = self.runGPG(task=task, inputfile=target)
- logger.info('GPG return code: ' + str(result.returncode))
+ self.logger.info('GPG return code: ' + str(result.returncode))
return result
@@ -257,7 +257,7 @@ class GkeysGPG(GPG):
'''
if not result:
result = self.list_keys(keydir, fingerprint=keyid, colons=True)
- checker = KeyChecks(logger, qualified_id_check=True)
+ checker = KeyChecks(self.logger, qualified_id_check=True)
return checker.validity_checks(keydir, keyid, result)
@@ -272,7 +272,7 @@ class GkeysGPG(GPG):
'''
if not result:
result = self.list_keys(keydir, fingerprint=keyid, colons=True)
- checker = KeyChecks(logger, qualified_id_check=True)
+ checker = KeyChecks(self.logger, qualified_id_check=True)
specchecks = checker.spec_check(keydir, keyid, result)
return specchecks
@@ -306,29 +306,29 @@ class GkeysGPG(GPG):
'''
if signature:
self.set_keydir(gkey.keydir, 'verify', reset=True)
- logger.debug("** Calling runGPG with Running 'gpg %s --verify %s and %s'"
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --verify %s and %s'"
% (' '.join(self.config['tasks']['verify']), signature, filepath))
results = self.runGPG(task='verify', inputfile=[signature,filepath])
else:
self.set_keydir(gkey.keydir, 'decrypt', reset=True)
- logger.debug("** Calling runGPG with Running 'gpg %s --decrypt %s and %s'"
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --decrypt %s and %s'"
% (' '.join(self.config['tasks']['decrypt']), filepath))
results = self.runGPG(task='decrypt', inputfile=filepath)
keyid = gkey.keyid[0]
if results.verified[0]:
- logger.info("GPG verification succeeded. Name: %s / Key: %s" % (gkey.name, keyid))
- logger.info("\tSignature result:" + str(results.verified))
+ self.logger.info("GPG verification succeeded. Name: %s / Key: %s" % (gkey.name, keyid))
+ self.logger.info("\tSignature result:" + str(results.verified))
else:
- logger.debug("GPG verification failed. Name: %s / Key: %s" % (gkey.name, keyid))
- logger.debug("\t Signature result:"+ str(results.verified))
- logger.debug("LIB: verify; stderr_out:" + str(results.stderr_out))
+ self.logger.debug("GPG verification failed. Name: %s / Key: %s" % (gkey.name, keyid))
+ self.logger.debug("\t Signature result:"+ str(results.verified))
+ self.logger.debug("LIB: verify; stderr_out:" + str(results.stderr_out))
return results
def set_keyseedfile(self, trap_errors=True, refresh=False):
if not self.keydir:
- logger.debug("GkeysGPG.set_keyseedfile(); self.keydir error")
- self.seedfile = Seeds(pjoin(self.keydir, 'gkey.seeds'), self.config)
+ self.logger.debug("GkeysGPG.set_keyseedfile(); self.keydir error")
+ self.seedfile = Seeds(pjoin(self.keydir, 'gkey.seeds'), self.config, self.logger)
self.seedfile.load(trap_errors=trap_errors, refresh=refresh)
@@ -342,15 +342,15 @@ class GkeysGPG(GPG):
'''
keyid = gkey.keyid[0]
self.set_keydir(gkey.keydir, mode, reset=True)
- logger.debug("** Calling runGPG with Running 'gpg %s --%s %s %s'"
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --%s %s %s'"
% (' '.join(self.config['tasks'][mode]), mode, fingerprint, filepath))
results = self.runGPG(task=mode, inputfile=filepath)
if results.verified[0]:
- logger.info("GPG signing succeeded. Name: %s / Key: %s" % (str(gkey.name), str(keyid)))
- logger.info("\tSignature result:" + str(results.verified))
+ self.logger.info("GPG signing succeeded. Name: %s / Key: %s" % (str(gkey.name), str(keyid)))
+ self.logger.info("\tSignature result:" + str(results.verified))
else:
- logger.debug("GPG signing failed. Name: %s / Key: %s" % (str(gkey.name), str(keyid)))
- logger.debug("\t Signature result:"+ str(results.verified))
- logger.debug("LIB: sign; stderr_out:" + str(results.stderr_out))
+ self.logger.debug("GPG signing failed. Name: %s / Key: %s" % (str(gkey.name), str(keyid)))
+ self.logger.debug("\t Signature result:"+ str(results.verified))
+ self.logger.debug("LIB: sign; stderr_out:" + str(results.stderr_out))
return results
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 1a2bae2..15c9e2c 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -29,13 +29,14 @@ class Seeds(object):
'''Handles all seed key file operations'''
- def __init__(self, filepath=None, config=None):
+ def __init__(self, filepath=None, config=None, _logger=None):
'''Seeds class init function
@param filepath: string of the file to load
'''
self.filename = filepath
self.config = config
+ self.logger = _logger or logger
self.seeds = {}
@@ -44,16 +45,16 @@ class Seeds(object):
if filename:
self.filename = filename
if not self.filename:
- logger.debug("Seed: load; Not a valid filename: '%s'" % str(self.filename))
+ self.logger.debug("Seed: load; Not a valid filename: '%s'" % str(self.filename))
return False
- logger.debug("Seeds: load; Begin loading seed file %s" % self.filename)
+ self.logger.debug("Seeds: load; Begin loading seed file %s" % self.filename)
seedlines = None
self.seeds = {}
try:
with open(self.filename, "r+") as seedfile:
seedlines = json.load(seedfile)
except IOError as err:
- logger.debug("Seed: load; IOError occurred while loading file")
+ self.logger.debug("Seed: load; IOError occurred while loading file")
if trap_errors:
self._error(err)
return False
@@ -71,10 +72,10 @@ class Seeds(object):
#try:
self.seeds[seed[0]] = GKEY(**seed[1])
#except Exception as err:
- #logger.debug("Seed: load; Error splitting seed: %s" % seed)
- #logger.debug("Seed: load; ...............parts: %s" % str(parts))
+ #self.logger.debug("Seed: load; Error splitting seed: %s" % seed)
+ #self.logger.debug("Seed: load; ...............parts: %s" % str(parts))
#self._error(err)
- logger.debug("Seed: load; Completed loading seed file %s" % self.filename)
+ self.logger.debug("Seed: load; Completed loading seed file %s" % self.filename)
return True
@@ -83,9 +84,9 @@ class Seeds(object):
if filename:
self.filename = filename
if not self.filename:
- logger.debug("Seed: save; Not a valid filename: '%s'" % str(self.filename))
+ self.logger.debug("Seed: save; Not a valid filename: '%s'" % str(self.filename))
return False
- logger.debug("Seed: save; Begin saving seed file %s" % self.filename)
+ self.logger.debug("Seed: save; Begin saving seed file %s" % self.filename)
ensure_dirs(os.path.split(self.filename)[0],
mode=int(self.config.get_key('permissions', "directories"),0),
fatal=True)
@@ -217,8 +218,8 @@ class Seeds(object):
def _error(self, err):
'''Class error logging function'''
- logger.error("Seed: Error processing seed file %s" % self.filename)
- logger.error("Seed: Error was: %s" % str(err))
+ self.logger.error("Seed: Error processing seed file %s" % self.filename)
+ self.logger.error("Seed: Error was: %s" % str(err))
def _seeds2json(self, seeds):
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 5ddccbe..9540ee0 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -77,7 +77,7 @@ class SeedHandler(object):
self.logger.error("SeedHandler: load_seeds; No filepath to load")
self.logger.debug("SeedHandler: load_seeds; seeds filepath to load: "
"%s" % filepath)
- seeds = Seeds(config=self.config)
+ seeds = Seeds(config=self.config, _logger=self.logger)
seeds.load(filepath, refresh=refresh)
self.seeds = seeds
return seeds
@@ -89,7 +89,7 @@ class SeedHandler(object):
@param nicks: list of string nick ids to load
@return Seeds class object
'''
- seeds = Seeds(config=self.config)
+ seeds = Seeds(config=self.config, _logger=self.logger)
if category == 'sign':
catdir = self.config.get_key('sign-keydir')
else:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-01 17:44 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-01 17:44 UTC (permalink / raw
To: gentoo-commits
commit: d97ffd3d5aab2429c5256448b7f8c9571791490c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Dec 30 22:27:04 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 1 02:39:51 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=d97ffd3d
gkeys/config.py: Move default config file setting to a function
Make homedir initialzation part of the defaults options for consistency.
Move the default user config file into a ~/.gkeys/ sub-directory
---
gkeys/gkeys/config.py | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 5d3923f..fdc1cee 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -48,18 +48,21 @@ class GKeysConfig(GPGConfig):
self.defaults['config'] = config
self.defaults['configdir'] = os.path.dirname(config)
else:
- self.homedir = os.path.expanduser('~')
- self.defaults['configdir'] = self.homedir
- self.defaults['config']= os.path.join(self.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._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.join(os.path.expanduser('~'), '.gkeys')
+ self.defaults['configdir'] = self.defaults['homedir']
+ self.defaults['config']= os.path.join(self.defaults['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'
+
def _add_gkey_defaults(self):
self.defaults['gkeysdir'] = path([self.root, EPREFIX, '/var/lib/gentoo/gkeys'])
self.defaults['keyring'] = '%(gkeysdir)s/keyring'
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-01 17:44 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-01 17:44 UTC (permalink / raw
To: gentoo-commits
commit: 091d066f082851d852b3ecfa6fca655dc486ef29
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Dec 31 21:23:32 2014 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 1 02:39:52 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=091d066f
gkeys/actions.py: Update docstrings and action options
This in preparation for man pages during wiki help page editing.
---
gkeys/gkeys/actions.py | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 7682dd2..178d16d 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -48,7 +48,7 @@ Action_Options = {
'add-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'uid'],
'remove-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category'],
'move-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'dest'],
- 'fetch-seed': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring'],
+ 'fetch-seed': ['nick', '1file', 'category', 'dest', 'signature', 'timestamp'],
'list-seedfiles': [],
'list-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'gpgsearch', 'keyid'],
'install-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', '1file'],
@@ -59,7 +59,7 @@ Action_Options = {
'search-key': ['nick', '1name', 'keydir', 'keys', 'fingerprint', 'keyid', 'uid', 'category', 'exact', 'all'],
'verify': ['dest', 'nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', '1file', 'signature', 'timestamp'],
'check-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
- 'sign': ['nick', 'name', 'keydir', 'fingerprint', 'file', 'keyring'],
+ 'sign': ['nick', 'name', 'fingerprint', 'file', ],
'spec-check': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
'refresh-key': ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'category', 'keyring', 'keyid'],
'---general---': [],
@@ -176,7 +176,7 @@ class Actions(object):
def removeseed(self, args):
- '''Remove a key from the selected seed file(s)'''
+ '''Remove a seed from the selected seed file'''
gkeys = self.listseed(args)[1]
if not gkeys:
return (False, ["Failed to remove seed: No gkeys returned from listseed()",
@@ -365,7 +365,9 @@ class Actions(object):
def checkkey(self, args):
- '''Check keys actions'''
+ '''Check keys actions
+ Performs basic validity checks on the key(s), checks expiry,
+ and presence of a signing sub-key'''
if not args.category:
return (False, ["Please specify seeds category."])
self.logger.debug("ACTIONS: checkkey; args: %s" % str(args))
@@ -413,7 +415,7 @@ class Actions(object):
def speccheck(self, args):
- '''Check keys actions'''
+ '''Check if keys meet specifications requirements'''
if not args.category:
return (False, ["Please specify seeds category."])
self.logger.debug("ACTIONS: speccheck; args: %s" % str(args))
@@ -660,9 +662,13 @@ class Actions(object):
def verify(self, args, messages=None):
- '''File verification action
+ '''File verification action.
+ Note: If the specified key/keyring to verify against does not contain
+ the key used to sign the file. It will Auto-search for the correct key
+ in the installed keys db. And verify against the matching key.'''
- @ param args: argparse.parse_args instance
+ '''
+ @param args: argparse.parse_args instance
@param messages: list, private internal option used for recursion only
'''
if messages == None:
@@ -877,7 +883,7 @@ class Actions(object):
def key_search(self, args, data_only=False):
- '''Search for a key's seed field in the installed keys db'''
+ '''Search for a key's seed in the installed keys db'''
handler = SeedHandler(self.logger, self.config)
results = {}
search_args = [x for x in
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-01 22:32 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-01 22:32 UTC (permalink / raw
To: gentoo-commits
commit: 9bdb0b53e00a591dabf23faebaa95ae97d410830
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 1 22:31:28 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 1 22:31:28 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=9bdb0b53
gkeys/actions.py: Remove redundant (broken) verify_info code
---
gkeys/gkeys/actions.py | 4 ----
1 file changed, 4 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 178d16d..c1f5b34 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -140,10 +140,6 @@ class Actions(object):
def fetchseed(self, args):
'''Download the selected seed file(s)'''
self.logger.debug("ACTIONS: fetchseed; args: %s" % str(args))
- if not args.keyring:
- verify_info = self.config.get_key('verify-seeds', args.category).split()
- args.keyring = verify_info[0]
- args.nick = verify_info[1]
handler = SeedHandler(self.logger, self.config)
success, messages = handler.fetch_seeds(args.category, args, self.verify)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: 29500cb89afb2bb7b4b365c683c7d09fe05fc4dd
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 3 18:07:25 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 3 18:21:23 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=29500cb8
gkeys/actions.py: Move list-cats to General_Actions
---
gkeys/gkeys/actions.py | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 4a1c831..c212609 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -31,14 +31,14 @@ from gkeys.gkey import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
-Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed', 'list-cats',
+Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed',
'list-seed', 'list-seedfiles', 'move-seed', 'remove-seed']
Key_Actions = ['----keys-----', 'check-key', 'import-key', 'installed',
'install-key', 'search-key', 'list-key', 'move-key', 'refresh-key', 'remove-key',
'spec-check']
-General_Actions = ['---general---', 'sign','verify']
+General_Actions = ['---general---', 'list-cats', 'sign','verify']
Available_Actions = General_Actions + Key_Actions + Seed_Actions
@@ -50,6 +50,14 @@ Action_Map = OrderedDict({
'long_desc': '''''',
'example': '''''',
},
+ 'list-cats': {
+ 'func': 'listcats',
+ 'options': [],
+ 'desc': '''List seed file definitions (category names) found in the config''',
+ 'long_desc': '''List seed file definitions (category names) found in the config.
+ These category names are used throughout the seed and key action operations.''',
+ 'example': '''''',
+ },
'sign': {
'func': 'sign',
'options': ['nick', 'name', 'fingerprint', 'file', ],
@@ -69,14 +77,6 @@ Action_Map = OrderedDict({
the verification''',
'example': '''''',
},
- 'list-cats': {
- 'func': 'listcats',
- 'options': [],
- 'desc': '''List seed file definitions (category names) found in the config''',
- 'long_desc': '''List seed file definitions (category names) found in the config.
- These category names are used throughout the seed and key action operations.''',
- 'example': '''''',
- },
'----keys-----': {
'func': 'KEY_COMMANDS',
'options': [],
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: 6c03a58c9d7563031c17eecada9c141f9dd88b72
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 3 23:16:55 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jan 5 22:14:35 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=6c03a58c
gkeys/actions.py: Remove import-key from Available_actions
This functions is totally untested so far, especially with all hte changes since it was first roughed in.
---
gkeys/gkeys/actions.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index e6a9bcd..6f8fa11 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -34,7 +34,7 @@ from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed',
'list-seed', 'list-seedfiles', 'move-seed', 'remove-seed']
-Key_Actions = ['----keys-----', 'check-key', 'import-key', 'installed',
+Key_Actions = ['----keys-----', 'check-key', 'installed',
'install-key', 'list-key', 'move-key', 'refresh-key', 'remove-key',
'search-key', 'spec-check']
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: 5e145f0ca54de6547e797ef99093abd19116f592
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 5 00:58:12 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jan 5 22:15:18 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=5e145f0c
gkeys/actions.py: moveseed() Fix SeedHandler intialization
---
gkeys/gkeys/actions.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 9986adc..de72000 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -135,8 +135,8 @@ class Actions(object):
def moveseed(self, args):
'''Move keys between seed files'''
- handler = SeedHandler(self.logger)
- searchkey = handler.new(args, needkeyid=False, checkintegrity=False)
+ handler = SeedHandler(self.logger, self.config)
+ searchkey = handler.new(args, checkgkey=False)
self.logger.debug("ACTIONS: moveseed; gkey: %s" % str(searchkey))
if not self.seeds:
self.seeds = self.load_seeds(args.category)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: f1a04cad4ddbb944a1c8fba4084f12e64f2c4286
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 3 18:10:01 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jan 5 22:14:35 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=f1a04cad
gkeys/__init__.py: Add Gkeys_Map for man page creation
---
gkeys/gkeys/__init__.py | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/gkeys/gkeys/__init__.py b/gkeys/gkeys/__init__.py
index 7e8b64e..d5a659e 100644
--- a/gkeys/gkeys/__init__.py
+++ b/gkeys/gkeys/__init__.py
@@ -1,5 +1,27 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
+
+
+from collections import OrderedDict
+
+from gkeys.actions import Action_Map, Available_Actions
+
+
__version__ = 'Git'
__license__ = 'GPLv2'
+
+
+subdata = OrderedDict()
+for cmd in Available_Actions:
+ subdata[cmd] = Action_Map[cmd]['desc']
+
+Gkeys_Map = {
+ 'options': ['help', 'config', 'debug'],
+ 'desc': 'OpenPGP/GPG key management tool',
+ 'long_desc': '''Gentoo Keys (gkeys) is a Python based project that aims to manage
+the GPG keys used for validation on users and Gentoo's infrastracutre servers.
+Gentoo Keys is able to verify GPG keys used for Gentoo's release media,
+such as installation CD's, Live DVD's, packages and other GPG signed documents.''',
+ 'sub-cmds': subdata,
+}
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: f23732405a485b7a1863c3f644ae254d7c95dd2d
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 3 18:08:19 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 3 18:21:23 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=f2373240
gkeys/actions.py: Fix mis-sorted Key_Actions
---
gkeys/gkeys/actions.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index c212609..e6a9bcd 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -35,8 +35,8 @@ Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed',
'list-seed', 'list-seedfiles', 'move-seed', 'remove-seed']
Key_Actions = ['----keys-----', 'check-key', 'import-key', 'installed',
- 'install-key', 'search-key', 'list-key', 'move-key', 'refresh-key', 'remove-key',
- 'spec-check']
+ 'install-key', 'list-key', 'move-key', 'refresh-key', 'remove-key',
+ 'search-key', 'spec-check']
General_Actions = ['---general---', 'list-cats', 'sign','verify']
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: f5d3aca3ab6d36eebec84fcd2cd9af3ae8c2d4d2
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 5 00:57:28 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jan 5 22:15:18 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=f5d3aca3
gkeys/actions.py: Fix self.listseed() return assignments
---
gkeys/gkeys/actions.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index cfcc038..9986adc 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -90,7 +90,7 @@ class Actions(object):
def addseed(self, args):
'''Add or replace a key in the selected seed file'''
handler = SeedHandler(self.logger, self.config)
- gkeys = self.listseed(args)[1]
+ success, gkeys = self.listseed(args)[1]
if not args.nick or not args.name or not args.keys or not args.keydir:
return (False, ["Provide a nickname, a name and a public key fingerprint (-K, --keys)."])
if not args.fingerprint:
@@ -101,7 +101,7 @@ class Actions(object):
if not gkey:
return (False, ["Failed to create a valid GKEY instance.",
"Check for invalid data entries"])
- if len(gkeys[1]) == 0:
+ if len(gkeys) == 0:
self.logger.debug("ACTIONS: installkey; now adding gkey: %s" % str(gkey))
success = self.seeds.add(getattr(gkey, 'nick'), gkey)
if success:
@@ -116,7 +116,7 @@ class Actions(object):
def removeseed(self, args):
'''Remove a seed from the selected seed file'''
- gkeys = self.listseed(args)[1]
+ success, gkeys = self.listseed(args)[1]
if not gkeys:
return (False, ["Failed to remove seed: No gkeys returned from listseed()",
[]])
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: 5217031811549514076e29f4e349fdec68042ad3
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 5 00:52:29 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jan 5 22:15:18 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=52170318
gkeys/seed.py: Downgrade logger.error msgs to debug if trap_errors is set True
Go direct to logger.debug()
gkeys/lib.py: Silence error noise for a new key install
---
gkeys/gkeys/lib.py | 2 +-
gkeys/gkeys/seed.py | 12 +++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 6020322..4ae534d 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -134,7 +134,7 @@ class GkeysGPG(GPG):
self.logger.debug("LIB: add_key; ensure dirs: " + self.keydir)
mode = int(self.config.get_key('permissions', 'directories'),0)
ensure_dirs(str(self.keydir), mode=mode)
- self.set_keyseedfile(trap_errors=False)
+ self.set_keyseedfile(trap_errors=True)
results = []
for fingerprint in gkey.keys:
self.logger.debug("LIB: add_key; adding fingerprint " + fingerprint)
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 7d9ae4e..a84003d 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -56,6 +56,8 @@ class Seeds(object):
except IOError as err:
self.logger.debug("Seed: load; IOError occurred while loading file")
if trap_errors:
+ self.logger.debug("Seed: load; %s" % str(err))
+ else:
self._error(err)
return False
for seed in list(seedlines.items()):
@@ -216,10 +218,14 @@ class Seeds(object):
return False
- def _error(self, err):
+ def _error(self, err, debug=False):
'''Class error logging function'''
- self.logger.error("Seed: Error processing seed file %s" % self.filename)
- self.logger.error("Seed: Error was: %s" % str(err))
+ if debug:
+ self.logger.debug("Seed: Error processing seed file %s" % self.filename)
+ self.logger.debug("Seed: Error was: %s" % str(err))
+ else:
+ self.logger.error("Seed: Error processing seed file %s" % self.filename)
+ self.logger.error("Seed: Error was: %s" % str(err))
def _seeds2json(self, seeds):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-05 23:12 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-05 23:12 UTC (permalink / raw
To: gentoo-commits
commit: 37bdded9136d9417baaa89409ca1f606411932c6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 5 06:37:31 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jan 5 22:21:53 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=37bdded9
gkeys/seed.py: Fix logic errors in _seeds2json
The original code did not correctly handle a mix of dictionary and GKEY values.
---
gkeys/gkeys/seed.py | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index a84003d..40bdd46 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -229,13 +229,10 @@ class Seeds(object):
def _seeds2json(self, seeds):
- is_gkey = False
if not seeds:
seeds = {}
- elif isinstance(list(seeds.values())[0], GKEY):
- is_gkey = True
for dev, value in list(seeds.items()):
- if is_gkey:
+ if isinstance(value, GKEY):
seeds[dev] = dict(value._asdict())
return json.dumps(seeds, sort_keys=True, indent=4)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-07 23:39 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-07 23:39 UTC (permalink / raw
To: gentoo-commits
commit: d947f8fc4b5d91f1655e1f7770a0f94cbb6a52a9
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 7 23:33:54 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Jan 7 23:33:54 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=d947f8fc
gkeys/base.py: Wrap all output with _unicode_decode()
Kristian was still getting py-2.7 errors for some devs due to unicode.
---
gkeys/gkeys/base.py | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 05946c2..65ad9cc 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -17,6 +17,7 @@ from __future__ import print_function
import argparse
import sys
+from pyGPG.status import _unicode_decode
from gkeys import fileops
from gkeys.log import log_levels, set_logger
@@ -311,16 +312,16 @@ class CliBase(object):
def output_results(results, header=None):
# super simple output for the time being
if header:
- print(header)
+ print(_unicode_decode(header))
for msg in results:
if type(msg) in [str, unicode]:
- print(' ', msg)
+ print(' ', _unicode_decode(msg))
else:
try:
- print("\n".join([x.pretty_print for x in msg]))
+ print("\n".join([_unicode_decode(x.pretty_print) for x in msg]))
except AttributeError:
for x in msg:
- print(' ', x)
+ print(' ', _unicode_decode(x))
print()
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-08 4:13 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-08 4:13 UTC (permalink / raw
To: gentoo-commits
commit: b7f9364cb0952f2e06f94299400d2f23b629553d
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 8 03:43:10 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 8 03:43:10 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=b7f9364c
gkeys: Finally fix all the unicode printing errors
---
gkeys/gkeys/actions.py | 20 +++++++++++---------
gkeys/gkeys/base.py | 10 +++++-----
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index de72000..eef338e 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -25,6 +25,8 @@ from collections import defaultdict
from json import load
from shutil import rmtree
+from pyGPG.status import _unicode_encode
+
from gkeys.lib import GkeysGPG
from gkeys.seedhandler import SeedHandler
from gkeys.gkey import GKEY
@@ -240,15 +242,15 @@ class Actions(object):
if self.config.options['print_results']:
if print_key:
print()
- print("Nick.....:", key.nick)
- print("Name.....:", key.name)
- print("Keydir...:", key.keydir)
+ print("Nick.....:", _unicode_encode(key.nick))
+ print("Name.....:", _unicode_encode(key.name))
+ print("Keydir...:", _unicode_encode(key.keydir))
c = 0
for line in result.split('\n'):
if c == 0:
- print("Gpg info.:", line)
+ print("Gpg info.:", _unicode_encode(line))
else:
- print(" ", line)
+ print(" ", _unicode_encode(line))
c += 1
self.logger.debug("data output:\n" + str(result))
return (True, result)
@@ -289,7 +291,7 @@ class Actions(object):
str(result.failed))
if self.config.options['print_results']:
for result in results[key.name]:
- print("key desired:", key.name, ", key added:",
+ print("key desired:", _unicode_encode(key.name), ", key added:",
result.username, ", succeeded:",
not result.failed, ", fingerprint:", result.fingerprint)
self.logger.debug("stderr_out: " + str(result.stderr_out))
@@ -380,7 +382,7 @@ class Actions(object):
for g in results:
pub_pass = {}
for key in results[g]:
- self.output('', key.pretty_print())
+ self.output('', _unicode_encode(key.pretty_print()))
if key.key is "PUB":
pub_pass = {
@@ -539,7 +541,7 @@ class Actions(object):
results[gkey.name] = self.gpg.add_key(gkey)
if self.config.options['print_results']:
for result in results[gkey.name]:
- print("key desired:", gkey.name, ", key added:",
+ print("key desired:", _unicode_encode(gkey.name), ", key added:",
result.username, ", succeeded:",
not result.failed, ", fingerprint:", result.fingerprint)
self.logger.debug("stderr_out: " + str(result.stderr_out))
@@ -547,7 +549,7 @@ class Actions(object):
self.logger.debug("ACTIONS: importkey; result.failed = " + str(result.failed))
failed.append(gkey)
if not results[gkey.name][0].failed:
- print("Importing: ", gkey.name)
+ print("Importing: ", _unicode_encode(gkey.name))
self.logger.debug("ACTIONS: importkey; importing key: %s", gkey.name)
_keyring = os.path.join(catdir, args.keyring + '.gpg')
self.gpg.add_to_keyring(gkey, catdir, _keyring)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 46f8f2f..1a80a03 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -17,7 +17,7 @@ from __future__ import print_function
import argparse
import sys
-from pyGPG.status import _unicode_decode
+from pyGPG.status import _unicode_encode
from gkeys import fileops
from gkeys.log import log_levels, set_logger
@@ -315,16 +315,16 @@ class CliBase(object):
def output_results(results, header=None):
# super simple output for the time being
if header:
- print(_unicode_decode(header))
+ print(_unicode_encode(header))
for msg in results:
if type(msg) in [str, unicode]:
- print(' ', _unicode_decode(msg))
+ print(' ', _unicode_encode(msg))
else:
try:
- print("\n".join([_unicode_decode(x.pretty_print) for x in msg]))
+ print("\n".join([_unicode_encode(x.pretty_print) for x in msg]))
except AttributeError:
for x in msg:
- print(' ', _unicode_decode(x))
+ print(' ', _unicode_encode(x))
print()
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-09 21:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-09 21:07 UTC (permalink / raw
To: gentoo-commits
commit: 4db4657c83e471e65ec60ee4a26a9b2d8eda2838
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 9 03:03:32 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Fri Jan 9 06:07:44 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=4db4657c
gkeys/seed.py: Rename search() to regex_search()
---
gkeys/gkeys/seed.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index f92d910..262ba57 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -173,7 +173,7 @@ class Seeds(object):
return sorted(result.values())
- def search(self, pattern):
+ def regex_search(self, pattern):
'''Search for the keys matching the regular expression pattern'''
pass
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-09 21:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-09 21:07 UTC (permalink / raw
To: gentoo-commits
commit: aa3b192bfc5cf981fde0cc1476367cba556796ec
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 9 03:02:58 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Fri Jan 9 06:07:44 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=aa3b192b
gkeys/seed.py: Update field_search() docstring
---
gkeys/gkeys/seed.py | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 2f6e72a..f92d910 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -191,9 +191,11 @@ class Seeds(object):
def field_search(self, field, value, exact=False):
- '''Searches the seeds for a matching nick
+ '''Searches the seeds for a matching value
- @param keyid: string
+ @param field: string
+ @param value: string
+ @param exact: Boolean
@returns GKEY instance or None
'''
results = []
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-09 21:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-09 21:07 UTC (permalink / raw
To: gentoo-commits
commit: 5c4b8d7eceee333f803941f40d2cc757ecf5f80b
Author: Pavlos Ratis <dastergon <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 8 17:08:51 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 8 17:08:51 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=5c4b8d7e
add checks to fetch-seed in case of missing category
Added a check about categories in fetch-seed
action because it failed when the command ran without a category
---
gkeys/gkeys/actions.py | 3 ++-
gkeys/gkeys/seedhandler.py | 4 ++--
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index eef338e..4db3757 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -81,9 +81,10 @@ class Actions(object):
def fetchseed(self, args):
'''Download the selected seed file(s)'''
self.logger.debug("ACTIONS: fetchseed; args: %s" % str(args))
+ if not args.category:
+ return (False, ["Please specify seeds category."])
handler = SeedHandler(self.logger, self.config)
success, messages = handler.fetch_seeds(args.category, args, self.verify)
-
messages.append("")
messages.append("Fetch operation completed")
return (False not in success, messages)
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 600ac35..5f15222 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -142,10 +142,10 @@ class SeedHandler(object):
for seed in [seeds]:
seedurl = self.config.get_key('seedurls', seed)
seedpath = self.config.get_key('seeds', seed)
- if http_check.match(seedurl):
+ if seedurl and seedpath and http_check.match(seedurl):
urls.extend([(seed, seedurl, seedpath)])
else:
- self.logger.info("Wrong seed file URLs... Skipping: %s" % seed)
+ self.logger.info("Wrong seed file URLs/seed path... Skipping: %s" % seed)
except KeyError:
pass
succeeded = []
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-09 21:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-09 21:07 UTC (permalink / raw
To: gentoo-commits
commit: c4dfd5ac664f6afec52a77ab911c2130e028e402
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 8 21:51:52 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Fri Jan 9 06:07:29 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=c4dfd5ac
gkeys: Fix seed file loading, saving unicode issues
Fix unicode cli args issues.
---
gkeys/gkeys/actions.py | 36 +++++++++++++++++++++---------------
gkeys/gkeys/seed.py | 28 +++++++++++++++++++++-------
gkeys/gkeys/seedhandler.py | 6 +++---
3 files changed, 45 insertions(+), 25 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 9d57870..59929cd 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -241,15 +241,15 @@ class Actions(object):
if self.config.options['print_results']:
if print_key:
print()
- print("Nick.....:", key.nick)
- print("Name.....:", key.name)
- print("Keydir...:", key.keydir)
+ print("Nick.....: %s" % key.nick)
+ print("Name.....: %s" % key.name)
+ print("Keydir...: %s" % key.keydir)
c = 0
for line in result.split('\n'):
if c == 0:
- print("Gpg info.:", line)
+ print("Gpg info.: %s" % line)
else:
- print(" ", line)
+ print(" %s" % line)
c += 1
self.logger.debug("data output:\n" + str(result))
return (True, result)
@@ -289,10 +289,12 @@ class Actions(object):
self.logger.debug("ACTIONS: installkey; result.failed = " +
str(result.failed))
if self.config.options['print_results']:
+ msg = "key desired: %(name)s, key added: %(key)s, succeeded:" +\
+ " %(success)s, fingerprint: %(fpr)s"
for result in results[key.name]:
- print("key desired:", key.name, ", key added:",
- result.username, ", succeeded:",
- not result.failed, ", fingerprint:", result.fingerprint)
+ print(msg % ({'name': key.name, 'key': result.username,
+ 'success': not result.failed,
+ 'fpr': result.fingerprint}))
self.logger.debug("stderr_out: " + str(result.stderr_out))
if result.failed:
failed.append(key)
@@ -488,7 +490,7 @@ class Actions(object):
return (False, ["Please provide a nickname or -n *"])
handler = SeedHandler(self.logger, self.config)
kwargs = handler.build_gkeydict(args)
- self.logger.debug("ACTIONS: addkey; kwargs: %s" % str(kwargs))
+ self.logger.debug("ACTIONS: removekey; kwargs: %s" % str(kwargs))
success, installed_keys = self.installed(args)[1]
for gkey in installed_keys:
if kwargs['nick'] not in gkey.nick:
@@ -539,17 +541,21 @@ class Actions(object):
self.logger.debug("ACTIONS: importkey; adding key: %s", gkey.name)
results[gkey.name] = self.gpg.add_key(gkey)
if self.config.options['print_results']:
+ msg = "key desired: %(name)s, key added: %(key)s, " + \
+ "succeeded: %(success)s, fingerprint: %(fpr)s"
for result in results[gkey.name]:
- print("key desired:", gkey.name, ", key added:",
- result.username, ", succeeded:",
- not result.failed, ", fingerprint:", result.fingerprint)
+ print(msg % ({'name': gkey.name, 'key': result.username,
+ 'success': not result.failed,
+ 'fpr': result.fingerprint}))
self.logger.debug("stderr_out: " + str(result.stderr_out))
if result.failed:
- self.logger.debug("ACTIONS: importkey; result.failed = " + str(result.failed))
+ self.logger.debug("ACTIONS: importkey; result.failed = "
+ + str(result.failed))
failed.append(gkey)
if not results[gkey.name][0].failed:
- print("Importing: ", gkey.name)
- self.logger.debug("ACTIONS: importkey; importing key: %s", gkey.name)
+ print("Importing: %s" % gkey.name)
+ self.logger.debug("ACTIONS: importkey; importing key: %s"
+ % gkey.name)
_keyring = os.path.join(catdir, args.keyring + '.gpg')
self.gpg.add_to_keyring(gkey, catdir, _keyring)
if failed and self.output:
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 40bdd46..2f6e72a 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -16,8 +16,10 @@ with gentoo-keys specific convienience functions.
'''
+import codecs
import json
import os
+import sys
from gkeys.exception import UpdateDbError
from gkeys.log import logger
@@ -25,6 +27,14 @@ from gkeys.gkey import GKEY
from gkeys.fileops import ensure_dirs
+if sys.version_info[0] >= 3:
+ def decoder(text, enc='utf_8'):
+ return text
+else:
+ def decoder(text, enc='utf_8'):
+ return codecs.decode(text, enc)
+
+
class Seeds(object):
'''Handles all seed key file operations'''
@@ -51,7 +61,7 @@ class Seeds(object):
seedlines = None
self.seeds = {}
try:
- with open(self.filename, "r+") as seedfile:
+ with codecs.open(self.filename, "r+", encoding='utf_8') as seedfile:
seedlines = json.load(seedfile)
except IOError as err:
self.logger.debug("Seed: load; IOError occurred while loading file")
@@ -94,7 +104,7 @@ class Seeds(object):
fatal=True)
os.umask(int(self.config.get_key("permissions", "files"),0))
try:
- with open(self.filename, 'w') as seedfile:
+ with codecs.open(self.filename, 'w', encoding='utf_8') as seedfile:
seedfile.write(self._seeds2json(self.seeds))
seedfile.write("\n")
except IOError as err:
@@ -156,7 +166,10 @@ class Seeds(object):
break
result = res
else:
- result = {dev: gkey for dev, gkey in list(result.items()) if kwargs[key].lower() in getattr(gkey, key).lower()}
+ result = {dev: gkey for dev, gkey in list(result.items())
+ if kwargs[key].lower()
+ in getattr(gkey, key).lower()
+ }
return sorted(result.values())
@@ -193,10 +206,10 @@ class Seeds(object):
if self._list_search(value, val, exact):
results.append(seed)
elif exact:
- if value in val:
+ if decoder(value) in val:
results.append(seed)
else:
- if value.lower() in val.lower():
+ if decoder(value).lower() in val.lower():
results.append(seed)
return results
@@ -209,11 +222,12 @@ class Seeds(object):
found.append(self._list_search(f, values, exact))
return True in found
for val in values:
+ val = val
if exact:
- if find in val:
+ if decoder(find) in val:
return True
else:
- if find.lower() in val.lower():
+ if decoder(find).lower() in val.lower():
return True
return False
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 5f15222..adf9507 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -16,7 +16,7 @@ from json import load
from gkeys.exception import UpdateDbError
from gkeys.gkey import GKEY
-from gkeys.seed import Seeds
+from gkeys.seed import Seeds, decoder
from gkeys.fileops import ensure_dirs
@@ -51,10 +51,10 @@ class SeedHandler(object):
for attr in GKEY._fields:
try:
value = getattr(args, attr)
- if attr == 'name' and value:
+ if attr == 'name' and isinstance(value, list):
value = " ".join(value)
if value is not None:
- keyinfo[attr] = value
+ keyinfo[attr] = decoder(value)
except AttributeError:
pass
return keyinfo
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-09 21:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-09 21:07 UTC (permalink / raw
To: gentoo-commits
commit: e493576420d6396481cd5e74ddfc29d20946df32
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 8 21:07:47 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 8 21:07:47 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=e4935764
Revert "gkeys/base.py: Wrap all output with _unicode_decode()"
This reverts commit d947f8fc4b5d91f1655e1f7770a0f94cbb6a52a9.
---
gkeys/gkeys/base.py | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 46f8f2f..7e28b90 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -17,7 +17,6 @@ from __future__ import print_function
import argparse
import sys
-from pyGPG.status import _unicode_decode
from gkeys import fileops
from gkeys.log import log_levels, set_logger
@@ -315,16 +314,16 @@ class CliBase(object):
def output_results(results, header=None):
# super simple output for the time being
if header:
- print(_unicode_decode(header))
+ print(header)
for msg in results:
if type(msg) in [str, unicode]:
- print(' ', _unicode_decode(msg))
+ print(' ', msg)
else:
try:
- print("\n".join([_unicode_decode(x.pretty_print) for x in msg]))
+ print("\n".join([x.pretty_print for x in msg]))
except AttributeError:
for x in msg:
- print(' ', _unicode_decode(x))
+ print(' ', x)
print()
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-09 21:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-09 21:07 UTC (permalink / raw
To: gentoo-commits
commit: b547e16c7e047d9fd9ac7d9536678cf9102c2b16
Author: Pavlos Ratis <dastergon <AT> gentoo <DOT> org>
AuthorDate: Thu Jan 8 20:42:20 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Jan 8 21:05:22 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=b547e16c
Revert "gkeys: Finally fix all the unicode printing errors"
This reverts commit b7f9364cb0952f2e06f94299400d2f23b629553d.
It totally broke py-3 comaptibility!
---
gkeys/gkeys/actions.py | 20 +++++++++-----------
gkeys/gkeys/base.py | 10 +++++-----
2 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 4db3757..9d57870 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -25,8 +25,6 @@ from collections import defaultdict
from json import load
from shutil import rmtree
-from pyGPG.status import _unicode_encode
-
from gkeys.lib import GkeysGPG
from gkeys.seedhandler import SeedHandler
from gkeys.gkey import GKEY
@@ -243,15 +241,15 @@ class Actions(object):
if self.config.options['print_results']:
if print_key:
print()
- print("Nick.....:", _unicode_encode(key.nick))
- print("Name.....:", _unicode_encode(key.name))
- print("Keydir...:", _unicode_encode(key.keydir))
+ print("Nick.....:", key.nick)
+ print("Name.....:", key.name)
+ print("Keydir...:", key.keydir)
c = 0
for line in result.split('\n'):
if c == 0:
- print("Gpg info.:", _unicode_encode(line))
+ print("Gpg info.:", line)
else:
- print(" ", _unicode_encode(line))
+ print(" ", line)
c += 1
self.logger.debug("data output:\n" + str(result))
return (True, result)
@@ -292,7 +290,7 @@ class Actions(object):
str(result.failed))
if self.config.options['print_results']:
for result in results[key.name]:
- print("key desired:", _unicode_encode(key.name), ", key added:",
+ print("key desired:", key.name, ", key added:",
result.username, ", succeeded:",
not result.failed, ", fingerprint:", result.fingerprint)
self.logger.debug("stderr_out: " + str(result.stderr_out))
@@ -383,7 +381,7 @@ class Actions(object):
for g in results:
pub_pass = {}
for key in results[g]:
- self.output('', _unicode_encode(key.pretty_print()))
+ self.output('', key.pretty_print())
if key.key is "PUB":
pub_pass = {
@@ -542,7 +540,7 @@ class Actions(object):
results[gkey.name] = self.gpg.add_key(gkey)
if self.config.options['print_results']:
for result in results[gkey.name]:
- print("key desired:", _unicode_encode(gkey.name), ", key added:",
+ print("key desired:", gkey.name, ", key added:",
result.username, ", succeeded:",
not result.failed, ", fingerprint:", result.fingerprint)
self.logger.debug("stderr_out: " + str(result.stderr_out))
@@ -550,7 +548,7 @@ class Actions(object):
self.logger.debug("ACTIONS: importkey; result.failed = " + str(result.failed))
failed.append(gkey)
if not results[gkey.name][0].failed:
- print("Importing: ", _unicode_encode(gkey.name))
+ print("Importing: ", gkey.name)
self.logger.debug("ACTIONS: importkey; importing key: %s", gkey.name)
_keyring = os.path.join(catdir, args.keyring + '.gpg')
self.gpg.add_to_keyring(gkey, catdir, _keyring)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 1a80a03..46f8f2f 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -17,7 +17,7 @@ from __future__ import print_function
import argparse
import sys
-from pyGPG.status import _unicode_encode
+from pyGPG.status import _unicode_decode
from gkeys import fileops
from gkeys.log import log_levels, set_logger
@@ -315,16 +315,16 @@ class CliBase(object):
def output_results(results, header=None):
# super simple output for the time being
if header:
- print(_unicode_encode(header))
+ print(_unicode_decode(header))
for msg in results:
if type(msg) in [str, unicode]:
- print(' ', _unicode_encode(msg))
+ print(' ', _unicode_decode(msg))
else:
try:
- print("\n".join([_unicode_encode(x.pretty_print) for x in msg]))
+ print("\n".join([_unicode_decode(x.pretty_print) for x in msg]))
except AttributeError:
for x in msg:
- print(' ', _unicode_encode(x))
+ print(' ', _unicode_decode(x))
print()
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-01-09 21:07 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-01-09 21:07 UTC (permalink / raw
To: gentoo-commits
commit: 622f59e420f92062cc093b6ba540a15f03e56358
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 9 05:57:34 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Fri Jan 9 06:07:44 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=622f59e4
gkeys/actions.py: Partially update removekey()
The removal code is completely wrong if there are multiple keys installed in one keyring.
Everything below my comments needs a complete re-do.
Disabling the remove-key action until refactored.
---
gkeys/gkeys/action_map.py | 2 +-
gkeys/gkeys/actions.py | 37 ++++++++++++++++++++++++++++---------
2 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/gkeys/gkeys/action_map.py b/gkeys/gkeys/action_map.py
index fc5bfb0..b9224ea 100644
--- a/gkeys/gkeys/action_map.py
+++ b/gkeys/gkeys/action_map.py
@@ -18,7 +18,7 @@ Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed',
'list-seed', 'list-seedfiles', 'remove-seed']
Key_Actions = ['----keys-----', 'check-key', 'installed',
- 'install-key', 'list-key', 'refresh-key', 'remove-key',
+ 'install-key', 'list-key', 'refresh-key',
'search-key', 'spec-check']
General_Actions = ['---general---', 'list-cats', 'sign','verify']
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 59929cd..23c71fc 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -491,21 +491,40 @@ class Actions(object):
handler = SeedHandler(self.logger, self.config)
kwargs = handler.build_gkeydict(args)
self.logger.debug("ACTIONS: removekey; kwargs: %s" % str(kwargs))
- success, installed_keys = self.installed(args)[1]
- for gkey in installed_keys:
- if kwargs['nick'] not in gkey.nick:
- messages = ["%s does not seem to be a valid key." % kwargs['nick']]
+ seeds = handler.load_category(args.category)
+ messages = []
+ if args.nick == '*':
+ self.output([''],'Remove All keys in category: %s' % args.category)
+ ans = py_input ("Do you really want to remove ALL of keys?[y/n]: ")
+ while ans not in ["yes", "y", "no", "n"]:
+ ans = py_input ("Do you really want to remove ALL keys?[y/n]: ")
+ if ans in ["no", "n"]:
+ messages.append("Key removal aborted... Nothing to be done.")
+ return (True, messages)
+ keyresults = seeds.seeds
+ else:
+ keyresults = seeds.list(**kwargs)
+ self.output('', '\n Removing keys...')
+ success = True
+ print(keyresults)
+ for gkey in sorted(keyresults):
+ if kwargs['nick'] != '*' and kwargs['nick'] not in gkey.nick:
+ messages.append("%s does not seem to be a valid key." % kwargs['nick'])
success = False
else:
self.output(['', [gkey]], '\n Found GKEY seed:')
ans = py_input ("Do you really want to remove %s?[y/n]: "
- % kwargs['nick']).lower()
+ % kwargs['nick'].lower())
while ans not in ["yes", "y", "no", "n"]:
ans = py_input ("Do you really want to remove %s?[y/n]: "
- % kwargs['nick']).lower()
+ % kwargs['nick'].lower())
if ans in ["no", "n"]:
- messages = ["Key removal aborted... Nothing to be done."]
+ messages.append("Key removal aborted... Nothing to be done.")
else:
+ ## This next code is total crap now
+ ## re-write it from scratch
+ ## there could be multiple keys installed in one keyring
+ ## this code just rm's everything.
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
rm_candidate = os.path.join(catdir, gkey.nick)
@@ -513,9 +532,9 @@ class Actions(object):
if args.category:
try:
rmtree(rm_candidate)
- messages = ["Done removing %s key." % kwargs['nick']]
+ messages.append("Done removing %s key." % kwargs['nick'])
except OSError:
- messages = ["%s directory does not exist." % rm_candidate]
+ messages.append("%s directory does not exist." % rm_candidate)
success = False
return (success, messages)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: f67614b04b13ba636d4b95be353d165bf85f9078
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 13 05:10:32 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 31 03:43:47 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=f67614b0
gkeys/base.py: Remove no longer used code
---
gkeys/gkeys/base.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index cfd3702..8308df8 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -219,8 +219,6 @@ class CliBase(object):
description='Valid subcommands',
help='Additional help')
for name in self.cli_config['Available_Actions']:
- action_method = getattr(self.cli_config['Actions'],
- self.cli_config['Action_Map'][name]['func'])
actiondoc = self.cli_config['Action_Map'][name]['desc']
try:
text = actiondoc.splitlines()[0]
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: 7243efa95b7f2da8f1d61af8a2ad643d9f10a8fa
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 11 17:22:34 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Feb 11 17:30:28 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=7243efa9
gkeys/actions.py: _verify() Properly report a failed search
---
gkeys/gkeys/actions.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 0a30679..b2b8cf3 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -825,9 +825,11 @@ class Actions(object):
args.name = None
args.all = False
keys = self.key_search(args, data_only=True)
- args.category = list(keys)[0]
- args.nick = keys[args.category][0].nick
- return self.verify(args, messages)
+ if keys:
+ args.category = list(keys)[0]
+ args.nick = keys[args.category][0].nick
+ return self.verify(args, messages)
+ messages.append(_unicode("Failed to find gpg key.: 0x%s") % s_keyid)
return (verified, messages)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: 22173b6b70d6c1ba88249cf948801365cb1f64e1
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 31 03:33:59 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 31 04:40:29 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=22173b6b
gkeys/actions.py: separate the message info substitution
It is usually the result.username that gives the error.
This tries to trap it and keep going.
---
gkeys/gkeys/actions.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index dfc9f09..3852372 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -308,10 +308,11 @@ class Actions(object):
msg = _unicode("key desired: %(name)s, key added: %(key)s, succeeded:" +\
" %(success)s, fingerprint: %(fpr)s")
for result in results[key.name]:
- try:
- print(msg % ({'name': key.name, 'key': result.username,
+ umsg = msg % ({'name': key.name, 'key': result.username,
'success': str(not result.failed),
- 'fpr': result.fingerprint}))
+ 'fpr': result.fingerprint})
+ try:
+ print(umsg)
except UnicodeDecodeError:
print(_unicode("UnicodeDecodeError printing results for:"), key.name)
self.logger.debug(_unicode("installkey(); UnicodeDecodeError for:") + key.name)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: 0b5e90a96d8434177c7ef8f5cfc34129a879baf3
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 11 17:20:24 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Feb 11 17:30:27 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=0b5e90a9
gkeys/action_map.py: Add uid to possible options
---
gkeys/gkeys/action_map.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/action_map.py b/gkeys/gkeys/action_map.py
index 2a11146..d547ab3 100644
--- a/gkeys/gkeys/action_map.py
+++ b/gkeys/gkeys/action_map.py
@@ -58,7 +58,7 @@ Action_Map = OrderedDict([
('verify', {
'func': 'verify',
'options': ['category', 'nick', 'name', 'fingerprint', 'keydir', 'keys',
- '1file', 'signature', 'timestamp', 'dest'],
+ '1file', 'signature', 'timestamp', 'dest', 'uid'],
'desc': '''File automatic download and/or verification action.''',
'long_desc': '''File automatic download and/or verification action.
Note: If the specified key/keyring to verify against does not contain
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: 9ecc173ca9dfa1b22af86ba9412c6f6777cbb54b
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 28 21:30:04 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 31 04:40:29 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=9ecc173c
gkeys: Fix verify -F logic for inline sigs
---
gkeys/gkeys/actions.py | 115 ++++++++++++++++++++++++++-----------------------
gkeys/gkeys/lib.py | 2 +-
2 files changed, 62 insertions(+), 55 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 16dbb26..dfc9f09 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -755,71 +755,78 @@ class Actions(object):
_unicode("ACTIONS: verify; timestamp path: %s") % timestamp_path)
success, signedfile, timestamp = fetcher.fetch_file(
url, filepath, timestamp_path)
+ if not success:
+ messages.append(_unicode("File %s cannot be retrieved.") % filepath)
+ else:
+ if not signature:
+ EXTENSIONS = ['.sig', '.asc', 'gpg','.gpgsig']
+ success_fetch = False
+ for ext in EXTENSIONS:
+ sig_path = filepath + ext
+ if isurl:
+ signature = url + ext
+ self.logger.debug(
+ _unicode("ACTIONS: verify; fetching %s signature ")
+ % signature)
+ success_fetch, sig, timestamp = fetcher.fetch_file(signature, sig_path)
+ if success_fetch:
+ break
+ else:
+ signature = None
else:
filepath = os.path.abspath(filepath)
self.logger.debug(
_unicode("ACTIONS: verify; local file %s") % filepath)
success = os.path.isfile(filepath)
- if not success:
- messages.append(_unicode("File %s cannot be retrieved.") % filepath)
- else:
if not signature:
EXTENSIONS = ['.sig', '.asc', 'gpg','.gpgsig']
success_fetch = False
for ext in EXTENSIONS:
sig_path = filepath + ext
- if isurl:
- signature = url + ext
- self.logger.debug(
- _unicode("ACTIONS: verify; fetching %s signature ")
- % signature)
- success_fetch, sig, timestamp = fetcher.fetch_file(signature, sig_path)
- else:
- signature = filepath + ext
- signature = os.path.abspath(signature)
- self.logger.debug(
- _unicode("ACTIONS: verify; checking %s signature ")
- % signature)
- success_fetch = os.path.isfile(signature)
- if success_fetch:
+ sig_path = os.path.abspath(sig_path)
+ self.logger.debug(
+ _unicode("ACTIONS: verify; checking %s signature ")
+ % sig_path)
+ success_sig = os.path.isfile(sig_path)
+ if success_sig:
break
- else:
- sig_path = signature
- self.logger.info("Verifying file...")
- verified = False
- results = self.gpg.verify_file(key, sig_path, filepath)
- keyid = key.keyid[0]
- (valid, trust) = results.verified
- if valid:
- verified = True
- messages.extend(
- [_unicode("Verification succeeded.: %s") % (filepath),
- _unicode("Key info...............: %s <%s>, %s")
- % ( key.name, key.nick, keyid),
- _unicode(" category, nick.....: %s %s")
- % (args.category, args.nick)])
- else:
- messages.extend(
- [_unicode("Verification failed....: %s") % (filepath),
- _unicode("Key info...............: %s <%s>, %s")
- % ( key.name, key.nick, keyid)])
- has_no_pubkey, s_keyid = results.no_pubkey
- if has_no_pubkey:
- messages.append(
- _unicode("Auto-searching for key.: 0x%s") % s_keyid)
- # reset all but keyid and pass thru data
- args.keyid = s_keyid
- args.keydir = None
- args.fingerprint = None
- args.exact = False
- args.category = None
- args.nick = None
- args.name = None
- args.all = False
- keys = self.key_search(args, data_only=True)
- args.category = list(keys)[0]
- args.nick = keys[args.category][0].nick
- return self.verify(args, messages)
+ else:
+ sig_path = None
+ self.logger.info("Verifying file...")
+ verified = False
+ results = self.gpg.verify_file(key, sig_path, filepath)
+ keyid = key.keyid[0]
+ (valid, trust) = results.verified
+ if valid:
+ verified = True
+ messages.extend(
+ [_unicode("Verification succeeded.: %s") % (filepath),
+ _unicode("Key info...............: %s <%s>, %s")
+ % ( key.name, key.nick, keyid),
+ _unicode(" category, nick.....: %s %s")
+ % (args.category, args.nick)])
+ else:
+ messages.extend(
+ [_unicode("Verification failed....: %s") % (filepath),
+ _unicode("Key info...............: %s <%s>, %s")
+ % ( key.name, key.nick, keyid)])
+ has_no_pubkey, s_keyid = results.no_pubkey
+ if has_no_pubkey:
+ messages.append(
+ _unicode("Auto-searching for key.: 0x%s") % s_keyid)
+ # reset all but keyid and pass thru data
+ args.keyid = s_keyid
+ args.keydir = None
+ args.fingerprint = None
+ args.exact = False
+ args.category = None
+ args.nick = None
+ args.name = None
+ args.all = False
+ keys = self.key_search(args, data_only=True)
+ args.category = list(keys)[0]
+ args.nick = keys[args.category][0].nick
+ return self.verify(args, messages)
return (verified, messages)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 4ae534d..9687c24 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -311,7 +311,7 @@ class GkeysGPG(GPG):
results = self.runGPG(task='verify', inputfile=[signature,filepath])
else:
self.set_keydir(gkey.keydir, 'decrypt', reset=True)
- self.logger.debug("** Calling runGPG with Running 'gpg %s --decrypt %s and %s'"
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --decrypt %s'"
% (' '.join(self.config['tasks']['decrypt']), filepath))
results = self.runGPG(task='decrypt', inputfile=filepath)
keyid = gkey.keyid[0]
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: 50670d9212b29b27192f3e951d680391e0fbd70a
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Feb 11 17:21:35 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Feb 11 17:30:27 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=50670d92
gkeys/actions.py: Remove result from del list, it's not always defined
---
gkeys/gkeys/actions.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 3852372..0a30679 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -953,7 +953,7 @@ class Actions(object):
if isinstance(result, GKEY):
keys[cat].append(result)
if data_only:
- del found, cat, result, handler
+ del found, cat, handler
return keys
msgs = []
for cat in list(keys):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: d3446934815ba262e479cea7272a524b65d3f041
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 13 05:58:59 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 31 03:43:47 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=d3446934
gkeys/actions.py: Trap UnicodeDecodeError for installkey()
Add debug logging for the error.
---
gkeys/gkeys/actions.py | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 23c71fc..ad03038 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -292,9 +292,16 @@ class Actions(object):
msg = "key desired: %(name)s, key added: %(key)s, succeeded:" +\
" %(success)s, fingerprint: %(fpr)s"
for result in results[key.name]:
- print(msg % ({'name': key.name, 'key': result.username,
- 'success': not result.failed,
- 'fpr': result.fingerprint}))
+ try:
+ print(msg % ({'name': key.name, 'key': result.username,
+ 'success': str(not result.failed),
+ 'fpr': result.fingerprint}))
+ except UnicodeDecodeError:
+ print("UnicodeDecodeError printing results for:", key.name)
+ self.logger.debug("installkey(); UnicodeDecodeError for:" + key.name)
+ self.logger.debug(" result.username...:" + result.username)
+ self.logger.debug(" result.failed.....:" + result.failed)
+ self.logger.debug(" result.fingerprint:" + result.fingerprint)
self.logger.debug("stderr_out: " + str(result.stderr_out))
if result.failed:
failed.append(key)
@@ -564,7 +571,7 @@ class Actions(object):
"succeeded: %(success)s, fingerprint: %(fpr)s"
for result in results[gkey.name]:
print(msg % ({'name': gkey.name, 'key': result.username,
- 'success': not result.failed,
+ 'success': str(not result.failed),
'fpr': result.fingerprint}))
self.logger.debug("stderr_out: " + str(result.stderr_out))
if result.failed:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-02-11 17:37 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-02-11 17:37 UTC (permalink / raw
To: gentoo-commits
commit: 80fbd3d7da1720844103a202809b7583a3f11c7b
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Jan 20 05:58:00 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 31 04:40:29 2015 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=80fbd3d7
gkeys: Wrap all strings which have %s with _unicode() to prevent decode errors
Hopefully this will stop the intermittent python-2.7 UnicodeDecodeError that some people get during string substitution.
---
gkeys/gkeys/actions.py | 278 ++++++++++++++++++++++++++++++-------------------
gkeys/gkeys/base.py | 2 +-
2 files changed, 172 insertions(+), 108 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index ad03038..16dbb26 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -17,8 +17,10 @@ import sys
if sys.version_info[0] >= 3:
py_input = input
+ _unicode = str
else:
py_input = raw_input
+ _unicode = unicode
from collections import defaultdict
@@ -63,7 +65,8 @@ class Actions(object):
'''Pretty-print the selected seed file'''
handler = SeedHandler(self.logger, self.config)
kwargs = handler.build_gkeydict(args)
- self.logger.debug("ACTIONS: listseed; kwargs: %s" % str(kwargs))
+ self.logger.debug(_unicode("ACTIONS: listseed; kwargs: %s")
+ % _unicode(kwargs))
if not self.seeds:
try:
self.seeds = handler.load_seeds(args.category, args.nick)
@@ -78,7 +81,8 @@ class Actions(object):
def fetchseed(self, args):
'''Download the selected seed file(s)'''
- self.logger.debug("ACTIONS: fetchseed; args: %s" % str(args))
+ self.logger.debug(_unicode("ACTIONS: fetchseed; args: %s")
+ % _unicode(args))
if not args.category:
return (False, ["Please specify seeds category."])
handler = SeedHandler(self.logger, self.config)
@@ -103,7 +107,9 @@ class Actions(object):
return (False, ["Failed to create a valid GKEY instance.",
"Check for invalid data entries"])
if len(gkeys) == 0:
- self.logger.debug("ACTIONS: installkey; now adding gkey: %s" % str(gkey))
+ self.logger.debug(
+ _unicode("ACTIONS: installkey; now adding gkey: %s")
+ % _unicode(gkey))
success = self.seeds.add(getattr(gkey, 'nick'), gkey)
if success:
success = self.seeds.save()
@@ -122,12 +128,14 @@ class Actions(object):
return (False, ["Failed to remove seed: No gkeys returned from listseed()",
[]])
if len(gkeys) == 1:
- self.logger.debug("ACTIONS: removeseed; now deleting gkey: %s" % str(gkeys))
+ self.logger.debug(
+ _unicode("ACTIONS: removeseed; now deleting gkey: %s")
+ % _unicode(gkeys))
success = self.seeds.delete(gkeys[0])
if success:
success = self.seeds.save()
- return (success, ["Successfully removed seed: %s" % str(success),
- gkeys])
+ return (success, [_unicode("Successfully removed seed: %s")
+ % _unicode(success), gkeys])
elif len(gkeys):
return (False, ["Too many seeds found to remove", gkeys])
return (False, ["Failed to remove seed:", args,
@@ -138,7 +146,8 @@ class Actions(object):
'''Move keys between seed files'''
handler = SeedHandler(self.logger, self.config)
searchkey = handler.new(args, checkgkey=False)
- self.logger.debug("ACTIONS: moveseed; gkey: %s" % str(searchkey))
+ self.logger.debug(_unicode("ACTIONS: moveseed; gkey: %s")
+ % _unicode(searchkey))
if not self.seeds:
self.seeds = self.load_seeds(args.category)
kwargs = handler.build_gkeydict(args)
@@ -147,17 +156,21 @@ class Actions(object):
destkeys = dest.list(**kwargs)
messages = []
if len(sourcekeys) == 1 and destkeys == []:
- self.logger.debug("ACTIONS: moveseed; now adding destination gkey: %s"
- % str(sourcekeys[0]))
+ self.logger.debug(
+ _unicode("ACTIONS: moveseed; now adding destination gkey: %s")
+ % _unicode(sourcekeys[0]))
success = dest.add(sourcekeys[0])
- self.logger.debug("ACTIONS: moveseed; success: %s" %str(success))
- self.logger.debug("ACTIONS: moveseed; now deleting sourcekey: %s" % str(sourcekeys[0]))
+ self.logger.debug("ACTIONS: moveseed; success: %s" % str(success))
+ self.logger.debug(
+ _unicode("ACTIONS: moveseed; now deleting sourcekey: %s")
+ % _unicode(sourcekeys[0]))
success = self.seeds.delete(sourcekeys[0])
if success:
success = dest.save()
- self.logger.debug("ACTIONS: moveseed; destination saved... %s" %str(success))
+ self.logger.debug("ACTIONS: moveseed; destination saved... %s"
+ % str(success))
success = self.seeds.save()
- messages.extend(["Successfully Moved %s seed: %s"
+ messages.extend([_unicode("Successfully Moved %s seed: %s")
% (args.category, str(success)), sourcekeys[0]])
return (success, messages)
elif len(sourcekeys):
@@ -182,7 +195,7 @@ class Actions(object):
args.category = 'gentoo'
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- self.logger.debug("ACTIONS: listkey; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: listkey; catdir = %s") % catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
handler = SeedHandler(self.logger, self.config)
if args.keydir:
@@ -241,17 +254,17 @@ class Actions(object):
if self.config.options['print_results']:
if print_key:
print()
- print("Nick.....: %s" % key.nick)
- print("Name.....: %s" % key.name)
- print("Keydir...: %s" % key.keydir)
+ print(_unicode("Nick.....: %s") % key.nick)
+ print(_unicode("Name.....: %s") % key.name)
+ print(_unicode("Keydir...: %s") % key.keydir)
c = 0
for line in result.split('\n'):
if c == 0:
- print("Gpg info.: %s" % line)
+ print(_unicode("Gpg info.: %s") % line)
else:
- print(" %s" % line)
+ print(_unicode(" %s") % line)
c += 1
- self.logger.debug("data output:\n" + str(result))
+ self.logger.debug(_unicode("data output:\n") + str(result))
return (True, result)
@@ -268,16 +281,19 @@ class Actions(object):
self.logger.info("ACTIONS: installkey; "
"Matching seed entry not found")
if args.nick:
- return (False, ["Search failed for: %s" % args.nick])
+ return (False,
+ [_unicode("Search failed for: %s") % args.nick])
elif args.name:
- return (False, ["Search failed for: %s" % args.name])
+ return (False,
+ [_unicode("Search failed for: %s") % args.name])
else:
return (False, ["Search failed for search term"])
# get confirmation
# fill in code here
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- self.logger.debug("ACTIONS: installkey; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: installkey; catdir = %s")
+ % catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
failed = []
@@ -289,19 +305,19 @@ class Actions(object):
self.logger.debug("ACTIONS: installkey; result.failed = " +
str(result.failed))
if self.config.options['print_results']:
- msg = "key desired: %(name)s, key added: %(key)s, succeeded:" +\
- " %(success)s, fingerprint: %(fpr)s"
+ msg = _unicode("key desired: %(name)s, key added: %(key)s, succeeded:" +\
+ " %(success)s, fingerprint: %(fpr)s")
for result in results[key.name]:
try:
print(msg % ({'name': key.name, 'key': result.username,
'success': str(not result.failed),
'fpr': result.fingerprint}))
except UnicodeDecodeError:
- print("UnicodeDecodeError printing results for:", key.name)
- self.logger.debug("installkey(); UnicodeDecodeError for:" + key.name)
- self.logger.debug(" result.username...:" + result.username)
- self.logger.debug(" result.failed.....:" + result.failed)
- self.logger.debug(" result.fingerprint:" + result.fingerprint)
+ print(_unicode("UnicodeDecodeError printing results for:"), key.name)
+ self.logger.debug(_unicode("installkey(); UnicodeDecodeError for:") + key.name)
+ self.logger.debug(_unicode(" result.username...:") + result.username)
+ self.logger.debug(_unicode(" result.failed.....:") + result.failed)
+ self.logger.debug(_unicode(" result.fingerprint:") + result.fingerprint)
self.logger.debug("stderr_out: " + str(result.stderr_out))
if result.failed:
failed.append(key)
@@ -318,13 +334,13 @@ class Actions(object):
Performs basic validity checks on the key(s), checks expiry,
and presence of a signing sub-key'''
if not args.category:
- return (False, ["Please specify seeds category."])
- self.logger.debug("ACTIONS: checkkey; args: %s" % str(args))
+ return (False, [_unicode("Please specify seeds category.")])
+ self.logger.debug(_unicode("ACTIONS: checkkey; args: %s") % _unicode(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category)
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- self.logger.debug("ACTIONS: checkkey; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: checkkey; catdir = %s") % catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
failed = defaultdict(list)
@@ -332,21 +348,27 @@ class Actions(object):
keyresults = seeds.list(**kwargs)
self.output('', '\n Checking keys...')
for gkey in sorted(keyresults):
- self.logger.info("Checking key %s, %s" % (gkey.nick, gkey.pub_keyid))
+ self.logger.info(_unicode("Checking key %s, %s")
+ % (gkey.nick, gkey.pub_keyid))
self.output('',
- "\n %s, %s: %s" % (gkey.nick, gkey.name, ', '.join(gkey.pub_keyid)) +
- "\n ==============================================")
- self.logger.debug("ACTIONS: checkkey; gkey = %s" % str(gkey))
+ _unicode("\n %s, %s: %s" % (gkey.nick, gkey.name,
+ _unicode(', ').join(gkey.pub_keyid))) +
+ _unicode("\n =============================================="))
+ self.logger.debug(_unicode("ACTIONS: checkkey; gkey = %s") % _unicode(gkey))
for key in gkey.pub_keyid:
results[gkey.name] = self.gpg.check_keys(gkey.keydir, key)
if results[gkey.name].expired:
- failed['expired'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key))
+ failed['expired'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key))
if results[gkey.name].revoked:
- failed['revoked'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key))
+ failed['revoked'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key))
if results[gkey.name].invalid:
- failed['invalid'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key))
+ failed['invalid'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key))
if not results[gkey.name].sign:
- failed['sign'].append("%s <%s>: %s " % (gkey.name, gkey.nick, key))
+ failed['sign'].append(_unicode("%s <%s>: %s ")
+ % (gkey.name, gkey.nick, key))
if failed['expired']:
self.output([failed['expired']], '\n Expired keys:\n')
if failed['revoked']:
@@ -367,12 +389,13 @@ class Actions(object):
'''Check if keys meet specifications requirements'''
if not args.category:
return (False, ["Please specify seeds category."])
- self.logger.debug("ACTIONS: speccheck; args: %s" % str(args))
+ self.logger.debug(_unicode("ACTIONS: speccheck; args: %s")
+ % _unicode(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category)
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- self.logger.debug("ACTIONS: speccheck; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: speccheck; catdir = %s") % catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
failed = defaultdict(list)
@@ -380,11 +403,14 @@ class Actions(object):
keyresults = seeds.list(**kwargs)
self.output('', '\n Checking keys...')
for gkey in sorted(keyresults):
- self.logger.info("Checking key %s, %s" % (gkey.nick, gkey.keys))
+ self.logger.info(_unicode("Checking key %s, %s")
+ % (gkey.nick, gkey.keys))
self.output('',
- "\n %s, %s: %s" % (gkey.nick, gkey.name, ', '.join(gkey.pub_keyid)) +
- "\n ==============================================")
- self.logger.debug("ACTIONS: speccheck; gkey = %s" % str(gkey))
+ _unicode("\n %s, %s: %s") % (gkey.nick, gkey.name,
+ _unicode(', ').join(gkey.pub_keyid)) +
+ _unicode("\n =============================================="))
+ self.logger.debug(_unicode("ACTIONS: speccheck; gkey = %s")
+ % _unicode(gkey))
for key in gkey.keys:
results = self.gpg.speccheck(gkey.keydir, key)
for g in results:
@@ -417,27 +443,36 @@ class Actions(object):
pub_pass['auth'] = True
validity = key.validity.split(',')[0]
if not key.expire and not 'r' in validity:
- failed['expired'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key.fingerprint))
+ failed['expired'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key.fingerprint))
if 'r' in validity:
- failed['revoked'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key.fingerprint))
+ failed['revoked'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key.fingerprint))
if 'i' in validity:
- failed['invalid'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key.fingerprint))
+ failed['invalid'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key.fingerprint))
if key.capabilities not in ['a', 'e']:
if not key.algo:
- failed['algo'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key.fingerprint))
+ failed['algo'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key.fingerprint))
if not key.bits:
- failed['bits'].append("%s <%s>: %s" % (gkey.name, gkey.nick, key.fingerprint))
+ failed['bits'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, key.fingerprint))
if "Warning" in key.expire_reason:
- failed['warn'].append("%s <%s>: %s " % (gkey.name, gkey.nick, key.fingerprint))
+ failed['warn'].append(_unicode("%s <%s>: %s ")
+ % (gkey.name, gkey.nick, key.fingerprint))
if True in pub_pass['signs']:
pub_pass['sign'] = True
if True in pub_pass['encrypts']:
pub_pass['encrypt'] = True
if not pub_pass['sign']:
- failed['sign'].append("%s <%s>: %s" % (gkey.name, gkey.nick, pub_pass['key'].fingerprint))
+ failed['sign'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, pub_pass['key'].fingerprint))
if not pub_pass['encrypt']:
- failed['encrypt'].append("%s <%s>: %s" % (gkey.name, gkey.nick, pub_pass['key'].fingerprint))
- spec = "%s <%s>: %s" % (gkey.name, gkey.nick, pub_pass['key'].fingerprint)
+ failed['encrypt'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, pub_pass['key'].fingerprint))
+ spec = _unicode("%s <%s>: %s") % (
+ gkey.name, gkey.nick, pub_pass['key'].fingerprint)
for k in ['pub', 'sign']:
if pub_pass[k]:
pub_pass['final'] = True
@@ -497,11 +532,13 @@ class Actions(object):
return (False, ["Please provide a nickname or -n *"])
handler = SeedHandler(self.logger, self.config)
kwargs = handler.build_gkeydict(args)
- self.logger.debug("ACTIONS: removekey; kwargs: %s" % str(kwargs))
+ self.logger.debug(_unicode("ACTIONS: removekey; kwargs: %s")
+ % _unicode(kwargs))
seeds = handler.load_category(args.category)
messages = []
if args.nick == '*':
- self.output([''],'Remove All keys in category: %s' % args.category)
+ self.output([''],_unicode('Remove All keys in category: %s')
+ % _unicode(args.category))
ans = py_input ("Do you really want to remove ALL of keys?[y/n]: ")
while ans not in ["yes", "y", "no", "n"]:
ans = py_input ("Do you really want to remove ALL keys?[y/n]: ")
@@ -516,15 +553,18 @@ class Actions(object):
print(keyresults)
for gkey in sorted(keyresults):
if kwargs['nick'] != '*' and kwargs['nick'] not in gkey.nick:
- messages.append("%s does not seem to be a valid key." % kwargs['nick'])
+ messages.append(_unicode("%s does not seem to be a valid key.")
+ % _unicode(kwargs['nick']))
success = False
else:
self.output(['', [gkey]], '\n Found GKEY seed:')
- ans = py_input ("Do you really want to remove %s?[y/n]: "
- % kwargs['nick'].lower())
+ ans = py_input (
+ _unicode("Do you really want to remove %s?[y/n]: ")
+ % _unicode(kwargs['nick'].lower()))
while ans not in ["yes", "y", "no", "n"]:
- ans = py_input ("Do you really want to remove %s?[y/n]: "
- % kwargs['nick'].lower())
+ ans = py_input (
+ _unicode("Do you really want to remove %s?[y/n]: ")
+ % _unicode(kwargs['nick'].lower()))
if ans in ["no", "n"]:
messages.append("Key removal aborted... Nothing to be done.")
else:
@@ -535,13 +575,14 @@ class Actions(object):
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
rm_candidate = os.path.join(catdir, gkey.nick)
- self.logger.debug("ACTIONS: removekey; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: removekey; catdir = %s")
+ % catdir)
if args.category:
try:
rmtree(rm_candidate)
- messages.append("Done removing %s key." % kwargs['nick'])
+ messages.append(_unicode("Done removing %s key.") % kwargs['nick'])
except OSError:
- messages.append("%s directory does not exist." % rm_candidate)
+ messages.append(_unicode("%s directory does not exist.") % rm_candidate)
success = False
return (success, messages)
@@ -557,18 +598,19 @@ class Actions(object):
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
keyring_dir = self.config.get_key("keyring")
- self.logger.debug("ACTIONS: importkey; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: importkey; catdir = %s")
+ % catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
success, gkeys = self.listseed(args)[1]
results = {}
failed = []
print("Importing specified keys to keyring.")
for gkey in gkeys:
- self.logger.debug("ACTIONS: importkey; adding key: %s", gkey.name)
+ self.logger.debug(_unicode("ACTIONS: importkey; adding key: %s"), gkey.name)
results[gkey.name] = self.gpg.add_key(gkey)
if self.config.options['print_results']:
- msg = "key desired: %(name)s, key added: %(key)s, " + \
- "succeeded: %(success)s, fingerprint: %(fpr)s"
+ msg = _unicode("key desired: %(name)s, key added: %(key)s, " + \
+ "succeeded: %(success)s, fingerprint: %(fpr)s")
for result in results[gkey.name]:
print(msg % ({'name': gkey.name, 'key': result.username,
'success': str(not result.failed),
@@ -579,8 +621,9 @@ class Actions(object):
+ str(result.failed))
failed.append(gkey)
if not results[gkey.name][0].failed:
- print("Importing: %s" % gkey.name)
- self.logger.debug("ACTIONS: importkey; importing key: %s"
+ print(_unicode("Importing: %s") % gkey.name)
+ self.logger.debug(
+ _unicode("ACTIONS: importkey; importing key: %s")
% gkey.name)
_keyring = os.path.join(catdir, args.keyring + '.gpg')
self.gpg.add_to_keyring(gkey, catdir, _keyring)
@@ -620,7 +663,7 @@ class Actions(object):
for val in list(seed.values()):
installed_keys.append(GKEY(**val))
except OSError:
- return (False, ["%s directory does not exist." % catdir, ""])
+ return (False, [_unicode("%s directory does not exist.") % catdir, ""])
return (True, ['Found Key(s):', installed_keys])
@@ -650,7 +693,8 @@ class Actions(object):
return (False, ['Please provide a signed file.'])
if not args.category:
args.category = self.config.get_key('verify_keyring')
- self.logger.debug("ACTIONS: verify; keyring category not specified, using default: %s"
+ self.logger.debug(_unicode(
+ "ACTIONS: verify; keyring category not specified, using default: %s")
% args.category)
handler = SeedHandler(self.logger, self.config)
keys = handler.load_category(args.category)
@@ -659,17 +703,18 @@ class Actions(object):
key = handler.seeds.nick_search(args.nick)
if not key:
if args.nick:
- messages.append("Failed to find.........: %s in category: %s"
+ messages.append(_unicode(
+ "Failed to find.........: %s in category: %s")
% (args.category, args.nick))
args.category = self.config.get_key('verify-keyring')
args.nick = self.config.get_key('verify-nick')
- messages.append("Using config defaults..: %s %s"
+ messages.append(_unicode("Using config defaults..: %s %s")
% (args.category, args.nick))
return self.verify(args, messages)
keyrings = self.config.get_key('keyring')
catdir = os.path.join(keyrings, args.category)
- self.logger.debug("ACTIONS: verify; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: verify; catdir = %s") % catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
return self._verify(args, handler, key, messages)
@@ -688,8 +733,9 @@ class Actions(object):
# with download file name
if not filepath:
filepath = url.split('/')[-1]
- self.logger.debug("ACTIONS: verify; destination filepath was "
- "not supplied, using current directory ./%s" % filepath)
+ self.logger.debug(_unicode(
+ "ACTIONS: verify; destination filepath was "
+ "not supplied, using current directory ./%s") % filepath)
if args.timestamp:
timestamp_path = filepath + ".timestamp"
if isurl:
@@ -703,15 +749,19 @@ class Actions(object):
'kwargs-error': {},
}
fetcher = Connector(connector_output, None, "Gentoo Keys")
- self.logger.debug("ACTIONS: verify; fetching %s signed file " % filepath)
- self.logger.debug("ACTIONS: verify; timestamp path: %s" % timestamp_path)
- success, signedfile, timestamp = fetcher.fetch_file(url, filepath, timestamp_path)
+ self.logger.debug(
+ _unicode("ACTIONS: verify; fetching %s signed file ") % filepath)
+ self.logger.debug(
+ _unicode("ACTIONS: verify; timestamp path: %s") % timestamp_path)
+ success, signedfile, timestamp = fetcher.fetch_file(
+ url, filepath, timestamp_path)
else:
filepath = os.path.abspath(filepath)
- self.logger.debug("ACTIONS: verify; local file %s" % filepath)
+ self.logger.debug(
+ _unicode("ACTIONS: verify; local file %s") % filepath)
success = os.path.isfile(filepath)
if not success:
- messages.append("File %s cannot be retrieved." % filepath)
+ messages.append(_unicode("File %s cannot be retrieved.") % filepath)
else:
if not signature:
EXTENSIONS = ['.sig', '.asc', 'gpg','.gpgsig']
@@ -720,12 +770,16 @@ class Actions(object):
sig_path = filepath + ext
if isurl:
signature = url + ext
- self.logger.debug("ACTIONS: verify; fetching %s signature " % signature)
+ self.logger.debug(
+ _unicode("ACTIONS: verify; fetching %s signature ")
+ % signature)
success_fetch, sig, timestamp = fetcher.fetch_file(signature, sig_path)
else:
signature = filepath + ext
signature = os.path.abspath(signature)
- self.logger.debug("ACTIONS: verify; checking %s signature " % signature)
+ self.logger.debug(
+ _unicode("ACTIONS: verify; checking %s signature ")
+ % signature)
success_fetch = os.path.isfile(signature)
if success_fetch:
break
@@ -738,17 +792,21 @@ class Actions(object):
(valid, trust) = results.verified
if valid:
verified = True
- messages.extend(["Verification succeeded.: %s" % (filepath),
- "Key info...............: %s <%s>, %s"
+ messages.extend(
+ [_unicode("Verification succeeded.: %s") % (filepath),
+ _unicode("Key info...............: %s <%s>, %s")
% ( key.name, key.nick, keyid),
- " category, nick.....: %s %s" % (args.category, args.nick)])
+ _unicode(" category, nick.....: %s %s")
+ % (args.category, args.nick)])
else:
- messages.extend(["Verification failed....: %s" % (filepath),
- "Key info...............: %s <%s>, %s"
+ messages.extend(
+ [_unicode("Verification failed....: %s") % (filepath),
+ _unicode("Key info...............: %s <%s>, %s")
% ( key.name, key.nick, keyid)])
has_no_pubkey, s_keyid = results.no_pubkey
if has_no_pubkey:
- messages.append("Auto-searching for key.: 0x%s" % s_keyid)
+ messages.append(
+ _unicode("Auto-searching for key.: 0x%s") % s_keyid)
# reset all but keyid and pass thru data
args.keyid = s_keyid
args.keydir = None
@@ -768,16 +826,16 @@ class Actions(object):
def listcats(self, args):
'''List seed file definitions found in the config'''
seeds = list(self.config.get_key('seeds'))
- return (True, {"Categories defined: %s\n"
- % (", ".join(seeds)): True})
+ return (True, {_unicode("Categories defined: %s\n")
+ % (_unicode(", ").join(seeds)): True})
def listseedfiles(self, args):
'''List seed files found in the configured seed directory'''
seedsdir = self.config.get_key('seedsdir')
seedfile = [f for f in os.listdir(seedsdir) if f[-5:] == 'seeds']
- return (True, {"Seed files found at path: %s\n %s"
- % (seedsdir, "\n ".join(seedfile)): True})
+ return (True, {_unicode("Seed files found at path: %s\n %s")
+ % (seedsdir, _unicode("\n ").join(seedfile)): True})
def sign(self, args):
@@ -803,7 +861,7 @@ class Actions(object):
self.config.options['gpg_defaults'] = ['--status-fd', '2']
- self.logger.debug("ACTIONS: sign; keydir = %s" % keydir)
+ self.logger.debug(_unicode("ACTIONS: sign; keydir = %s") % keydir)
self.gpg = GkeysGPG(self.config, basedir, self.logger)
self.gpg.set_keydir(keydir, task)
@@ -816,14 +874,16 @@ class Actions(object):
verified, trust = results.verified
if not results.verified[0]:
msgs.extend(
- ['Failed Signature for %s verified: %s, trust: %s'
- % (fname, verified, trust), 'GPG output:', "\n".join(results.stderr_out)]
+ [_unicode('Failed Signature for %s verified: %s, trust: %s')
+ % (fname, verified, trust),
+ _unicode('GPG output:', "\n").join(results.stderr_out)]
)
success.append(False)
else:
msgs.extend(
- ['Signature result for: %s -- verified: %s, trust: %s'
- % (fname, verified, trust)] #, 'GPG output:', "\n".join(results.stderr_out)]
+ [_unicode(
+ 'Signature result for: %s -- verified: %s, trust: %s')
+ % (fname, verified, trust)] #, 'GPG output:', "\n".join(results.stderr_out)]
)
success.append(True)
return (False not in success, ['', msgs])
@@ -834,22 +894,26 @@ class Actions(object):
for in place updates of the installed keys'''
if not args.category:
return (False, ["Please specify seeds type."])
- self.logger.debug("ACTIONS: refreshkey; args: %s" % str(args))
+ self.logger.debug(_unicode("ACTIONS: refreshkey; args: %s")
+ % _unicode(args))
handler = SeedHandler(self.logger, self.config)
seeds = handler.load_category(args.category, refresh=True)
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- self.logger.debug("ACTIONS: refreshkey; catdir = %s" % catdir)
+ self.logger.debug(_unicode("ACTIONS: refreshkey; catdir = %s") % catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
kwargs = handler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
self.output('', '\n Refreshig keys...')
for gkey in sorted(keyresults):
- self.logger.info("Refreshig key %s, %s" % (gkey.nick, gkey.pub_keyid))
- self.output('', " %s: %s" % (gkey.name, ', '.join(gkey.pub_keyid)))
+ self.logger.info(_unicode("Refreshig key %s, %s")
+ % (gkey.nick, gkey.pub_keyid))
+ self.output('', _unicode(" %s: %s")
+ % (gkey.name, ', '.join(gkey.pub_keyid)))
#self.output('', " ===============")
- self.logger.debug("ACTIONS: refreshkey; gkey = %s" % str(gkey))
+ self.logger.debug(_unicode("ACTIONS: refreshkey; gkey = %s")
+ % _unicode(gkey))
results[gkey.keydir] = self.gpg.refresh_key(gkey)
return (True, ['Completed'])
@@ -885,7 +949,7 @@ class Actions(object):
return keys
msgs = []
for cat in list(keys):
- msgs.append("Category.....: %s" % cat)
+ msgs.append(_unicode("Category.....: %s") % cat)
msgs.append(keys[cat])
del keys, cat
return (True, msgs)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 8308df8..08bfe5f 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -324,7 +324,7 @@ class CliBase(object):
print(' ', msg)
else:
try:
- print("\n".join([x.pretty_print for x in msg]))
+ print(unicode("\n").join([x.pretty_print for x in msg]))
except AttributeError:
for x in msg:
print(' ', x)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-03-06 21:04 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-03-06 21:04 UTC (permalink / raw
To: gentoo-commits
commit: 104269d7a6bf20cc0a618ba9194c2be6e2970abe
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 6 21:03:46 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Fri Mar 6 21:03:46 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=104269d7
gkeys/seed.py: Revert the use of codecs to open the seed file
It was causing tracebacks in python-2.7 running in vulture.gentoo.org
gkeys/gkeys/seed.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 262ba57..ca5e2d2 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -61,7 +61,7 @@ class Seeds(object):
seedlines = None
self.seeds = {}
try:
- with codecs.open(self.filename, "r+", encoding='utf_8') as seedfile:
+ with open(self.filename, "r+") as seedfile:
seedlines = json.load(seedfile)
except IOError as err:
self.logger.debug("Seed: load; IOError occurred while loading file")
@@ -104,7 +104,7 @@ class Seeds(object):
fatal=True)
os.umask(int(self.config.get_key("permissions", "files"),0))
try:
- with codecs.open(self.filename, 'w', encoding='utf_8') as seedfile:
+ with open(self.filename, 'w') as seedfile:
seedfile.write(self._seeds2json(self.seeds))
seedfile.write("\n")
except IOError as err:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-03-08 15:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-03-08 15:09 UTC (permalink / raw
To: gentoo-commits
commit: 5a12b768465c9e68f2c46354d8f77316c40f9ef6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 7 18:04:52 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Mar 7 18:04:52 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=5a12b768
gkeys/base.py: Fix expanduser error reported by K_F
gkeys/gkeys/base.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 08bfe5f..fba1976 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -267,8 +267,8 @@ class CliBase(object):
self.config.read_config(configs)
# check for permissions and adjust configs accordngly
- if not self.config['homedir']:
- self.config['homedir'] = os.path.expanduser('~')
+ if not self.config.defaults['homedir']:
+ self.config.defaults['homedir'] = os.path.expanduser('~')
if not os.access(self.config['logdir'], os.W_OK):
self.config['logdir'] = ensure_dirs(
os.path.join(self.config['user-dir'], 'logs'))
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-03-17 19:51 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-03-17 19:51 UTC (permalink / raw
To: gentoo-commits
commit: f12dcd69d558b3b5f58ecd21ee20e347a06a3405
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Mar 17 19:50:53 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Mar 17 19:50:53 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=f12dcd69
gkeys/checks.py: Fix the expiry warning summary not detecting any
Add logger messages for expiry errors/warnings
gkeys/gkeys/actions.py | 2 +-
gkeys/gkeys/checks.py | 9 ++++++---
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index b2b8cf3..cfe69ee 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -459,7 +459,7 @@ class Actions(object):
if not key.bits:
failed['bits'].append(_unicode("%s <%s>: %s")
% (gkey.name, gkey.nick, key.fingerprint))
- if "Warning" in key.expire_reason:
+ if "warning" in key.expire_reason.lower():
failed['warn'].append(_unicode("%s <%s>: %s ")
% (gkey.name, gkey.nick, key.fingerprint))
if True in pub_pass['signs']:
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index bddad5f..a3af3ab 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -369,12 +369,15 @@ class KeyChecks(object):
stats[SPEC_INDEX['expire']] = True
elif days > delta_t and not ('i' in data.validity or 'r' in data.validity):
stats[SPEC_INDEX['expire_reason']] = '<== Exceeds specification'
+ self.logger.error("ERROR in key %s : gpg key expire date: %s EXCEEDS specification"
+ % (data.long_keyid, data.expiredate))
else:
- self.logger.debug("ERROR in key %s : invalid gpg key expire date: %s"
+ self.logger.error("ERROR in key %s : invalid gpg key expire date: %s"
% (data.long_keyid, data.expiredate))
if 0 < days < 30 and not ('i' in data.validity or 'r' in data.validity):
stats[SPEC_INDEX['expire_reason']] = '<== WARNING < 30 days'
-
+ self.logger.warn("WARNING in key %s : gpg key expire date: %s WARNING < 30 days"
+ % (data.long_keyid, data.expiredate))
return stats
@@ -395,7 +398,7 @@ class KeyChecks(object):
stats[SPEC_INDEX['encrypt_capable']] = True
elif cap not in CAPABILITY_MAP:
stats[SPEC_INDEX['caps']] = False
- self.logger.debug("ERROR in key %s : unknown gpg key capability: %s"
+ self.logger.error("ERROR in key %s : unknown gpg key capability: %s"
% (data.long_keyid, cap))
stats[SPEC_INDEX['long_caps']] = ', '.join(kcaps)
return stats
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-03-18 15:32 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-03-18 15:32 UTC (permalink / raw
To: gentoo-commits
commit: 1f8fc87469153591e4cefeb93bdff0ba995c5190
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 18 15:32:17 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Mar 18 15:32:17 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=1f8fc874
gkeys/checks.py: Downgrade the logging to warn from error
logging.error also prints to the screen which we don't want in this case.
The logging.warn is fine for these errors since they are already shown in a formatted output.
gkeys/gkeys/checks.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index a3af3ab..7e40720 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -369,10 +369,10 @@ class KeyChecks(object):
stats[SPEC_INDEX['expire']] = True
elif days > delta_t and not ('i' in data.validity or 'r' in data.validity):
stats[SPEC_INDEX['expire_reason']] = '<== Exceeds specification'
- self.logger.error("ERROR in key %s : gpg key expire date: %s EXCEEDS specification"
+ self.logger.warn("ERROR in key %s : gpg key expire date: %s EXCEEDS specification"
% (data.long_keyid, data.expiredate))
else:
- self.logger.error("ERROR in key %s : invalid gpg key expire date: %s"
+ self.logger.warn("ERROR in key %s : invalid gpg key expire date: %s"
% (data.long_keyid, data.expiredate))
if 0 < days < 30 and not ('i' in data.validity or 'r' in data.validity):
stats[SPEC_INDEX['expire_reason']] = '<== WARNING < 30 days'
@@ -398,7 +398,7 @@ class KeyChecks(object):
stats[SPEC_INDEX['encrypt_capable']] = True
elif cap not in CAPABILITY_MAP:
stats[SPEC_INDEX['caps']] = False
- self.logger.error("ERROR in key %s : unknown gpg key capability: %s"
+ self.logger.warn("ERROR in key %s : unknown gpg key capability: %s"
% (data.long_keyid, cap))
stats[SPEC_INDEX['long_caps']] = ', '.join(kcaps)
return stats
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 46bbcbc3cc1b11577eceb9291fc469f4aad8469f
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 18 20:44:58 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=46bbcbc3
gkeys/lib.py: Fix logger message to show the correct function
gkeys/gkeys/lib.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 3eb267c..a740dd9 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -234,7 +234,7 @@ class GkeysGPG(GPG):
lresults.append(self.list_keys(gkey.keydir, fpr, colons=True))
self.seedfile.update(gkey.update(lresults))
if save and not self.seedfile.save():
- self.logger.error("GkeysGPG.refresh_key(); failed to save seed: " + gkey.nick)
+ self.logger.error("GkeysGPG.update_gkey(); failed to save seed: " + gkey.nick)
return False
return True
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 8afad8720eea5e69c9247fe207c9cd8e20a2a0e6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Jan 9 21:04:04 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Apr 20 17:49:44 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=8afad872
gkeys: remove-key refactoring
Update the remove-key action to use the proper installed db.
Populate the del_key, del_keydir functions in lib.py
gkeys/gkeys/actions.py | 27 +++++++++++++--------------
gkeys/gkeys/lib.py | 35 +++++++++++++++++++++++++++++------
2 files changed, 42 insertions(+), 20 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index cfe69ee..22d660f 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -25,7 +25,6 @@ else:
from collections import defaultdict
from json import load
-from shutil import rmtree
from gkeys.lib import GkeysGPG
from gkeys.seedhandler import SeedHandler
@@ -551,7 +550,7 @@ class Actions(object):
keyresults = seeds.list(**kwargs)
self.output('', '\n Removing keys...')
success = True
- print(keyresults)
+ #print(keyresults)
for gkey in sorted(keyresults):
if kwargs['nick'] != '*' and kwargs['nick'] not in gkey.nick:
messages.append(_unicode("%s does not seem to be a valid key.")
@@ -569,22 +568,22 @@ class Actions(object):
if ans in ["no", "n"]:
messages.append("Key removal aborted... Nothing to be done.")
else:
- ## This next code is total crap now
- ## re-write it from scratch
- ## there could be multiple keys installed in one keyring
- ## this code just rm's everything.
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- rm_candidate = os.path.join(catdir, gkey.nick)
self.logger.debug(_unicode("ACTIONS: removekey; catdir = %s")
% catdir)
- if args.category:
- try:
- rmtree(rm_candidate)
- messages.append(_unicode("Done removing %s key.") % kwargs['nick'])
- except OSError:
- messages.append(_unicode("%s directory does not exist.") % rm_candidate)
- success = False
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
+ if len(gkey.keys) == 1 or args.keys == gkey.keys:
+ success, msgs = self.gpg.del_keydir(gkey)
+ messages.extend(msgs)
+ elif args.keys:
+ for key in args.keys:
+ success, msgs = self.gpg.del_key(gkey, key)
+ msgs.extend(msgs)
+ else:
+ for key in gkey.keys:
+ success, msgs = self.gpg.del_key(gkey, key)
+ msgs.extend(msgs)
return (success, messages)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 9687c24..3eb267c 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -19,9 +19,10 @@ with gentoo-keys specific convienience functions.
# for py 2.6 compatibility
from __future__ import print_function
-
+import os
from os.path import abspath, pardir
from os.path import join as pjoin
+from shutil import rmtree
from pyGPG.gpg import GPG
from gkeys.checks import KeyChecks
@@ -165,18 +166,40 @@ class GkeysGPG(GPG):
return results
- def del_key(self, gkey, keydir):
- '''Delete the specified key in the specified keydir
+ def del_key(self, gkey, key):
+ '''Delete the specified key
@param gkey: GKEY namedtuple with (name, nick, keydir, fingerprint)
+ @param key: Fingerprint of the primary key to delete
'''
- return []
+ self.set_keydir(gkey.keydir, 'del-key', reset=True)
+ self.set_keyring('pubring.gpg', 'del-key', reset=False)
+ self.set_keyseedfile(refresh=True)
+ self.logger.debug("LIB: del_key, gkey: %s" % str(gkey))
+ self.logger.debug("LIB: del_key, key: %s" % key)
+ self.logger.debug("** Calling runGPG with: 'gpg %s --delete-keys' for: %s"
+ % (' '.join(self.config.get_key('tasks', 'delete-keys')), str(gkey)))
+ result = self.runGPG(task='delete-keys', inputfile=key)
+ self.logger.info('GPG return code: ' + str(result.returncode))
+ self.update_gkey(gkey, save=True)
+ return (False, [])
- def del_keydir(self, keydir):
+ def del_keydir(self, gkey):
'''Delete the specified keydir
+
+ @param gkey: GKEY namedtuple with (name, nick, keydir, fingerprint)
'''
- return []
+ rm_candidate = os.path.join(self.basedir, gkey.keydir)
+ success = False
+ messages = []
+ try:
+ rmtree(rm_candidate)
+ messages.append("Done removing %s key." % gkey.nick)
+ success = True
+ except OSError:
+ messages.append("%s directory does not exist or is a symbolic link." % rm_candidate)
+ return (success, messages)
def refresh_key(self, gkey):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 2573d49b85fabcb871d067c678888f92fe75cfd4
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 18 20:42:30 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=2573d49b
gkeys/seedhandler.py: Add space removal for fingerprints in build_gkeydict()
gkeys/gkeys/seedhandler.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index adf9507..a905051 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -53,6 +53,8 @@ class SeedHandler(object):
value = getattr(args, attr)
if attr == 'name' and isinstance(value, list):
value = " ".join(value)
+ if attr == 'fingerprint' and value:
+ value = [x.replace(" ", "") for x in value]
if value is not None:
keyinfo[attr] = decoder(value)
except AttributeError:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: c05d6a6e622d14a6dc9d3b72b34e7d040efe7a37
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 18 20:49:18 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=c05d6a6e
gkeys: Fix list-key action to list all keys found in the keydir unless -f is passed in
This now ignores the keys listed in the db's seed file and lists all keys seen by gpg.
Except when -f, --fingerprint is an argument, then it lists only that key.
gkeys/gkeys/actions.py | 5 ++++-
gkeys/gkeys/lib.py | 9 +++++----
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 22d660f..6975c38 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -237,7 +237,10 @@ class Actions(object):
kwargs = handler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
for key in sorted(keyresults):
- result = self.gpg.list_keys(key.keydir, key.fingerprint)
+ if args.fingerprint:
+ result = self.gpg.list_keys(key.keydir, kwargs['fingerprint'])
+ else:
+ result = self.gpg.list_keys(key.keydir)
ls, lr = self._list_it(key, result.output)
success.append(ls)
results[key.name] = lr
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index a740dd9..bce4e55 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -254,16 +254,17 @@ class GkeysGPG(GPG):
if fingerprint:
task = 'list-key'
target = fingerprint
+ self.set_keydir(keydir, task, fingerprint=True)
else:
task = 'list-keys'
- target = keydir
- self.set_keydir(keydir, task, fingerprint=True)
- self.config.options['tasks'][task].extend(['--keyid-format', 'long', '--fingerprint', '--fingerprint'])
+ target = ''
+ self.set_keydir(keydir, task, fingerprint=False)
+ self.config.options['tasks'][task].extend(['--keyid-format', 'long', '--fingerprint'])
if colons:
task_value = ['--with-colons']
self.config.options['tasks'][task].extend(task_value)
self.logger.debug("** Calling runGPG with Running 'gpg %s --%s %s'"
- % (' '.join(self.config['tasks'][task]), task, keydir)
+ % (' '.join(self.config['tasks'][task]), task, target)
)
result = self.runGPG(task=task, inputfile=target)
self.logger.info('GPG return code: ' + str(result.returncode))
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 695631f23ad2bddff1f3efda698a90a23d38db1c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 20 17:46:59 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:32:17 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=695631f2
gkeys/seedhandler.py: Fix build_gkeydict()
gkeys/gkeys/seedhandler.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 86cab25..18725b9 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -58,10 +58,13 @@ class SeedHandler(object):
value = getattr(args, attr)
if attr == 'name' and isinstance(value, list):
value = " ".join(value)
- if attr == 'fingerprint' and value:
+ if attr in ['fingerprint', 'keys'] and value:
value = [x.replace(" ", "") for x in value]
- if value is not None:
+ keyinfo[attr] = value
+ if value is not None and attr in ['keydir', 'name', 'nick']:
keyinfo[attr] = decoder(value)
+ else:
+ keyinfo[attr] = value
except AttributeError:
pass
return keyinfo
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: d1abd2a51a3712a5c9f8c55a8d1baa3bdae4907f
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 21 19:06:01 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=d1abd2a5
gkeys/config.py: Remove no longer used MAPSEEDS constant
gkeys/gkeys/config.py | 3 ---
1 file changed, 3 deletions(-)
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 1cac0b0..6abec96 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -30,9 +30,6 @@ if "GENTOO_PORTAGE_EPREFIX" in EPREFIX:
EPREFIX = ''
-MAPSEEDS = { 'dev' : 'gentoodevs.seeds', 'rel': 'gentoo.seeds' }
-
-
class GKeysConfig(GPGConfig):
""" Configuration superclass which holds our gentoo-keys
config settings for pygpg """
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 35ecad248a81436dcad7e6b9928ed3eeb098c9af
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 20 17:44:59 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:29:06 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=35ecad24
gkeys/seed.py: Replace codecs usage with unicode()
Add a noop for an empty kwargs[key].
jgjhgj
gkeys/gkeys/seed.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 985f6a1..01ca5a5 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -36,7 +36,7 @@ if sys.version_info[0] >= 3:
return text
else:
def decoder(text, enc='utf_8'):
- return codecs.decode(text, enc)
+ return unicode(text)
class Seeds(object):
@@ -155,6 +155,8 @@ class Seeds(object):
keys = kwargs
result = self.seeds
for key in keys:
+ if not kwargs[key]:
+ continue
if key in ['fingerprint', 'keys', 'keyid']:
kwargs[key] = [x.replace(' ', '').upper() for x in kwargs[key]]
if key in ['fingerprint', 'keys', 'uid']:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: ffe53b207532d165f3e6019e10ee27f23e0b3e84
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 18 23:18:13 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=ffe53b20
gkeys: Remove gpgsearch option from list-key action
The default action for list-key is to now list all keys found in the keydir.
Regardless if they are in the db's seed file for that keydir.
gkeys/gkeys/action_map.py | 2 +-
gkeys/gkeys/actions.py | 48 ++++++++++-------------------------------------
2 files changed, 11 insertions(+), 39 deletions(-)
diff --git a/gkeys/gkeys/action_map.py b/gkeys/gkeys/action_map.py
index d547ab3..3b1b9d0 100644
--- a/gkeys/gkeys/action_map.py
+++ b/gkeys/gkeys/action_map.py
@@ -157,7 +157,7 @@ Found:
('list-key', {
'func': 'listkey',
'options': ['category', 'nick', 'name', 'fingerprint', 'keyid', 'keys',
- 'keydir', 'keyring', 'gpgsearch'],
+ 'keydir', 'keyring'],
'desc': '''Pretty-print the selected gpg key''',
'long_desc': '''Pretty-print the selected gpg key''',
'example': '''gkeys list-key -C gentoo -n gkeys
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index efab4fa..edbea0d 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -206,45 +206,17 @@ class Actions(object):
results = {}
success = []
messages = []
- if args.gpgsearch:
- keyresults = seeds.seeds
- # pick any key
- key = keyresults[sorted(keyresults)[0]]
- result = self.gpg.list_keys(key.keydir, args.gpgsearch)
- # now split the results and reverse lookup the gkey
- lines = result.output.split('\n')
- while lines:
- # determine the end of the first key listing
- index = lines.index('')
- keyinfo = lines[:index]
- # trim off the first keys info
- lines = lines[index + 1:]
- # make sure it is a key listing
- if len(keyinfo) < 2:
- break
- # get the fingerprint from the line
- fpr = keyinfo[1].split('= ')[1]
- # search for the matching gkey
- kwargs = {'keydir': args.keydir, 'fingerprint': [fpr]}
- keyresults = seeds.list(**kwargs)
- # list the results
- for key in sorted(keyresults):
- ls, lr = self._list_it(key, '\n'.join(keyinfo))
- success.append(ls)
- results[key.name] = lr
+ kwargs = handler.build_gkeydict(args)
+ keyresults = seeds.list(**kwargs)
+ for key in sorted(keyresults):
+ if args.fingerprint:
+ result = self.gpg.list_keys(key.keydir, kwargs['fingerprint'])
+ else:
+ result = self.gpg.list_keys(key.keydir)
+ ls, lr = self._list_it(key, result.output)
+ success.append(ls)
+ results[key.name] = lr
messages = ["Done."]
- else:
- kwargs = handler.build_gkeydict(args)
- keyresults = seeds.list(**kwargs)
- for key in sorted(keyresults):
- if args.fingerprint:
- result = self.gpg.list_keys(key.keydir, kwargs['fingerprint'])
- else:
- result = self.gpg.list_keys(key.keydir)
- ls, lr = self._list_it(key, result.output)
- success.append(ls)
- results[key.name] = lr
- messages = ["Done."]
if not messages:
messages = ['No results found meeting criteria', "Did you specify -n foo or -n '*'"]
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 328359a9c6d7fb5192b2e4fc3e0a458563cfcdfd
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 21 19:07:06 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=328359a9
gkeys/config.py: Correctly set default keyring dir name to keyrings
gkeys/gkeys/config.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 6abec96..7cd856a 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -64,7 +64,7 @@ class GKeysConfig(GPGConfig):
def _add_gkey_defaults(self):
self.defaults['gkeysdir'] = path([self.root, EPREFIX, '/var/lib/gentoo/gkeys'])
- self.defaults['keyring'] = '%(gkeysdir)s/keyring'
+ 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
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 666b8a6c00251b0034d5e57ee338a44aa6b0a997
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat May 30 23:13:46 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sun May 31 04:46:31 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=666b8a6c
gkeys/actions.py: Fix an UnboundLocalError
File "/usr/lib64/python2.7/site-packages/gkeys/actions.py", line 798, in _verify
results = self.gpg.verify_file(key, sig_path, filepath)
UnboundLocalError: local variable 'sig_path' referenced before assignment
Reported by: Johannes Huber <johu <AT> gentoo.org>
gkeys/gkeys/actions.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index d467500..24c323e 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -734,6 +734,7 @@ class Actions(object):
"not supplied, using current directory ./%s") % filepath)
if args.timestamp:
timestamp_path = filepath + ".timestamp"
+ sig_path = None
if isurl:
from sslfetch.connections import Connector
connector_output = {
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 9f19528a9d61517cb262081b2cf28a3c2d5ee95b
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Apr 20 17:48:15 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sun May 31 04:45:22 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=9f19528a
gkeys/actions.py: Seed handling fixes
Update for newer listseed() data returned.
gkeys/gkeys/actions.py | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 80c3c72..d467500 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -98,7 +98,8 @@ class Actions(object):
def addseed(self, args):
'''Add or replace a key in the selected seed file'''
handler = SeedHandler(self.logger, self.config)
- success, gkeys = self.listseed(args)[1]
+ success, data = self.listseed(args)
+ gkeys = data[1]
if not args.nick or not args.name or not args.keys or not args.keydir:
return (False, ["Provide a nickname, a name and a public key fingerprint (-K, --keys)."])
if not args.fingerprint:
@@ -126,7 +127,8 @@ class Actions(object):
def removeseed(self, args):
'''Remove a seed from the selected seed file'''
- success, gkeys = self.listseed(args)[1]
+ success, data = self.listseed(args)
+ gkeys = data[1]
if not gkeys:
return (False, ["Failed to remove seed: No gkeys returned from listseed()",
[]])
@@ -249,7 +251,8 @@ class Actions(object):
def installkey(self, args):
'''Install a key from the seed(s)'''
self.logger.debug("ACTIONS: installkey; args: %s" % str(args))
- success, gkeys = self.listseed(args)[1]
+ success, data = self.listseed(args)
+ gkeys = data[1]
if gkeys:
if gkeys and not args.nick == '*' and self.output:
self.output(['', gkeys], "\n Found GKEY seeds:")
@@ -593,7 +596,8 @@ class Actions(object):
self.logger.debug(_unicode("ACTIONS: importkey; catdir = %s")
% catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
- success, gkeys = self.listseed(args)[1]
+ success, data = self.listseed(args)
+ gkeys = data[1]
results = {}
failed = []
print("Importing specified keys to keyring.")
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 5b11872bd684d0bac674b65832c737280d001e11
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 22 15:54:59 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:51 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=5b11872b
gkeys/gkey.py: Fix typo in @license
gkeys/gkeys/gkey.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/gkey.py b/gkeys/gkeys/gkey.py
index a305804..ab62f5b 100644
--- a/gkeys/gkeys/gkey.py
+++ b/gkeys/gkeys/gkey.py
@@ -7,7 +7,7 @@
Holds GKEY class and related values
@copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
- @license: GNU GNU GPL2, see COPYING for details.
+ @license: GNU GPL2, see COPYING for details.
"""
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 25e13adf18f29529287868abe32ee522b898c66e
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 21 19:10:36 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=25e13adf
gkeys/actions.py: Remove unused keyring_dir assignment
gkeys/gkeys/actions.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index edbea0d..8e078f0 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -572,7 +572,6 @@ class Actions(object):
if args.category:
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- keyring_dir = self.config.get_key("keyring")
self.logger.debug(_unicode("ACTIONS: importkey; catdir = %s")
% catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 75cd2f50c181c78863e71ebbef17c70da90bfe6c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 23 15:37:24 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:51 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=75cd2f50
gkeys: Use snakeoil's demandload where appropriate
gkeys/gkeys/actions.py | 10 +++++++---
gkeys/gkeys/seed.py | 10 +++++++---
gkeys/gkeys/seedhandler.py | 11 ++++++++---
gkeys/gkeys/utils.py | 13 +++++++++----
4 files changed, 31 insertions(+), 13 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 7b834a4..80c3c72 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -24,13 +24,17 @@ else:
from collections import defaultdict
-from json import load
-from gkeys.lib import GkeysGPG
-from gkeys.seedhandler import SeedHandler
+from snakeoil.demandload import demandload
+
from gkeys.gkey import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
+demandload(
+ "json:load",
+ "gkeys.lib:GkeysGPG",
+ "gkeys.seedhandler:SeedHandler",
+)
class Actions(object):
'''Primary API actions'''
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index ca5e2d2..985f6a1 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -21,11 +21,15 @@ import json
import os
import sys
-from gkeys.exception import UpdateDbError
-from gkeys.log import logger
+from snakeoil.demandload import demandload
+
from gkeys.gkey import GKEY
-from gkeys.fileops import ensure_dirs
+demandload(
+ "gkeys.log:logger",
+ "gkeys.exception:UpdateDbError",
+ "gkeys.fileops:ensure_dirs",
+)
if sys.version_info[0] >= 3:
def decoder(text, enc='utf_8'):
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 8b787d1..86cab25 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -12,12 +12,17 @@
import os
import re
-from json import load
-from gkeys.exception import UpdateDbError
+from snakeoil.demandload import demandload
+
from gkeys.gkey import GKEY
from gkeys.seed import Seeds, decoder
-from gkeys.fileops import ensure_dirs
+
+demandload(
+ "json:load",
+ "gkeys.exception:UpdateDbError",
+ "gkeys.fileops:ensure_dirs",
+)
class SeedHandler(object):
diff --git a/gkeys/gkeys/utils.py b/gkeys/gkeys/utils.py
index 92abc50..64f11aa 100644
--- a/gkeys/gkeys/utils.py
+++ b/gkeys/gkeys/utils.py
@@ -24,10 +24,15 @@ Utility functions'''
import types
import re
-import os
-import sys
-import locale
-import codecs
+
+from snakeoil.demandload import demandload
+
+demandload(
+ "os",
+ "sys",
+ "locale",
+ "codecs",
+)
try:
StringTypes = types.StringTypes
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: c3b217c2c8e0402a71e75407e7d37f9639f045f2
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 21 19:09:03 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=c3b217c2
gkeys/seedhandler.py: Make key_search accept args as a dictionary or argsparse object
gkeys/gkeys/seedhandler.py | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index a905051..8b787d1 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -216,17 +216,27 @@ class SeedHandler(object):
def key_search(self, args, search_args):
'''Performs a search for all listed args in the seeds'''
results = []
- self.logger.debug("_field_search search_args: %s" % str(search_args))
+ self.logger.debug("SeedHandler.key_search() search_args: %s" % str(search_args))
found = {}
search_args.sort()
+ if isinstance(args, dict):
+ exact = args.get('exact', False)
+ _all = args.get('all', False)
+ else:
+ exact = getattr(args, 'exact', False)
+ _all = getattr(args, 'all', False)
for arg in search_args:
- seeds = self.seeds.field_search(arg, getattr(args, arg), args.exact)
+ if isinstance(args, dict):
+ value = args.get(arg, '')
+ else:
+ value = getattr(args, arg)
+ seeds = self.seeds.field_search(arg, value, exact)
for seed in seeds:
if seed.nick in found:
found[seed.nick]['args'].append(arg)
else:
found[seed.nick] = {'args': [arg], 'seed': seed}
- if args.all:
+ if _all:
for possible in sorted(found):
if search_args == found[possible]['args']:
results.append(found[possible]['seed'])
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 8c6da8152ca04b3a1d706abc2bbd57b1cd982e82
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 21 19:12:22 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:51 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=8c6da815
gkeys/actions.py: Refactor installkey to refresh keys that are already installed and unchanged
gkeys/gkeys/actions.py | 78 +++++++++++++++++++++++++++++---------------------
1 file changed, 46 insertions(+), 32 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 8e078f0..7b834a4 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -245,11 +245,11 @@ class Actions(object):
def installkey(self, args):
'''Install a key from the seed(s)'''
self.logger.debug("ACTIONS: installkey; args: %s" % str(args))
- success, gkey = self.listseed(args)[1]
- if gkey:
- if gkey and not args.nick == '*' and self.output:
- self.output(['', gkey], "\n Found GKEY seeds:")
- elif gkey and self.output:
+ success, gkeys = self.listseed(args)[1]
+ if gkeys:
+ if gkeys and not args.nick == '*' and self.output:
+ self.output(['', gkeys], "\n Found GKEY seeds:")
+ elif gkeys and self.output:
self.output(['all'], "\n Installing seeds:")
else:
self.logger.info("ACTIONS: installkey; "
@@ -269,33 +269,47 @@ class Actions(object):
self.logger.debug(_unicode("ACTIONS: installkey; catdir = %s")
% catdir)
self.gpg = GkeysGPG(self.config, catdir, self.logger)
- results = {}
- failed = []
- for key in gkey:
- self.logger.debug("ACTIONS: installkey; adding key:")
- self.logger.debug("ACTIONS: " + str(key))
- results[key.name] = self.gpg.add_key(key)
- for result in results[key.name]:
- self.logger.debug("ACTIONS: installkey; result.failed = " +
- str(result.failed))
- if self.config.options['print_results']:
- msg = _unicode("key desired: %(name)s, key added: %(key)s, succeeded:" +\
- " %(success)s, fingerprint: %(fpr)s")
- for result in results[key.name]:
- umsg = msg % ({'name': key.name, 'key': result.username,
- 'success': str(not result.failed),
- 'fpr': result.fingerprint})
- try:
- print(umsg)
- except UnicodeDecodeError:
- print(_unicode("UnicodeDecodeError printing results for:"), key.name)
- self.logger.debug(_unicode("installkey(); UnicodeDecodeError for:") + key.name)
- self.logger.debug(_unicode(" result.username...:") + result.username)
- self.logger.debug(_unicode(" result.failed.....:") + result.failed)
- self.logger.debug(_unicode(" result.fingerprint:") + result.fingerprint)
- self.logger.debug("stderr_out: " + str(result.stderr_out))
- if result.failed:
- failed.append(key)
+ for gkey in gkeys:
+ self.gpg.set_keydir(gkey.keydir, "recv-keys")
+ self.gpg.set_keyseedfile()
+ seeds = self.gpg.seedfile.seeds
+ #print(seeds)
+ if seeds:
+ self.logger.debug("ACTIONS: installkey; found installed seeds:"
+ "\n %s" % seeds)
+ results = {}
+ failed = []
+ if gkey.nick in seeds and gkey.keys == seeds[gkey.nick].keys:
+ self.logger.debug("ACTIONS: installkey; refreshing key:")
+ if self.config.options['print_results']:
+ print(_unicode("Refreshing already installed key: %s, %s"
+ %(gkey.nick, gkey.keys)))
+ self.gpg.refresh_key(gkey)
+ else:
+ self.logger.debug("ACTIONS: installkey; adding key:")
+ self.logger.debug("ACTIONS: " + str(gkey))
+ results[gkey.name] = self.gpg.add_key(gkey)
+ for result in results[gkey.name]:
+ self.logger.debug("ACTIONS: installkey; result.failed = " +
+ str(result.failed))
+ if self.config.options['print_results']:
+ msg = _unicode("key desired: %(name)s, key added: %(key)s, succeeded:" +\
+ " %(success)s, fingerprint: %(fpr)s")
+ for result in results[gkey.name]:
+ umsg = msg % ({'name': gkey.name, 'key': result.username,
+ 'success': str(not result.failed),
+ 'fpr': result.fingerprint})
+ try:
+ print(umsg)
+ except UnicodeDecodeError:
+ print(_unicode("UnicodeDecodeError printing results for:"), gkey.name)
+ self.logger.debug(_unicode("installkey(); UnicodeDecodeError for:") + gkey.name)
+ self.logger.debug(_unicode(" result.username...:") + result.username)
+ self.logger.debug(_unicode(" result.failed.....:") + result.failed)
+ self.logger.debug(_unicode(" result.fingerprint:") + result.fingerprint)
+ self.logger.debug("stderr_out: " + str(result.stderr_out))
+ if result.failed:
+ failed.append(gkey)
if failed and self.output:
self.output([failed], "\n Failed to install:")
if failed:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-05-31 5:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-05-31 5:03 UTC (permalink / raw
To: gentoo-commits
commit: 37c128e77c7d9e3220561b5ca7bb5ff9bae51f32
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 18 20:50:57 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat May 30 23:18:50 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=37c128e7
gkeys/actionspy: Fix grammar in the confirmation input message
gkeys/gkeys/actions.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 6975c38..efab4fa 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -542,7 +542,7 @@ class Actions(object):
if args.nick == '*':
self.output([''],_unicode('Remove All keys in category: %s')
% _unicode(args.category))
- ans = py_input ("Do you really want to remove ALL of keys?[y/n]: ")
+ ans = py_input ("Do you really want to remove ALL of the keys?[y/n]: ")
while ans not in ["yes", "y", "no", "n"]:
ans = py_input ("Do you really want to remove ALL keys?[y/n]: ")
if ans in ["no", "n"]:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-06-01 1:56 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-06-01 1:56 UTC (permalink / raw
To: gentoo-commits
commit: b0402fd5d51b95ca32705936444ae082f4b3a5c4
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 1 01:56:24 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jun 1 01:56:24 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=b0402fd5
gkeys/actions.py: verify url was not smart about being passed a sig url and would fail to verify
Move EXTENSIONS out as a constant instead of being defined twice.
gkeys/gkeys/actions.py | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 24c323e..7275739 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -36,6 +36,10 @@ demandload(
"gkeys.seedhandler:SeedHandler",
)
+
+EXTENSIONS = ['.sig', '.asc', '.gpg','.gpgsig']
+
+
class Actions(object):
'''Primary API actions'''
@@ -754,9 +758,8 @@ class Actions(object):
url, filepath, timestamp_path)
if not success:
messages.append(_unicode("File %s cannot be retrieved.") % filepath)
- else:
+ elif '.' + url.rsplit('.', 1)[1] not in EXTENSIONS:
if not signature:
- EXTENSIONS = ['.sig', '.asc', 'gpg','.gpgsig']
success_fetch = False
for ext in EXTENSIONS:
sig_path = filepath + ext
@@ -776,7 +779,6 @@ class Actions(object):
_unicode("ACTIONS: verify; local file %s") % filepath)
success = os.path.isfile(filepath)
if not signature:
- EXTENSIONS = ['.sig', '.asc', 'gpg','.gpgsig']
success_fetch = False
for ext in EXTENSIONS:
sig_path = filepath + ext
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-06-22 13:41 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-06-22 13:41 UTC (permalink / raw
To: gentoo-commits
commit: d996f4c306e6ca366b288f8ba329f77b54768d51
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jun 22 13:41:29 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Jun 22 13:41:29 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=d996f4c3
gkeys/actions.py: Add filename extension check exclusion
gkeys/gkeys/actions.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 7275739..6610480 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -778,7 +778,8 @@ class Actions(object):
self.logger.debug(
_unicode("ACTIONS: verify; local file %s") % filepath)
success = os.path.isfile(filepath)
- if not signature:
+ if (not signature
+ and '.' + filepath.rsplit('.', 1)[1] not in EXTENSIONS):
success_fetch = False
for ext in EXTENSIONS:
sig_path = filepath + ext
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-07-25 16:45 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-07-25 16:45 UTC (permalink / raw
To: gentoo-commits
commit: 734aed55964979017863639edfc9ca9036a629c0
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 23 15:40:21 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 25 16:43:13 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=734aed55
gkeys/base.py: Add an alternate args class for compatibility use for Action as an API
Rough draft, so it can be used for the args arguments in Actions functions.
An alternate to having an argsparser innstance.
gkeys/gkeys/base.py | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index fba1976..b422caf 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -26,6 +26,33 @@ if sys.version_info[0] >= 3:
unicode = str
+class Args(object):
+ '''Basic argsparser replacement for using gkeys Actions via an API
+
+ Holds the full spectrum of possible options supported.
+ Not all options used by all actions.'''
+
+
+ def __init__(self):
+ self.status = False
+ self.all = False
+ self.category = None
+ self.cleankey = False
+ self.destination = None
+ self.exact = False
+ self.filename = None
+ self.fingerprint = None
+ self.keyid = None
+ self.keyring = None
+ self.keys = None
+ self.nick = None
+ self.name = None
+ self.keydir = None
+ self.seedfile = None
+ self.signature = None
+ self.uid = None
+
+
class CliBase(object):
'''Common cli and argsparse options class'''
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-07-25 16:45 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-07-25 16:45 UTC (permalink / raw
To: gentoo-commits
commit: 7c2b40ebb75a5b7d86fa8f2657e673ac8e0285b5
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 18 20:49:54 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 25 16:43:05 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=7c2b40eb
gkeys: Re-enable remove-key action
gkeys/gkeys/action_map.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/action_map.py b/gkeys/gkeys/action_map.py
index 3b1b9d0..d7eac63 100644
--- a/gkeys/gkeys/action_map.py
+++ b/gkeys/gkeys/action_map.py
@@ -18,7 +18,7 @@ Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed',
'list-seed', 'list-seedfiles', 'remove-seed']
Key_Actions = ['----keys-----', 'check-key', 'installed',
- 'install-key', 'list-key', 'refresh-key',
+ 'install-key', 'list-key', 'refresh-key', 'remove-key',
'search-key', 'spec-check']
General_Actions = ['---general---', 'list-cats', 'sign','verify']
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-07-25 16:45 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-07-25 16:45 UTC (permalink / raw
To: gentoo-commits
commit: afee05b427446ffdc12b3d138a1f1d712a757b2d
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Mar 21 19:56:49 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 25 16:43:21 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=afee05b4
gkeys/gkeysinterface.py: Initial commit of an api consumer interface
First use was for creating a gpg signed Manifest verification in portage.
Use snakeoil's demandload for imports
gkeys/gkeys/gkeysinterface.py | 120 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 120 insertions(+)
diff --git a/gkeys/gkeys/gkeysinterface.py b/gkeys/gkeys/gkeysinterface.py
new file mode 100644
index 0000000..8618268
--- /dev/null
+++ b/gkeys/gkeys/gkeysinterface.py
@@ -0,0 +1,120 @@
+'''Gkeys comsumer app API interface'''
+
+
+import os
+
+from snakeoil.demandload import demandload
+
+from gkeys.config import GKeysConfig
+from gkeys.gkey import GKEY
+
+demandload(
+ "gkeys:log",
+ "gkeys.lib:GkeysGPG",
+ "gkeys.seedhandler:SeedHandler",
+)
+
+
+class GkeysInterface(object):
+ '''High level class to hold and operate our gkeys GkeysGPG instance'''
+
+ def __init__(self, namespace, root='/', config=None,
+ logger=None, loglevel='DEBUG'):
+ '''GkeysInterface init
+
+ @param namespace: string of the logging namespace setting to use
+ @param root: string of the root path to initialize with, default is '/'
+ @param logger: optional logging instance, if undefiined, it
+ will use it's gkeys logger.
+ @param loglevel: string one of {'CRITICAL', 'DEBUG', 'ERROR', 'FATAL',
+ 'INFO', 'NOTSET', 'WARN', 'WARNING'}
+ '''
+ self.root = root
+ self.namespace = namespace
+ self.config = config or GKeysConfig(root=root, read_configfile=True)
+ self.logger = logger or log.logger or log.set_logger(
+ namespace=namespace,
+ logpath=self.config.get_key('logdir'),
+ level=loglevel)
+ self.gpg = None
+ self.handler = None
+
+
+ def keyid_search(self, keyid):
+ '''Searches for a keyid in the installed keyrings
+
+ @param keyid: string of the longkeyid to search for
+ @returns dictionary of {category: [GKEY, ...]}
+ '''
+ results = {}
+ for cat in list(self.config.get_key('seeds')):
+ self.handler.load_category(cat)
+ found = self.handler.key_search({'keyid': keyid,}, ['keyid'])
+ if found:
+ if cat in results:
+ results[cat].extend(found)
+ else:
+ results[cat] = found
+ return results
+
+
+ def verify_file(self, filepath, category='gentoo', nick='snapshot',
+ strict=False):
+ '''One stop action to verify a file.
+
+ If the first gpg verification fails, it will auto-search
+ for the correct key to validate against.
+ @param filepath: path of the file to verify
+ @param category: string, optional keyring category, default is 'gentoo'
+ @param nick: string, optional keyring nick, default is 'snapshot'
+ @param strict: boolean toggles off the auto-search if the category/nick
+ supplied fail
+ @return (bool, bool) (verification pass/fail, file had a signature)
+ '''
+ if not self.handler:
+ self.handler = SeedHandler(self.logger, self.config)
+ keys = self.handler.load_category(category)
+ if not keys:
+ self.logger.warn('No installed keys found, try installing keys.')
+ return False
+ key = self.handler.seeds.nick_search(nick)
+ if not key:
+ self.logger.debug("Failed to find.........: %s in category: %s"
+ % (category, nick))
+ category = self.config.get_key('verify-keyring')
+ nick = self.config.get_key('verify-nick')
+ self.logger.debug("Using config defaults..: %s %s"
+ % (category, nick))
+ return self.verify_file(filepath, category, nick)
+
+ keyrings = self.config.get_key('keyring')
+ catdir = os.path.join(keyrings, category)
+ self.logger.debug("ACTIONS: verify; catdir = %s" % catdir)
+ self.gpg = GkeysGPG(self.config, catdir, self.logger)
+ results = self.gpg.verify_file(key, None, filepath)
+
+ (valid, trust) = results.verified
+ if valid:
+ return True, True
+ self.logger.debug("Verification failed....: %s" % (filepath))
+ self.logger.debug("Key info...............: %s <%s>, %s"
+ % ( key.name, key.nick, key.keyid))
+ has_no_pubkey, s_keyid = results.no_pubkey
+ if has_no_pubkey and s_keyid and not strict:
+ self.logger.debug("Auto-searching for key.: 0x%s" % s_keyid)
+ elif not s_keyid or strict:
+ return False, has_no_pubkey
+ keys = self.keyid_search(s_keyid)
+ for cat in list(keys):
+ for key in keys[cat]:
+ if key and key.nick:
+ if isinstance(key, GKEY):
+ self.gpg.basedir = os.path.join(keyrings, cat)
+ results = self.gpg.verify_file(key, None, filepath)
+ (valid, trust) = results.verified
+ if valid:
+ return True, True
+
+ self.logger.debug("Failed to find gpg key.: 0x%s" % s_keyid)
+ return False, False
+
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: fd5717c14ae65678f268ac9802d597b237f43a3a
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 06:06:18 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Aug 8 15:51:39 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=fd5717c1
gkeys/base.py: Fix typo in action initialization
gkeys/gkeys/base.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 970ad7c..7253b7b 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -34,7 +34,7 @@ class Args(object):
def __init__(self):
- self.ation = None
+ self.action = None
self.all = False
self.category = None
self.cleankey = False
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 7f42bd9d867372b75b4e1657ebc6552e9ef062e1
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 25 20:55:18 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Aug 3 03:59:35 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=7f42bd9d
gkeys/actions.py: Fix a traceback when a filename does not have an extension
This will instead get the filename itself back.
gkeys/gkeys/actions.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 6610480..a4081c9 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -779,7 +779,7 @@ class Actions(object):
_unicode("ACTIONS: verify; local file %s") % filepath)
success = os.path.isfile(filepath)
if (not signature
- and '.' + filepath.rsplit('.', 1)[1] not in EXTENSIONS):
+ and '.' + filepath.rsplit('.', 1)[-1] not in EXTENSIONS):
success_fetch = False
for ext in EXTENSIONS:
sig_path = filepath + ext
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: c8aaf3c1f7137f10bba74308d4067b3584a59985
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 06:57:56 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Aug 3 04:00:55 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=c8aaf3c1
gkeys/lib.py: Whitespace cleanup, remove an unused variable assignment
gkeys/gkeys/lib.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 838ebf0..96a57f2 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -20,6 +20,7 @@ with gentoo-keys specific convienience functions.
from __future__ import print_function
import os
+
from os.path import abspath, pardir
from os.path import join as pjoin
from shutil import rmtree
@@ -29,6 +30,7 @@ from gkeys.checks import KeyChecks
from gkeys.fileops import ensure_dirs
from gkeys.seed import Seeds
+
class GkeysGPG(GPG):
'''Gentoo-keys primary gpg class'''
@@ -357,7 +359,6 @@ class GkeysGPG(GPG):
@param fingerprint: string of the fingerprint to sign with
@param filepath: string with the path of the file to sign
'''
- keyid = gkey.keyid[0]
self.set_keydir(gkey.keydir, mode, reset=True)
self.logger.debug("** Calling runGPG with Running 'gpg %s --%s %s %s'"
% (' '.join(self.config['tasks'][mode]), mode, fingerprint, filepath))
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 3fd82a0c97b291da10ca116fb80f24c0d3bcef90
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 05:59:39 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Aug 3 03:59:36 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=3fd82a0c
gkeys/lib.py: Split out _log_result()
Split out common code to be used for all veritf_* functions.
gkeys/gkeys/lib.py | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index bce4e55..838ebf0 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -338,14 +338,7 @@ class GkeysGPG(GPG):
self.logger.debug("** Calling runGPG with Running 'gpg %s --decrypt %s'"
% (' '.join(self.config['tasks']['decrypt']), filepath))
results = self.runGPG(task='decrypt', inputfile=filepath)
- keyid = gkey.keyid[0]
- if results.verified[0]:
- self.logger.info("GPG verification succeeded. Name: %s / Key: %s" % (gkey.name, keyid))
- self.logger.info("\tSignature result:" + str(results.verified))
- else:
- self.logger.debug("GPG verification failed. Name: %s / Key: %s" % (gkey.name, keyid))
- self.logger.debug("\t Signature result:"+ str(results.verified))
- self.logger.debug("LIB: verify; stderr_out:" + str(results.stderr_out))
+ self._log_result('verification', gkey, results)
return results
@@ -369,12 +362,20 @@ class GkeysGPG(GPG):
self.logger.debug("** Calling runGPG with Running 'gpg %s --%s %s %s'"
% (' '.join(self.config['tasks'][mode]), mode, fingerprint, filepath))
results = self.runGPG(task=mode, inputfile=filepath)
+ self._log_result('signing', gkey, results)
+ return results
+
+ def _log_result(self, mode, gkey, results):
if results.verified[0]:
- self.logger.info("GPG signing succeeded. Name: %s / Key: %s" % (str(gkey.name), str(keyid)))
+ self.logger.info("GPG %s succeeded. Name: %s / Key: %s"
+ % (mode, gkey.name, gkey.keyid[0]))
self.logger.info("\tSignature result:" + str(results.verified))
else:
- self.logger.debug("GPG signing failed. Name: %s / Key: %s" % (str(gkey.name), str(keyid)))
+ self.logger.debug("GPG %s failed. Name: %s / Key: %s"
+ % (mode, gkey.name, gkey.keyid[0]))
self.logger.debug("\t Signature result:"+ str(results.verified))
- self.logger.debug("LIB: sign; stderr_out:" + str(results.stderr_out))
- return results
+ self.logger.debug("LIB: verify; stderr_out:" +
+ str(results.stderr_out))
+
+
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 4aac84d4a8e95d1cac079036a61c2f61df4a7608
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 06:55:37 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Aug 8 15:51:39 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=4aac84d4
gkeys: Update copyrights, Add Pavlos to several files
gkeys/gkeys/actions.py | 3 ++-
gkeys/gkeys/base.py | 2 +-
gkeys/gkeys/checks.py | 3 ++-
gkeys/gkeys/cli.py | 2 +-
gkeys/gkeys/lib.py | 7 ++++---
gkeys/gkeys/seed.py | 8 +++++---
gkeys/gkeys/seedhandler.py | 3 ++-
7 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index a4081c9..e24d24d 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -6,7 +6,8 @@
Primary api interface module
- @copyright: 2012 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2014-2015 by Pavlos Ratis <dastergon@gentoo.org>
@license: GNU GPL2, see COPYING for details.
"""
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 7253b7b..4cee27d 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -7,7 +7,7 @@
Command line interface argsparse options module
and common functions
- @copyright: 2012 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
@license: GNU GPL2, see COPYING for details.
"""
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index 7e40720..7610d70 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -5,7 +5,8 @@
Gentoo-Keys - gkeygen/checks.py
Primary key checks module
- @copyright: 2014 by Brian Dolbec <dolsen@gentoo.org>
+ @copyright: 2014-2015 by Brian Dolbec <dolsen@gentoo.org>
+ @copyright: 2014-2015 by Pavlos Ratis <dastergon@gentoo.org>
@license: GNU GPL2, see COPYING for details
"""
diff --git a/gkeys/gkeys/cli.py b/gkeys/gkeys/cli.py
index 194afd2..532c03e 100644
--- a/gkeys/gkeys/cli.py
+++ b/gkeys/gkeys/cli.py
@@ -6,7 +6,7 @@
Command line interface module
- @copyright: 2012 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
@license: GNU GPL2, see COPYING for details.
"""
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 96a57f2..528464b 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -8,11 +8,12 @@ with gentoo-keys specific convienience functions.
Distributed under the terms of the GNU General Public License v2
Copyright:
- (c) 2011 Brian Dolbec
- Distributed under the terms of the GNU General Public License v2
+ @copyright: 2011-2015 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2014-2015 by Pavlos Ratis <dastergon@gentoo.org>
+ Distributed under the terms of the GNU General Public License v2
Author(s):
- Brian Dolbec <dolsen@gentoo.org>
+ Brian Dolbec <dolsen@gentoo.org>
'''
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index 01ca5a5..f1bf7db 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -8,11 +8,13 @@ with gentoo-keys specific convienience functions.
Distributed under the terms of the GNU General Public License v2
Copyright:
- (c) 2011 Brian Dolbec
- Distributed under the terms of the GNU General Public License v2
+ @copyright: 2011-2015 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2014-2015 by Pavlos Ratis <dastergon@gentoo.org>
+ Distributed under the terms of the GNU General Public License v2
Author(s):
- Brian Dolbec <dolsen@gentoo.org>
+ Brian Dolbec <dolsen@gentoo.org>
+ Pavlos Ratis <dastergon@gentoo.org>
'''
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 01abf78..3e51bb2 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -6,7 +6,8 @@
Seed handling interface module
- @copyright: 2012 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
+ @copyright: 2014-2015 by Pavlos Ratis <dastergon@gentoo.org>
@license: GNU GPL2, see COPYING for details.
"""
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 918a9e0e3375b394979dc13c95176f9e333a5c7a
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 06:03:23 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Aug 8 15:51:15 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=918a9e0e
gkeys/seedhandler.py: Add an addtional debug log message
Re-arrange the sorting of search_args for a better debug message.
gkeys/gkeys/seedhandler.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 18725b9..01abf78 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -223,10 +223,11 @@ class SeedHandler(object):
def key_search(self, args, search_args):
'''Performs a search for all listed args in the seeds'''
- results = []
+ search_args.sort()
self.logger.debug("SeedHandler.key_search() search_args: %s" % str(search_args))
+ self.logger.debug("SeedHandler.key_search() search_args values: %s" % str(args))
+ results = []
found = {}
- search_args.sort()
if isinstance(args, dict):
exact = args.get('exact', False)
_all = args.get('all', False)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 317de4981cc9208f5ff4595f048fb17f522283f6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 06:18:41 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Aug 8 15:51:40 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=317de498
gkeys: [1 of 2] Creation of a new ActionBase class
This class is to hold non-action functions/methods
Restructure external handlers.
Creation of @property decorated keyhandler, seedhandler, gpg functions to
initialize and return.the classwide instances of their code.
gkeys/gkeys/actionbase.py | 90 +++++++++++++++++++++++++++++++++++++++++++++++
gkeys/gkeys/actions.py | 10 ++----
2 files changed, 93 insertions(+), 7 deletions(-)
diff --git a/gkeys/gkeys/actionbase.py b/gkeys/gkeys/actionbase.py
new file mode 100644
index 0000000..77748c5
--- /dev/null
+++ b/gkeys/gkeys/actionbase.py
@@ -0,0 +1,90 @@
+#
+#-*- coding:utf-8 -*-
+
+"""
+ Gentoo-keys - actionbase.py
+
+ Base api interface module
+
+ @copyright: 2012-2015 by Brian Dolbec <dol-sen@gentoo.org>
+ @license: GNU GPL2, see COPYING for details.
+"""
+
+from __future__ import print_function
+
+import os
+import sys
+
+if sys.version_info[0] >= 3:
+ _unicode = str
+else:
+ _unicode = unicode
+
+
+from snakeoil.demandload import demandload
+
+demandload(
+ "json:load",
+ "gkeys.lib:GkeysGPG",
+ "gkeys.keyhandler:KeyHandler",
+)
+
+
+
+class ActionBase(object):
+ '''Base actions class holding comon functions and init'''
+
+ def __init__(self, config, output=None, logger=None):
+ self.config = config
+ self.output = output
+ self.logger = logger
+ self.seeds = None
+ self._seedhandler = None
+ self._keyhandler = None
+ self._gpg = None
+ self.category = None
+
+
+ @property
+ def gpg(self):
+ '''Holds the classwide GkeysGPG instance'''
+ if not self._gpg:
+ self._gpg = GkeysGPG(self.config,
+ self._set_category(self.category), self.logger)
+ else:
+ self._gpg.basedir = self._set_category(self.category)
+ return self._gpg
+
+
+ @property
+ def keyhandler(self):
+ '''Holds the classwide KeyHandler instance'''
+ if not self._keyhandler:
+ self._init_keyhandler()
+ return self._keyhandler
+
+
+ def _init_keyhandler(self):
+ self._keyhandler = KeyHandler(self.config, self.logger)
+ self._seedhandler = self._keyhandler.seedhandler
+
+
+ @property
+ def seedhandler(self):
+ '''Holds the classwide SeedHandler instance
+ which is a convienience variable for the keyhandler's instance of it'''
+ if not self._seedhandler:
+ self._init_keyhandler()
+ return self._seedhandler
+
+
+ def _set_category(self, cat):
+ keyring = self.config.get_key('keyring')
+ if "foo-bar'd" in keyring:
+ raise
+ self.category = cat
+ catdir = os.path.join(keyring, cat)
+ self.logger.debug(_unicode("ACTIONS: _set_category; catdir = %s") % catdir)
+ return catdir
+
+
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index e24d24d..11f1ca8 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -27,7 +27,7 @@ else:
from collections import defaultdict
from snakeoil.demandload import demandload
-
+from gkeys.actionbase import ActionBase
from gkeys.gkey import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
@@ -41,14 +41,11 @@ demandload(
EXTENSIONS = ['.sig', '.asc', '.gpg','.gpgsig']
-class Actions(object):
+class Actions(ActionBase):
'''Primary API actions'''
def __init__(self, config, output=None, logger=None):
- self.config = config
- self.output = output
- self.logger = logger
- self.seeds = None
+ ActionBase.__init__(self, config, output, logger)
@staticmethod
@@ -68,7 +65,6 @@ class Actions(object):
'''-----< general actions >------'''
pass
-
def listseed(self, args):
'''Pretty-print the selected seed file'''
handler = SeedHandler(self.logger, self.config)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 79b95d1d05ed9ce82b94167074b068e63cfa2cb8
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 04:39:37 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Aug 3 03:59:36 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=79b95d1d
gkeys: Fix the user config location and operation
Move the config to ~/.config/gkeys/ along with the logs.
Fix the improper ensure_dirs() call in base.py.
gkeys/gkeys/base.py | 5 +++--
gkeys/gkeys/config.py | 10 +++++++---
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 7fd9908..970ad7c 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -299,8 +299,8 @@ class CliBase(object):
if not self.config.defaults['homedir']:
self.config.defaults['homedir'] = os.path.expanduser('~')
if not os.access(self.config['logdir'], os.W_OK):
- self.config['logdir'] = ensure_dirs(
- os.path.join(self.config['user-dir'], 'logs'))
+ self.config.options['logdir'] = os.path.join(self.config['userconfigdir'], 'logs')
+ ensure_dirs(self.config.options['logdir'])
# establish our logger and update it in the imported files
self.logger = set_logger(self.cli_config['prog'], self.config['logdir'], args.debug,
dirmode=int(self.config.get_key('permissions', 'directories'),0),
@@ -314,6 +314,7 @@ class CliBase(object):
if args.config:
self.logger.debug("Main: run; Found alternate config request: %s"
% args.config)
+ self.logger.debug("Main: run; Using config: %s" % self.config['config'])
# check if a -C, --category was input
# if it was, check if the category is listed in the [seeds]
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 7cd856a..592aad6 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -54,10 +54,11 @@ class GKeysConfig(GPGConfig):
def _set_default_config(self):
self.defaults['homedir'] = os.path.expanduser('~')
- self.defaults['configdir'] = os.path.join(
- self.defaults['homedir'], '.gkeys')
+ 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['configdir'], 'gkeys.conf')
+ 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'
@@ -101,6 +102,9 @@ class GKeysConfig(GPGConfig):
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'):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 9e7539d68b75a37626cc4a2b6c59a8d21208b57c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 06:35:53 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Aug 8 15:51:40 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=9e7539d6
gkeys: [2 of 2] Move common key handling to it's own class
Creation of a new KeyHandler class.
Move primary seed handling intialization and control to the new KeyHandler class.
This unifies key handling and removes suplicated code throughout Actions class.
Break out a KEY_OPTIONS list. Cleans up a long line and makes it available for
import use to ensure the correct options are added to the cli (gkeys-gpg) for
correct key_search() operation.
gkeys/gkeys/actions.py | 156 +++++++++++-----------------------------------
gkeys/gkeys/keyhandler.py | 110 ++++++++++++++++++++++++++++++++
2 files changed, 148 insertions(+), 118 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 11f1ca8..69d05b6 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -26,18 +26,17 @@ else:
from collections import defaultdict
-from snakeoil.demandload import demandload
from gkeys.actionbase import ActionBase
from gkeys.gkey import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
+from snakeoil.demandload import demandload
+
demandload(
+ "gkeys.base:Args",
"json:load",
- "gkeys.lib:GkeysGPG",
- "gkeys.seedhandler:SeedHandler",
)
-
EXTENSIONS = ['.sig', '.asc', '.gpg','.gpgsig']
@@ -67,13 +66,12 @@ class Actions(ActionBase):
def listseed(self, args):
'''Pretty-print the selected seed file'''
- handler = SeedHandler(self.logger, self.config)
- kwargs = handler.build_gkeydict(args)
+ kwargs = self.seedhandler.build_gkeydict(args)
self.logger.debug(_unicode("ACTIONS: listseed; kwargs: %s")
% _unicode(kwargs))
if not self.seeds:
try:
- self.seeds = handler.load_seeds(args.category, args.nick)
+ self.seeds = self.seedhandler.load_seeds(args.category, args.nick)
except ValueError:
return (False, ['', "Failed to load seed file. Consider fetching seedfiles."])
if self.seeds:
@@ -89,8 +87,10 @@ class Actions(ActionBase):
% _unicode(args))
if not args.category:
return (False, ["Please specify seeds category."])
- handler = SeedHandler(self.logger, self.config)
- success, messages = handler.fetch_seeds(args.category, args, self.verify)
+ self._set_category(self.config.get_key('verify-keyring'))
+ verifyargs = Args()
+ verifyargs.category=args.category
+ success, messages = self.seedhandler.fetch_seeds(args.category, verifyargs, self.verify)
messages.append("")
messages.append("Fetch operation completed")
return (False not in success, messages)
@@ -98,7 +98,6 @@ class Actions(ActionBase):
def addseed(self, args):
'''Add or replace a key in the selected seed file'''
- handler = SeedHandler(self.logger, self.config)
success, data = self.listseed(args)
gkeys = data[1]
if not args.nick or not args.name or not args.keys or not args.keydir:
@@ -107,7 +106,7 @@ class Actions(ActionBase):
args.fingerprint = args.keys
if args.uid is None:
args.uid = []
- gkey = handler.new(args, checkgkey=True)
+ gkey = self.seedhandler.new(args, checkgkey=True)
if not gkey:
return (False, ["Failed to create a valid GKEY instance.",
"Check for invalid data entries"])
@@ -150,13 +149,12 @@ class Actions(ActionBase):
def moveseed(self, args):
'''Move keys between seed files'''
- handler = SeedHandler(self.logger, self.config)
- searchkey = handler.new(args, checkgkey=False)
+ searchkey = self.seedhandler.new(args, checkgkey=False)
self.logger.debug(_unicode("ACTIONS: moveseed; gkey: %s")
% _unicode(searchkey))
if not self.seeds:
self.seeds = self.load_seeds(args.category)
- kwargs = handler.build_gkeydict(args)
+ kwargs = self.seedhandler.build_gkeydict(args)
sourcekeys = self.seeds.list(**kwargs)
dest = self.load_seeds(args.destination)
destkeys = dest.list(**kwargs)
@@ -199,21 +197,17 @@ class Actions(ActionBase):
# fill in code here
if not args.category:
args.category = 'gentoo'
- keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
- self.logger.debug(_unicode("ACTIONS: listkey; catdir = %s") % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
- handler = SeedHandler(self.logger, self.config)
+ self.category = args.category
if args.keydir:
self.gpg.set_keydir(args.keydir, "list-keys")
self.gpg.set_keyseedfile()
seeds = self.gpg.seedfile
else:
- seeds = handler.load_category(args.category)
+ seeds = self.seedhandler.load_category(args.category)
results = {}
success = []
messages = []
- kwargs = handler.build_gkeydict(args)
+ kwargs = self.seedhandler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
for key in sorted(keyresults):
if args.fingerprint:
@@ -272,11 +266,7 @@ class Actions(ActionBase):
return (False, ["Search failed for search term"])
# get confirmation
# fill in code here
- keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
- self.logger.debug(_unicode("ACTIONS: installkey; catdir = %s")
- % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
+ self.category = args.category
for gkey in gkeys:
self.gpg.set_keydir(gkey.keydir, "recv-keys")
self.gpg.set_keyseedfile()
@@ -333,15 +323,11 @@ class Actions(ActionBase):
if not args.category:
return (False, [_unicode("Please specify seeds category.")])
self.logger.debug(_unicode("ACTIONS: checkkey; args: %s") % _unicode(args))
- handler = SeedHandler(self.logger, self.config)
- seeds = handler.load_category(args.category)
- keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
- self.logger.debug(_unicode("ACTIONS: checkkey; catdir = %s") % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
+ seeds = self.seedhandler.load_category(args.category)
+ self.category = args.category
results = {}
failed = defaultdict(list)
- kwargs = handler.build_gkeydict(args)
+ kwargs = self.seedhandler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
self.output('', '\n Checking keys...')
for gkey in sorted(keyresults):
@@ -388,16 +374,11 @@ class Actions(ActionBase):
return (False, ["Please specify seeds category."])
self.logger.debug(_unicode("ACTIONS: speccheck; args: %s")
% _unicode(args))
- handler = SeedHandler(self.logger, self.config)
- seeds = handler.load_category(args.category)
- keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
+ self.category = args.category
+ catdir, keyresults = self.keyhandler.determine_keys(args)
self.logger.debug(_unicode("ACTIONS: speccheck; catdir = %s") % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
results = {}
failed = defaultdict(list)
- kwargs = handler.build_gkeydict(args)
- keyresults = seeds.list(**kwargs)
self.output('', '\n Checking keys...')
for gkey in sorted(keyresults):
self.logger.info(_unicode("Checking key %s, %s")
@@ -527,11 +508,10 @@ class Actions(ActionBase):
'''Remove an installed key'''
if not args.nick:
return (False, ["Please provide a nickname or -n *"])
- handler = SeedHandler(self.logger, self.config)
- kwargs = handler.build_gkeydict(args)
+ kwargs = self.seedhandler.build_gkeydict(args)
self.logger.debug(_unicode("ACTIONS: removekey; kwargs: %s")
% _unicode(kwargs))
- seeds = handler.load_category(args.category)
+ seeds = self.seedhandler.load_category(args.category)
messages = []
if args.nick == '*':
self.output([''],_unicode('Remove All keys in category: %s')
@@ -565,11 +545,6 @@ class Actions(ActionBase):
if ans in ["no", "n"]:
messages.append("Key removal aborted... Nothing to be done.")
else:
- keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
- self.logger.debug(_unicode("ACTIONS: removekey; catdir = %s")
- % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
if len(gkey.keys) == 1 or args.keys == gkey.keys:
success, msgs = self.gpg.del_keydir(gkey)
messages.extend(msgs)
@@ -592,11 +567,7 @@ class Actions(ActionBase):
def importkey(self, args):
'''Add a specified key to a specified keyring'''
if args.category:
- keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
- self.logger.debug(_unicode("ACTIONS: importkey; catdir = %s")
- % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
+ catdir = self._set_category(args.category)
success, data = self.listseed(args)
gkeys = data[1]
results = {}
@@ -693,11 +664,10 @@ class Actions(ActionBase):
self.logger.debug(_unicode(
"ACTIONS: verify; keyring category not specified, using default: %s")
% args.category)
- handler = SeedHandler(self.logger, self.config)
- keys = handler.load_category(args.category)
+ keys = self.seedhandler.load_category(args.category)
if not keys:
return (False, ['No installed keys found, try installkey action.'])
- key = handler.seeds.nick_search(args.nick)
+ key = self.seedhandler.seeds.nick_search(args.nick)
if not key:
if args.nick:
messages.append(_unicode(
@@ -709,14 +679,10 @@ class Actions(ActionBase):
% (args.category, args.nick))
return self.verify(args, messages)
- keyrings = self.config.get_key('keyring')
- catdir = os.path.join(keyrings, args.category)
- self.logger.debug(_unicode("ACTIONS: verify; catdir = %s") % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
- return self._verify(args, handler, key, messages)
+ return self._verify(args, key, messages)
- def _verify(self, args, handler, key, messages=None):
+ def _verify(self, args, key, messages=None):
if messages == None:
messages = []
filepath, signature = args.filename, args.signature
@@ -807,25 +773,10 @@ class Actions(ActionBase):
[_unicode("Verification failed....: %s") % (filepath),
_unicode("Key info...............: %s <%s>, %s")
% ( key.name, key.nick, keyid)])
- has_no_pubkey, s_keyid = results.no_pubkey
- if has_no_pubkey:
- messages.append(
- _unicode("Auto-searching for key.: 0x%s") % s_keyid)
- # reset all but keyid and pass thru data
- args.keyid = s_keyid
- args.keydir = None
- args.fingerprint = None
- args.exact = False
- args.category = None
- args.nick = None
- args.name = None
- args.all = False
- keys = self.key_search(args, data_only=True)
- if keys:
- args.category = list(keys)[0]
- args.nick = keys[args.category][0].nick
- return self.verify(args, messages)
- messages.append(_unicode("Failed to find gpg key.: 0x%s") % s_keyid)
+ found, args, new_msgs = self.keyhandler.autosearch_key(args, results)
+ messages.extend(new_msgs)
+ if found:
+ return self.verify(args, messages)
return (verified, messages)
@@ -856,11 +807,9 @@ class Actions(ActionBase):
else:
nicks = args.nick
# load our installed signing keys db
- handler = SeedHandler(self.logger, self.config)
- self.seeds = handler.load_category('sign', nicks)
+ self.seeds = self.seedhandler.load_category('sign', nicks)
if not self.seeds.seeds:
return (False, ['No installed keys, try installkey action.', ''])
- basedir = self.config.get_key("sign-keydir")
keydir = self.config.get_key("sign", "keydir")
task = self.config.get_key("sign", "type")
keyring = self.config.get_key("sign", "keyring")
@@ -869,7 +818,6 @@ class Actions(ActionBase):
self.logger.debug(_unicode("ACTIONS: sign; keydir = %s") % keydir)
- self.gpg = GkeysGPG(self.config, basedir, self.logger)
self.gpg.set_keydir(keydir, task)
if keyring not in ['', None]:
self.gpg.set_keyring(keyring, task)
@@ -902,14 +850,10 @@ class Actions(ActionBase):
return (False, ["Please specify seeds type."])
self.logger.debug(_unicode("ACTIONS: refreshkey; args: %s")
% _unicode(args))
- handler = SeedHandler(self.logger, self.config)
- seeds = handler.load_category(args.category, refresh=True)
- keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
- self.logger.debug(_unicode("ACTIONS: refreshkey; catdir = %s") % catdir)
- self.gpg = GkeysGPG(self.config, catdir, self.logger)
+ seeds = self.seedhandler.load_category(args.category, refresh=True)
+ self.category = args.category
results = {}
- kwargs = handler.build_gkeydict(args)
+ kwargs = self.seedhandler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
self.output('', '\n Refreshig keys...')
for gkey in sorted(keyresults):
@@ -926,37 +870,13 @@ class Actions(ActionBase):
def key_search(self, args, data_only=False):
'''Search for a key's seed in the installed keys db'''
- handler = SeedHandler(self.logger, self.config)
- results = {}
- search_args = [x for x in
- ['nick', 'name', 'keydir', 'fingerprint', 'keyid', 'uid']
- if getattr(args, x)]
- if args.category:
- handler.load_category(args.category)
- results[args.category] = handler.key_search(args, search_args)
- else:
- for cat in list(self.config.get_key('seeds')):
- handler.load_category(cat)
- found = handler.key_search(args, search_args)
- if found:
- if cat in results:
- results[cat].extend(found)
- else:
- results[cat] = found
- keys = {}
- for cat in results:
- keys[cat] = []
- for result in results[cat]:
- if result and result.nick not in keys[cat]:
- if isinstance(result, GKEY):
- keys[cat].append(result)
+ keys = self.keyhandler.key_search(args)
if data_only:
- del found, cat, handler
return keys
msgs = []
for cat in list(keys):
msgs.append(_unicode("Category.....: %s") % cat)
msgs.append(keys[cat])
- del keys, cat
+ del keys
return (True, msgs)
diff --git a/gkeys/gkeys/keyhandler.py b/gkeys/gkeys/keyhandler.py
new file mode 100644
index 0000000..9043fcd
--- /dev/null
+++ b/gkeys/gkeys/keyhandler.py
@@ -0,0 +1,110 @@
+#
+#-*- coding:utf-8 -*-
+
+"""
+ Gentoo-keys - keyhandler.py
+
+ GKEY handling interface module
+
+ @copyright: 2015 by Brian Dolbec <dol-sen@gentoo.org>
+ @license: GNU GPL2, see COPYING for details.
+"""
+import os
+import sys
+
+from snakeoil.demandload import demandload
+
+if sys.version_info[0] >= 3:
+ _unicode = str
+else:
+ _unicode = unicode
+
+from gkeys.gkey import GKEY
+
+
+demandload(
+ "gkeys.seedhandler:SeedHandler",
+)
+
+KEY_OPTIONS = ['nick', 'name', 'keydir', 'fingerprint', 'keyid', 'uid']
+
+
+class KeyHandler(object):
+ '''Class to hold various key operations'''
+
+
+ def __init__(self, config, logger):
+ self.config = config
+ self.logger = logger
+ self._seedhandler = None
+
+
+ @property
+ def seedhandler(self):
+ if not self._seedhandler:
+ self._seedhandler = SeedHandler(self.logger, self.config)
+ return self._seedhandler
+
+
+ def autosearch_key(self, args, results):
+ '''Search for the correct keyid from the GPGResult'''
+ messages = []
+ has_no_pubkey, s_keyid = results.no_pubkey
+ if has_no_pubkey:
+ messages.append(
+ _unicode("Auto-searching for key.: 0x%s") % s_keyid)
+ # reset all but keyid and pass thru data
+ args.keyid = s_keyid
+ args.keydir = None
+ args.fingerprint = None
+ args.exact = False
+ args.category = None
+ args.nick = None
+ args.name = None
+ args.all = False
+ keys = self.key_search(args)
+ if keys:
+ args.category = list(keys)[0]
+ args.nick = keys[args.category][0].nick
+ return (True, args, messages)
+ messages.append(_unicode("Failed to find gpg key.: 0x%s") % s_keyid)
+ return (False, args, messages)
+
+
+ def determine_keys(self, args, default_cat=None):
+ seeds = self.seedhandler.load_category(args.category or default_cat)
+ keyring = self.config.get_key('keyring')
+ catdir = os.path.join(keyring, args.category)
+ self.logger.debug(_unicode("KeyHandler: determine_keys; catdir = %s") % catdir)
+ kwargs = self.seedhandler.build_gkeydict(args)
+ return (catdir, seeds.list(**kwargs))
+
+
+ def key_search(self, args, first_match=False):
+ '''Search for a key's seed in the installed keys db'''
+ results = {}
+ search_args = [x for x in KEY_OPTIONS if getattr(args, x)]
+ if args.category:
+ self.seedhandler.load_category(args.category)
+ results[args.category] = self.seedhandler.key_search(args, search_args)
+ else:
+ for cat in sorted(self.config.get_key('seeds')):
+ self.seedhandler.load_category(cat)
+ found = self.seedhandler.key_search(args, search_args)
+ if found:
+ if cat in results:
+ results[cat].extend(found)
+ else:
+ results[cat] = found
+ if first_match:
+ break
+ keys = {}
+ for cat in results:
+ keys[cat] = []
+ for result in results[cat]:
+ if result and result.nick not in keys[cat]:
+ if isinstance(result, GKEY):
+ keys[cat].append(result)
+
+ self.logger.debug(_unicode("KeyHandler: key_search; keys = %s") % str(keys))
+ return keys
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 534fac884f2ce1a45cf6a73d0491884e1bfe0d0a
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 25 20:56:30 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Aug 3 03:59:36 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=534fac88
gkeys/base.py: Add missing action and timestamp attributes
Sort the staus attribute.
gkeys/gkeys/base.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index b422caf..7fd9908 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -34,7 +34,7 @@ class Args(object):
def __init__(self):
- self.status = False
+ self.ation = None
self.all = False
self.category = None
self.cleankey = False
@@ -50,6 +50,8 @@ class Args(object):
self.keydir = None
self.seedfile = None
self.signature = None
+ self.status = False
+ self.timestamp = None
self.uid = None
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 1:09 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 1:09 UTC (permalink / raw
To: gentoo-commits
commit: 24aa5eb9f92883fb0fb3e7222b78eeddf33b9bf6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 29 06:39:47 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Aug 8 15:51:40 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=24aa5eb9
gkeys/lib.py: Creation of the code for the verify_text()
gkeys/gkeys/lib.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index 528464b..5ad1aab 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -318,10 +318,19 @@ class GkeysGPG(GPG):
pass
- def verify_text(self, text):
+ def verify_text(self, gkey, text, filepath=None):
'''Verify a text block in memory
+
+ @param gkey: GKEY instance of the gpg key used to verify it
+ @param text: string of the of the text to verify
+ @param filepath: optional string with the path or url of the signed file
'''
- pass
+ self.set_keydir(gkey.keydir, 'verify', fingerprint=False, reset=True)
+ self.logger.debug("** Calling runGPG with Running 'gpg %s --verify %s'"
+ % (' '.join(self.config['tasks']['verify']), filepath))
+ results = self.runGPG(task='verify', inputfile=filepath, inputtxt=text)
+ self._log_result('verification', gkey, results)
+ return results
def verify_file(self, gkey, signature, filepath):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-09 22:52 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-09 22:52 UTC (permalink / raw
To: gentoo-commits
commit: 396d5c5afab583fc1873d4a211c856d9df0b8074
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 9 22:29:46 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sun Aug 9 22:29:46 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=396d5c5a
gkeys/seedhandler.py: Add an isdir check to load_category
This prevents trying to look into a file like it does a keyring directory.
(I accidentlly added garbage to a keyring using gpg directly)
gkeys/gkeys/seedhandler.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 3e51bb2..5c3e8aa 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -112,6 +112,8 @@ class SeedHandler(object):
nicks = os.listdir(catdir)
for nick in nicks:
seed_path = os.path.join(catdir, nick)
+ if not os.path.isdir(seed_path):
+ continue
gkey_path = os.path.join(seed_path, 'gkey.seeds')
seed = None
try:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-25 14:10 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-25 14:10 UTC (permalink / raw
To: gentoo-commits
commit: 54c1719b1701ce9f4b5853b029a2e9bc9412db8e
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 25 14:05:26 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Aug 25 14:05:26 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=54c1719b
actionbase.py: Fix sanity check in _set_category
pyGPG changed, it now returns None for a key/subkey that it fails to find.
Add a cat check as well.
gkeys/gkeys/actionbase.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actionbase.py b/gkeys/gkeys/actionbase.py
index e8d5ba4..c53bfdb 100644
--- a/gkeys/gkeys/actionbase.py
+++ b/gkeys/gkeys/actionbase.py
@@ -80,7 +80,9 @@ class ActionBase(object):
def _set_category(self, cat):
keyring = self.config.get_key('keyring')
- if "foo-bar'd" in keyring:
+ if not keyring:
+ raise
+ if not cat:
raise
self.category = cat
catdir = os.path.join(keyring, cat)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-08-25 14:10 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-08-25 14:10 UTC (permalink / raw
To: gentoo-commits
commit: 1a9629201a102f2a173116a9e9ce368315501c0e
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 25 14:09:09 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Tue Aug 25 14:09:09 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=1a962920
gkeys: Set default verify-keyring, add verify-nick default
Fix verify-keyring typo in verify action.
Add missed self.category setting in verify().
gkeys/gkeys/actions.py | 3 ++-
gkeys/gkeys/config.py | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 69d05b6..01255eb 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -660,7 +660,7 @@ class Actions(ActionBase):
if not args.filename:
return (False, ['Please provide a signed file.'])
if not args.category:
- args.category = self.config.get_key('verify_keyring')
+ args.category = self.config.get_key('verify-keyring')
self.logger.debug(_unicode(
"ACTIONS: verify; keyring category not specified, using default: %s")
% args.category)
@@ -685,6 +685,7 @@ class Actions(ActionBase):
def _verify(self, args, key, messages=None):
if messages == None:
messages = []
+ self.category = args.category
filepath, signature = args.filename, args.signature
timestamp_path = None
isurl = success = verified = False
diff --git a/gkeys/gkeys/config.py b/gkeys/gkeys/config.py
index 592aad6..ee667ec 100644
--- a/gkeys/gkeys/config.py
+++ b/gkeys/gkeys/config.py
@@ -82,7 +82,8 @@ class GKeysConfig(GPGConfig):
'keyring': None,
'type': 'clearsign',
}
- self.defaults['verify-keyring'] = ''
+ self.defaults['verify-keyring'] = 'gentoo'
+ self.defaults['verify-nick'] = 'gkeys'
self.defaults['verify-seeds'] = {}
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-12-13 0:51 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-12-13 0:51 UTC (permalink / raw
To: gentoo-commits
commit: 0ea1407c73ade111e1459099be1bf5ebf585b517
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 13 00:48:13 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sun Dec 13 00:48:13 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=0ea1407c
gkeys/log.py: Remove a couple commented out debug prints
gkeys/gkeys/log.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/gkeys/gkeys/log.py b/gkeys/gkeys/log.py
index f9b7963..4ea5cb1 100644
--- a/gkeys/gkeys/log.py
+++ b/gkeys/gkeys/log.py
@@ -54,10 +54,8 @@ def set_logger(namespace=None, logpath='', level=None,
'%s-%s.log' % (namespace, time.strftime('%Y%m%d-%H:%M')))
file_handler = logging.FileHandler(logname)
if level:
- #print "Setting cli log level", level, log_levels[level]
file_handler.setLevel(log_levels[level])
else:
- #print "Create file handler which logs even debug messages"
file_handler.setLevel(log_levels['DEBUG'])
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2015-12-25 17:03 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2015-12-25 17:03 UTC (permalink / raw
To: gentoo-commits
commit: d30a4c052be16bc01f82c2893ab26114f9ac54a5
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 13 02:22:25 2015 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sun Dec 13 02:22:25 2015 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=d30a4c05
gkeys/actionbase.py: Add an exception to the raise statements
There were no active exceptions at this point which in itself caused an exception.
gkeys/gkeys/actionbase.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actionbase.py b/gkeys/gkeys/actionbase.py
index c53bfdb..67d3520 100644
--- a/gkeys/gkeys/actionbase.py
+++ b/gkeys/gkeys/actionbase.py
@@ -81,9 +81,9 @@ class ActionBase(object):
def _set_category(self, cat):
keyring = self.config.get_key('keyring')
if not keyring:
- raise
+ raise Exception("No keyring set.")
if not cat:
- raise
+ raise Exception("No category set.")
self.category = cat
catdir = os.path.join(keyring, cat)
self.logger.debug(_unicode("ACTIONS: _set_category; catdir = %s") % catdir)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2016-01-23 19:04 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-01-23 19:04 UTC (permalink / raw
To: gentoo-commits
commit: 8843c85e7b579e80db80b327dbbee159746b87e9
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jan 20 15:58:41 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Jan 20 15:58:41 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=8843c85e
actions.py: Update ssl-fetch Connector call, add climit
Update for an ssl-fetch API change
gkeys/gkeys/actions.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 01255eb..d3e403d 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -702,6 +702,9 @@ class Actions(ActionBase):
"not supplied, using current directory ./%s") % filepath)
if args.timestamp:
timestamp_path = filepath + ".timestamp"
+ climit = 60
+ else:
+ climit = 0
sig_path = None
if isurl:
from sslfetch.connections import Connector
@@ -719,7 +722,7 @@ class Actions(ActionBase):
self.logger.debug(
_unicode("ACTIONS: verify; timestamp path: %s") % timestamp_path)
success, signedfile, timestamp = fetcher.fetch_file(
- url, filepath, timestamp_path)
+ url, filepath, timestamp_path, climit=climit)
if not success:
messages.append(_unicode("File %s cannot be retrieved.") % filepath)
elif '.' + url.rsplit('.', 1)[1] not in EXTENSIONS:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2016-01-23 23:33 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-01-23 23:33 UTC (permalink / raw
To: gentoo-commits
commit: fd8b642afb7ec732f2407553788fe49aed27cdec
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 23 23:31:07 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 23 23:31:07 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=fd8b642a
actions.py: Update for ssl-fetch API changes
gkeys/gkeys/actions.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index d3e403d..d61b415 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -712,9 +712,15 @@ class Actions(ActionBase):
'info': self.logger.info,
'debug': self.logger.debug,
'error': self.logger.error,
+ 'exception': self.logger.exception,
+ # we want any warnings to be printed to the terminal
+ # so assign it to logging.error
+ 'warning': self.logger.error,
'kwargs-info': {},
'kwargs-debug': {},
'kwargs-error': {},
+ 'kwargs-exception': {},
+ 'kwargs-warning': {},
}
fetcher = Connector(connector_output, None, "Gentoo Keys")
self.logger.debug(
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2016-01-23 23:33 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-01-23 23:33 UTC (permalink / raw
To: gentoo-commits
commit: dc793f99c4b68e025bf4415d6162288bcaa971eb
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 23 23:32:31 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jan 23 23:32:31 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=dc793f99
gkeys: Increase a few logger.error messages to logger.exception
This will include a full traceback for debugging.
gkeys/gkeys/seed.py | 4 ++--
gkeys/gkeys/seedhandler.py | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/seed.py b/gkeys/gkeys/seed.py
index f1bf7db..96bd8b2 100644
--- a/gkeys/gkeys/seed.py
+++ b/gkeys/gkeys/seed.py
@@ -246,10 +246,10 @@ class Seeds(object):
'''Class error logging function'''
if debug:
self.logger.debug("Seed: Error processing seed file %s" % self.filename)
- self.logger.debug("Seed: Error was: %s" % str(err))
+ self.logger.exception("Seed: Error was: %s" % str(err))
else:
self.logger.error("Seed: Error processing seed file %s" % self.filename)
- self.logger.error("Seed: Error was: %s" % str(err))
+ self.logger.exception("Seed: Error was: %s" % str(err))
def _seeds2json(self, seeds):
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 5c3e8aa..248b7b6 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -137,7 +137,7 @@ class SeedHandler(object):
seeds.add(nick, GKEY(**key))
except OSError as error:
self.logger.debug("SeedHandler: load_category; OSError for %s" % catdir)
- self.logger.debug("Error was: %s" % str(error))
+ self.logger.exception("Error was: %s" % str(error))
self.seeds = seeds
return seeds
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2016-06-01 15:16 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-06-01 15:16 UTC (permalink / raw
To: gentoo-commits
commit: 423c3bf0b3ae993e15886858aede0a94372b55fd
Author: aeroniero33 <justthisthing <AT> gmail <DOT> com>
AuthorDate: Fri May 27 13:28:38 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Jun 1 15:14:55 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=423c3bf0
Fixed move-seed function
gkeys/gkeys/action_map.py | 4 +---
gkeys/gkeys/actions.py | 4 ++--
gkeys/gkeys/seedhandler.py | 3 ++-
3 files changed, 5 insertions(+), 6 deletions(-)
diff --git a/gkeys/gkeys/action_map.py b/gkeys/gkeys/action_map.py
index d7eac63..80c59fe 100644
--- a/gkeys/gkeys/action_map.py
+++ b/gkeys/gkeys/action_map.py
@@ -15,7 +15,7 @@ from collections import OrderedDict
Seed_Actions = ['----seeds----', 'add-seed', 'fetch-seed',
- 'list-seed', 'list-seedfiles', 'remove-seed']
+ 'list-seed', 'list-seedfiles', 'move-seed', 'remove-seed']
Key_Actions = ['----keys-----', 'check-key', 'installed',
'install-key', 'list-key', 'refresh-key', 'remove-key',
@@ -430,5 +430,3 @@ Found Failures:
''',
}),
])
-
-
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index ef8a30e..1b27605 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -153,10 +153,10 @@ class Actions(ActionBase):
self.logger.debug(_unicode("ACTIONS: moveseed; gkey: %s")
% _unicode(searchkey))
if not self.seeds:
- self.seeds = self.load_seeds(args.category)
+ self.seeds = self.seedhandler.load_seeds(args.category)
kwargs = self.seedhandler.build_gkeydict(args)
sourcekeys = self.seeds.list(**kwargs)
- dest = self.load_seeds(args.destination)
+ dest = self.seedhandler.load_seeds(args.destination)
destkeys = dest.list(**kwargs)
messages = []
if len(sourcekeys) == 1 and destkeys == []:
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index 248b7b6..de2a6ad 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -67,7 +67,8 @@ class SeedHandler(object):
else:
keyinfo[attr] = value
except AttributeError:
- pass
+ if attr in GKEY._fields:
+ keyinfo[attr] = None
return keyinfo
def load_seeds(self, seedfile=None, filepath=None, refresh=False):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2016-06-01 15:16 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-06-01 15:16 UTC (permalink / raw
To: gentoo-commits
commit: bacec7da1e7ff446f232d48dcf34b71966df7068
Author: aeroniero33 <justthisthing <AT> gmail <DOT> com>
AuthorDate: Tue Apr 12 23:49:05 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Jun 1 15:13:48 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=bacec7da
Count Incorrect Qualified IDs and present them in the speccheck summary.
Changed the names of Qualified_IDs
Changed Qualified_Id position
gkeys/gkeys/actions.py | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index d61b415..ef8a30e 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -407,6 +407,8 @@ class Actions(ActionBase):
'encrypts': [],
'authens': [],
'final': False,
+ 'qualified_id_checks': [],
+ 'qualified_id_passed': False
}
if key.key is "SUB":
if key.sign_capable and key.passed_spec:
@@ -419,6 +421,9 @@ class Actions(ActionBase):
pub_pass['authens'].append(key.passed_spec)
if key.passed_spec:
pub_pass['auth'] = True
+ if key.id:
+ pub_pass['qualified_id_checks'].append(key.id)
+ pub_pass['qualified_id_passed'] = True
validity = key.validity.split(',')[0]
if not key.expire and not 'r' in validity:
failed['expired'].append(_unicode("%s <%s>: %s")
@@ -446,6 +451,9 @@ class Actions(ActionBase):
if not pub_pass['sign']:
failed['sign'].append(_unicode("%s <%s>: %s")
% (gkey.name, gkey.nick, pub_pass['key'].fingerprint))
+ if not pub_pass['qualified_id_passed']:
+ failed['qualified_id'].append(_unicode("%s <%s>: %s")
+ % (gkey.name, gkey.nick, pub_pass['key'].fingerprint))
if not pub_pass['encrypt']:
failed['encrypt'].append(_unicode("%s <%s>: %s")
% (gkey.name, gkey.nick, pub_pass['key'].fingerprint))
@@ -483,6 +491,8 @@ class Actions(ActionBase):
self.output([sorted(set(failed['expired']))], '\n Expiry keys:')
if failed['warn']:
self.output([sorted(set(failed['warn']))], '\n Expiry Warnings:')
+ if failed['qualified_id']:
+ self.output([sorted(set(failed['qualified_id']))], '\n Qualified IDs:')
if failed['spec']:
self.output([sorted(set(failed['spec']))], '\n Failed to pass SPEC requirements:')
if failed['spec-approved']:
@@ -496,6 +506,7 @@ class Actions(ActionBase):
'No Encryption subkey...: %d' % len(set(failed['encrypt'])),
'Algorithm..............: %d' % len(set(failed['algo'])),
'Bit length.............: %d' % len(set(failed['bits'])),
+ 'Qualified IDs..........: %d' % len(set(failed['qualified_id'])),
'Expiry.................: %d' % len(set(failed['expired'])),
'Expiry Warnings........: %d' % len(set(failed['warn'])),
'SPEC requirements......: %d' % len(set(failed['spec'])),
@@ -889,4 +900,3 @@ class Actions(ActionBase):
msgs.append(keys[cat])
del keys
return (True, msgs)
-
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 " Brian Dolbec
@ 2016-10-27 18:41 ` Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-10-27 18:41 UTC (permalink / raw
To: gentoo-commits
commit: 961f66af2d741386bc917de569153863e086732a
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 24 05:45:59 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Mon Oct 24 05:58:34 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=961f66af
Actions.checkkey: fix success returncode
The failed dictionary contains lists for each type of failure,
so return success if all of those lists are emtpy.
gkeys/gkeys/actions.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 1b27605..d51fb3f 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -13,6 +13,7 @@
from __future__ import print_function
+import itertools
import os
import sys
@@ -360,7 +361,7 @@ class Actions(ActionBase):
self.output([failed['invalid']], '\n Invalid keys:\n')
if failed['sign']:
self.output([failed['sign']], '\n No signing capable subkeys:\n')
- return (len(failed) <1,
+ return (not any(itertools.chain.from_iterable(failed.values())),
['\nFound:\n-------', 'Expired: %d' % len(failed['expired']),
'Revoked: %d' % len(failed['revoked']),
'Invalid: %d' % len(failed['invalid']),
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 commit in: gkeys/gkeys/ Brian Dolbec
@ 2016-10-27 21:49 ` Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-10-27 21:49 UTC (permalink / raw
To: gentoo-commits
commit: cc14fb9350cbfea5d07564bee963d9dc60b94239
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 27 21:48:07 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Oct 27 21:49:01 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=cc14fb93
Actions._verify: support --signature path argument
If the --signature argument refers to an existing file path,
use it. This fixes an issue where signature verification would
fail because the sig_path variable referred to None.
gkeys/gkeys/actions.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index d51fb3f..b38db19 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -758,6 +758,8 @@ class Actions(ActionBase):
break
else:
signature = None
+ elif signature is not None and os.path.exists(signature):
+ sig_path = signature
else:
filepath = os.path.abspath(filepath)
self.logger.debug(
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 " Brian Dolbec
@ 2016-12-24 0:38 ` Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-12-24 0:38 UTC (permalink / raw
To: gentoo-commits
commit: 93c87f84c607819b8b544705f2b50d6721911bd3
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 24 00:36:55 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Dec 24 00:36:55 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=93c87f84
gkeys actionbase: Fix trust model detection & setting in _set_trust()
gkeys/gkeys/actionbase.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/actionbase.py b/gkeys/gkeys/actionbase.py
index 67d3520..3993be4 100644
--- a/gkeys/gkeys/actionbase.py
+++ b/gkeys/gkeys/actionbase.py
@@ -95,8 +95,8 @@ class ActionBase(object):
trust = self.config.get_key('trust-model', cat)
if trust in [None]:
trust = 'auto'
- if 'trust-model' in self.config.defaults['gpg_defaults']:
- index = self.config.defaults['gpg_defaults'].index('trust-model')
+ if '--trust-model' in self.config.defaults['gpg_defaults']:
+ index = self.config.defaults['gpg_defaults'].index('--trust-model')
self.config.defaults['gpg_defaults'][index+1] = trust
else:
self.config.defaults['gpg_defaults'].extend(['--trust-model', trust])
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 " Brian Dolbec
@ 2016-12-24 0:38 ` Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-12-24 0:38 UTC (permalink / raw
To: gentoo-commits
commit: db9c5818bdf1623bdb96a2656e9f2d7d3985eed3
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 24 00:35:11 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Dec 24 00:35:11 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=db9c5818
gkeys actions: Fix missing category errors for sign action
gkeys/gkeys/actions.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index b38db19..07dba7a 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -830,8 +830,10 @@ class Actions(ActionBase):
nicks = [args.nick]
else:
nicks = args.nick
+ args.category = 'sign'
# load our installed signing keys db
self.seeds = self.seedhandler.load_category('sign', nicks)
+ self.category = args.category
if not self.seeds.seeds:
return (False, ['No installed keys, try installkey action.', ''])
keydir = self.config.get_key("sign", "keydir")
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2016-12-24 4:52 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2016-12-24 4:52 UTC (permalink / raw
To: gentoo-commits
commit: c1cf82a2f2f651da4749065be050154f23e07469
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 24 04:51:55 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Dec 24 04:51:55 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=c1cf82a2
gkeys actions: Migrate self.category setting to _set_category()
gkeys/gkeys/actions.py | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 07dba7a..a9d2b69 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -108,6 +108,7 @@ class Actions(ActionBase):
if args.uid is None:
args.uid = []
gkey = self.seedhandler.new(args, checkgkey=True)
+ self._set_category(args.category)
if not gkey:
return (False, ["Failed to create a valid GKEY instance.",
"Check for invalid data entries"])
@@ -198,7 +199,7 @@ class Actions(ActionBase):
# fill in code here
if not args.category:
args.category = 'gentoo'
- self.category = args.category
+ self._set_category(args.category)
if args.keydir:
self.gpg.set_keydir(args.keydir, "list-keys")
self.gpg.set_keyseedfile()
@@ -267,7 +268,7 @@ class Actions(ActionBase):
return (False, ["Search failed for search term"])
# get confirmation
# fill in code here
- self.category = args.category
+ self._set_category(args.category)
for gkey in gkeys:
self.gpg.set_keydir(gkey.keydir, "recv-keys")
self.gpg.set_keyseedfile()
@@ -325,7 +326,7 @@ class Actions(ActionBase):
return (False, [_unicode("Please specify seeds category.")])
self.logger.debug(_unicode("ACTIONS: checkkey; args: %s") % _unicode(args))
seeds = self.seedhandler.load_category(args.category)
- self.category = args.category
+ self._set_category(args.category)
results = {}
failed = defaultdict(list)
kwargs = self.seedhandler.build_gkeydict(args)
@@ -375,7 +376,7 @@ class Actions(ActionBase):
return (False, ["Please specify seeds category."])
self.logger.debug(_unicode("ACTIONS: speccheck; args: %s")
% _unicode(args))
- self.category = args.category
+ self._set_category(args.category)
catdir, keyresults = self.keyhandler.determine_keys(args)
self.logger.debug(_unicode("ACTIONS: speccheck; catdir = %s") % catdir)
results = {}
@@ -524,6 +525,7 @@ class Actions(ActionBase):
self.logger.debug(_unicode("ACTIONS: removekey; kwargs: %s")
% _unicode(kwargs))
seeds = self.seedhandler.load_category(args.category)
+ self._set_category(args.category)
messages = []
if args.nick == '*':
self.output([''],_unicode('Remove All keys in category: %s')
@@ -620,9 +622,9 @@ class Actions(ActionBase):
'''Lists the installed key directories'''
if args.category:
keyring = self.config.get_key('keyring')
- catdir = os.path.join(keyring, args.category)
else:
return (False, ["Please specify a category."])
+ catdir = self._set_category(args.category)
self.logger.debug("ACTIONS: installed; catdir = %s" % catdir)
installed_keys = []
try:
@@ -697,7 +699,7 @@ class Actions(ActionBase):
def _verify(self, args, key, messages=None):
if messages == None:
messages = []
- self.category = args.category
+ self._set_category(args.category)
filepath, signature = args.filename, args.signature
timestamp_path = None
isurl = success = verified = False
@@ -831,9 +833,9 @@ class Actions(ActionBase):
else:
nicks = args.nick
args.category = 'sign'
+ self._set_category(args.category)
# load our installed signing keys db
self.seeds = self.seedhandler.load_category('sign', nicks)
- self.category = args.category
if not self.seeds.seeds:
return (False, ['No installed keys, try installkey action.', ''])
keydir = self.config.get_key("sign", "keydir")
@@ -877,7 +879,7 @@ class Actions(ActionBase):
self.logger.debug(_unicode("ACTIONS: refreshkey; args: %s")
% _unicode(args))
seeds = self.seedhandler.load_category(args.category, refresh=True)
- self.category = args.category
+ self._set_category(args.category)
results = {}
kwargs = self.seedhandler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:gsoc-2016 commit in: gkeys/gkeys/
@ 2016-12-24 9:13 Brian Dolbec
2016-10-27 21:49 ` [gentoo-commits] proj/gentoo-keys:master " Brian Dolbec
0 siblings, 1 reply; 145+ messages in thread
From: Brian Dolbec @ 2016-12-24 9:13 UTC (permalink / raw
To: gentoo-commits
commit: cc14fb9350cbfea5d07564bee963d9dc60b94239
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 27 21:48:07 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Thu Oct 27 21:49:01 2016 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=cc14fb93
Actions._verify: support --signature path argument
If the --signature argument refers to an existing file path,
use it. This fixes an issue where signature verification would
fail because the sig_path variable referred to None.
gkeys/gkeys/actions.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index d51fb3f..b38db19 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -758,6 +758,8 @@ class Actions(ActionBase):
break
else:
signature = None
+ elif signature is not None and os.path.exists(signature):
+ sig_path = signature
else:
filepath = os.path.abspath(filepath)
self.logger.debug(
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 5ac5f27889115cd48e89e910a3d12380367cccb6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 24 09:11:08 2016 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:10 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=5ac5f278
gkeys base.py: Remove the auto-update code from run()
This code was causing the fetch-seed action to fail with empty urls to connect to.
This code should also not be running directly from the CliBase class.
I'll move this code to the actions or lib class, to be determined later.
gkeys/gkeys/base.py | 58 -----------------------------------------------------
1 file changed, 58 deletions(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 3ecbd1b..a67b330 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -358,7 +358,6 @@ class CliBase(object):
return False
return True
-
def run(self, args):
'''Run the action selected
@@ -366,63 +365,6 @@ class CliBase(object):
'''
# establish our actions instance
self.actions = self.cli_config['Actions'](self.config, self.output_results, self.logger)
- # check for seed update
- from sslfetch.connections import Connector
- connector_output = {
- 'info': self.logger.info,
- 'debug': self.logger.debug,
- 'error': self.logger.error,
- 'exception': self.logger.exception,
- 'warning': self.warning_output,
- 'kwargs-info': {},
- 'kwargs-debug': {},
- 'kwargs-error': {},
- 'kwargs-exception': {},
- 'kwargs-warning': {},
- }
- fetcher = Connector(connector_output, None, "Gentoo Keys")
- successes = []
- up_to_date = True
- categories = list(self.config.defaults['seeds'])
- '''Attemp to download seed and seed.sig files for each available category'''
- for category in categories:
- filepath = self.config.defaults['seedsdir'] + "/" + category + ".seeds"
- timestamp_path = filepath + ".timestamp"
- url = self.config.defaults['seedurls'][category]
- success, signedfile, timestamp = fetcher.fetch_file(
- url, filepath, timestamp_path)
- if timestamp != "":
- up_to_date = False
- successes.append(success)
- url += ".sig"
- filepath += ".sig"
- success, signedfile, timestamp = fetcher.fetch_file(
- url, filepath, timestamp_path)
- if timestamp != "":
- up_to_date = False
- successes.append(success)
- if False not in successes and not up_to_date:
- print("Seeds need to be updated")
- ack = None
- while ack not in ("y", "yes", "n", "no"):
- ack = py_input("Would you like to update the seeds now? (y/n) ").lower()
- if ack in ("y", "yes"):
- custom_args = copy.copy(args)
- for attr in GKEY._fields:
- if attr != "debug":
- custom_args.attr = None
- custom_args.category = None
- custom_args.action = "update-seed"
- print("Updating seeds")
- self.run(custom_args)
- elif False not in successes:
- print("Seeds are up to date")
- else:
-<<<<<<< HEAD
- print("Seed update check failed, check your internet connection.")
-=======
- print("Seed update check failed, check your internet connection.")
->>>>>>> b9e64a9... gkeys actions: Added automatic seeds,keys update capability
# run the action
func = getattr(self.actions, '%s'
% self.cli_config['Action_Map'][args.action]['func'])
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: f048645778033bed905ca391c93234dc9c880067
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 2 21:33:38 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:11 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=f0486457
gkeys/actions/py: Move the py_input & _unicode import to __init__.py
This way it is done once and can be re-used anywhere in the code.
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/__init__.py | 8 ++++++++
gkeys/gkeys/actions.py | 9 +--------
2 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/gkeys/gkeys/__init__.py b/gkeys/gkeys/__init__.py
index 05fc730..a1e901c 100644
--- a/gkeys/gkeys/__init__.py
+++ b/gkeys/gkeys/__init__.py
@@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
+import sys
from collections import OrderedDict
@@ -11,6 +12,13 @@ from gkeys.action_map import Action_Map, Available_Actions
__version__ = '0.2'
__license__ = 'GPLv2'
+if sys.version_info[0] >= 3:
+ py_input = input
+ _unicode = str
+else:
+ py_input = raw_input
+ _unicode = unicode
+
subdata = OrderedDict()
for cmd in Available_Actions:
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 71ed081..64d6123 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -15,18 +15,11 @@ from __future__ import print_function
import itertools
import os
-import sys
-
-if sys.version_info[0] >= 3:
- py_input = input
- _unicode = str
-else:
- py_input = raw_input
- _unicode = unicode
from collections import defaultdict
+from gkeys import _unicode, py_input
from gkeys.actionbase import ActionBase
from gkeys.gkey import GKEY
from gkeys.checks import SPECCHECK_SUMMARY, convert_pf, convert_yn
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 0a745d03d5dbfd1b6e31db92a5ce55aa33084c7a
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 2 21:40:21 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:11 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=0a745d03
gkeys/utils.py: Add get_ack function
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/utils.py | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/gkeys/gkeys/utils.py b/gkeys/gkeys/utils.py
index 64f11aa..f08acc1 100644
--- a/gkeys/gkeys/utils.py
+++ b/gkeys/gkeys/utils.py
@@ -39,6 +39,8 @@ try:
except AttributeError:
StringTypes = [str]
+Y_N = ("y", "yes", "n", "no")
+
def encoder(text, _encoding_):
return codecs.encode(text, _encoding_, 'replace')
@@ -161,6 +163,13 @@ def path(path_elements):
return pathname
+def get_ack(prompt_msg, accepted=Y_N):
+ ack = None
+ while ack not in accepted:
+ ack = py_input(prompt_msg).lower()
+ return ack
+
+
if __name__ == '__main__':
import doctest
doctest.testmod(sys.modules[__name__])
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: c63848f59c5f960c3e7cd82ed1f5ff1efe2870ba
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 15:25:13 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:12 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=c63848f5
gkeys actionbase.py: Update _set_category for the new keyrings config
All keyings locations can be set individually now
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/actionbase.py | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/gkeys/gkeys/actionbase.py b/gkeys/gkeys/actionbase.py
index 23b7161..737c9d6 100644
--- a/gkeys/gkeys/actionbase.py
+++ b/gkeys/gkeys/actionbase.py
@@ -80,13 +80,12 @@ class ActionBase(object):
def _set_category(self, cat):
- keyring = self.config.get_key('keyring')
- if not keyring:
+ catdir = self.config.get_key('keyrings', cat)
+ if not catdir:
raise Exception("No keyring set.")
if not cat:
raise Exception("No category set.")
self.category = cat
- catdir = os.path.join(keyring, cat)
self.logger.debug(_unicode("ACTIONS: _set_category; catdir = %s") % catdir)
self._set_trust(cat)
return catdir
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 691285b64caf4497d693462751d81a74934b36a1
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 2 21:52:17 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:11 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=691285b6
gkeys/fetch.py: New Fetch class
Add sig_path assignment, makes the sig_path available to class instance holders like _verify()
Use the lack of a returned timestamp to abort the process
If the main file is not downloaded, then don't bother looking for a signature.
This allows a verify action to exit smoothly.
There is a message about the reason for not downloading, so is not hidden.
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/fetch.py | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)
diff --git a/gkeys/gkeys/fetch.py b/gkeys/gkeys/fetch.py
new file mode 100644
index 0000000..365124a
--- /dev/null
+++ b/gkeys/gkeys/fetch.py
@@ -0,0 +1,63 @@
+
+from sslfetch.connections import Connector, get_timestamp
+from gkeys import _unicode
+
+EXTENSIONS = ['.sig', '.asc', '.gpg','.gpgsig']
+
+
+class Fetch(object):
+
+ def __init__(self, logger):
+ self.logger = logger
+ connector_output = {
+ 'info': self.logger.info,
+ 'debug': self.logger.debug,
+ 'error': self.logger.error,
+ 'exception': self.logger.exception,
+ # we want any warnings to be printed to the terminal
+ # so assign it to logging.error
+ 'warning': self.logger.error,
+ 'kwargs-info': {},
+ 'kwargs-debug': {},
+ 'kwargs-error': {},
+ 'kwargs-exception': {},
+ 'kwargs-warning': {},
+ }
+ self.fetcher = Connector(connector_output, None, "Gentoo Keys")
+ self.sig_path = None
+
+ def fetch_url(self, url, filepath, signature=True, timestamp=None, timestamp_path=None, climit=60):
+ if not timestamp_path:
+ timestamp_path = filepath + ".timestamp"
+ messages = []
+ self.logger.debug(
+ _unicode("FETCH: fetching %s signed file ") % filepath)
+ self.logger.debug(
+ _unicode("FETCH: timestamp path: %s") % timestamp_path)
+ success, signedfile, timestamp = self.fetcher.fetch_file(
+ url, filepath, timestamp_path, climit=climit, timestamp=timestamp)
+ if timestamp is '':
+ self.logger.debug("Fetch.fetch_url; file not downloaded")
+ return (False, messages)
+ elif not success:
+ messages.append(_unicode("File %s cannot be retrieved.") % filepath)
+ elif '.' + url.rsplit('.', 1)[1] not in EXTENSIONS:
+ self.logger.debug("File %s successfully retrieved.", filepath)
+ if signature:
+ success_fetch = False
+ for ext in EXTENSIONS:
+ sig_path = filepath + ext
+ signature = url + ext
+ self.logger.debug(
+ _unicode("FETCH: fetching %s signature ")
+ % signature)
+ success_fetch, sig, timestamp = self.fetcher.fetch_file(signature, sig_path)
+ if success_fetch:
+ self.sig_path = sig_path
+ break
+ else:
+ signature = None
+ return (success, messages)
+
+ def verify_cycle(self, tpath, climit=60):
+ return self.fetcher.verify_cycle(tpath, climit=60)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 57fc6696d44df48c6a72fd0c1e08741e11f048e8
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 15:28:24 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:13 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=57fc6696
gkeys keyhandler: Additional debug logging
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/keyhandler.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/keyhandler.py b/gkeys/gkeys/keyhandler.py
index 0a02c22..06f4b86 100644
--- a/gkeys/gkeys/keyhandler.py
+++ b/gkeys/gkeys/keyhandler.py
@@ -75,10 +75,11 @@ class KeyHandler(object):
def determine_keys(self, args, default_cat=None):
+ self.logger.debug(_unicode("KeyHandler: determine_keys; args.category = %s"), args.category or default_cat)
seeds = self.seedhandler.load_category(args.category or default_cat)
keyring = self.config.get_key('keyring')
catdir = os.path.join(keyring, args.category)
- self.logger.debug(_unicode("KeyHandler: determine_keys; catdir = %s") % catdir)
+ self.logger.debug(_unicode("KeyHandler: determine_keys; catdir = %s"), catdir)
kwargs = self.seedhandler.build_gkeydict(args)
return (catdir, seeds.list(**kwargs))
@@ -88,10 +89,12 @@ class KeyHandler(object):
results = {}
search_args = [x for x in KEY_OPTIONS if getattr(args, x)]
if args.category:
+ self.logger.debug(_unicode("KeyHandler: key_search; args.category = %s"), args.category)
self.seedhandler.load_category(args.category)
results[args.category] = self.seedhandler.key_search(args, search_args)
else:
for cat in sorted(self.config.get_key('seeds')):
+ self.logger.debug(_unicode("KeyHandler: key_search; cat = %s"), cat)
self.seedhandler.load_category(cat)
found = self.seedhandler.key_search(args, search_args)
if found:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: eed71e755fca18ebc271b3a3b72e70c0822f55d2
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 2 21:57:23 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:12 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=eed71e75
gkeys: Implement use of the new Fetch class
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/actions.py | 51 +++++-------------------------------
gkeys/gkeys/base.py | 6 +++++
gkeys/gkeys/seedhandler.py | 64 ++++++++++++++++++++++++++++++++++------------
3 files changed, 61 insertions(+), 60 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 64d6123..0f03880 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -29,6 +29,7 @@ from snakeoil.demandload import demandload
demandload(
"gkeys.base:Args",
+ "gkeys.fetch:Fetch",
"json:load",
)
@@ -718,9 +719,7 @@ class Actions(ActionBase):
def installed(self, args):
'''Lists the installed key directories'''
- if args.category:
- keyring = self.config.get_key('keyring')
- else:
+ if not args.category:
return (False, ["Please specify a category."])
catdir = self._set_category(args.category)
self.logger.debug("ACTIONS: installed; catdir = %s" % catdir)
@@ -818,45 +817,10 @@ class Actions(ActionBase):
climit = 0
sig_path = None
if isurl:
- from sslfetch.connections import Connector
- connector_output = {
- 'info': self.logger.info,
- 'debug': self.logger.debug,
- 'error': self.logger.error,
- 'exception': self.logger.exception,
- # we want any warnings to be printed to the terminal
- # so assign it to logging.error
- 'warning': self.logger.error,
- 'kwargs-info': {},
- 'kwargs-debug': {},
- 'kwargs-error': {},
- 'kwargs-exception': {},
- 'kwargs-warning': {},
- }
- fetcher = Connector(connector_output, None, "Gentoo Keys")
- self.logger.debug(
- _unicode("ACTIONS: verify; fetching %s signed file ") % filepath)
- self.logger.debug(
- _unicode("ACTIONS: verify; timestamp path: %s") % timestamp_path)
- success, signedfile, timestamp = fetcher.fetch_file(
- url, filepath, timestamp_path, climit=climit)
- if not success:
- messages.append(_unicode("File %s cannot be retrieved.") % filepath)
- elif '.' + url.rsplit('.', 1)[1] not in EXTENSIONS:
- if not signature:
- success_fetch = False
- for ext in EXTENSIONS:
- sig_path = filepath + ext
- if isurl:
- signature = url + ext
- self.logger.debug(
- _unicode("ACTIONS: verify; fetching %s signature ")
- % signature)
- success_fetch, sig, timestamp = fetcher.fetch_file(signature, sig_path)
- if success_fetch:
- break
- else:
- signature = None
+ fetcher = Fetch(self.logger)
+ success, msgs = fetcher.fetch_url(url, filepath, signature, timestamp_path=timestamp_path,
+ climit=climit)
+ messages.extend(msgs)
elif signature is not None and os.path.exists(signature):
sig_path = signature
else:
@@ -864,9 +828,8 @@ class Actions(ActionBase):
self.logger.debug(
_unicode("ACTIONS: verify; local file %s") % filepath)
success = os.path.isfile(filepath)
- if (not signature
+ if (success and not signature
and '.' + filepath.rsplit('.', 1)[-1] not in EXTENSIONS):
- success_fetch = False
for ext in EXTENSIONS:
sig_path = filepath + ext
sig_path = os.path.abspath(sig_path)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index a67b330..2de1493 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -130,6 +130,12 @@ class CliBase(object):
action='store_true', default=False,
help='Use CASE matching in searches')
+ @staticmethod
+ def _option_fetcthonly(parser=None):
+ parser.add_argument('--fetchonly',
+ dest='fetchonly', default=False,
+ help="Only fetch the seed file if there is an update or doesn't exist locally")
+
@staticmethod
def _option_file(parser=None):
parser.add_argument('-F', '--file', dest='filename', default=None,
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index afe5971..cb082ef 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -17,12 +17,15 @@ import re
from snakeoil.demandload import demandload
from gkeys.gkey import GKEY
+from gkeys.lock import LockDir
from gkeys.seed import Seeds, decoder
demandload(
"json:load",
"gkeys.exception:UpdateDbError",
"gkeys.fileops:ensure_dirs",
+ "gkeys.fetch:Fetch",
+ "sslfetch.connections:get_timestamp",
)
@@ -34,6 +37,8 @@ class SeedHandler(object):
self.fingerprint_re = re.compile('[0-9A-Fa-f]{40}')
self.finerprint_re2 = re.compile('[0-9A-Fa-f]{4}( [0-9A-Fa-f]{4}){9}')
self.seeds = None
+ self.seedsdir_lock = None
+ self.update_lock = None
def new(self, args, checkgkey=False):
@@ -70,10 +75,10 @@ class SeedHandler(object):
if attr in GKEY._fields:
keyinfo[attr] = None
return keyinfo
-
+
def compare_seeds(self, seeds1, seeds2) :
'''Compares two seed lists and returns the differences
-
+
@param seeds1: set of seeds to be compared
@param seeds2: set of seeds to be compared
@return added_gkeys: list of keys that are included in seed2 but not seed1
@@ -98,7 +103,7 @@ class SeedHandler(object):
if old_gkey not in new_gkeys and old_gkey not in old_changed_gkeys:
removed_gkeys.append(old_gkey)
else:
- added_gkeys = new_gkeys
+ added_gkeys = new_gkeys
return(added_gkeys, changed_gkeys, removed_gkeys)
def compare_seeds(self, seeds1, seeds2) :
@@ -181,7 +186,8 @@ class SeedHandler(object):
with open(gkey_path, 'r') as fileseed:
seed = load(fileseed)
except IOError as error:
- self.logger.debug("SeedHandler: load_category; IOError loading seed file %s." % gkey_path)
+ self.logger.debug("SeedHandler: load_category; IOError loading seed file %s."
+ % gkey_path)
self.logger.debug("Error was: %s" % str(error))
if seed:
for nick in sorted(seed):
@@ -206,6 +212,7 @@ class SeedHandler(object):
'''Fetch new seed files
@param seeds: list of seed nicks to download
+ @param args: argparse namespace instance
@param verified_dl: Function pointer to the Actions.verify()
instance needed to do the download and verification
'''
@@ -224,20 +231,45 @@ class SeedHandler(object):
except KeyError:
pass
succeeded = []
- seedsdir = self.config.get_key('seedsdir')
+ seedsdir = os.path.join(self.config.get_key('seedsdir'))
+ updatedir = os.path.join(seedsdir, "__updates__")
mode = int(self.config.get_key('permissions', 'directories'),0)
- ensure_dirs(seedsdir, mode=mode)
+ ensure_dirs(updatedir, mode=mode)
+ self.update_lock = LockDir(updatedir)
+ self.update_lock.write_lock()
+ fetcher = Fetch(self.logger)
for (seed, url, filepath) in urls:
- verify_info = self.config.get_key('verify-seeds', seed).split()
- args.category = verify_info[0]
- args.nick = verify_info[1]
- args.filename = url
- args.signature = None
- args.timestamp = True
- args.destination = filepath
- verified, messages_ = verified_dl(args)
- succeeded.append(verified)
- messages.append(messages_)
+ tmppath = os.path.join(updatedir, os.path.split(filepath)[-1])
+ # use the real timestamp file for the dl timestamp
+ tpath = filepath + ".timestamp"
+ # verify the re-fetch cycle timer
+ if fetcher.verify_cycle(tpath, climit=60):
+ timestamp = get_timestamp(filepath + ".timestamp")
+ success, msgs = fetcher.fetch_url(url, tmppath, timestamp=timestamp)
+ messages.extend(msgs)
+ if success:
+ verify_info = self.config.get_key('verify-seeds', seed).split()
+ args.category = verify_info[0]
+ args.nick = verify_info[1]
+ args.filename = url
+ args.signature = tmppath + ".timestamp"
+ #args.timestamp = True
+ args.destination = tmppath
+ verified, messages_ = verified_dl(args)
+ messages.append(messages_)
+ if verified and not args.fetchonly:
+ self.seedsdir_lock = LockDir(seedsdir)
+ if updateseeds(tmppath, filepath) and updateseeds(args.signature, tpath):
+ self.logger.info("Updated seed file...: %s ... OK" % (filepath))
+ succeeded.append(verified)
+ else:
+ self.logger.info("Updating seed file...: %s ... Failed" % (filepath))
+ succeeded.append(False)
+ self.seedsdir_lock.unlock()
+ else:
+ # sha512sum the 2 files
+ pass
+ self.update_lock.unlock()
return (succeeded, messages)
def check_gkey(self, args):
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: dfdfd7ccde868f2069de44bb5c3331482177b88d
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 2 21:50:32 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:11 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=dfdfd7cc
gkeys/fileops.py: Add new updateseeds function
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/fileops.py | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/gkeys/gkeys/fileops.py b/gkeys/gkeys/fileops.py
index 5b89ea8..f6341ca 100644
--- a/gkeys/gkeys/fileops.py
+++ b/gkeys/gkeys/fileops.py
@@ -1,4 +1,6 @@
import os
+import shutil
+
from snakeoil.osutils import (ensure_dirs as snakeoil_ensure_dirs)
@@ -61,3 +63,29 @@ def updatefiles(config, logger, category=None, filename = None):
raise
return False
return True
+
+
+def updateseeds(config, logger, src, dst):
+ if not src or not dst:
+ logger.error("MAIN: updateseeds(); source and/or destination not supplied")
+ return False
+ try:
+ if os.path.exists(dst):
+ logger.debug(
+ "MAIN: updateseeds(); Removing 'old' seed file: %s"
+ % dst)
+ os.unlink(dst)
+ if os.path.exists(src):
+ logger.debug(
+ "MAIN: updateseeds(); Moving new seed file to: "
+ "%s" % dst)
+ shutil.move(src, dst)
+ except IOError:
+ raise
+ return False
+ return True
+
+
+def rm_files(config, logger, files, lock=None):
+ pass
+
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 8482e689c5000493655cfbdfc38d90b389319dc2
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 15:25:56 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:12 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=8482e689
gkeys actions.py: Additional debug logging
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/actions.py | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index f9bba7a..e480613 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -284,6 +284,7 @@ class Actions(ActionBase):
kwargs = self.seedhandler.build_gkeydict(args)
keyresults = seeds.list(**kwargs)
for key in sorted(keyresults):
+ self.logger.debug("ACTIONS: listkey; key/keydir:" + str(key.keydir))
if args.fingerprint:
result = self.gpg.list_keys(key.keydir, kwargs['fingerprint'])
else:
@@ -775,6 +776,7 @@ class Actions(ActionBase):
self.logger.debug(_unicode(
"ACTIONS: verify; keyring category not specified, using default: %s")
% args.category)
+ self.logger.debug(_unicode("ACTIONS: verify; keyring category: %s"), args.category)
keys = self.seedhandler.load_category(args.category)
if not keys:
return (False, ['No installed keys found, try installkey action.'])
@@ -788,6 +790,7 @@ class Actions(ActionBase):
args.nick = self.config.get_key('verify-nick')
messages.append(_unicode("Using config defaults..: %s %s")
% (args.category, args.nick))
+ self.logger.debug(_unicode("ACTIONS: verify; going recursive... %s, %s"), args.category, args.nick)
self.verify_recursion = True
return self.verify(args, messages)
elif self.verify_recursion:
@@ -808,6 +811,7 @@ class Actions(ActionBase):
timestamp_path = None
isurl = success = verified = False
if filepath.startswith('http'):
+ self.logger.debug(_unicode("ACTIONS: _verify; supplied url, using current directory ./%s"), filepath)
isurl = True
url = filepath
filepath = args.destination
@@ -824,6 +828,8 @@ class Actions(ActionBase):
else:
climit = 0
sig_path = None
+ get_sig = signature is not None
+ self.logger.debug(_unicode("ACTIONS: _verify; supplied signature %s"), signature)
if isurl:
fetcher = Fetch(self.logger)
success, msgs = fetcher.fetch_url(url, filepath, signature, timestamp_path=timestamp_path,
@@ -851,7 +857,7 @@ class Actions(ActionBase):
sig_path = None
elif signature:
sig_path = os.path.abspath(signature)
- self.logger.info("Verifying file...")
+ self.logger.info("Verifying file... %s, %s, %s", key, sig_path, filepath)
verified = False
results = self.gpg.verify_file(key, sig_path, filepath)
keyid = key.keyid[0]
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 80a59eed95c17a8702da10f54f9b6fdf8e90a880
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 2 21:52:53 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:11 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=80a59eed
gkeys/lock.py: New LockDir class
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/lock.py | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/gkeys/gkeys/lock.py b/gkeys/gkeys/lock.py
new file mode 100644
index 0000000..5614335
--- /dev/null
+++ b/gkeys/gkeys/lock.py
@@ -0,0 +1,31 @@
+
+import os
+
+from snakeoil import fileutils
+from snakeoil import osutils
+from catalyst.fileops import ensure_dirs
+
+
+LockInUse = osutils.LockException
+
+
+class LockDir(object):
+ """An object that creates locks inside dirs"""
+
+ def __init__(self, lockdir):
+ #self.gid = 250
+ self.lockfile = os.path.join(lockdir, '.gkeys_lock')
+ ensure_dirs(lockdir)
+ fileutils.touch(self.lockfile, mode=0o664)
+ #os.chown(self.lockfile, -1, self.gid)
+ self.lock = osutils.FsLock(self.lockfile)
+
+ def read_lock(self):
+ self.lock.acquire_read_lock()
+
+ def write_lock(self):
+ self.lock.acquire_write_lock()
+
+ def unlock(self):
+ # Releasing a write lock is the same as a read lock.
+ self.lock.release_write_lock()
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 6a3a033243058a2724bc6c8d8cb2b2bd6cf73109
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 4 23:02:12 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:12 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=6a3a0332
gkeys actions.py: Add verify() recursion detection and exit
Handles the case of incorrect configuration or keyring problems.
Reported by irc user "puchu" in #gentoo-keys.
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/actionbase.py | 1 +
gkeys/gkeys/actions.py | 10 +++++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/actionbase.py b/gkeys/gkeys/actionbase.py
index 3993be4..23b7161 100644
--- a/gkeys/gkeys/actionbase.py
+++ b/gkeys/gkeys/actionbase.py
@@ -43,6 +43,7 @@ class ActionBase(object):
self._keyhandler = None
self._gpg = None
self.category = None
+ self.verify_recursion = False
@property
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 0f03880..f9bba7a 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -779,7 +779,7 @@ class Actions(ActionBase):
if not keys:
return (False, ['No installed keys found, try installkey action.'])
key = self.seedhandler.seeds.nick_search(args.nick)
- if not key:
+ if not key and not self.verify_recursion:
if args.nick:
messages.append(_unicode(
"Failed to find.........: %s in category: %s")
@@ -788,7 +788,15 @@ class Actions(ActionBase):
args.nick = self.config.get_key('verify-nick')
messages.append(_unicode("Using config defaults..: %s %s")
% (args.category, args.nick))
+ self.verify_recursion = True
return self.verify(args, messages)
+ elif self.verify_recursion:
+ messages.append(_unicode(
+ "Failed to find.........: %s in category: %s")
+ % (args.category, args.nick))
+ messages.append(" ...giving up")
+ self.verify_recursion = False
+ return (False, ['No installed verification keys found, try installkey action.'])
return self._verify(args, key, messages)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: a7e1d29148a3e2a2718db101797383b79f2adda6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 15:29:01 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:13 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=a7e1d291
gkeys log.py: Reduce the frequency of new log files, add a timestamp message
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/log.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/log.py b/gkeys/gkeys/log.py
index 4ea5cb1..6916d97 100644
--- a/gkeys/gkeys/log.py
+++ b/gkeys/gkeys/log.py
@@ -51,7 +51,7 @@ def set_logger(namespace=None, logpath='', level=None,
ensure_dirs(logpath, mode=dirmode, fatal=True)
os.umask(filemask)
logname = os.path.join(logpath,
- '%s-%s.log' % (namespace, time.strftime('%Y%m%d-%H:%M')))
+ '%s-%s.log' % (namespace, time.strftime('%Y%m%d-%H')))
file_handler = logging.FileHandler(logname)
if level:
file_handler.setLevel(log_levels[level])
@@ -66,7 +66,7 @@ def set_logger(namespace=None, logpath='', level=None,
#Console_handler.setFormatter(formatter)
logger.addHandler(Console_handler)
#print "File logger suppose to be initialized", logger, Console_handler
- logger.debug("Loggers initialized")
+ logger.debug("==== Loggers initialized ==== time: %s", time.strftime('%Y%m%d-%H:%M:%S') )
return logger
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 8c0866aa69f3b0c600d1f2f9ad7942f563409f4a
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 18:50:41 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:14 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=8c0866aa
gkeys actions.py: Exit smoothly if fetch failed to get a new file
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/actions.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index fd92a77..539ff26 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -834,6 +834,9 @@ class Actions(ActionBase):
climit=climit)
sig_path = fetcher.sig_path
messages.extend(msgs)
+ if not success:
+ self.logger.debug(_unicode("ACTIONS: _verify; File not downloaded, exiting... %s"), filepath)
+ return (False, messages)
elif signature is not None and os.path.exists(signature):
sig_path = signature
else:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 9aae3603e6785ac216e97c867c09980eefedd7b6
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 20:02:29 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:14 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=9aae3603
gkeys: Update version and authors
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/__init__.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/__init__.py b/gkeys/gkeys/__init__.py
index a1e901c..dc19604 100644
--- a/gkeys/gkeys/__init__.py
+++ b/gkeys/gkeys/__init__.py
@@ -9,7 +9,7 @@ from collections import OrderedDict
from gkeys.action_map import Action_Map, Available_Actions
-__version__ = '0.2'
+__version__ = '0.3'
__license__ = 'GPLv2'
if sys.version_info[0] >= 3:
@@ -32,5 +32,5 @@ the GPG keys used for validation on users and Gentoo's infrastracutre servers.
Gentoo Keys is able to verify GPG keys used for Gentoo's release media,
such as installation CD's, Live DVD's, packages and other GPG signed documents.''',
'sub-cmds': subdata,
- 'authors': ['Brian Dolbec <dolsen@gentoo.org>', 'Pavlos Ratis <dastergon@gentoo.org>'],
+ 'authors': ['Brian Dolbec <dolsen@gentoo.org>', 'Pavlos Ratis <dastergon@gentoo.org>', 'aeroniero33 <justthisthing@gmail.com>'],
}
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 33625064ee63796b6b02ca9f200d3d4ff1707ff9
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 15:31:20 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:13 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=33625064
gkeys lib.py: Additional debug logging
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/actions.py | 2 --
gkeys/gkeys/lib.py | 7 +++++--
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index e480613..2fe29fb 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -827,8 +827,6 @@ class Actions(ActionBase):
climit = 60
else:
climit = 0
- sig_path = None
- get_sig = signature is not None
self.logger.debug(_unicode("ACTIONS: _verify; supplied signature %s"), signature)
if isurl:
fetcher = Fetch(self.logger)
diff --git a/gkeys/gkeys/lib.py b/gkeys/gkeys/lib.py
index a8529f4..7928347 100644
--- a/gkeys/gkeys/lib.py
+++ b/gkeys/gkeys/lib.py
@@ -88,8 +88,8 @@ class GkeysGPG(GPG):
def set_keydir(self, keydir, task, fingerprint=True, reset=True):
- self.logger.debug("basedir: %s, keydir: %s" % (self.basedir, keydir))
self.keydir = pjoin(self.basedir, keydir)
+ self.logger.debug("GkeysGPG.set_keydir; keydir: %s, task: %s, self.keydir: %s" % (keydir, task, self.keydir))
self.task = task
if reset:
self.config.options['tasks'][task] = self.config.defaults['tasks'][task][:]
@@ -98,7 +98,7 @@ class GkeysGPG(GPG):
task_value.append('--fingerprint')
task_value.extend(['--homedir', self.keydir])
self.config.options['tasks'][task].extend(task_value)
- self.logger.debug("set_keydir: New task options: %s" %str(self.config.options['tasks'][task]))
+ self.logger.debug("GkeysGPG.set_keydir; New task options: %s" %str(self.config.options['tasks'][task]))
return
@@ -147,6 +147,8 @@ class GkeysGPG(GPG):
fingerprint, gkey.name))
result = self.runGPG(task='recv-keys', inputfile=fingerprint)
self.logger.info('GPG return code: ' + str(result.returncode))
+ self.logger.debug("LIB: add_key; fingerprint: %s. type: %s", fingerprint, type(fingerprint))
+ self.logger.debug("LIB: add_key; gkey.keys: %s. type: %s", gkey.keys, [type(key) for key in gkey.keys])
if result.fingerprint in gkey.keys:
result.failed = False
message = "Fingerprints match... Import successful: "
@@ -254,6 +256,7 @@ class GkeysGPG(GPG):
self.logger.debug("LIB: list_keys(), invalid keydir parameter: %s"
% str(keydir))
return []
+ self.logger.debug("LIB: list_keys(), keydir parameter: %s"% str(keydir))
if fingerprint:
task = 'list-key'
target = fingerprint
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: 653d1b0c231ee789a294d040a67cef141bb11cc0
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 17:51:36 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:13 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=653d1b0c
gkeys seedhandler.py: Simplify code, let verify() handle fetching
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/seedhandler.py | 68 ++++++++++++++++++++++++----------------------
1 file changed, 35 insertions(+), 33 deletions(-)
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py
index cb082ef..a7bfbaa 100644
--- a/gkeys/gkeys/seedhandler.py
+++ b/gkeys/gkeys/seedhandler.py
@@ -24,6 +24,7 @@ demandload(
"json:load",
"gkeys.exception:UpdateDbError",
"gkeys.fileops:ensure_dirs",
+ "gkeys.fileops:updateseeds",
"gkeys.fetch:Fetch",
"sslfetch.connections:get_timestamp",
)
@@ -170,9 +171,10 @@ class SeedHandler(object):
if category == 'sign':
catdir = self.config.get_key('sign-keydir')
else:
- keyrings = self.config.get_key('keyring')
- catdir = os.path.join(keyrings, category)
- self.logger.debug("SeedHandler: load_category; catdir = %s" % catdir)
+ #keyrings = self.config.get_key('keyring')
+ #catdir = os.path.join(keyrings, category)
+ catdir = self.config.get_key('keyrings', category)
+ self.logger.debug("SeedHandler: load_category; catdir = %s", catdir)
try:
if not nicks:
nicks = os.listdir(catdir)
@@ -185,11 +187,14 @@ class SeedHandler(object):
try:
with open(gkey_path, 'r') as fileseed:
seed = load(fileseed)
+ self.logger.debug("SeedHandler: load_category; loaded seed file %s.",
+ gkey_path)
except IOError as error:
- self.logger.debug("SeedHandler: load_category; IOError loading seed file %s."
- % gkey_path)
+ self.logger.debug("SeedHandler: load_category; IOError loading seed file %s.",
+ gkey_path)
self.logger.debug("Error was: %s" % str(error))
if seed:
+ self.logger.debug("SeedHandler: load_category; processing seeds: %s", seed)
for nick in sorted(seed):
key = seed[nick]
# GKEY class change auto-update
@@ -206,6 +211,7 @@ class SeedHandler(object):
self.logger.debug("SeedHandler: load_category; OSError for %s" % catdir)
self.logger.exception("Error was: %s" % str(error))
self.seeds = seeds
+ self.logger.debug("SeedHandler: load_category; seeds loaded: %s", seeds)
return seeds
def fetch_seeds(self, seeds, args, verified_dl=None):
@@ -231,44 +237,40 @@ class SeedHandler(object):
except KeyError:
pass
succeeded = []
- seedsdir = os.path.join(self.config.get_key('seedsdir'))
+ seedsdir = os.path.dirname(self.config.get_key('seeds', seeds))
updatedir = os.path.join(seedsdir, "__updates__")
mode = int(self.config.get_key('permissions', 'directories'),0)
ensure_dirs(updatedir, mode=mode)
self.update_lock = LockDir(updatedir)
self.update_lock.write_lock()
- fetcher = Fetch(self.logger)
for (seed, url, filepath) in urls:
tmppath = os.path.join(updatedir, os.path.split(filepath)[-1])
# use the real timestamp file for the dl timestamp
tpath = filepath + ".timestamp"
- # verify the re-fetch cycle timer
- if fetcher.verify_cycle(tpath, climit=60):
- timestamp = get_timestamp(filepath + ".timestamp")
- success, msgs = fetcher.fetch_url(url, tmppath, timestamp=timestamp)
- messages.extend(msgs)
- if success:
- verify_info = self.config.get_key('verify-seeds', seed).split()
- args.category = verify_info[0]
- args.nick = verify_info[1]
- args.filename = url
- args.signature = tmppath + ".timestamp"
- #args.timestamp = True
- args.destination = tmppath
- verified, messages_ = verified_dl(args)
- messages.append(messages_)
- if verified and not args.fetchonly:
- self.seedsdir_lock = LockDir(seedsdir)
- if updateseeds(tmppath, filepath) and updateseeds(args.signature, tpath):
- self.logger.info("Updated seed file...: %s ... OK" % (filepath))
- succeeded.append(verified)
- else:
- self.logger.info("Updating seed file...: %s ... Failed" % (filepath))
- succeeded.append(False)
- self.seedsdir_lock.unlock()
+ verify_info = self.config.get_key('verify-seeds', seed).split()
+ args.category = verify_info[0]
+ args.nick = verify_info[1]
+ args.filename = url
+ args.signature = tmppath + ".sig"
+ args.timestamp = tpath
+ args.destination = tmppath
+ args.fetchonly = False
+ verified, messages_ = verified_dl(args)
+ messages.append(messages_)
+ if verified and not args.fetchonly:
+ self.seedsdir_lock = LockDir(seedsdir)
+ if (updateseeds(self.config, self.logger, tmppath, filepath) and
+ updateseeds(self.config, self.logger, args.signature, tpath)
+ ):
+ self.logger.info("Updated seed file...: %s ... OK" % (filepath))
+ succeeded.append(verified)
else:
- # sha512sum the 2 files
- pass
+ self.logger.info("Updating seed file...: %s ... Failed" % (filepath))
+ succeeded.append(False)
+ self.seedsdir_lock.unlock()
+ else:
+ # sha512sum the 2 files
+ pass
self.update_lock.unlock()
return (succeeded, messages)
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: d2b30942d665fd5a79cef5a933904824273928e7
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 17:49:59 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:13 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=d2b30942
gkeys actions.py: Assign sig_path from fetcher
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/actions.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 2fe29fb..fd92a77 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -832,6 +832,7 @@ class Actions(ActionBase):
fetcher = Fetch(self.logger)
success, msgs = fetcher.fetch_url(url, filepath, signature, timestamp_path=timestamp_path,
climit=climit)
+ sig_path = fetcher.sig_path
messages.extend(msgs)
elif signature is not None and os.path.exists(signature):
sig_path = signature
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 5:23 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 5:23 UTC (permalink / raw
To: gentoo-commits
commit: a297c693402827cec3c5c1740b4559b040903030
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 5 17:00:59 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 05:22:13 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=a297c693
gkeys base.py: Fix fetchonly typo and add to Args class
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/base.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 2de1493..8aff933 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -63,6 +63,7 @@ class Args(object):
self.status = False
self.timestamp = None
self.uid = None
+ self.fetchonly = None
class CliBase(object):
@@ -131,7 +132,7 @@ class CliBase(object):
help='Use CASE matching in searches')
@staticmethod
- def _option_fetcthonly(parser=None):
+ def _option_fetchonly(parser=None):
parser.add_argument('--fetchonly',
dest='fetchonly', default=False,
help="Only fetch the seed file if there is an update or doesn't exist locally")
@@ -375,6 +376,7 @@ class CliBase(object):
func = getattr(self.actions, '%s'
% self.cli_config['Action_Map'][args.action]['func'])
self.logger.debug('Main: run; Found action: %s' % args.action)
+ self.logger.debug('Main: run; args: %s' % str(args.__dict__))
success, results = func(args)
if not results:
print("No results found. Check your configuration and that the",
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 15:10 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 15:10 UTC (permalink / raw
To: gentoo-commits
commit: dd966401553f4632f60cb673327b9446fb326654
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 7 14:47:46 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 14:47:46 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=dd966401
gkeys/base.py: Fix args.email test for gkeys-ldap
gkeys-ldap does not use the email arg.
Prevents:
File "/var/lib/gkeys/gentoo-keys/gkeys/gkeys/base.py", line 330, in setup
if args.email:
AttributeError: 'Namespace' object has no attribute 'email'
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/base.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/base.py b/gkeys/gkeys/base.py
index 8aff933..48c8a4d 100644
--- a/gkeys/gkeys/base.py
+++ b/gkeys/gkeys/base.py
@@ -327,7 +327,7 @@ class CliBase(object):
if args.config:
self.config.defaults['config'] = args.config
self.config.defaults['configdir'] = os.path.dirname(args.config)
- if args.email:
+ if getattr(args, 'email', False):
configs = [self.config.defaults['config'], os.path.abspath(os.path.join(self.config.defaults['configdir'], "email.conf"))]
self.config.read_config(configs)
else:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-07-07 15:10 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-07-07 15:10 UTC (permalink / raw
To: gentoo-commits
commit: c311c0ad71c73b0af69c6a0e130d92b824d98322
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 7 15:08:28 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Jul 7 15:08:28 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=c311c0ad
gkeys/lock.py: Fix missed import namespace edit
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org>
gkeys/gkeys/lock.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeys/gkeys/lock.py b/gkeys/gkeys/lock.py
index 5614335..3e37103 100644
--- a/gkeys/gkeys/lock.py
+++ b/gkeys/gkeys/lock.py
@@ -3,7 +3,7 @@ import os
from snakeoil import fileutils
from snakeoil import osutils
-from catalyst.fileops import ensure_dirs
+from gkeys.fileops import ensure_dirs
LockInUse = osutils.LockException
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-08-15 1:05 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-08-15 1:05 UTC (permalink / raw
To: gentoo-commits
commit: 0b2edc8ff515b404efd8284b3b961b9ffdb4223e
Author: Brian Dolbec dolsen <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 15 01:04:22 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Aug 15 01:04:22 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=0b2edc8f
gkeys checks.py: Update glep 63 specs
gkeys/gkeys/checks.py | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index 7610d70..8119395 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -51,18 +51,17 @@ SPEC_STAT = ['', '','', False, False, False, False, False, False, False, False,
# and approved options, limits
TEST_SPEC = {
'bits': {
- 'DSA': 2048,
'RSA': 2048,
},
- 'expire': 5 * 365, # in days
+ 'expire': 900, # in days
'subkeys': { # warning/error mode
'encrypt': {
'mode': 'notice',
- 'expire': 5 * 365,
+ 'expire': 900,
},
'sign': {
'mode': 'error',
- 'expire': 5 * 365,
+ 'expire': 900,
},
},
'algorithms': ['DSA', 'RSA', '1', '2', '3', '17'],
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-08-15 1:51 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-08-15 1:51 UTC (permalink / raw
To: gentoo-commits
commit: 2bdf8c0c827cf024c4e26f9167ed4a6573625601
Author: Brian Dolbec dolsen <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 15 01:47:19 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Aug 15 01:47:19 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=2bdf8c0c
gkeys checks.py: Remove missed DSA algorithm entries
Move bitlength calc within the primary if,
gkeys/gkeys/checks.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeys/gkeys/checks.py b/gkeys/gkeys/checks.py
index 8119395..8da6414 100644
--- a/gkeys/gkeys/checks.py
+++ b/gkeys/gkeys/checks.py
@@ -64,7 +64,7 @@ TEST_SPEC = {
'expire': 900,
},
},
- 'algorithms': ['DSA', 'RSA', '1', '2', '3', '17'],
+ 'algorithms': ['RSA', '1', '2', '3'],
'versions': ['4'],
'qualified_id': '@gentoo.org',
}
@@ -302,8 +302,8 @@ class KeyChecks(object):
def _test_bits(self, data, stats):
- bits = int(data.keylength)
if data.pubkey_algo in TEST_SPEC['algorithms']:
+ bits = int(data.keylength)
if bits >= TEST_SPEC['bits'][ALGORITHM_CODES[data.pubkey_algo]]:
stats[SPEC_INDEX['bits']] = True
else:
^ permalink raw reply related [flat|nested] 145+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeys/gkeys/
@ 2018-08-15 16:15 Brian Dolbec
0 siblings, 0 replies; 145+ messages in thread
From: Brian Dolbec @ 2018-08-15 16:15 UTC (permalink / raw
To: gentoo-commits
commit: ac6e01e5646d5f6fdd14d65f43a785368e1d8b80
Author: Brian Dolbec dolsen <dolsen <AT> gentoo <DOT> org>
AuthorDate: Wed Aug 15 16:00:32 2018 +0000
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Wed Aug 15 16:13:53 2018 +0000
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=ac6e01e5
gkeys actions.py: Add unique devs pass/fail tracking to spec-check
This adds numbers tracking to identify which devs have passing keys
and which have only failing keys.
gkeys/gkeys/actions.py | 54 +++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 42 insertions(+), 12 deletions(-)
diff --git a/gkeys/gkeys/actions.py b/gkeys/gkeys/actions.py
index 539ff26..78faa9a 100644
--- a/gkeys/gkeys/actions.py
+++ b/gkeys/gkeys/actions.py
@@ -452,6 +452,8 @@ class Actions(ActionBase):
catdir, keyresults = self.keyhandler.determine_keys(args)
self.logger.debug(_unicode("ACTIONS: speccheck; catdir = %s") % catdir)
results = {}
+ unique_pass = {}
+ unique_fail = {}
failed = defaultdict(list)
self.output('', '\n Checking keys...')
'''Login email'''
@@ -552,9 +554,20 @@ class Actions(ActionBase):
pub_pass['final'] = False
break
if pub_pass['final']:
+ if gkey.name in unique_fail:
+ unique_fail.pop(gkey.name)
+ if gkey.name not in unique_pass:
+ unique_pass[gkey.name] = []
+ if spec not in unique_pass[gkey.name]:
+ unique_pass[gkey.name].append(spec)
if spec not in failed['spec-approved']:
failed['spec-approved'].append(spec)
else:
+ if gkey.name not in unique_pass:
+ if gkey.name not in unique_fail:
+ unique_fail[gkey.name] = []
+ if spec not in unique_fail[gkey.name]:
+ unique_fail[gkey.name].append(spec)
if spec not in failed['spec']:
failed['spec'].append(spec)
sdata = convert_pf(pub_pass, ['pub', 'sign', 'final'])
@@ -601,21 +614,38 @@ class Actions(ActionBase):
self.output([sorted(set(failed['spec']))], '\n Failed to pass SPEC requirements:')
if failed['spec-approved']:
self.output([sorted(set(failed['spec-approved']))], '\n SPEC Approved:')
+ fkeys = []
+ pkeys = []
+ if unique_fail:
+ fkeys = sorted(unique_fail)
+ failed['unique-fail'] = []
+ for k in fkeys:
+ failed['unique-fail'].extend(unique_fail[k])
+ self.output([failed['unique-fail']], '\n Unique SPEC Failed by name:')
+ if unique_pass:
+ pkeys = sorted(unique_pass)
+ #failed['unique-pass'] = []
+ #for k in pkeys:
+ # failed['unique-pass'].extend(unique_pass[k])
+ #self.output([failed['unique-pass']], '\n Unique SPEC Passed:')
+
return (len(failed) <1,
['\nFound Failures:\n-------',
- 'Revoked................: %d' % len(set(failed['revoked'])),
- 'Invalid................: %d' % len(set(failed['invalid'])),
- 'No Signing subkey......: %d' % len(set(failed['sign'])),
- 'No Encryption subkey...: %d' % len(set(failed['encrypt'])),
- 'Algorithm..............: %d' % len(set(failed['algo'])),
- 'Bit length.............: %d' % len(set(failed['bits'])),
- 'Qualified IDs..........: %d' % len(set(failed['qualified_id'])),
- 'Expiry.................: %d' % len(set(failed['expired'])),
- 'Expiry Warnings........: %d' % len(set(failed['warn'])),
- 'SPEC requirements......: %d' % len(set(failed['spec'])),
- '=============================',
- 'SPEC Approved..........: %d' % len(set(failed['spec-approved'])),
+ 'Revoked..................: %d' % len(set(failed['revoked'])),
+ 'Invalid..................: %d' % len(set(failed['invalid'])),
+ 'No Signing subkey........: %d' % len(set(failed['sign'])),
+ 'No Encryption subkey.....: %d' % len(set(failed['encrypt'])),
+ 'Algorithm................: %d' % len(set(failed['algo'])),
+ 'Bit length...............: %d' % len(set(failed['bits'])),
+ 'Qualified IDs............: %d' % len(set(failed['qualified_id'])),
+ 'Expiry...................: %d' % len(set(failed['expired'])),
+ 'Expiry Warnings..........: %d' % len(set(failed['warn'])),
+ 'SPEC requirements........: %d' % len(set(failed['spec'])),
+ 'SPEC Approved............: %d' % len(set(failed['spec-approved'])),
+ '===============================',
+ 'Unique approved by name..: %d' % len(pkeys),
+ 'Unique failed by name....: %d' % len(fkeys),
])
def removekey(self, args):
^ permalink raw reply related [flat|nested] 145+ messages in thread
end of thread, other threads:[~2018-08-15 16:15 UTC | newest]
Thread overview: 145+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 commit in: gkeys/gkeys/ Brian Dolbec
2016-10-27 21:49 ` [gentoo-commits] proj/gentoo-keys:master " Brian Dolbec
-- strict thread matches above, loose matches on Subject: below --
2018-08-15 16:15 Brian Dolbec
2018-08-15 1:51 Brian Dolbec
2018-08-15 1:05 Brian Dolbec
2018-07-07 15:10 Brian Dolbec
2018-07-07 15:10 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2018-07-07 5:23 Brian Dolbec
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 " Brian Dolbec
2016-12-24 0:38 ` [gentoo-commits] proj/gentoo-keys:master " Brian Dolbec
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 " Brian Dolbec
2016-12-24 0:38 ` [gentoo-commits] proj/gentoo-keys:master " Brian Dolbec
2016-12-24 9:13 [gentoo-commits] proj/gentoo-keys:gsoc-2016 " Brian Dolbec
2016-10-27 18:41 ` [gentoo-commits] proj/gentoo-keys:master " Brian Dolbec
2016-12-24 4:52 Brian Dolbec
2016-06-01 15:16 Brian Dolbec
2016-06-01 15:16 Brian Dolbec
2016-01-23 23:33 Brian Dolbec
2016-01-23 23:33 Brian Dolbec
2016-01-23 19:04 Brian Dolbec
2015-12-25 17:03 Brian Dolbec
2015-12-13 0:51 Brian Dolbec
2015-08-25 14:10 Brian Dolbec
2015-08-25 14:10 Brian Dolbec
2015-08-09 22:52 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-08-09 1:09 Brian Dolbec
2015-07-25 16:45 Brian Dolbec
2015-07-25 16:45 Brian Dolbec
2015-07-25 16:45 Brian Dolbec
2015-06-22 13:41 Brian Dolbec
2015-06-01 1:56 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-05-31 5:03 Brian Dolbec
2015-03-18 15:32 Brian Dolbec
2015-03-17 19:51 Brian Dolbec
2015-03-08 15:09 Brian Dolbec
2015-03-06 21:04 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-02-11 17:37 Brian Dolbec
2015-01-09 21:07 Brian Dolbec
2015-01-09 21:07 Brian Dolbec
2015-01-09 21:07 Brian Dolbec
2015-01-09 21:07 Brian Dolbec
2015-01-09 21:07 Brian Dolbec
2015-01-09 21:07 Brian Dolbec
2015-01-09 21:07 Brian Dolbec
2015-01-08 4:13 Brian Dolbec
2015-01-07 23:39 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-05 23:12 Brian Dolbec
2015-01-01 22:32 Brian Dolbec
2015-01-01 17:44 Brian Dolbec
2015-01-01 17:44 Brian Dolbec
2015-01-01 17:44 Brian Dolbec
2015-01-01 17:44 Brian Dolbec
2015-01-01 17:44 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-31 21:34 Brian Dolbec
2014-12-26 18:37 Brian Dolbec
2014-12-26 18:37 Brian Dolbec
2014-12-26 18:37 Brian Dolbec
2014-12-26 5:02 Brian Dolbec
2014-12-26 5:02 Brian Dolbec
2014-12-26 5:02 Brian Dolbec
2014-12-25 22:07 Brian Dolbec
2014-12-25 22:07 Brian Dolbec
2014-12-25 20:43 Brian Dolbec
2014-12-25 20:43 Brian Dolbec
2014-12-25 20:43 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-24 19:59 Brian Dolbec
2014-12-23 2:50 Brian Dolbec
2014-12-23 2:50 Brian Dolbec
2014-12-23 0:13 Brian Dolbec
2014-12-22 23:11 Brian Dolbec
2014-12-22 23:11 Brian Dolbec
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox