tor-browser

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

file_XHRSendData.sjs (983B)


      1 const CC = Components.Constructor;
      2 const BinaryInputStream = CC(
      3   "@mozilla.org/binaryinputstream;1",
      4   "nsIBinaryInputStream",
      5   "setInputStream"
      6 );
      7 
      8 function handleRequest(request, response) {
      9   if (request.hasHeader("Content-Type")) {
     10     response.setHeader(
     11       "Result-Content-Type",
     12       request.getHeader("Content-Type")
     13     );
     14   }
     15 
     16   response.setHeader("Content-Type", "text/plain; charset=ISO-8859-1");
     17 
     18   var body = new BinaryInputStream(request.bodyInputStream);
     19   var avail;
     20   var bytes = [];
     21   while ((avail = body.available()) > 0) {
     22     Array.prototype.push.apply(bytes, body.readByteArray(avail));
     23   }
     24 
     25   var data = String.fromCharCode.apply(null, bytes);
     26   response.setHeader("Result-Content-Length", "" + data.length);
     27   if (data.includes("TEST_REDIRECT_STR")) {
     28     var newURL = "http://" + data.split("&url=")[1];
     29     response.setStatusLine(null, 307, "redirect");
     30     response.setHeader("Location", newURL, false);
     31   } else {
     32     response.write(data);
     33   }
     34 }