aboutsummaryrefslogtreecommitdiff
path: root/potpourri
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2014-07-22 14:37:27 +0000
committerRob Austein <sra@hactrn.net>2014-07-22 14:37:27 +0000
commit774acaf3c0553d3d8252752dda4a02073b3dd56e (patch)
treee6212b0cb6628e3fb036723d3fbde160c11a4e6f /potpourri
parentda5a898a4809ff4ad28d3a26458e69769ad88bbe (diff)
Checkpoint
svn path=/branches/tk705/; revision=5906
Diffstat (limited to 'potpourri')
-rwxr-xr-xpotpourri/rrdp-test-tool76
1 files changed, 48 insertions, 28 deletions
diff --git a/potpourri/rrdp-test-tool b/potpourri/rrdp-test-tool
index 0fe548b7..fa2de023 100755
--- a/potpourri/rrdp-test-tool
+++ b/potpourri/rrdp-test-tool
@@ -27,31 +27,51 @@ import lxml.etree
import argparse
import os
-parser = argparse.ArgumentParser(description = __doc__)
-parser.add_argument("rrdp_snapshot",
- help = "RRDP snapshot file")
-parser.add_argument("rcynic_tree", nargs = "?", default = "unauthenticated",
- help = "directory tree in which to write extracted RPKI objects")
-args = parser.parse_args()
-
-xml = lxml.etree.ElementTree(file = args.rrdp_snapshot).getroot()
-rpki.relaxng.rrdp.assertValid(xml)
-assert xml.tag == rpki.relaxng.rrdp.xmlns + "snapshot"
-
-if not os.path.isdir(args.rcynic_tree):
- os.makedirs(args.rcynic_tree)
-
-print "Unpacking version %s session %s serial %s" % (
- xml.get("version"), xml.get("session_id"), xml.get("serial"))
-
-for elt in xml:
- assert elt.tag == rpki.relaxng.rrdp.xmlns + "publish"
- uri = elt.get("uri")
- print " ", uri
- assert uri.startswith("rsync://")
- fn = os.path.join(args.rcynic_tree, uri[len("rsync://"):])
- dn = os.path.dirname(fn)
- if not os.path.isdir(dn):
- os.makedirs(dn)
- with open(fn, "wb") as f:
- f.write(elt.text.decode("base64"))
+class Tags(object):
+ def __init__(self, *tags):
+ for tag in tags:
+ setattr(self, tag, rpki.relaxng.rrdp.xmlns + tag)
+
+tags = Tags("notification", "deltas", "delta", "snapshot", "publish", "withdraw")
+
+class main(object):
+
+ def __init__(self):
+
+ parser = argparse.ArgumentParser(description = __doc__)
+ parser.add_argument("--rcynic-tree", default = "rcynic-data/unauthenticated",
+ help = "directory tree in which to write extracted RPKI objects")
+ parser.add_argument("rrdp_file", nargs = "+",
+ help = "RRDP snapshot or deltas file")
+ self.args = parser.parse_args()
+
+ if not os.path.isdir(self.args.rcynic_tree):
+ os.makedirs(self.args.rcynic_tree)
+
+ for rrdp_file in self.args.rrdp_file:
+ xml = lxml.etree.ElementTree(file = rrdp_file).getroot()
+ rpki.relaxng.rrdp.assertValid(xml)
+ getattr(self, xml.tag[len(rpki.relaxng.rrdp.xmlns):])(xml)
+
+
+ def snapshot(self, xml):
+ assert xml.tag == tags.snapshot
+
+ print "Unpacking version %s session %s serial %s" % (
+ xml.get("version"), xml.get("session_id"), xml.get("serial"))
+
+ for elt in xml:
+ assert elt.tag == tags.publish
+ uri = elt.get("uri")
+ print " ", uri
+ assert uri.startswith("rsync://")
+ fn = os.path.join(self.args.rcynic_tree, uri[len("rsync://"):])
+ dn = os.path.dirname(fn)
+ if not os.path.isdir(dn):
+ os.makedirs(dn)
+ with open(fn, "wb") as f:
+ f.write(elt.text.decode("base64"))
+
+
+if __name__ == "__main__":
+ main()