tor-browser

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

auth_post.sjs (941B)


      1 const CC = Components.Constructor;
      2 const BinaryInputStream = CC(
      3   "@mozilla.org/binaryinputstream;1",
      4   "nsIBinaryInputStream",
      5   "setInputStream"
      6 );
      7 
      8 function readStream(inputStream) {
      9   let available = 0;
     10   let result = [];
     11   while ((available = inputStream.available()) > 0) {
     12     result.push(inputStream.readBytes(available));
     13   }
     14 
     15   return result.join("");
     16 }
     17 
     18 function handleRequest(request, response) {
     19   if (request.method != "POST") {
     20     response.setStatusLine(request.httpVersion, 405, "Method Not Allowed");
     21     return;
     22   }
     23 
     24   if (request.hasHeader("Authorization")) {
     25     let data = "";
     26     try {
     27       data = readStream(new BinaryInputStream(request.bodyInputStream));
     28     } catch (e) {
     29       data = `${e}`;
     30     }
     31     response.bodyOutputStream.write(data, data.length);
     32     return;
     33   }
     34 
     35   response.setStatusLine(request.httpVersion, 401, "Unauthorized");
     36   response.setHeader("WWW-Authenticate", `basic realm="test"`, true);
     37 }