tor-browser

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

ruleset.py (2034B)


      1 def main(request, response):
      2    url = request.GET[b"url"].decode("utf-8")
      3    uuid = request.GET[b"uuid"].decode("utf-8")
      4    page = request.GET[b"page"].decode("utf-8")
      5    valid_json = request.GET[b"valid_json"].decode("utf-8")
      6    empty_json = request.GET[b"empty_json"].decode("utf-8")
      7    fail_cors = request.GET[b"fail_cors"].decode("utf-8")
      8    valid_encoding = request.GET[b"valid_encoding"].decode("utf-8")
      9    redirect = request.GET[b"redirect"].decode("utf-8")
     10    sec_fetch_dest = request.headers[b"Sec-Fetch-Dest"].decode(
     11        "utf-8").lower() if b"Sec-Fetch-Dest" in request.headers else None
     12    content_type = b"application/speculationrules+json" if request.GET[
     13        b"valid_mime"].decode("utf-8") == "true" else b"application/json"
     14    status = int(request.GET[b"status"])
     15 
     16    if redirect == "true":
     17        new_url = request.url.replace("redirect=true",
     18                                      "redirect=false").encode("utf-8")
     19        return 301, [(b"Location", new_url),
     20                     (b'Access-Control-Allow-Origin', b'*')], b""
     21 
     22    encoding = "utf-8" if valid_encoding == "true" else "windows-1250"
     23    content_type += f'; charset={encoding}'.encode('utf-8')
     24    strparam = b'\xc3\xb7'.decode('utf-8')
     25 
     26    content = f'''
     27      {{
     28        "prefetch": [
     29          {{
     30            "source":"list",
     31            "urls":["{url}?uuid={uuid}&page={page}&str={strparam}"]
     32          }}
     33        ]
     34      }}
     35  '''
     36    if empty_json == "true":
     37        content = ""
     38    elif valid_json != "true":
     39        content = "invalid json"
     40    elif sec_fetch_dest is None:
     41        content = "Missing Sec-Fetch-Dest"
     42    elif sec_fetch_dest != "speculationrules":
     43        content = "Unexpected Sec-Fetch-Dest " + sec_fetch_dest
     44 
     45    headers = [(b"Content-Type", content_type)]
     46    if fail_cors != "true":
     47        origin = request.headers[
     48            b"Origin"] if b"Origin" in request.headers else b'*'
     49        headers.append((b'Access-Control-Allow-Origin', origin))
     50    return status, headers, content.encode(encoding)