1 |
commit: e27dfb1acd82f3559c91d03d36302a98fa3f14a7 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Jul 27 12:43:34 2013 +0000 |
4 |
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com> |
5 |
CommitDate: Sat Jul 27 12:43:34 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=e27dfb1a |
7 |
|
8 |
Add keyserver config option |
9 |
|
10 |
--- |
11 |
etc/gkeys.conf | 4 ++++ |
12 |
gkeys/config.py | 1 + |
13 |
gkeys/lib.py | 64 ++++++++++++++++++++++++++++++++++++--------------------- |
14 |
3 files changed, 46 insertions(+), 23 deletions(-) |
15 |
|
16 |
diff --git a/etc/gkeys.conf b/etc/gkeys.conf |
17 |
index 5b91597..46d45aa 100644 |
18 |
--- a/etc/gkeys.conf |
19 |
+++ b/etc/gkeys.conf |
20 |
@@ -3,6 +3,10 @@ |
21 |
|
22 |
[MAIN] |
23 |
|
24 |
+# keyserver: server to use to obtain the keys from |
25 |
+keyserver: pool.sks-keyservers.net |
26 |
+ |
27 |
+ |
28 |
# keysdir: base directory to store the binary keyrings and data |
29 |
keysdir: /var/lib/gentoo |
30 |
|
31 |
|
32 |
diff --git a/gkeys/config.py b/gkeys/config.py |
33 |
index 96b4aee..fe78dec 100644 |
34 |
--- a/gkeys/config.py |
35 |
+++ b/gkeys/config.py |
36 |
@@ -61,6 +61,7 @@ class GKeysConfig(GPGConfig): |
37 |
self.defaults['known-keysfile'] = '%(keysdir)s/knownkeys' |
38 |
self.defaults['release-seedfile'] = '%(configdir)s/release.seeds' |
39 |
self.defaults['dev-seedfile'] = '%(configdir)s/developer.seeds' |
40 |
+ self.defaults['keyserver'] = 'pool.sks-keyservers.net' |
41 |
|
42 |
|
43 |
|
44 |
|
45 |
diff --git a/gkeys/lib.py b/gkeys/lib.py |
46 |
index a97b7e7..66e27dc 100644 |
47 |
--- a/gkeys/lib.py |
48 |
+++ b/gkeys/lib.py |
49 |
@@ -16,6 +16,7 @@ with gentoo-keys specific convienience functions. |
50 |
|
51 |
''' |
52 |
|
53 |
+import os |
54 |
from os.path import join as pjoin |
55 |
|
56 |
from pyGPG.gpg import GPG |
57 |
@@ -33,38 +34,52 @@ class GkeysGPG(GPG): |
58 |
@param keydir: string, the path to the keydir to be used |
59 |
for all operations. |
60 |
''' |
61 |
- GPG.__init__(self, config) |
62 |
+ GPG.__init__(self, config, logger) |
63 |
self.config = config |
64 |
self.basedir = keydir |
65 |
self.keydir = None |
66 |
- self.task = None |
67 |
- self.task_value = None |
68 |
+ self.server = None |
69 |
|
70 |
|
71 |
- def set_keypath(self, keyring, task=None): |
72 |
+ def set_keyserver(self, server=None): |
73 |
+ '''Set the keyserver and add the --keyserver option to the gpg defaults |
74 |
+ ''' |
75 |
+ if self.server and not server: |
76 |
+ return |
77 |
+ self.server = server or self.config['keyserver'] |
78 |
+ self.config.options['gpg_defaults'] = self.config.defaults['gpg_defaults'][:] |
79 |
+ logger.debug("keyserver: %s" % (self.server)) |
80 |
+ server_value = ['--keyserver', self.server] |
81 |
+ self.config.options['gpg_defaults'].extend(server_value) |
82 |
+ logger.debug("self.config.options['gpg_defaults']: %s" |
83 |
+ % (self.config.options['gpg_defaults'])) |
84 |
+ return |
85 |
+ |
86 |
+ |
87 |
+ def set_keyring(self, keyring, task, reset=True): |
88 |
+ '''Sets the keyring to use as well as related task options |
89 |
+ ''' |
90 |
logger.debug("keydir: %s, keyring: %s" % (self.keydir, keyring)) |
91 |
- self.task = task |
92 |
- keypath = pjoin(self.keydir, keyring) |
93 |
+ if reset: |
94 |
+ self.config.options['tasks'][task] = self.config.defaults['tasks'][task][:] |
95 |
# --keyring file | Note that this adds a keyring to the current list. |
96 |
# If the intent is to use the specified keyring alone, |
97 |
# use --keyring along with --no-default-keyring. |
98 |
- self.task_value = ['--no-default-keyring', '--keyring', keypath] |
99 |
- task.extend(self.task_value) |
100 |
+ task_value = ['--no-default-keyring', '--keyring', keyring] |
101 |
+ self.config.options['tasks'][task].extend(task_value) |
102 |
+ logger.debug("set_keyring: New task options: %s" %str(self.config.options['tasks'][task])) |
103 |
return |
104 |
|
105 |
|
106 |
- def reset_task(self): |
107 |
- if self.task: |
108 |
- for item in self.task_value: |
109 |
- self.task.remove(item) |
110 |
- self.task = None |
111 |
- self.task_value = None |
112 |
- |
113 |
- |
114 |
- def set_keydir(self, keydir): |
115 |
+ def set_keydir(self, keydir, task, reset=True): |
116 |
logger.debug("basedir: %s, keydir: %s" % (self.basedir, keydir)) |
117 |
- self.task = task |
118 |
self.keydir = pjoin(self.basedir, keydir) |
119 |
+ self.task = task |
120 |
+ if reset: |
121 |
+ self.config.options['tasks'][task] = self.config.defaults['tasks'][task][:] |
122 |
+ task_value = ['--homedir', self.keydir] |
123 |
+ self.config.options['tasks'][task].extend(task_value) |
124 |
+ logger.debug("set_keydir: New task options: %s" %str(self.config.options['tasks'][task])) |
125 |
return |
126 |
|
127 |
|
128 |
@@ -74,7 +89,11 @@ class GkeysGPG(GPG): |
129 |
@param gkey: GKEY namedtuple with |
130 |
(name, keyid/longkeyid, keydir, fingerprint,) |
131 |
''' |
132 |
- self.set_keydir(gkey.keydir) |
133 |
+ self.set_keyserver() |
134 |
+ self.set_keydir(gkey.keydir, 'recv-keys', reset=True) |
135 |
+ self.set_keyring('pubring.gpg', 'recv-keys', reset=False) |
136 |
+ if not os.path.exists(self.keydir): |
137 |
+ os.makedirs(self.keydir, mode=0700) |
138 |
|
139 |
# prefer the longkeyid if available |
140 |
#logger.debug("LIB: add_key; keyids %s, %s" |
141 |
@@ -89,7 +108,7 @@ class GkeysGPG(GPG): |
142 |
for keyid in keyids: |
143 |
logger.debug("LIB: add_key; final keyids" + keyid) |
144 |
logger.debug("** Calling runGPG with Running 'gpg %s --recv-keys %s' for: %s" |
145 |
- % (' '.join(self.config['tasks']['recv-keys']), |
146 |
+ % (' '.join(self.config.get_key('tasks', 'recv-keys')), |
147 |
keyid, gkey.name) |
148 |
) |
149 |
result = self.runGPG(task='recv-keys', inputfile=keyid) |
150 |
@@ -149,13 +168,12 @@ class GkeysGPG(GPG): |
151 |
if '--with-colons' in self.config['tasks']['list-keys']: |
152 |
self.config['tasks']['list-keys'].remove('--with-colons') |
153 |
|
154 |
- self.set_keydir(keydir) |
155 |
+ self.set_keydir(keydir, 'list-keys') |
156 |
logger.debug("** Calling runGPG with Running 'gpg %s --list-keys %s'" |
157 |
% (' '.join(self.config['tasks']['list-keys']), keydir) |
158 |
) |
159 |
- result = self.runGPG(task='list-keys') |
160 |
+ result = self.runGPG(task='list-keys', inputfile=keydir) |
161 |
logger.info('GPG return code: ' + str(result.returncode)) |
162 |
- #self.reset_task() |
163 |
return result |