tor-browser

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

early_hint_pixel.sjs (1202B)


      1 "use strict";
      2 
      3 function handleRequest(request, response) {
      4   response.setHeader("Content-Type", "image/png", false);
      5   response.setHeader("Cache-Control", "max-age=604800", false);
      6 
      7   // the typo in "Referer" is part of the http spec
      8   if (request.hasHeader("Referer")) {
      9     setSharedState("requestReferrer", request.getHeader("Referer"));
     10   } else {
     11     setSharedState("requestReferrer", "");
     12   }
     13 
     14   let count = JSON.parse(getSharedState("earlyHintCount"));
     15   let image;
     16   // send different sized images depending whether this is an early hint request
     17   if (
     18     request.hasHeader("X-Moz") &&
     19     request.getHeader("X-Moz") === "early hint"
     20   ) {
     21     count.hinted += 1;
     22     // set to green/black horizontal stripes (71 bytes)
     23     image = atob(
     24       "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAADklEQVQIW2OU+i/FAAcADoABNV8X" +
     25         "GBMAAAAASUVORK5CYII="
     26     );
     27   } else {
     28     count.normal += 1;
     29     // set to purple/white checkered pattern (76 bytes)
     30     image = atob(
     31       "iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAAE0lEQVQIW2P4//+/N8MkBiAGsgA1" +
     32         "bAe1SzDY8gAAAABJRU5ErkJggg=="
     33     );
     34   }
     35   setSharedState("earlyHintCount", JSON.stringify(count));
     36   response.write(image);
     37 }