Gentoo Archives: gentoo-commits

From: Brian Dolbec <brian.dolbec@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoo-keys:master commit in: etc/, gkeys/
Date: Sun, 10 Nov 2013 01:01:23
Message-Id: 1374929014.e27dfb1acd82f3559c91d03d36302a98fa3f14a7.dol-sen@gentoo
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