aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2013-10-04 20:22:57 +0000
committerRob Austein <sra@hactrn.net>2013-10-04 20:22:57 +0000
commit61f96d6a1941e86163007b674b5190edb20da2bf (patch)
treec49a3c58eb8b8b43c1a96b7b562b997d657a87de /scripts
parent58437f9f507bb7c31976ebec7fd859a41482f85c (diff)
Depth markers.
svn path=/trunk/; revision=5544
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/rcynic-lta23
1 files changed, 22 insertions, 1 deletions
diff --git a/scripts/rcynic-lta b/scripts/rcynic-lta
index 64a007d8..6f5c7423 100755
--- a/scripts/rcynic-lta
+++ b/scripts/rcynic-lta
@@ -378,6 +378,7 @@ class RPDB(object):
der BLOB NOT NULL,
fn2 TEXT NOT NULL
CHECK (fn2 IN ('cer', 'crl', 'mft', 'roa', 'gbr')),
+ depth INTEGER,
subject INTEGER
REFERENCES keyname(id)
ON DELETE RESTRICT
@@ -489,7 +490,27 @@ class RPDB(object):
(rowid, uri))
if spinner:
- sys.stderr.write("\r= %d objects in %s, committing..." % (nobj, rpki.sundial.now() - start))
+ sys.stderr.write("\r= %d objects in %s.\n" % (nobj, rpki.sundial.now() - start))
+
+ self.cur.execute("UPDATE object SET depth = 0 WHERE subject = issuer")
+
+ for depth in xrange(500):
+ self.cur.execute("SELECT COUNT(*) FROM object WHERE depth IS NULL")
+ if self.cur.fetchone()[0] == 0:
+ break
+ if spinner:
+ sys.stderr.write("\rSetting depth markers %d..." % (depth + 1))
+ self.cur.execute("""
+ UPDATE object SET depth = ?
+ WHERE issuer IN (SELECT subject FROM object WHERE depth = ?)
+ """,
+ (depth + 1, depth))
+ else:
+ if spinner:
+ sys.stderr.write("\rGiving up on depth markers after reaching absurd depth %s")
+
+ if spinner:
+ sys.stderr.write("\nCommitting...")
self.db.commit()