#! /usr/bin/env python import cgitb; cgitb.enable() import cgi, sys DBPATH = '/home/arigo/cache/fdb' form = cgi.FieldStorage() checksum = form["sha"].value.decode('hex') from filesdb import FilesDB fdb = FilesDB(DBPATH) entry = fdb.find_sha(checksum) f = entry.open() f.seek(0, 2) length = f.tell() f.seek(0) print "Content-type: application/octet-stream" print "Content-length:", length print while length > 0: data = f.read(16384) if not data: break sys.stdout.write(data) length -= len(data) f.close() sys.stdout.close()