tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

cors.py (1481B)


      1 import os
      2 from wptserve import pipes
      3 
      4 from wptserve.utils import isomorphic_decode
      5 
      6 def run_other(request, response, path):
      7    #This is a terrible hack
      8    environ = {u"__file__": path}
      9    exec(compile(open(path, u"r").read(), path, u'exec'), environ, environ)
     10    rv = environ[u"main"](request, response)
     11    return rv
     12 
     13 def main(request, response):
     14    origin = request.GET.first(b"origin", request.headers[b"origin"])
     15    credentials = request.GET.first(b"credentials", b"true")
     16 
     17    response.headers.update([(b"Access-Control-Allow-Origin", origin),
     18                             (b"Access-Control-Allow-Credentials", credentials)])
     19 
     20    handler = request.GET.first(b'run')
     21    if handler in [b"status-reconnect",
     22                   b"message",
     23                   b"redirect",
     24                   b"cache-control"]:
     25        if handler == b"cache-control":
     26            response.headers.set(b"Content-Type", b"text/event-stream")
     27            rv = open(os.path.join(request.doc_root, u"eventsource", u"resources", u"cache-control.event_stream"), u"r").read()
     28            response.content = rv
     29            pipes.sub(request, response)
     30            return
     31        elif handler == b"redirect":
     32            return run_other(request, response, os.path.join(request.doc_root, u"common", u"redirect.py"))
     33        else:
     34            return run_other(request, response, os.path.join(os.path.dirname(isomorphic_decode(__file__)), isomorphic_decode(handler) + u".py"))
     35    else:
     36        return