tor-browser

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

idn.py (2786B)


      1 # élève.
      2 utf8_subdomain = b"Domain=\xC3\xA9\x6C\xC3\xA8\x76\x65."
      3 # élève。
      4 utf8_dot_subdomain = b"Domain=\xC3\xA9\x6C\xC3\xA8\x76\x65\xE3\x80\x82"
      5 # élève.
      6 punycode_subdomain = b"Domain=xn--lve-6lad."
      7 # ÿlève.
      8 wrong_utf8_subdomain = b"Domain=\xC3\xBF\x6C\xC3\xA8\x76\x65."
      9 # ÿlève.
     10 wrong_punycode_subdomain = b"Domain=xn--lve-6la7i."
     11 # élève with invalid FF byte at the end
     12 invalid_byte_subdomain = b"Domain=\xC3\xA9\x6C\xC3\xA8\x76\x65\xFF."
     13 
     14 def main(request, response):
     15  host = request.GET.get(b"host")
     16 
     17  if b"set-utf8" in request.GET:
     18    response.headers.append(b"Set-Cookie", b"utf8=set;" + utf8_subdomain + host)
     19    response.content = "set"
     20  if b"set-utf8-dot" in request.GET:
     21    response.headers.append(b"Set-Cookie", b"utf8-dot=set;" + utf8_dot_subdomain + host)
     22    response.content = "set"
     23  elif b"set-wrong-utf8" in request.GET:
     24    response.headers.append(b"Set-Cookie", b"wrong-utf8=set;" + wrong_utf8_subdomain + host)
     25    response.content = "set"
     26  elif b"set-punycode" in request.GET:
     27    response.headers.append(b"Set-Cookie", b"punycode=set;" + punycode_subdomain + host)
     28    response.content = "set"
     29  elif b"set-wrong-punycode" in request.GET:
     30    response.headers.append(b"Set-Cookie", b"wrong-punycode=set;" + wrong_punycode_subdomain + host)
     31    response.content = "set"
     32  elif b"set-invalid-byte" in request.GET:
     33    response.headers.append(b"Set-Cookie", b"invalid-byte=set;" + invalid_byte_subdomain + host)
     34    response.content = "set"
     35 
     36  elif b"get" in request.GET:
     37    if b"Cookie" in request.headers:
     38      response.content = request.headers[b"Cookie"]
     39    else:
     40      response.content = "no cookies"
     41 
     42  elif b"delete-utf8" in request.GET:
     43    response.headers.append(b"Set-Cookie", b"utf8=unset;Max-Age=0;" + utf8_subdomain + host)
     44    response.content = "delete"
     45  elif b"delete-utf8-dot" in request.GET:
     46    response.headers.append(b"Set-Cookie", b"utf8-dot=unset;Max-Age=0;" + utf8_dot_subdomain + host)
     47    response.content = "delete"
     48  elif b"delete-wrong-utf8" in request.GET:
     49    response.headers.append(b"Set-Cookie", b"wrong-utf8=unset;Max-Age=0;" + wrong_utf8_subdomain + host)
     50    response.content = "delete"
     51  elif b"delete-punycode" in request.GET:
     52    response.headers.append(b"Set-Cookie", b"punycode=unset;Max-Age=0;" + punycode_subdomain + host)
     53    response.content = "delete"
     54  elif b"delete-wrong-punycode" in request.GET:
     55    response.headers.append(b"Set-Cookie", b"wrong-punycode=unset;Max-Age=0;" + wrong_punycode_subdomain + host)
     56    response.content = "delete"
     57  elif b"delete-invalid-byte" in request.GET:
     58    response.headers.append(b"Set-Cookie", b"invalid-byte=unset;Max-Age=0;" + invalid_byte_subdomain + host)
     59    response.content = "delete"
     60 
     61  response.headers.append(b"Content-Type", b"text/plain")