1 |
commit: 653d1b0c231ee789a294d040a67cef141bb11cc0 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Thu Jul 5 17:51:36 2018 +0000 |
4 |
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jul 7 05:22:13 2018 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/gentoo-keys.git/commit/?id=653d1b0c |
7 |
|
8 |
gkeys seedhandler.py: Simplify code, let verify() handle fetching |
9 |
|
10 |
Signed-off-by: Brian Dolbec <dolsen <AT> gentoo.org> |
11 |
|
12 |
gkeys/gkeys/seedhandler.py | 68 ++++++++++++++++++++++++---------------------- |
13 |
1 file changed, 35 insertions(+), 33 deletions(-) |
14 |
|
15 |
diff --git a/gkeys/gkeys/seedhandler.py b/gkeys/gkeys/seedhandler.py |
16 |
index cb082ef..a7bfbaa 100644 |
17 |
--- a/gkeys/gkeys/seedhandler.py |
18 |
+++ b/gkeys/gkeys/seedhandler.py |
19 |
@@ -24,6 +24,7 @@ demandload( |
20 |
"json:load", |
21 |
"gkeys.exception:UpdateDbError", |
22 |
"gkeys.fileops:ensure_dirs", |
23 |
+ "gkeys.fileops:updateseeds", |
24 |
"gkeys.fetch:Fetch", |
25 |
"sslfetch.connections:get_timestamp", |
26 |
) |
27 |
@@ -170,9 +171,10 @@ class SeedHandler(object): |
28 |
if category == 'sign': |
29 |
catdir = self.config.get_key('sign-keydir') |
30 |
else: |
31 |
- keyrings = self.config.get_key('keyring') |
32 |
- catdir = os.path.join(keyrings, category) |
33 |
- self.logger.debug("SeedHandler: load_category; catdir = %s" % catdir) |
34 |
+ #keyrings = self.config.get_key('keyring') |
35 |
+ #catdir = os.path.join(keyrings, category) |
36 |
+ catdir = self.config.get_key('keyrings', category) |
37 |
+ self.logger.debug("SeedHandler: load_category; catdir = %s", catdir) |
38 |
try: |
39 |
if not nicks: |
40 |
nicks = os.listdir(catdir) |
41 |
@@ -185,11 +187,14 @@ class SeedHandler(object): |
42 |
try: |
43 |
with open(gkey_path, 'r') as fileseed: |
44 |
seed = load(fileseed) |
45 |
+ self.logger.debug("SeedHandler: load_category; loaded seed file %s.", |
46 |
+ gkey_path) |
47 |
except IOError as error: |
48 |
- self.logger.debug("SeedHandler: load_category; IOError loading seed file %s." |
49 |
- % gkey_path) |
50 |
+ self.logger.debug("SeedHandler: load_category; IOError loading seed file %s.", |
51 |
+ gkey_path) |
52 |
self.logger.debug("Error was: %s" % str(error)) |
53 |
if seed: |
54 |
+ self.logger.debug("SeedHandler: load_category; processing seeds: %s", seed) |
55 |
for nick in sorted(seed): |
56 |
key = seed[nick] |
57 |
# GKEY class change auto-update |
58 |
@@ -206,6 +211,7 @@ class SeedHandler(object): |
59 |
self.logger.debug("SeedHandler: load_category; OSError for %s" % catdir) |
60 |
self.logger.exception("Error was: %s" % str(error)) |
61 |
self.seeds = seeds |
62 |
+ self.logger.debug("SeedHandler: load_category; seeds loaded: %s", seeds) |
63 |
return seeds |
64 |
|
65 |
def fetch_seeds(self, seeds, args, verified_dl=None): |
66 |
@@ -231,44 +237,40 @@ class SeedHandler(object): |
67 |
except KeyError: |
68 |
pass |
69 |
succeeded = [] |
70 |
- seedsdir = os.path.join(self.config.get_key('seedsdir')) |
71 |
+ seedsdir = os.path.dirname(self.config.get_key('seeds', seeds)) |
72 |
updatedir = os.path.join(seedsdir, "__updates__") |
73 |
mode = int(self.config.get_key('permissions', 'directories'),0) |
74 |
ensure_dirs(updatedir, mode=mode) |
75 |
self.update_lock = LockDir(updatedir) |
76 |
self.update_lock.write_lock() |
77 |
- fetcher = Fetch(self.logger) |
78 |
for (seed, url, filepath) in urls: |
79 |
tmppath = os.path.join(updatedir, os.path.split(filepath)[-1]) |
80 |
# use the real timestamp file for the dl timestamp |
81 |
tpath = filepath + ".timestamp" |
82 |
- # verify the re-fetch cycle timer |
83 |
- if fetcher.verify_cycle(tpath, climit=60): |
84 |
- timestamp = get_timestamp(filepath + ".timestamp") |
85 |
- success, msgs = fetcher.fetch_url(url, tmppath, timestamp=timestamp) |
86 |
- messages.extend(msgs) |
87 |
- if success: |
88 |
- verify_info = self.config.get_key('verify-seeds', seed).split() |
89 |
- args.category = verify_info[0] |
90 |
- args.nick = verify_info[1] |
91 |
- args.filename = url |
92 |
- args.signature = tmppath + ".timestamp" |
93 |
- #args.timestamp = True |
94 |
- args.destination = tmppath |
95 |
- verified, messages_ = verified_dl(args) |
96 |
- messages.append(messages_) |
97 |
- if verified and not args.fetchonly: |
98 |
- self.seedsdir_lock = LockDir(seedsdir) |
99 |
- if updateseeds(tmppath, filepath) and updateseeds(args.signature, tpath): |
100 |
- self.logger.info("Updated seed file...: %s ... OK" % (filepath)) |
101 |
- succeeded.append(verified) |
102 |
- else: |
103 |
- self.logger.info("Updating seed file...: %s ... Failed" % (filepath)) |
104 |
- succeeded.append(False) |
105 |
- self.seedsdir_lock.unlock() |
106 |
+ verify_info = self.config.get_key('verify-seeds', seed).split() |
107 |
+ args.category = verify_info[0] |
108 |
+ args.nick = verify_info[1] |
109 |
+ args.filename = url |
110 |
+ args.signature = tmppath + ".sig" |
111 |
+ args.timestamp = tpath |
112 |
+ args.destination = tmppath |
113 |
+ args.fetchonly = False |
114 |
+ verified, messages_ = verified_dl(args) |
115 |
+ messages.append(messages_) |
116 |
+ if verified and not args.fetchonly: |
117 |
+ self.seedsdir_lock = LockDir(seedsdir) |
118 |
+ if (updateseeds(self.config, self.logger, tmppath, filepath) and |
119 |
+ updateseeds(self.config, self.logger, args.signature, tpath) |
120 |
+ ): |
121 |
+ self.logger.info("Updated seed file...: %s ... OK" % (filepath)) |
122 |
+ succeeded.append(verified) |
123 |
else: |
124 |
- # sha512sum the 2 files |
125 |
- pass |
126 |
+ self.logger.info("Updating seed file...: %s ... Failed" % (filepath)) |
127 |
+ succeeded.append(False) |
128 |
+ self.seedsdir_lock.unlock() |
129 |
+ else: |
130 |
+ # sha512sum the 2 files |
131 |
+ pass |
132 |
self.update_lock.unlock() |
133 |
return (succeeded, messages) |