tor-browser

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

sjs_slow-load.sjs (1084B)


      1 /* Any copyright is dedicated to the Public Domain.
      2  * http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 /* exported handleRequest */
      5 
      6 "use strict";
      7 
      8 function handleRequest(request, response) {
      9   const { scheme, host, path, queryString } = request;
     10   const params = queryString.split("&").reduce((acc, item) => {
     11     const [key, value] = item.split("=");
     12     acc[key] = value;
     13     return acc;
     14   }, {});
     15 
     16   const basePath = path.substr(0, path.lastIndexOf("/") + 1);
     17   const redirectURL = `${scheme}://${host}${basePath}/${params.file}`;
     18   const delayMs = params.delay ? parseInt(params.delay) : 2000;
     19 
     20   // SJS code doesn't have a setTimeout so we just busy-loop...
     21   const start = Date.now();
     22   while (Date.now() < start + delayMs) continue;
     23 
     24   response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
     25   response.setHeader("Pragma", "no-cache");
     26   response.setHeader("Expires", "0");
     27   response.setHeader("Access-Control-Allow-Origin", "*", false);
     28 
     29   response.setStatusLine(request.httpVersion, 302, "Found");
     30   response.setHeader("Location", redirectURL);
     31 }