tor-browser

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

allowed.sjs (1760B)


      1 function parseQuery(request, key) {
      2   var params = request.queryString.split("&");
      3   for (var j = 0; j < params.length; ++j) {
      4     var p = params[j];
      5     if (p == key) {
      6       return true;
      7     }
      8     if (p.indexOf(key + "=") == 0) {
      9       return p.substring(key.length + 1);
     10     }
     11     if (!p.includes("=") && key == "") {
     12       return p;
     13     }
     14   }
     15   return false;
     16 }
     17 
     18 var types = {
     19   js: "text/javascript",
     20   m4s: "video/mp4",
     21   mp4: "video/mp4",
     22   ogg: "video/ogg",
     23   ogv: "video/ogg",
     24   oga: "audio/ogg",
     25   webm: "video/webm",
     26   wav: "audio/x-wav",
     27 };
     28 
     29 // Return file with name as per the query string with access control
     30 // allow headers.
     31 function handleRequest(request, response) {
     32   var resource = parseQuery(request, "");
     33 
     34   var file = Services.dirsvc.get("CurWorkD", Ci.nsIFile);
     35   var fis = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(
     36     Ci.nsIFileInputStream
     37   );
     38   var bis = Cc["@mozilla.org/binaryinputstream;1"].createInstance(
     39     Ci.nsIBinaryInputStream
     40   );
     41   var paths = "tests/dom/media/test/" + resource;
     42   var split = paths.split("/");
     43   for (var i = 0; i < split.length; ++i) {
     44     file.append(split[i]);
     45   }
     46   fis.init(file, -1, -1, false);
     47   dump("file=" + file + "\n");
     48   bis.setInputStream(fis);
     49   var bytes = bis.readBytes(bis.available());
     50   response.setStatusLine(request.httpVersion, 206, "Partial Content");
     51   response.setHeader(
     52     "Content-Range",
     53     "bytes 0-" + (bytes.length - 1) + "/" + bytes.length
     54   );
     55   response.setHeader("Content-Length", "" + bytes.length, false);
     56   var ext = resource.substring(resource.lastIndexOf(".") + 1);
     57   response.setHeader("Content-Type", types[ext], false);
     58   response.setHeader("Access-Control-Allow-Origin", "*");
     59   response.write(bytes, bytes.length);
     60   bis.close();
     61 }