* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: fe6a6ccb65b0ef8b1df87d651357f478c99bf78c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 16:07:16 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jun 22 23:00:58 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=fe6a6ccb
filter results for 'active' devs only
---
gkeyldap/cli.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index f3c2ced..c702bd2 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -148,6 +148,8 @@ class Main(object):
filename = self.config['dev-seedfile'] + '.new'
self.seeds = Seeds(filename)
for dev in devs:
+ if devs[dev]['gentooStatus'][0] not in ['active']:
+ continue
logger.debug("create_seedfile, dev = %s, %s" % (str(dev), str(devs[dev])))
new_gkey = GKEY._make(self.build_gkeylist(devs[dev]))
self.seeds.add(new_gkey)
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 4fb65a94659e77a4d5ca721bfe571d30d017bf45
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 18:11:19 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jun 22 23:00:58 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=4fb65a94
Add error output for missing data, comment out a debug statement
Error for 'undefined' in values obtained from ldap
---
gkeyldap/cli.py | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 15e410e..d4971d0 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -194,7 +194,7 @@ class Main(object):
@staticmethod
def build_gkeylist(info):
keyinfo = []
- logger.debug("build_gkeylist, info = %s" % str(info))
+ #logger.debug("build_gkeylist, info = %s" % str(info))
for x in GKEY._fields:
field = gkey2ldap_map[x]
if not field:
@@ -206,6 +206,9 @@ class Main(object):
value = values[0]
else:
value = values
+ if 'undefined' in values:
+ logger.error('%s = "undefined" for %s, %s'
+ %(field, info['uid'][0], info['cn'][0]))
keyinfo.append(value)
except KeyError:
logger.error("Missing %s for %s, %s"
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: aa008669a4adc1a16f0c52626ddf5bcd414dec3b
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 17:20:54 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jun 22 23:00:58 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=aa008669
Add seed count and error for missing data
---
gkeyldap/cli.py | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index c702bd2..9bb1add 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -147,13 +147,16 @@ class Main(object):
logger.debug("create_seedfile, arrived")
filename = self.config['dev-seedfile'] + '.new'
self.seeds = Seeds(filename)
+ count = 0
for dev in devs:
if devs[dev]['gentooStatus'][0] not in ['active']:
continue
- logger.debug("create_seedfile, dev = %s, %s" % (str(dev), str(devs[dev])))
+ #logger.debug("create_seedfile, dev = %s, %s" % (str(dev), str(devs[dev])))
new_gkey = GKEY._make(self.build_gkeylist(devs[dev]))
self.seeds.add(new_gkey)
- logger.debug("create_seedfile, seeds created...saving file: %s" % filename)
+ count += 1
+ print("Total number of seeds created:", count)
+ logger.debug("MAIN: create_seedfile; seeds created...saving file: %s" % filename)
return self.seeds.save()
@@ -177,7 +180,7 @@ class Main(object):
continue
try:
values = info[field]
- if values and values in ['uid' ]:
+ if values and values in ['uid', 'cn' ]:
value = values[0]
else:
value = values
@@ -199,12 +202,14 @@ class Main(object):
continue
try:
values = info[field]
- if values and field in ['uid', 'name' ]:
+ if values and field in ['uid', 'cn' ]:
value = values[0]
else:
value = values
keyinfo.append(value)
except KeyError:
+ logger.error("Missing %s for %s, %s"
+ %(field, info['uid'][0], info['cn'][0]))
keyinfo.append(None)
return keyinfo
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 0536a049a7c03c82d528590308e39cc9926cd58d
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 22:11:01 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jun 22 23:00:58 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=0536a049
Some pyflakes cleanup and fix logger messages
---
gkeyldap/cli.py | 11 +++++------
gkeyldap/search.py | 1 -
2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index d4971d0..ccc9159 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -2,7 +2,7 @@
from __future__ import print_function
-import ldap
+
import sys
import os
import argparse
@@ -10,8 +10,7 @@ import argparse
from gkeys.log import logger
from gkeys.config import GKeysConfig, GKEY
from gkeys.seed import Seeds
-from gkeyldap.search import (LdapSearch, UID, CN, STATUS, GPGKEY,
- MAIL, GPGFINGERPRINT, gkey2ldap_map, gkey2SEARCH)
+from gkeyldap.search import (LdapSearch, UID, gkey2ldap_map, gkey2SEARCH)
# set debug level to max
@@ -35,7 +34,6 @@ class Main(object):
def __call__(self, args=None):
- logger.debug("Main:__call__()")
if args:
self.run(self.parse_args(args))
else:
@@ -97,6 +95,7 @@ class Main(object):
func = getattr(self, '_action_%s' % args.action)
logger.debug('Found action: %s' % args.action)
results = func(args)
+ return results
def _action_ldapsearch(self, args):
@@ -111,7 +110,7 @@ class Main(object):
for dev in sorted(devs):
print(dev, devs[dev])
print("============================================")
- print "Total number of devs in results:", len(devs)
+ print("Total number of devs in results:", len(devs))
return True
@@ -134,7 +133,7 @@ class Main(object):
if os.path.exists(self.config['dev-seedfile']):
logger.debug("Renaming current seed file to: %s" % old)
os.rename(self.config['dev-seedfile'], old)
- logger.debug("Renaming 'new' seed file to: %s" % self.config['dev-seedfile'])
+ logger.debug("Renaming 'new' seed file to: %s" % self.config['dev-seedfile']))
os.rename(self.config['dev-seedfile'] + '.new',
self.config['dev-seedfile'])
except IOError:
diff --git a/gkeyldap/search.py b/gkeyldap/search.py
index f432dcf..66721f1 100644
--- a/gkeyldap/search.py
+++ b/gkeyldap/search.py
@@ -1,5 +1,4 @@
import ldap
-import sys
from gkeys.log import logger
from gkeys.config import GKEY
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 36a16de7b16eada20a909ee7d228a5efccddb957
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 17:28:30 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jun 22 23:00:58 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=36a16de7
Sort the devs on their nick
---
gkeyldap/cli.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 9bb1add..15e410e 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -148,7 +148,7 @@ class Main(object):
filename = self.config['dev-seedfile'] + '.new'
self.seeds = Seeds(filename)
count = 0
- for dev in devs:
+ for dev in sorted(devs):
if devs[dev]['gentooStatus'][0] not in ['active']:
continue
#logger.debug("create_seedfile, dev = %s, %s" % (str(dev), str(devs[dev])))
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: a66c980cc6d997076968c3e357eef80cd3f7cbb8
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 23 01:19:23 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jun 23 04:30:59 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=a66c980c
strip errant line feeds in ldap values
---
gkeyldap/cli.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 06da0f3..0527689 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -245,8 +245,10 @@ class Main(object):
continue
try:
values = info[field]
+ # strip errant line feeds
+ values = [x.strip('\n') for x in values]
if values and field in ['uid', 'cn' ]:
- value = values[0]
+ value = values[0].strip('\n')
# separate out short/long key id's
elif values and x in ['keyid', 'longkeyid']:
value = get_key_ids(x, values)
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 488a4f389606423451dc36af3920803b2a14de7c
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 21:01:48 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jun 23 04:30:59 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=488a4f38
Add keyid/longkeyid separation and assignment
---
gkeyldap/cli.py | 37 +++++++++++++++++++++++++++++--------
gkeyldap/search.py | 2 +-
2 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index b506f64..dae772a 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -20,6 +20,32 @@ from gkeyldap.search import (LdapSearch, UID, gkey2ldap_map, gkey2SEARCH)
logger.setLevel(0)
+# set some defaults
+KEY_LEN = {
+ 'keyid': 8,
+ 'longkeyid': 16,
+}
+
+
+def get_key_ids(key, info):
+ '''Small utility function to return only keyid (short)
+ or longkeyid's
+
+ @param key: string, the key lenght desired
+ @param info: list of keysid's to process
+ @return list of the desired key lengh id's
+ '''
+ result = []
+ for x in info:
+ if x.startswith('0x'):
+ mylen = KEY_LEN[key] + 2
+ else:
+ mylen = KEY_LEN[key]
+ if len(x) == mylen:
+ result.append(x)
+ return result
+
+
class Main(object):
'''Main command line interface class'''
@@ -188,7 +214,6 @@ class Main(object):
return (x, target, search_field)
-
@staticmethod
def build_gkeydict(info):
keyinfo = {}
@@ -222,6 +247,9 @@ class Main(object):
values = info[field]
if values and field in ['uid', 'cn' ]:
value = values[0]
+ # separate out short/long key id's
+ elif values and x in ['keyid', 'longkeyid']:
+ value = get_key_ids(x, values)
else:
value = values
if 'undefined' in values:
@@ -234,10 +262,3 @@ class Main(object):
keyinfo.append(None)
return keyinfo
-
-if __name__ == '__main__':
-
- Main()
-
-
-
diff --git a/gkeyldap/search.py b/gkeyldap/search.py
index 66721f1..8d323f4 100644
--- a/gkeyldap/search.py
+++ b/gkeyldap/search.py
@@ -19,7 +19,7 @@ gkey2ldap_map = {
'nick': 'uid',
'name': 'cn',
'keyid': 'gpgkey',
- 'longkeyid': '',
+ 'longkeyid': 'gpgkey',
'keyring': '',
'fingerprint': 'gpgfingerprint'
}
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: fc80c90d916a97964ce38573b57ccccd74e63283
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 23 01:21:42 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jun 23 04:30:59 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=fc80c90d
set encoding in files
---
gkeyldap/cli.py | 3 ++-
gkeyldap/search.py | 4 ++++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 0527689..cd813d4 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -1,4 +1,5 @@
-#!/usr/bin/env python
+#
+#-*- coding:utf-8 -*-
from __future__ import print_function
diff --git a/gkeyldap/search.py b/gkeyldap/search.py
index 8d323f4..32e326b 100644
--- a/gkeyldap/search.py
+++ b/gkeyldap/search.py
@@ -1,3 +1,7 @@
+#
+#-*- coding:utf-8 -*-
+
+
import ldap
from gkeys.log import logger
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 279cf8282b3e840bcc2ec5cbd2d6295cccc388f3
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 20:13:54 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jun 23 04:30:59 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=279cf828
Add more progress feedback for normal usage.
---
gkeyldap/cli.py | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 8d9dc85..ba0218b 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -119,6 +119,7 @@ class Main(object):
def _action_updateseeds(self, args):
+ print("Beginning ldap search...")
l = LdapSearch()
if not l.connect():
print("Aborting Update...Connection failed")
@@ -132,6 +133,7 @@ class Main(object):
"Original seed file is intact & untouched.")
old = self.config['dev-seedfile'] + '.old'
try:
+ print("Backing up existing file...")
if os.path.exists(old):
logger.debug(
"MAIN: _action_updateseeds; Removing 'old' seed file: %s"
@@ -154,7 +156,7 @@ class Main(object):
def create_seedfile(self, devs):
- logger.debug("create_seedfile, arrived")
+ print("Creating seeds from ldap data...")
filename = self.config['dev-seedfile'] + '.new'
self.seeds = Seeds(filename)
count = 0
@@ -167,8 +169,7 @@ class Main(object):
self.seeds.add(new_gkey)
count += 1
print("Total number of seeds created:", count)
- logger.debug("MAIN: create_seedfile; seeds created...saving file: %s"
- % filename)
+ print("Seeds created...saving file: %s" % filename)
return self.seeds.save()
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 7e29324216f9ab90790e482c34e189891c2a2cd9
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 23 00:36:31 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jun 23 04:30:59 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=7e293242
Add GKEY field name to error output
---
gkeyldap/cli.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index dae772a..06da0f3 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -257,8 +257,8 @@ class Main(object):
%(field, info['uid'][0], info['cn'][0]))
keyinfo.append(value)
except KeyError:
- logger.error("Missing %s for %s, %s"
- %(field, info['uid'][0], info['cn'][0]))
+ logger.error("Missing %s (%s) for %s, %s"
+ %(field, x, info['uid'][0], info['cn'][0]))
keyinfo.append(None)
return keyinfo
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: eff0bb6caad5819f8893984c1264b5646f118408
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 23 03:06:53 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jun 23 04:36:59 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=eff0bb6c
Add check for no valid keyid/longkeyid found in ldap data
Account for missing gpgkey key
Prevent a double error message
---
gkeyldap/cli.py | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index bf4e00e..03671b5 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -245,6 +245,8 @@ class Main(object):
@staticmethod
def build_gkeylist(info):
keyinfo = []
+ keyid_found = False
+ keyid_missing = False
#logger.debug("MAIN: build_gkeylist; info = %s" % str(info))
for x in GKEY._fields:
field = gkey2ldap_map[x]
@@ -259,6 +261,8 @@ class Main(object):
# separate out short/long key id's
elif values and x in ['keyid', 'longkeyid']:
value = get_key_ids(x, values)
+ if len(value):
+ keyid_found = True
else:
value = values
if 'undefined' in values:
@@ -268,6 +272,16 @@ class Main(object):
except KeyError:
logger.error("Missing %s (%s) for %s, %s"
%(field, x, info['uid'][0], info['cn'][0]))
+ if x in ['keyid', 'longkeyid']:
+ keyid_missing = True
keyinfo.append(None)
+ if not keyid_found and not keyid_missing:
+ try:
+ gpgkey = info[gkey2ldap_map['longkeyid']]
+ except KeyError:
+ gpgkey = 'Missing from ldap info'
+ logger.error("A valid keyid or longkeyid was not found for")
+ logger.error("developer: %s, %s : gpgkey = %s"
+ %(info['uid'][0], info['cn'][0], gpgkey))
return keyinfo
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-06-23 7:13 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-06-23 7:13 UTC (permalink / raw
To: gentoo-commits
commit: 16a88edc991162a2628fd5d7ffd51e7fee863f93
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 23 07:01:27 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jun 23 07:01:27 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=16a88edc
Map dev's GKEY keyring field to ldap's uid.
---
gkeyldap/search.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/gkeyldap/search.py b/gkeyldap/search.py
index 32e326b..169124f 100644
--- a/gkeyldap/search.py
+++ b/gkeyldap/search.py
@@ -24,7 +24,9 @@ gkey2ldap_map = {
'name': 'cn',
'keyid': 'gpgkey',
'longkeyid': 'gpgkey',
- 'keyring': '',
+ # map the uid to keyring, since we want
+ # dev keyrings to be separate from each other
+ 'keyring': 'uid',
'fingerprint': 'gpgfingerprint'
}
# Sanity check they are in sync
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-07-06 19:02 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-07-06 19:02 UTC (permalink / raw
To: gentoo-commits
commit: c60985bd8468aeb96cdef93194d107c2ac819212
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 25 23:29:44 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jul 6 18:16:51 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=c60985bd
Remove spaces in fingerprints to match what gpg returns
---
gkeyldap/cli.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 03671b5..6a3e4bb 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -263,6 +263,8 @@ class Main(object):
value = get_key_ids(x, values)
if len(value):
keyid_found = True
+ elif values and x in ['fingerprint']:
+ value = [v.replace(' ', '') for v in values]
else:
value = values
if 'undefined' in values:
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-07-06 19:02 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-07-06 19:02 UTC (permalink / raw
To: gentoo-commits
commit: 3d5370b22b4f80e310f23d8a9bd7e409c00ce9c7
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Jul 6 16:46:08 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jul 6 18:47:45 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=3d5370b2
fix some typo's
---
gkeyldap/cli.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 171767b..2022ee9 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -32,9 +32,9 @@ def get_key_ids(key, info):
'''Small utility function to return only keyid (short)
or longkeyid's
- @param key: string, the key lenght desired
+ @param key: string, the key length desired
@param info: list of keysid's to process
- @return list of the desired key lengh id's
+ @return list of the desired key length id's
'''
result = []
for x in info:
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-07-06 19:02 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-07-06 19:02 UTC (permalink / raw
To: gentoo-commits
commit: 5540e0888fd1083c71f66e02770879954ab4ab6d
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 28 19:40:48 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Jul 6 18:47:45 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=5540e088
Add gpgkey, gpgfingerprint check when building the seed info
---
gkeyldap/cli.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 32f1f87..171767b 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -303,5 +303,15 @@ class Main(object):
logger.error("A valid keyid or longkeyid was not found for")
logger.error("developer: %s, %s : gpgkey = %s"
%(info['uid'][0], info['cn'][0], gpgkey))
+ else:
+ for x in [2, 3]:
+ if not keyinfo[x]:
+ continue
+ for y in keyinfo[x]:
+ index = len(y.lstrip('0x'))
+ if y.lstrip('0x') not in [x[-index:] for x in keyinfo[5]]:
+ logger.error('GPGKey and/or fingerprint error in' +
+ ' ladap info for: ' + info['uid'][0])
+ logger.error(str(keyinfo))
return keyinfo
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-07-16 0:50 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-07-16 0:50 UTC (permalink / raw
To: gentoo-commits
commit: 04677b673faff452b3373028bbc3877ccfded928
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 14 16:55:14 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Jul 14 17:15:22 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=04677b67
Move the api actions to it's own class.
Fix printing to be configurable (sort of)
---
gkeyldap/actions.py | 224 ++++++++++++++++++++++++++++++++++++++++++++++++++++
gkeyldap/cli.py | 208 +++---------------------------------------------
2 files changed, 233 insertions(+), 199 deletions(-)
diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
new file mode 100644
index 0000000..70a2ad1
--- /dev/null
+++ b/gkeyldap/actions.py
@@ -0,0 +1,224 @@
+#
+#-*- coding:utf-8 -*-
+
+"""
+ Gentoo-keys - gkeyldap/actions.py
+
+ Primary api interface module
+
+ @copyright: 2012 by Brian Dolbec <dol-sen@gentoo.org>
+ @license: GNU GPL2, see COPYING for details.
+"""
+
+import os
+
+from gkeys.config import GKEY
+from gkeys.seed import Seeds
+from gkeyldap.search import (LdapSearch, UID, gkey2ldap_map, gkey2SEARCH)
+
+
+# set some defaults
+KEY_LEN = {
+ 'keyid': 8,
+ 'longkeyid': 16,
+}
+
+
+Avialable_Actions = ['ldapsearch', 'updateseeds']
+
+
+def get_key_ids(key, info):
+ '''Small utility function to return only keyid (short)
+ or longkeyid's
+
+ @param key: string, the key length desired
+ @param info: list of keysid's to process
+ @return list of the desired key length id's
+ '''
+ result = []
+ for x in info:
+ if x.startswith('0x'):
+ mylen = KEY_LEN[key] + 2
+ else:
+ mylen = KEY_LEN[key]
+ if len(x) == mylen:
+ result.append(x)
+ return result
+
+
+class Actions(object):
+
+
+ def __init__(self, config, output=None, logger=None):
+ self.config = config
+ self.output = output
+ self.logger = logger
+ self.seeds = None
+
+
+ def ldapsearch(self, args):
+ l = LdapSearch()
+ self.logger.info("Search...establishing connection")
+ self.output("Search...establishing connection")
+ if not l.connect():
+ self.logger.info("Aborting Search...Connection failed")
+ self.output("Aborting Search...Connection failed")
+ return False
+ self.logger.debug("MAIN: _action_ldapsearch; args = %s" % str(args))
+ x, target, search_field = self.get_args(args)
+ results = l.search(target, search_field)
+ devs = l.result2dict(results, gkey2ldap_map[x])
+ for dev in sorted(devs):
+ self.output(dev, devs[dev])
+ self.output("============================================")
+ self.output("Total number of devs in results:", len(devs))
+ return True
+
+
+ def updateseeds(self, args):
+ self.logger.info("Beginning ldap search...")
+ self.output("Beginning ldap search...")
+ l = LdapSearch()
+ if not l.connect():
+ self.output("Aborting Update...Connection failed")
+ return False
+ results = l.search('*', UID)
+ info = l.result2dict(results, 'uid')
+ self.logger.debug(
+ "MAIN: _action_updateseeds; got results :) converted to info")
+ if not self.create_seedfile(info):
+ self.logger.error("Dev seed file update failure: "
+ "Original seed file is intact & untouched.")
+ old = self.config['dev-seedfile'] + '.old'
+ try:
+ self.output("Backing up existing file...")
+ if os.path.exists(old):
+ self.logger.debug(
+ "MAIN: _action_updateseeds; Removing 'old' seed file: %s"
+ % old)
+ os.unlink(old)
+ if os.path.exists(self.config['dev-seedfile']):
+ self.logger.debug(
+ "MAIN: _action_updateseeds; Renaming current seed file to: "
+ "%s" % old)
+ os.rename(self.config['dev-seedfile'], old)
+ self.logger.debug(
+ "MAIN: _action_updateseeds; Renaming '.new' seed file to: %s"
+ % self.config['dev-seedfile'])
+ os.rename(self.config['dev-seedfile'] + '.new',
+ self.config['dev-seedfile'])
+ except IOError:
+ raise
+ self.output("Developer Seed file updated")
+ return True
+
+
+ def create_seedfile(self, devs):
+ self.output("Creating seeds from ldap data...")
+ filename = self.config['dev-seedfile'] + '.new'
+ self.seeds = Seeds(filename)
+ count = 0
+ for dev in sorted(devs):
+ if devs[dev]['gentooStatus'][0] not in ['active']:
+ continue
+ #self.logger.debug("create_seedfile, dev = "
+ # "%s, %s" % (str(dev), str(devs[dev])))
+ new_gkey = GKEY._make(self.build_gkeylist(devs[dev]))
+ self.seeds.add(new_gkey)
+ count += 1
+ self.output("Total number of seeds created:", count)
+ self.output("Seeds created...saving file: %s" % filename)
+ return self.seeds.save()
+
+
+ @staticmethod
+ def get_args(args):
+ for x in ['nick', 'name', 'gpgkey', 'fingerprint', 'status']:
+ if x:
+ target = getattr(args, x)
+ search_field = gkey2SEARCH[x]
+ break
+ return (x, target, search_field)
+
+
+
+ def build_gkeydict(self, info):
+ keyinfo = {}
+ for x in GKEY._fields:
+ field = gkey2ldap_map[x]
+ if not field:
+ continue
+ try:
+ # strip errant line feeds
+ values = [y.strip('\n') for y in info[field]]
+ if values and values in ['uid', 'cn' ]:
+ value = values[0]
+ # separate out short/long key id's
+ elif values and x in ['keyid', 'longkeyid']:
+ value = get_key_ids(x, values)
+ else:
+ value = values
+ if 'undefined' in values:
+ self.logger.error('%s = "undefined" for %s, %s'
+ %(field, info['uid'][0], info['cn'][0]))
+ if value:
+ keyinfo[x] = value
+ except KeyError:
+ pass
+ return keyinfo
+
+
+ def build_gkeylist(self, info):
+ keyinfo = []
+ keyid_found = False
+ keyid_missing = False
+ #self.logger.debug("MAIN: build_gkeylist; info = %s" % str(info))
+ for x in GKEY._fields:
+ field = gkey2ldap_map[x]
+ if not field:
+ keyinfo.append(None)
+ continue
+ try:
+ # strip errant line feeds
+ values = [y.strip('\n') for y in info[field]]
+ if values and field in ['uid', 'cn' ]:
+ value = values[0]
+ # separate out short/long key id's
+ elif values and x in ['keyid', 'longkeyid']:
+ value = get_key_ids(x, values)
+ if len(value):
+ keyid_found = True
+ elif values and x in ['fingerprint']:
+ value = [v.replace(' ', '') for v in values]
+ else:
+ value = values
+ if 'undefined' in values:
+ self.logger.error('%s = "undefined" for %s, %s'
+ %(field, info['uid'][0], info['cn'][0]))
+ keyinfo.append(value)
+ except KeyError:
+ self.logger.error("Missing %s (%s) for %s, %s"
+ %(field, x, info['uid'][0], info['cn'][0]))
+ if x in ['keyid', 'longkeyid']:
+ keyid_missing = True
+ keyinfo.append(None)
+ if not keyid_found and not keyid_missing:
+ try:
+ gpgkey = info[gkey2ldap_map['longkeyid']]
+ except KeyError:
+ gpgkey = 'Missing from ldap info'
+ self.logger.error("A valid keyid or longkeyid was not found for")
+ self.logger.error("developer: %s, %s : gpgkey = %s"
+ %(info['uid'][0], info['cn'][0], gpgkey))
+ else:
+ for x in [2, 3]:
+ if not keyinfo[x]:
+ continue
+ for y in keyinfo[x]:
+ index = len(y.lstrip('0x'))
+ if y.lstrip('0x') not in [x[-index:] for x in keyinfo[5]]:
+ self.logger.error('GPGKey and/or fingerprint error in' +
+ ' ladap info for: ' + info['uid'][0])
+ self.logger.error(str(keyinfo))
+ return keyinfo
+
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 2022ee9..097cfc2 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -5,7 +5,6 @@ from __future__ import print_function
import sys
-import os
import argparse
from gkeys import log
@@ -14,38 +13,11 @@ from gkeys.log import log_levels, set_logger
from gkeys import config
from gkeys import seed
-from gkeys.config import GKeysConfig, GKEY
-from gkeys.seed import Seeds
+from gkeys.config import GKeysConfig
from gkeyldap import search
-from gkeyldap.search import (LdapSearch, UID, gkey2ldap_map, gkey2SEARCH)
-
+from gkeyldap.actions import Actions, Avialable_Actions
logger = log.logger
-# set some defaults
-KEY_LEN = {
- 'keyid': 8,
- 'longkeyid': 16,
-}
-
-
-def get_key_ids(key, info):
- '''Small utility function to return only keyid (short)
- or longkeyid's
-
- @param key: string, the key length desired
- @param info: list of keysid's to process
- @return list of the desired key length id's
- '''
- result = []
- for x in info:
- if x.startswith('0x'):
- mylen = KEY_LEN[key] + 2
- else:
- mylen = KEY_LEN[key]
- if len(x) == mylen:
- result.append(x)
- return result
-
class Main(object):
'''Main command line interface class'''
@@ -77,7 +49,7 @@ class Main(object):
@returns argparse.Namespace object
'''
#logger.debug('MAIN: parse_args; args: %s' % args)
- actions = ['ldapsearch', 'updateseeds']
+ actions = Avialable_Actions
parser = argparse.ArgumentParser(
prog='gkeys',
description='Gentoo-keys manager program',
@@ -140,178 +112,16 @@ class Main(object):
logger.debug("Main: run; Found alternate config request: %s"
% args.config)
+ # establish our actions instance
+ self.actions = Actions(self.config, print, logger)
+
logger.info("Begin running action: %s" % args.action)
- func = getattr(self, '_action_%s' % args.action)
+ # run the action
+ func = getattr(self.actions, '%s' % args.action)
+
logger.debug('Main: run; Found action: %s' % args.action)
results = func(args)
return results
- def _action_ldapsearch(self, args):
- l = LdapSearch()
- logger.info("Search...establishing connection")
- print("Search...establishing connection")
- if not l.connect():
- logger.info("Aborting Search...Connection failed")
- print("Aborting Search...Connection failed")
- return False
- logger.debug("MAIN: _action_ldapsearch; args = %s" % str(args))
- x, target, search_field = self.get_args(args)
- results = l.search(target, search_field)
- devs = l.result2dict(results, gkey2ldap_map[x])
- for dev in sorted(devs):
- print(dev, devs[dev])
- print("============================================")
- print("Total number of devs in results:", len(devs))
- return True
-
-
- def _action_updateseeds(self, args):
- logger.info("Beginning ldap search...")
- print("Beginning ldap search...")
- l = LdapSearch()
- if not l.connect():
- print("Aborting Update...Connection failed")
- return False
- results = l.search('*', UID)
- info = l.result2dict(results, 'uid')
- logger.debug(
- "MAIN: _action_updateseeds; got results :) converted to info")
- if not self.create_seedfile(info):
- logger.error("Dev seed file update failure: "
- "Original seed file is intact & untouched.")
- old = self.config['dev-seedfile'] + '.old'
- try:
- print("Backing up existing file...")
- if os.path.exists(old):
- logger.debug(
- "MAIN: _action_updateseeds; Removing 'old' seed file: %s"
- % old)
- os.unlink(old)
- if os.path.exists(self.config['dev-seedfile']):
- logger.debug(
- "MAIN: _action_updateseeds; Renaming current seed file to: "
- "%s" % old)
- os.rename(self.config['dev-seedfile'], old)
- logger.debug(
- "MAIN: _action_updateseeds; Renaming '.new' seed file to: %s"
- % self.config['dev-seedfile'])
- os.rename(self.config['dev-seedfile'] + '.new',
- self.config['dev-seedfile'])
- except IOError:
- raise
- print("Developer Seed file updated")
- return True
-
-
- def create_seedfile(self, devs):
- print("Creating seeds from ldap data...")
- filename = self.config['dev-seedfile'] + '.new'
- self.seeds = Seeds(filename)
- count = 0
- for dev in sorted(devs):
- if devs[dev]['gentooStatus'][0] not in ['active']:
- continue
- #logger.debug("create_seedfile, dev = "
- # "%s, %s" % (str(dev), str(devs[dev])))
- new_gkey = GKEY._make(self.build_gkeylist(devs[dev]))
- self.seeds.add(new_gkey)
- count += 1
- print("Total number of seeds created:", count)
- print("Seeds created...saving file: %s" % filename)
- return self.seeds.save()
-
-
- @staticmethod
- def get_args(args):
- for x in ['nick', 'name', 'gpgkey', 'fingerprint', 'status']:
- if x:
- target = getattr(args, x)
- search_field = gkey2SEARCH[x]
- break
- return (x, target, search_field)
-
-
- @staticmethod
- def build_gkeydict(info):
- keyinfo = {}
- for x in GKEY._fields:
- field = gkey2ldap_map[x]
- if not field:
- continue
- try:
- # strip errant line feeds
- values = [y.strip('\n') for y in info[field]]
- if values and values in ['uid', 'cn' ]:
- value = values[0]
- # separate out short/long key id's
- elif values and x in ['keyid', 'longkeyid']:
- value = get_key_ids(x, values)
- else:
- value = values
- if 'undefined' in values:
- logger.error('%s = "undefined" for %s, %s'
- %(field, info['uid'][0], info['cn'][0]))
- if value:
- keyinfo[x] = value
- except KeyError:
- pass
- return keyinfo
-
-
- @staticmethod
- def build_gkeylist(info):
- keyinfo = []
- keyid_found = False
- keyid_missing = False
- #logger.debug("MAIN: build_gkeylist; info = %s" % str(info))
- for x in GKEY._fields:
- field = gkey2ldap_map[x]
- if not field:
- keyinfo.append(None)
- continue
- try:
- # strip errant line feeds
- values = [y.strip('\n') for y in info[field]]
- if values and field in ['uid', 'cn' ]:
- value = values[0]
- # separate out short/long key id's
- elif values and x in ['keyid', 'longkeyid']:
- value = get_key_ids(x, values)
- if len(value):
- keyid_found = True
- elif values and x in ['fingerprint']:
- value = [v.replace(' ', '') for v in values]
- else:
- value = values
- if 'undefined' in values:
- logger.error('%s = "undefined" for %s, %s'
- %(field, info['uid'][0], info['cn'][0]))
- keyinfo.append(value)
- except KeyError:
- logger.error("Missing %s (%s) for %s, %s"
- %(field, x, info['uid'][0], info['cn'][0]))
- if x in ['keyid', 'longkeyid']:
- keyid_missing = True
- keyinfo.append(None)
- if not keyid_found and not keyid_missing:
- try:
- gpgkey = info[gkey2ldap_map['longkeyid']]
- except KeyError:
- gpgkey = 'Missing from ldap info'
- logger.error("A valid keyid or longkeyid was not found for")
- logger.error("developer: %s, %s : gpgkey = %s"
- %(info['uid'][0], info['cn'][0], gpgkey))
- else:
- for x in [2, 3]:
- if not keyinfo[x]:
- continue
- for y in keyinfo[x]:
- index = len(y.lstrip('0x'))
- if y.lstrip('0x') not in [x[-index:] for x in keyinfo[5]]:
- logger.error('GPGKey and/or fingerprint error in' +
- ' ladap info for: ' + info['uid'][0])
- logger.error(str(keyinfo))
- return keyinfo
-
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-11-10 1:01 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-11-10 1:01 UTC (permalink / raw
To: gentoo-commits
commit: ac7cf53481fb33721c84888a461258b99d9f8515
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 9 20:51:13 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Nov 9 21:17:39 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=ac7cf534
Add missing logger.info messages.
Reduce a debug message being printed multiple times.
---
gkeyldap/actions.py | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
index 7ffa094..07130eb 100644
--- a/gkeyldap/actions.py
+++ b/gkeyldap/actions.py
@@ -74,6 +74,8 @@ class Actions(object):
self.output(dev, devs[dev])
self.output("============================================")
self.output("Total number of devs in results:", len(devs))
+ self.logger.info("============================================")
+ self.logger.info("Total number of devs in results: %d" % len(devs))
return True
@@ -83,6 +85,7 @@ class Actions(object):
l = LdapSearch()
if not l.connect():
self.output("Aborting Update...Connection failed")
+ self.logger.info("Aborting Update...Connection failed")
return False
results = l.search('*', UID)
info = l.result2dict(results, 'uid')
@@ -91,24 +94,25 @@ class Actions(object):
if not self.create_seedfile(info):
self.logger.error("Dev seed file update failure: "
"Original seed file is intact & untouched.")
- old = self.config['dev-seedfile'] + '.old'
+ filename = self.config['dev-seedfile']
+ old = filename + '.old'
try:
self.output("Backing up existing file...")
+ self.logger.info("Backing up existing file...")
if os.path.exists(old):
self.logger.debug(
"MAIN: _action_updateseeds; Removing 'old' seed file: %s"
% old)
os.unlink(old)
- if os.path.exists(self.config['dev-seedfile']):
+ if os.path.exists(filename):
self.logger.debug(
"MAIN: _action_updateseeds; Renaming current seed file to: "
"%s" % old)
- os.rename(self.config['dev-seedfile'], old)
+ os.rename(filename, old)
self.logger.debug(
"MAIN: _action_updateseeds; Renaming '.new' seed file to: %s"
- % self.config['dev-seedfile'])
- os.rename(self.config['dev-seedfile'] + '.new',
- self.config['dev-seedfile'])
+ % filename)
+ os.rename(filename + '.new', filename)
except IOError:
raise
self.output("Developer Seed file updated")
@@ -132,6 +136,8 @@ class Actions(object):
count += 1
self.output("Total number of seeds created:", count)
self.output("Seeds created...saving file: %s" % filename)
+ self.logger.info("Total number of seeds created: %d" % count)
+ self.logger.info("Seeds created...saving file: %s" % filename)
return self.seeds.save()
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-11-10 1:01 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-11-10 1:01 UTC (permalink / raw
To: gentoo-commits
commit: 55af15b6c3e64ba2f7d9a81b04d2cef6b4c9b513
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 9 19:27:28 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Nov 9 21:17:39 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=55af15b6
Don't add a dev's seed if there were errors
---
gkeyldap/actions.py | 34 ++++++++++++++++++++++++++--------
1 file changed, 26 insertions(+), 8 deletions(-)
diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
index ee5efd9..7ffa094 100644
--- a/gkeyldap/actions.py
+++ b/gkeyldap/actions.py
@@ -125,9 +125,11 @@ class Actions(object):
continue
#self.logger.debug("create_seedfile, dev = "
# "%s, %s" % (str(dev), str(devs[dev])))
- new_gkey = GKEY._make(self.build_gkeylist(devs[dev]))
- self.seeds.add(new_gkey)
- count += 1
+ keyinfo = self.build_gkeylist(devs[dev])
+ if keyinfo:
+ new_gkey = GKEY._make(keyinfo)
+ self.seeds.add(new_gkey)
+ count += 1
self.output("Total number of seeds created:", count)
self.output("Seeds created...saving file: %s" % filename)
return self.seeds.save()
@@ -174,6 +176,8 @@ class Actions(object):
keyinfo = []
keyid_found = False
keyid_missing = False
+ # assume it's good until found an error is found
+ is_good = True
#self.logger.debug("MAIN: build_gkeylist; info = %s" % str(info))
for x in GKEY._fields:
field = gkey2ldap_map[x]
@@ -198,6 +202,7 @@ class Actions(object):
self.logger.error('ERROR in ldap info for: %s, %s'
%(info['uid'][0],info['cn'][0]))
self.logger.error(' %s = "undefined"' %(field))
+ is_good = False
keyinfo.append(value)
except KeyError:
self.logger.error('ERROR in ldap info for: %s, %s'
@@ -207,6 +212,7 @@ class Actions(object):
if x in ['keyid', 'longkeyid']:
keyid_missing = True
keyinfo.append(None)
+ is_good = False
if not keyid_found and not keyid_missing:
try:
gpgkey = info[gkey2ldap_map['longkeyid']]
@@ -216,14 +222,21 @@ class Actions(object):
%(info['uid'][0],info['cn'][0]))
self.logger.error(' A valid keyid or longkeyid was not found '
"%s : gpgkey = %s" %(info['cn'][0], gpgkey))
+ is_good = False
else:
if keyinfo[5]: # fingerprints exist check
- self._check_fingerprint_integrity(info, keyinfo)
- self._check_id_fingerprint_match(info, keyinfo)
- return keyinfo
+ is_ok = self._check_fingerprint_integrity(info, keyinfo)
+ is_match = self._check_id_fingerprint_match(info, keyinfo)
+ if not is_ok or not is_match:
+ is_good = False
+ if is_good:
+ return keyinfo
+ return None
def _check_id_fingerprint_match(self, info, keyinfo):
+ # assume it's good until found an error is found
+ is_good = True
for x in [2, 3]:
# skip blank id field
if not keyinfo[x]:
@@ -236,10 +249,13 @@ class Actions(object):
self.logger.error(' ' + str(keyinfo))
self.logger.error(' GPGKey id %s not found in the '
% y.lstrip('0x') + 'listed fingerprint(s)')
- return
+ is_good = False
+ return is_good
def _check_fingerprint_integrity(self, info, keyinfo):
+ # assume it's good until found an error is found
+ is_good = True
for x in keyinfo[5]:
# check fingerprint integrity
if len(x) != 40:
@@ -247,10 +263,12 @@ class Actions(object):
%(info['uid'][0],info['cn'][0]))
self.logger.error(' GPGKey incorrect fingerprint ' +
'length (%s) for fingerprint: %s' %(len(x), x))
+ is_good = False
continue
if not self.fingerprint_re.match(x):
self.logger.error('ERROR in ldap info for: %s, %s'
%(info['uid'][0],info['cn'][0]))
self.logger.error(' GPGKey: Non hexadecimal digits in ' +
'fingerprint for fingerprint: ' + x)
- return
+ is_good = False
+ return is_good
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-11-10 1:01 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-11-10 1:01 UTC (permalink / raw
To: gentoo-commits
commit: e03d9b800d54c7d36ce72821761debc479c0a318
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 8 04:41:26 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sat Nov 9 21:17:28 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=e03d9b80
Add more checks moving them to idividual functions.
Improve error messages and unify output for both logs and terminal output.
---
gkeyldap/actions.py | 64 +++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 48 insertions(+), 16 deletions(-)
diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
index 70a2ad1..ee5efd9 100644
--- a/gkeyldap/actions.py
+++ b/gkeyldap/actions.py
@@ -11,6 +11,7 @@
"""
import os
+import re
from gkeys.config import GKEY
from gkeys.seed import Seeds
@@ -54,6 +55,7 @@ class Actions(object):
self.output = output
self.logger = logger
self.seeds = None
+ self.fingerprint_re = re.compile('[0-9A-Fa-f]{40}')
def ldapsearch(self, args):
@@ -193,12 +195,15 @@ class Actions(object):
else:
value = values
if 'undefined' in values:
- self.logger.error('%s = "undefined" for %s, %s'
- %(field, info['uid'][0], info['cn'][0]))
+ self.logger.error('ERROR in ldap info for: %s, %s'
+ %(info['uid'][0],info['cn'][0]))
+ self.logger.error(' %s = "undefined"' %(field))
keyinfo.append(value)
except KeyError:
- self.logger.error("Missing %s (%s) for %s, %s"
- %(field, x, info['uid'][0], info['cn'][0]))
+ self.logger.error('ERROR in ldap info for: %s, %s'
+ %(info['uid'][0],info['cn'][0]))
+ self.logger.error(' MISSING or EMPTY ldap field ' +
+ '[%s] GPGKey field [%s]' %(field, x))
if x in ['keyid', 'longkeyid']:
keyid_missing = True
keyinfo.append(None)
@@ -207,18 +212,45 @@ class Actions(object):
gpgkey = info[gkey2ldap_map['longkeyid']]
except KeyError:
gpgkey = 'Missing from ldap info'
- self.logger.error("A valid keyid or longkeyid was not found for")
- self.logger.error("developer: %s, %s : gpgkey = %s"
- %(info['uid'][0], info['cn'][0], gpgkey))
+ self.logger.error('ERROR in ldap info for: %s, %s'
+ %(info['uid'][0],info['cn'][0]))
+ self.logger.error(' A valid keyid or longkeyid was not found '
+ "%s : gpgkey = %s" %(info['cn'][0], gpgkey))
else:
- for x in [2, 3]:
- if not keyinfo[x]:
- continue
- for y in keyinfo[x]:
- index = len(y.lstrip('0x'))
- if y.lstrip('0x') not in [x[-index:] for x in keyinfo[5]]:
- self.logger.error('GPGKey and/or fingerprint error in' +
- ' ladap info for: ' + info['uid'][0])
- self.logger.error(str(keyinfo))
+ if keyinfo[5]: # fingerprints exist check
+ self._check_fingerprint_integrity(info, keyinfo)
+ self._check_id_fingerprint_match(info, keyinfo)
return keyinfo
+
+ def _check_id_fingerprint_match(self, info, keyinfo):
+ for x in [2, 3]:
+ # skip blank id field
+ if not keyinfo[x]:
+ continue
+ for y in keyinfo[x]:
+ index = len(y.lstrip('0x'))
+ if y.lstrip('0x').lower() not in [x[-index:].lower() for x in keyinfo[5]]:
+ self.logger.error('ERROR in ldap info for: %s, %s'
+ %(info['uid'][0],info['cn'][0]))
+ self.logger.error(' ' + str(keyinfo))
+ self.logger.error(' GPGKey id %s not found in the '
+ % y.lstrip('0x') + 'listed fingerprint(s)')
+ return
+
+
+ def _check_fingerprint_integrity(self, info, keyinfo):
+ for x in keyinfo[5]:
+ # check fingerprint integrity
+ if len(x) != 40:
+ self.logger.error('ERROR in ldap info for: %s, %s'
+ %(info['uid'][0],info['cn'][0]))
+ self.logger.error(' GPGKey incorrect fingerprint ' +
+ 'length (%s) for fingerprint: %s' %(len(x), x))
+ continue
+ if not self.fingerprint_re.match(x):
+ self.logger.error('ERROR in ldap info for: %s, %s'
+ %(info['uid'][0],info['cn'][0]))
+ self.logger.error(' GPGKey: Non hexadecimal digits in ' +
+ 'fingerprint for fingerprint: ' + x)
+ return
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2013-11-15 9:16 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2013-11-15 9:16 UTC (permalink / raw
To: gentoo-commits
commit: 37f1805ad3fbcf83e8828b2b73b983dc4e550e18
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 15 05:25:35 2013 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Fri Nov 15 09:13:57 2013 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=37f1805a
Add errors count to the output.
---
gkeyldap/actions.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
index be02dfd..13e67f7 100644
--- a/gkeyldap/actions.py
+++ b/gkeyldap/actions.py
@@ -124,6 +124,7 @@ class Actions(object):
filename = self.config['dev-seedfile'] + '.new'
self.seeds = Seeds(filename)
count = 0
+ error_count = 0
for dev in sorted(devs):
if devs[dev]['gentooStatus'][0] not in ['active']:
continue
@@ -134,10 +135,14 @@ class Actions(object):
new_gkey = GKEY._make(keyinfo)
self.seeds.add(new_gkey)
count += 1
+ else:
+ error_count += 1
self.output("Total number of seeds created:", count)
self.output("Seeds created...saving file: %s" % filename)
+ self.output("Total number of Dev's with gpg errors:", error_count)
self.logger.info("Total number of seeds created: %d" % count)
self.logger.info("Seeds created...saving file: %s" % filename)
+ self.logger.info("Total number of Dev's with gpg errors: %d" % error_count)
return self.seeds.save()
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2014-05-15 17:20 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2014-05-15 17:20 UTC (permalink / raw
To: gentoo-commits
commit: 4626141ce6464f8bb6efe04f649864315858496a
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Thu May 15 17:13:24 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu May 15 17:13:24 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=4626141c
cli.py: Complete docstrings
---
gkeyldap/cli.py | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/gkeyldap/cli.py b/gkeyldap/cli.py
index 1eba841..51a5060 100644
--- a/gkeyldap/cli.py
+++ b/gkeyldap/cli.py
@@ -27,6 +27,8 @@ class Main(object):
""" Main class init function.
@param root: string, root path to use
+ @param config: optional GKeysConfig instance, For API use
+ @param print_results: optional boolean, for API use
"""
self.root = root or "/"
self.config = config or GKeysConfig(root=root)
@@ -36,6 +38,11 @@ class Main(object):
def __call__(self, args=None):
+ """Main class call function
+
+ @param args: Optional list of argumanets to parse and action to run
+ Defaults to sys.argv[1:]
+ """
if args:
self.run(self.parse_args(args))
else:
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2014-05-27 20:56 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2014-05-27 20:56 UTC (permalink / raw
To: gentoo-commits
commit: ad9014433b09ada7826ae7a7e7c5a999121c000f
Author: Pavlos Ratis <dastergon <AT> gentoo <DOT> org>
AuthorDate: Mon May 19 14:50:42 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Tue May 20 12:27:15 2014 +0000
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=ad901443
remove unused build_gkeydict function from gkeyldap
---
gkeyldap/actions.py | 27 ---------------------------
1 file changed, 27 deletions(-)
diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
index 5b33600..27b35bf 100644
--- a/gkeyldap/actions.py
+++ b/gkeyldap/actions.py
@@ -149,33 +149,6 @@ class Actions(object):
return (x, target, search_field)
-
- def build_gkeydict(self, info):
- keyinfo = {}
- for x in GKEY._fields:
- field = gkey2ldap_map[x]
- if not field:
- continue
- try:
- # strip errant line feeds
- values = [y.strip('\n') for y in info[field]]
- if values and values in ['uid', 'cn' ]:
- value = values[0]
- # separate out short/long key id's
- elif values and x in ['keyid', 'longkeyid']:
- value = get_key_ids(x, values)
- else:
- value = values
- if 'undefined' in values:
- self.logger.error('%s = "undefined" for %s, %s'
- %(field, info['uid'][0], info['cn'][0]))
- if value:
- keyinfo[x] = value
- except KeyError:
- pass
- return keyinfo
-
-
def build_gkeylist(self, info):
keyinfo = []
keyid_found = False
^ permalink raw reply related [flat|nested] 23+ messages in thread
* [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/
@ 2014-08-20 3:55 Brian Dolbec
0 siblings, 0 replies; 23+ messages in thread
From: Brian Dolbec @ 2014-08-20 3:55 UTC (permalink / raw
To: gentoo-commits
commit: d14b6658b954fe7f521a074a1c181d1ef39ce00f
Author: Pavlos Ratis <dastergon <AT> gentoo <DOT> org>
AuthorDate: Sun Aug 17 18:22:44 2014 +0000
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Sun Aug 17 22:07:11 2014 +0000
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=d14b6658
make all fingerprints uppercase
---
gkeyldap/actions.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/gkeyldap/actions.py b/gkeyldap/actions.py
index e999624..3e66872 100644
--- a/gkeyldap/actions.py
+++ b/gkeyldap/actions.py
@@ -154,6 +154,8 @@ class Actions(object):
if not is_ok or not is_match:
is_good = False
if is_good:
+ # some developers add lowercase fingerprints
+ keyinfo['fingerprint'] = [key.upper() for key in keyinfo['fingerprint']]
# drop keyid and longkeyid
keyinfo.pop('keyid', None)
keyinfo.pop('longkeyid', None)
^ permalink raw reply related [flat|nested] 23+ messages in thread
end of thread, other threads:[~2014-08-20 3:55 UTC | newest]
Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-05-15 17:20 [gentoo-commits] proj/gentoo-keys:master commit in: gkeyldap/ Brian Dolbec
-- strict thread matches above, loose matches on Subject: below --
2014-08-20 3:55 Brian Dolbec
2014-05-27 20:56 Brian Dolbec
2013-11-15 9:16 Brian Dolbec
2013-11-10 1:01 Brian Dolbec
2013-11-10 1:01 Brian Dolbec
2013-11-10 1:01 Brian Dolbec
2013-07-16 0:50 Brian Dolbec
2013-07-06 19:02 Brian Dolbec
2013-07-06 19:02 Brian Dolbec
2013-07-06 19:02 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
2013-06-23 7:13 Brian Dolbec
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox