waf/playground/distnet/server/cgi-bin/download.py

42 lines
936 B
Python
Executable File

#! /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