aboutsummaryrefslogtreecommitdiff
path: root/potpourri
diff options
context:
space:
mode:
Diffstat (limited to 'potpourri')
-rwxr-xr-xpotpourri/rrdp-fetch-from-tal26
-rwxr-xr-xpotpourri/rrdp-fetch.py2
-rwxr-xr-xpotpourri/rrdp-test-tool2
3 files changed, 28 insertions, 2 deletions
diff --git a/potpourri/rrdp-fetch-from-tal b/potpourri/rrdp-fetch-from-tal
index 0a97955e..08d245dd 100755
--- a/potpourri/rrdp-fetch-from-tal
+++ b/potpourri/rrdp-fetch-from-tal
@@ -40,6 +40,32 @@ class Tags(object):
tags = Tags("notification", "delta", "snapshot", "publish", "withdraw")
+class RSyncHandler(urllib2.BaseHandler):
+ """
+ Jam support for rsync:// URIs into urllib2 framework.
+ Very basic, probably not paranoid enough.
+ """
+
+ _n = 0
+
+ def rsync_open(self, req):
+ import subprocess, mimetools
+ u = req.get_full_url()
+ if u.endswith("/"):
+ raise urllib2.URLError("rsync directory URI not allowed")
+ t = "/tmp/rrdp-fetch-from-tal.%d.%d" % (os.getpid(), self._n)
+ self._n += 1
+ subprocess.check_call(("rsync", u, t))
+ h = mimetools.Message(open("/dev/null"))
+ h["Content-type"] = "text/plain"
+ h["Content-length"] = str(os.stat(t).st_size)
+ f = open(t, "rb")
+ os.unlink(t)
+ return urllib2.addinfourl(f, h, u)
+
+urllib2.install_opener(urllib2.build_opener(RSyncHandler))
+
+
class main(object):
def __init__(self):
diff --git a/potpourri/rrdp-fetch.py b/potpourri/rrdp-fetch.py
index aa5b762b..469c0c9f 100755
--- a/potpourri/rrdp-fetch.py
+++ b/potpourri/rrdp-fetch.py
@@ -33,7 +33,7 @@ class BadHash(Exception):
def fetch(elt):
uri = elt.get("uri")
- hash = elt.get("hash")
+ hash = elt.get("hash").lower()
print "Fetching", uri
text = urlopen(uri).read()
diff --git a/potpourri/rrdp-test-tool b/potpourri/rrdp-test-tool
index 8ea90f17..ccf17960 100755
--- a/potpourri/rrdp-test-tool
+++ b/potpourri/rrdp-test-tool
@@ -90,7 +90,7 @@ class main(object):
def del_obj(self, uri, hash):
fn = self.uri_to_filename(uri)
with open(fn, "rb") as f:
- if hash != rpki.x509.sha256(f.read()).encode("hex"):
+ if hash.lower() != rpki.x509.sha256(f.read()).encode("hex"):
raise RuntimeError("Hash mismatch for URI %s" % uri)
os.unlink(fn)
dn = os.path.dirname(fn)