tor-browser

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

svg.py (1481B)


      1 import os, sys
      2 from wptserve.utils import isomorphic_decode
      3 import importlib
      4 subresource = importlib.import_module("common.security-features.subresource.subresource")
      5 
      6 def generate_payload(request, server_data):
      7    data = (u'{"headers": %(headers)s}') % server_data
      8    if b"id" in request.GET:
      9        with request.server.stash.lock:
     10            request.server.stash.take(request.GET[b"id"])
     11            request.server.stash.put(request.GET[b"id"], data)
     12    return u"<svg xmlns='http://www.w3.org/2000/svg'></svg>"
     13 
     14 def generate_payload_embedded(request, server_data):
     15    return subresource.get_template(u"svg.embedded.template") % {
     16        u"id": isomorphic_decode(request.GET[b"id"]),
     17        u"property": isomorphic_decode(request.GET[b"property"])}
     18 
     19 def generate_report_headers_payload(request, server_data):
     20    stashed_data = request.server.stash.take(request.GET[b"id"])
     21    return stashed_data
     22 
     23 def main(request, response):
     24    handler = lambda data: generate_payload(request, data)
     25    content_type = b'image/svg+xml'
     26 
     27    if b"embedded-svg" in request.GET:
     28        handler = lambda data: generate_payload_embedded(request, data)
     29 
     30    if b"report-headers" in request.GET:
     31        handler = lambda data: generate_report_headers_payload(request, data)
     32        content_type = b'application/json'
     33 
     34    subresource.respond(request,
     35                        response,
     36                        payload_generator = handler,
     37                        content_type = content_type)