summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJosef Gustafsson <josef@nordu.net>2015-08-25 09:34:13 +0200
committerJosef Gustafsson <josef@nordu.net>2015-08-25 09:34:13 +0200
commitc7c29d0a81a89f8e3a2dea3e595e5080f9ca9ab9 (patch)
tree99575fd18c5c022f995b9786aef1d15301b4c3e4 /tools
parentce0da63fba8232e373e8a1a6e85a46dd208f91e7 (diff)
parent74dd0360bda561bdd88ec85d9bb07398bf404261 (diff)
Merge branch 'master' of https://git.nordu.net/catlfish
Diffstat (limited to 'tools')
-rwxr-xr-xtools/storagegc.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/tools/storagegc.py b/tools/storagegc.py
index c13dcb5..a4f15b7 100755
--- a/tools/storagegc.py
+++ b/tools/storagegc.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-# Copyright (c) 2014, NORDUnet A/S.
+# Copyright (c) 2015, NORDUnet A/S.
# See LICENSE for licensing information.
import argparse
@@ -22,7 +22,7 @@ localconfig = yaml.load(open(args.localconfig))
paths = localconfig["paths"]
db_path = paths["db"]
-create_ssl_context(cafile=paths["https_cacertfile"])
+create_ssl_context(cafile=paths.get("public_cacertfile", None))
baseurl = config["baseurl"]
@@ -50,15 +50,34 @@ def verifyleafhash(leaf_hash):
starttime = datetime.datetime.now()
-lastverified = (-1, None)
try:
- for i, line in enumerate(open(db_path + "newentries")):
+ lastverifiedstring = open(db_path + "lastverifiednewentry").read()
+ lastverified = json.loads(lastverifiedstring)
+except IOError:
+ lastverified = {"index": -1, "hash": None}
+print "starting at", lastverified
+
+newentriesfile = open(db_path + "newentries")
+if lastverified["index"] >= 0:
+ newentriesfile.seek(lastverified["index"]*65)
+ assert(newentriesfile.read(64).lower() == lastverified["hash"])
+newentriesfile.seek((lastverified["index"]+1)*65)
+
+try:
+ i = lastverified["index"] + 1
+ sincewritten = 0
+ for line in newentriesfile:
leaf_hash = base64.b16decode(line.strip(), casefold=True)
result = verifyleafhash(leaf_hash)
if not result:
break
lastverified = {"index": i, "hash": base64.b16encode(leaf_hash).lower()}
+ i += 1
+ sincewritten += 1
+ if sincewritten > 1000:
+ write_file(db_path + "lastverifiednewentry", lastverified)
+ sincewritten = 0
if lastverified["index"] >= 0:
write_file(db_path + "lastverifiednewentry", lastverified)
print "lastverified", lastverified