tor-browser

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

redundant_font_download.sjs (2366B)


      1 "use strict";
      2 
      3 const BinaryOutputStream = Components.Constructor(
      4   "@mozilla.org/binaryoutputstream;1",
      5   "nsIBinaryOutputStream",
      6   "setOutputStream"
      7 );
      8 
      9 // this is simply a hex dump of a red square .PNG image
     10 // prettier-ignore
     11 const RED_SQUARE =
     12   [
     13     0x89,  0x50,  0x4E,  0x47,  0x0D,  0x0A,  0x1A,  0x0A,  0x00,  0x00,
     14     0x00,  0x0D,  0x49,  0x48,  0x44,  0x52,  0x00,  0x00,  0x00,  0x20,
     15     0x00,  0x00,  0x00,  0x20,  0x08,  0x02,  0x00,  0x00,  0x00,  0xFC,
     16     0x18,  0xED,  0xA3,  0x00,  0x00,  0x00,  0x01,  0x73,  0x52,  0x47,
     17     0x42,  0x00,  0xAE,  0xCE,  0x1C,  0xE9,  0x00,  0x00,  0x00,  0x28,
     18     0x49,  0x44,  0x41,  0x54,  0x48,  0xC7,  0xED,  0xCD,  0x41,  0x0D,
     19     0x00,  0x00,  0x08,  0x04,  0xA0,  0xD3,  0xFE,  0x9D,  0x35,  0x85,
     20     0x0F,  0x37,  0x28,  0x40,  0x4D,  0x6E,  0x75,  0x04,  0x02,  0x81,
     21     0x40,  0x20,  0x10,  0x08,  0x04,  0x02,  0xC1,  0x93,  0x60,  0x01,
     22     0xA3,  0xC4,  0x01,  0x3F,  0x58,  0x1D,  0xEF,  0x27,  0x00,  0x00,
     23     0x00,  0x00,  0x49,  0x45,  0x4E,  0x44,  0xAE,  0x42,  0x60,  0x82
     24   ];
     25 
     26 function handleRequest(request, response) {
     27   let query = {};
     28   request.queryString.split("&").forEach(function (val) {
     29     let [name, value] = val.split("=");
     30     query[name] = unescape(value);
     31   });
     32 
     33   response.setHeader("Cache-Control", "no-cache");
     34 
     35   response.setStatusLine(request.httpVersion, 200, "OK");
     36   response.setHeader("Content-Type", "text/plain", false);
     37 
     38   let log = getState("bug-879963-request-log") || "";
     39 
     40   let stream = new BinaryOutputStream(response.bodyOutputStream);
     41 
     42   if (query.q == "init") {
     43     log = "init"; // initialize the log, and return a PNG image
     44     response.setHeader("Content-Type", "image/png", false);
     45     stream.writeByteArray(RED_SQUARE);
     46   } else if (query.q == "image") {
     47     log = log + ";" + query.q;
     48     response.setHeader("Content-Type", "image/png", false);
     49     stream.writeByteArray(RED_SQUARE);
     50   } else if (query.q == "font") {
     51     log = log + ";" + query.q;
     52     // we don't provide a real font; that's ok, OTS will just reject it
     53     response.write("Junk");
     54   } else if (query.q == "report") {
     55     // don't include the actual "report" request in the log we return
     56     response.write(log);
     57   } else {
     58     log = log + ";" + query.q;
     59     response.setStatusLine(request.httpVersion, 404, "Not Found");
     60   }
     61 
     62   setState("bug-879963-request-log", log);
     63 }