diff options
Diffstat (limited to 'potpourri')
-rwxr-xr-x | potpourri/rrdp-fetch-from-tal | 26 | ||||
-rwxr-xr-x | potpourri/rrdp-fetch.py | 2 | ||||
-rwxr-xr-x | potpourri/rrdp-test-tool | 2 |
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) |