- adapted files to mediaserver. - added mediaserver banner images. - added mediaserver code.
59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# ------------------------------------------------------------
|
|
# Controlador para acceso indirecto a ficheros remotos
|
|
# ------------------------------------------------------------
|
|
import base64
|
|
import re
|
|
import urllib
|
|
import urllib2
|
|
|
|
from controller import Controller
|
|
|
|
|
|
class proxy(Controller):
|
|
pattern = re.compile("^/proxy/")
|
|
|
|
def run(self, path):
|
|
url = path.replace("/proxy/", "").split("/")[0]
|
|
url = base64.b64decode(urllib.unquote_plus(url))
|
|
|
|
request_headers = self.handler.headers.dict
|
|
|
|
if "host" in request_headers: request_headers.pop("host")
|
|
if "referer" in request_headers: request_headers.pop("referer")
|
|
if "cookie" in request_headers: request_headers.pop("cookie")
|
|
|
|
if "|" in url:
|
|
url_headers = dict(
|
|
[[header.split("=")[0].lower(), urllib.unquote_plus("=".join(header.split("=")[1:]))] for header in
|
|
url.split("|")[1].split("&")])
|
|
url = url.split("|")[0]
|
|
request_headers.update(url_headers)
|
|
|
|
req = urllib2.Request(url, headers=request_headers)
|
|
opener = urllib2.build_opener(urllib2.HTTPHandler(debuglevel=0))
|
|
|
|
try:
|
|
h = opener.open(req)
|
|
except urllib2.HTTPError, e:
|
|
h = e
|
|
except:
|
|
self.handler.send_response("503")
|
|
self.handler.wfile.close()
|
|
h.close()
|
|
|
|
self.handler.send_response(h.getcode())
|
|
for header in h.info():
|
|
self.handler.send_header(header, h.info()[header])
|
|
|
|
self.handler.end_headers()
|
|
|
|
blocksize = 1024
|
|
bloqueleido = h.read(blocksize)
|
|
while len(bloqueleido) > 0:
|
|
self.handler.wfile.write(bloqueleido)
|
|
bloqueleido = h.read(blocksize)
|
|
|
|
self.handler.wfile.close()
|
|
h.close()
|