summaryrefslogtreecommitdiff
path: root/cgi-bin/proxy
blob: df208a04306aa44adf30fde854077617ec545454 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/python

from os import environ as env
import urllib.request
import base64
import json
import sys

def error():
  print("Content-type: text/html")
  print()
  print("HELLO!")

def proxy(url,ext,callback):
  req = urllib.request.urlopen(url)
  if callback != "":
    print("Content-type: text/plain")
    print()
    sys.stdout.flush()
    sys.stdout.buffer.write( bytes( callback + "(btoa(" + json.dumps( "".join(map(chr, base64.b64encode( req.read() )))) + "))" , 'utf-8'))
  else:
    print("Content-type: image/" + ext)
    print()
    sys.stdout.flush()
    sys.stdout.buffer.write( req.read() )

qs = env['QUERY_STRING'].split('&callback=')
if len(qs) == 2:
  callback = qs[1]
else:
  callback = ''
path = qs[0]

ext = path[-3:].lower()

if path[0:4] == "http" and ext in ("gif","jpg","png","peg"):
  proxy(path,ext,callback)
else:
  error()