tor-browser

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

TAOImage.py (1987B)


      1 import os
      2 
      3 from wptserve.utils import isomorphic_encode
      4 
      5 def main(request, response):
      6    origin = request.GET.first(b'origin')
      7    if origin:
      8        response.headers.set(b'Access-Control-Allow-Origin', origin)
      9 
     10    tao = request.GET.first(b'tao')
     11 
     12    if tao == b'wildcard':
     13    # wildcard, pass
     14        response.headers.set(b'Timing-Allow-Origin', b'*')
     15    elif tao == b'null':
     16    # null, fail
     17        response.headers.set(b'Timing-Allow-Origin', b'null')
     18    elif tao == b'origin':
     19    # case-sensitive match for origin, pass
     20        response.headers.set(b'Timing-Allow-Origin', origin)
     21    elif tao == b'space':
     22    # space separated list of origin and wildcard, fail
     23        response.headers.set(b'Timing-Allow-Origin', (origin + b' *'))
     24    elif tao == b'multi':
     25    # more than one TAO values, separated by comma, pass
     26        response.headers.set(b'Timing-Allow-Origin', origin)
     27        response.headers.append(b'Timing-Allow-Origin', b'*')
     28    elif tao == b'multi_wildcard':
     29    # multiple wildcards, separated by comma, pass
     30        response.headers.set(b'Timing-Allow-Origin', b'*')
     31        response.headers.append(b'Timing-Allow-Origin', b'*')
     32    elif tao == b'match_origin':
     33    # contains a match of origin, separated by comma, pass
     34        response.headers.set(b'Timing-Allow-Origin', origin)
     35        response.headers.append(b'Timing-Allow-Origin', b"fake")
     36    elif tao == b'match_wildcard':
     37    # contains a wildcard, separated by comma, pass
     38        response.headers.set(b'Timing-Allow-Origin', b"fake")
     39        response.headers.append(b'Timing-Allow-Origin', b'*')
     40    elif tao == b'uppercase':
     41    # non-case-sensitive match for origin, fail
     42        response.headers.set(b'Timing-Allow-Origin', origin.upper())
     43    else:
     44        pass
     45    response.headers.set(b"Cache-Control", b"no-cache, must-revalidate");
     46    image_path = os.path.join(os.path.dirname(isomorphic_encode(__file__)), b"square100.png");
     47    response.content = open(image_path, mode=u'rb').read();