tor-browser

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

util.js (2343B)


      1 var path = require('path');
      2 var fs = require('fs');
      3 var spawn = require('child_process').spawn;
      4 
      5 function noop() {}
      6 exports.noop = noop;
      7 
      8 if (process.env.HTTP2_LOG) {
      9  var logOutput = process.stderr;
     10  if (process.stderr.isTTY) {
     11    var bin = path.resolve(path.dirname(require.resolve('bunyan')), '..', 'bin', 'bunyan');
     12    if(bin && fs.existsSync(bin)) {
     13      logOutput = spawn(bin, ['-o', 'short'], {
     14        stdio: [null, process.stderr, process.stderr]
     15      }).stdin;
     16    }
     17  }
     18  exports.createLogger = function(name) {
     19    return require('bunyan').createLogger({
     20      name: name,
     21      stream: logOutput,
     22      level: process.env.HTTP2_LOG,
     23      serializers: require('../lib/http').serializers
     24    });
     25  };
     26  exports.log = exports.createLogger('test');
     27  exports.clientLog = exports.createLogger('client');
     28  exports.serverLog = exports.createLogger('server');
     29 } else {
     30  exports.createLogger = function() {
     31    return exports.log;
     32  };
     33  exports.log = exports.clientLog = exports.serverLog = {
     34    fatal: noop,
     35    error: noop,
     36    warn : noop,
     37    info : noop,
     38    debug: noop,
     39    trace: noop,
     40 
     41    child: function() { return this; }
     42  };
     43 }
     44 
     45 exports.callNTimes = function callNTimes(limit, done) {
     46  if (limit === 0) {
     47    done();
     48  } else {
     49    var i = 0;
     50    return function() {
     51      i += 1;
     52      if (i === limit) {
     53        done();
     54      }
     55    };
     56  }
     57 };
     58 
     59 // Concatenate an array of buffers into a new buffer
     60 exports.concat = function concat(buffers) {
     61  var size = 0;
     62  for (var i = 0; i < buffers.length; i++) {
     63    size += buffers[i].length;
     64  }
     65 
     66  var concatenated = Buffer.alloc(size);
     67  for (var cursor = 0, j = 0; j < buffers.length; cursor += buffers[j].length, j++) {
     68    buffers[j].copy(concatenated, cursor);
     69  }
     70 
     71  return concatenated;
     72 };
     73 
     74 exports.random = function random(min, max) {
     75  return min + Math.floor(Math.random() * (max - min + 1));
     76 };
     77 
     78 // Concatenate an array of buffers and then cut them into random size buffers
     79 exports.shuffleBuffers = function shuffleBuffers(buffers) {
     80  var concatenated = exports.concat(buffers), output = [], written = 0;
     81 
     82  while (written < concatenated.length) {
     83    var chunk_size = Math.min(concatenated.length - written, Math.ceil(Math.random()*20));
     84    output.push(concatenated.slice(written, written + chunk_size));
     85    written += chunk_size;
     86  }
     87 
     88  return output;
     89 };