iOS, Andorid のアプリを配布するCGI

iOSのほうはiDEP取って inhouseってことで。

#!/usr/bin/python
import hmac
import hashlib
from base64 import b64encode, urlsafe_b64encode
from urllib import quote_plus, urlopen
sigbin = hmac.new(vkey, user, hashlib.sha256).digest()
signature = urlsafe_b64encode(sigbin)
s = urlsafe_b64encode(sigbin)
import cgi
import cgitb
cgitb.enable(display=0, logdir="/tmp")
#cgitb.enable()
import sys

form = cgi.FieldStorage()
fn, isig, ukey, usig = '', '', '', ''
if 'idle' in form.keys():
  ukey = form['idle'].value
  mac = hmac.new(vkey, ukey, hashlib.sha256)
  sig = mac.digest()
  isig = urlsafe_b64encode(sig)
if 'busy' in form.keys():
  usig = form['busy'].value
if 'fn' in form.keys():
  fn = form['fn'].value
  
f = urlsafe_b64decode(fn)[::-1]

if f == '' or isig == '' or ukey == '' or usig == '' or usig != isig:
  print """Content-type: text/html

Error
"""
else:
  fx = open("/var/uso/jordan/%s"%f, 'rb')
  fx.seek(0, 2)
  bytes = fx.tell()
  fx.seek(0, 0)
  ctype = "text/plain; charset=UTF-8"
  if '.apk' in f:
    ctype = "application/vnd.android.package-archive"
  elif '.ipa' in f:
    ctype = "application/octet-stream"

  print """Content-Type: %s
Content-Disposition: attachment; filename="%s"
Content-Length: %s
"""%(ctype, f, bytes)
  while True:
    data = fx.read(4096)
    sys.stdout.write(data)
    if not data: break
  fx.close()

みたいな?

あいかわらず雑ですが。