#! /usr/bin/env python import os, sys import cgi, cgitb cgitb.enable() PKGDIR = os.environ.get('PKGDIR', os.path.abspath('../packages')) form = cgi.FieldStorage() def getvalue(x): v = form.getvalue(x) if not v: print("Status: 413\ncontent-type: text/plain\n\nmissing %s\n" % x) return v pkgname = getvalue('pkgname') pkgver = getvalue('pkgver') pkgfile = getvalue('pkgfile') filename = os.path.join(PKGDIR, pkgname, pkgver, pkgfile) if not os.path.exists(filename): filename = filename + '.tarfile' if not os.path.exists(filename): print("Status: 404\ncontent-type: text/plain\n\nInvalid package %r\n" % filename) length = os.stat(filename).st_size print("Content-Type: application/octet-stream") print("Content-Disposition: attachment; filename=f.bin") print("Content-length: %s" % length) print("") with open(filename, 'rb') as f: while True: buf = f.read(8192) if buf: sys.stdout.write(buf) else: break