tor-browser

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

redirect_post.sjs (1094B)


      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   var query = {};
     10   request.queryString.split("&").forEach(function (val) {
     11     var [name, value] = val.split("=");
     12     query[name] = unescape(value);
     13   });
     14 
     15   var bodyStream = new BinaryInputStream(request.bodyInputStream);
     16   var bodyBytes = [];
     17   while ((bodyAvail = bodyStream.available()) > 0) {
     18     Array.prototype.push.apply(bodyBytes, bodyStream.readByteArray(bodyAvail));
     19   }
     20 
     21   var body = decodeURIComponent(
     22     escape(String.fromCharCode.apply(null, bodyBytes))
     23   );
     24 
     25   var currentHop = query.hop ? parseInt(query.hop) : 0;
     26 
     27   var obj = JSON.parse(body);
     28   if (currentHop < obj.hops) {
     29     var newURL =
     30       "/tests/dom/serviceworkers/test/redirect_post.sjs?hop=" +
     31       (1 + currentHop);
     32     response.setStatusLine(null, 307, "redirect");
     33     response.setHeader("Location", newURL);
     34     return;
     35   }
     36 
     37   response.setHeader("Content-Type", "application/json");
     38   response.write(body);
     39 }