tor-browser

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

early_hint_asset.sjs (1784B)


      1 "use strict";
      2 
      3 function handleRequest(request, response) {
      4   let hinted =
      5     request.hasHeader("X-Moz") && request.getHeader("X-Moz") === "early hint";
      6   let count = JSON.parse(getSharedState("earlyHintCount"));
      7   if (hinted) {
      8     count.hinted += 1;
      9   } else {
     10     count.normal += 1;
     11   }
     12   setSharedState("earlyHintCount", JSON.stringify(count));
     13 
     14   let content = "";
     15   let qs = new URLSearchParams(request.queryString);
     16   let asset = qs.get("as");
     17 
     18   if (qs.get("cached") === "1") {
     19     response.setHeader("Cache-Control", "max-age=604800", false);
     20   } else {
     21     response.setHeader("Cache-Control", "no-cache", false);
     22   }
     23 
     24   if (asset === "image") {
     25     response.setHeader("Content-Type", "image/png", false);
     26     // set to green/black horizontal stripes (71 bytes)
     27     content = atob(
     28       hinted
     29         ? "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAADklEQVQIW2OU+i/FAAcADoABNV8XGBMAAAAASUVORK5CYII="
     30         : "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAE0lEQVQIW2P4//+/N8MkBiAGsgA1bAe1SzDY8gAAAABJRU5ErkJggg=="
     31     );
     32   } else if (asset === "style") {
     33     response.setHeader("Content-Type", "text/css", false);
     34     // green background on hint response, purple response otherwise
     35     content = `#square { background: ${hinted ? "#1aff1a" : "#4b0092"}`;
     36   } else if (asset === "script") {
     37     response.setHeader("Content-Type", "application/javascript", false);
     38     // green background on hint response, purple response otherwise
     39     content = `window.onload = function() {
     40       document.getElementById('square').style.background = "${
     41         hinted ? "#1aff1a" : "#4b0092"
     42       }";
     43     }`;
     44   } else if (asset === "fetch") {
     45     response.setHeader("Content-Type", "text/plain", false);
     46     content = hinted ? "hinted" : "normal";
     47   }
     48 
     49   response.write(content);
     50 }