Compare commits
No commits in common. "master" and "v4.0.12" have entirely different histories.
10 changed files with 51 additions and 152 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,6 +1,5 @@
|
|||
node_modules
|
||||
*.log
|
||||
npm-debug.log
|
||||
.env
|
||||
.vscode
|
||||
.DS_Store
|
||||
|
||||
.DS_Store
|
|
@ -1,11 +1,5 @@
|
|||
# Changelog
|
||||
|
||||
## [4.0.13] - 2019-11-23
|
||||
### Added
|
||||
- Added a mechanism to handle dynamically allocating numerous ports at the same time without collisions per [jogli5er's](https://github.com/jogli5er) suggestion in [PR 15](https://zb.gy/3a).
|
||||
### Changed
|
||||
- Switched 'granax' package to '@deadcanaries/granax' as suggested in [issue 12](https://zb.gy/2z).
|
||||
|
||||
## [4.0.12] - 2019-11-21
|
||||
### Added
|
||||
- Added a entrypoint file so the node.js process is not the root process, so it responds to SIGINT calls (Ctrl+C).
|
||||
|
|
|
@ -1 +1 @@
|
|||
tor-router.gh.zb.gy
|
||||
tor-router.docs.zacharyboyd.nyc
|
|
@ -56,7 +56,7 @@ const shell = require('shelljs');
|
|||
const getPort = require('get-port');
|
||||
const del = require('del');
|
||||
const temp = require('temp');
|
||||
const { TorController } = require('@deadcanaries/granax');
|
||||
const { TorController } = require('granax');
|
||||
const nanoid = require("nanoid");
|
||||
const winston = require('winston');
|
||||
Promise.promisifyAll(temp);
|
||||
|
|
|
@ -64,7 +64,7 @@ module.exports = {
|
|||
"Log": "notice stdout",
|
||||
"NewCircuitPeriod": "10"
|
||||
},
|
||||
"torPath": require('@deadcanaries/granax').tor(require('os').platform()),
|
||||
"torPath": require('granax').tor(require('os').platform()),
|
||||
"instances": null,
|
||||
"dns": {
|
||||
"timeout": 10000,
|
||||
|
|
148
package-lock.json
generated
148
package-lock.json
generated
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tor-router",
|
||||
"version": "4.0.13",
|
||||
"version": "4.0.11",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -10,61 +10,6 @@
|
|||
"integrity": "sha1-nK+xca+CMpSQNTtIFvAzR6oVCjA=",
|
||||
"optional": true
|
||||
},
|
||||
"@deadcanaries/granax": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmjs.org/@deadcanaries/granax/-/granax-3.2.4.tgz",
|
||||
"integrity": "sha512-2R/OUWeTlx6/2HVAeCtViKZHoQvD8YSKa/sVHc24itbNUGZ/StDbfwVE82/IvqNmY7Du7M1CsCDKYteGxkcNcQ==",
|
||||
"requires": {
|
||||
"7zip": "0.0.6",
|
||||
"async": "^2.3.0",
|
||||
"latest-torbrowser-version": "^2.0.2",
|
||||
"merge": "^1.2.1",
|
||||
"mkdirp": "^0.5.1",
|
||||
"mv": "^2.1.1",
|
||||
"ncp": "^2.0.0",
|
||||
"progress": "^2.0.3",
|
||||
"rimraf": "^2.6.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob": {
|
||||
"version": "7.1.6",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
|
||||
"integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
|
||||
"requires": {
|
||||
"fs.realpath": "^1.0.0",
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "^3.0.4",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"latest-torbrowser-version": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/latest-torbrowser-version/-/latest-torbrowser-version-2.0.2.tgz",
|
||||
"integrity": "sha512-2cg5j8szOY0g3jlyLZhye9as3oJihNJD3DN9+I7tdXMEBW4ZKH8Blq17xtj5Q2jtV7v8NjRCkBrXz3zPEjMWLQ==",
|
||||
"requires": {
|
||||
"async": "^2.6.0",
|
||||
"cheerio": "^1.0.0-rc.2",
|
||||
"follow-redirects": "^1.2.4",
|
||||
"semver": "^5.4.1"
|
||||
}
|
||||
},
|
||||
"merge": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
|
||||
"integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ=="
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
|
||||
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@types/events": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
|
||||
|
@ -204,9 +149,9 @@
|
|||
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
|
||||
},
|
||||
"arrify": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
|
||||
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.4",
|
||||
|
@ -236,11 +181,6 @@
|
|||
"lodash": "^4.14.0"
|
||||
}
|
||||
},
|
||||
"async-mutex": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.1.4.tgz",
|
||||
"integrity": "sha512-zVWTmAnxxHaeB2B1te84oecI8zTDJ/8G49aVBblRX6be0oq6pAybNcUSxwfgVOmOjSCvN4aYZAqwtyNI8e1YGw=="
|
||||
},
|
||||
"asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
|
@ -1002,6 +942,19 @@
|
|||
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
|
||||
"dev": true
|
||||
},
|
||||
"granax": {
|
||||
"version": "3.1.4",
|
||||
"resolved": "https://registry.npmjs.org/granax/-/granax-3.1.4.tgz",
|
||||
"integrity": "sha512-MhmOZs4c2KKCYqC5ORANfW535QTvkqAGOZPTBpiUsdqtgF5sOix14pDsq3Ye11kx+C6IgFPQZoTmifESDBswaA==",
|
||||
"requires": {
|
||||
"7zip": "0.0.6",
|
||||
"async": "^2.3.0",
|
||||
"latest-torbrowser-version": "^2.0.1",
|
||||
"merge": "^1.2.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"ncp": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"growl": {
|
||||
"version": "1.10.5",
|
||||
"resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
|
||||
|
@ -1555,6 +1508,17 @@
|
|||
"colornames": "0.0.2"
|
||||
}
|
||||
},
|
||||
"latest-torbrowser-version": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/latest-torbrowser-version/-/latest-torbrowser-version-2.0.1.tgz",
|
||||
"integrity": "sha512-HtbbcKs6cl7Tz4RG+l1uulWd+tOJujn8wqyXd2zZjPRk9rO/mslg7Ajg72beEFCXwHPWZzwVR+w8mPO5yDiOWg==",
|
||||
"requires": {
|
||||
"async": "^2.6.0",
|
||||
"cheerio": "^1.0.0-rc.2",
|
||||
"follow-redirects": "^1.2.4",
|
||||
"semver": "^5.4.1"
|
||||
}
|
||||
},
|
||||
"lcid": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
|
||||
|
@ -1686,6 +1650,11 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"merge": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz",
|
||||
"integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo="
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.36.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
|
||||
|
@ -1903,38 +1872,6 @@
|
|||
"websocket": "^1.0.28"
|
||||
}
|
||||
},
|
||||
"mv": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz",
|
||||
"integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=",
|
||||
"requires": {
|
||||
"mkdirp": "~0.5.1",
|
||||
"ncp": "~2.0.0",
|
||||
"rimraf": "~2.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"glob": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz",
|
||||
"integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=",
|
||||
"requires": {
|
||||
"inflight": "^1.0.4",
|
||||
"inherits": "2",
|
||||
"minimatch": "2 || 3",
|
||||
"once": "^1.3.0",
|
||||
"path-is-absolute": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "2.4.5",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
|
||||
"integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=",
|
||||
"requires": {
|
||||
"glob": "^6.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"nan": {
|
||||
"version": "2.12.1",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
|
||||
|
@ -2060,7 +1997,8 @@
|
|||
"ncp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M="
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
||||
"optional": true
|
||||
},
|
||||
"nice-try": {
|
||||
"version": "1.0.5",
|
||||
|
@ -2195,11 +2133,6 @@
|
|||
"define-property": "2.0.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"arrify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
|
||||
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
|
||||
},
|
||||
"babylon": {
|
||||
"version": "7.0.0-beta.47",
|
||||
"resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.47.tgz",
|
||||
|
@ -2308,11 +2241,6 @@
|
|||
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
|
||||
"integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
|
||||
},
|
||||
"progress": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
|
||||
"integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
|
||||
},
|
||||
"pseudomap": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
|
||||
|
@ -2615,8 +2543,7 @@
|
|||
"dependencies": {
|
||||
"ipv6": {
|
||||
"version": "3.1.1",
|
||||
"resolved": false,
|
||||
"integrity": "sha1-RtoOJgrzb9m+tBKXyYe3whotnhw=",
|
||||
"bundled": true,
|
||||
"requires": {
|
||||
"cli": "0.4.x",
|
||||
"cliff": "0.1.x",
|
||||
|
@ -2625,8 +2552,7 @@
|
|||
"dependencies": {
|
||||
"sprintf": {
|
||||
"version": "0.1.3",
|
||||
"resolved": false,
|
||||
"integrity": "sha1-Uw/DFAXUdCL27bQPKb2vrFme3hE="
|
||||
"bundled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tor-router",
|
||||
"version": "4.0.13",
|
||||
"version": "4.0.12",
|
||||
"main": "src/index.js",
|
||||
"repository": "git@github.com:znetstar/tor-router.git",
|
||||
"author": "Zachary Boyd <zachary@zacharyboyd.nyc>",
|
||||
|
@ -31,13 +31,11 @@
|
|||
"socks-proxy-agent": "^4.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@deadcanaries/granax": "^3.2.4",
|
||||
"arrify": "^2.0.1",
|
||||
"async-mutex": "^0.1.4",
|
||||
"bluebird": "^3.5.2",
|
||||
"del": "^3.0.0",
|
||||
"eventemitter3": "^3.1.0",
|
||||
"get-port": "^2.1.0",
|
||||
"granax": "^3.1.4",
|
||||
"js-weighted-list": "^0.1.1",
|
||||
"lodash": "^4.17.4",
|
||||
"multi-rpc": "^1.5.5",
|
||||
|
|
|
@ -27,9 +27,7 @@ const Promise = require("bluebird");
|
|||
const _ = require('lodash');
|
||||
const WeightedList = require('js-weighted-list');
|
||||
|
||||
const getPort = require('get-port');
|
||||
const TorProcess = require('./TorProcess');
|
||||
const { Mutex } = require('async-mutex');
|
||||
|
||||
Promise.promisifyAll(fs);
|
||||
|
||||
|
@ -464,19 +462,6 @@ class TorPool extends EventEmitter {
|
|||
|
||||
if (typeof(instances) === 'number') {
|
||||
instances = Array.from(Array(instances)).map(() => ({}));
|
||||
const lock = new Mutex();
|
||||
instances = await Promise.all(instances.map(async(instance) => {
|
||||
instance.ports = {};
|
||||
let release = await lock.acquire();
|
||||
try {
|
||||
instance.ports.dns_port = await getPort();
|
||||
instance.ports.socks_port = await getPort();
|
||||
instance.ports.control_port = await getPort();
|
||||
} finally {
|
||||
release();
|
||||
}
|
||||
return instance;
|
||||
}));
|
||||
}
|
||||
return await this.add(instances);
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ const shell = require('shelljs');
|
|||
const getPort = require('get-port');
|
||||
const del = require('del');
|
||||
const temp = require('temp');
|
||||
const { TorController } = require('@deadcanaries/granax');
|
||||
const { TorController } = require('granax');
|
||||
const nanoid = require("nanoid");
|
||||
const winston = require('winston');
|
||||
Promise.promisifyAll(temp);
|
||||
|
@ -52,7 +52,6 @@ class TorProcess extends EventEmitter {
|
|||
definition.Config = definition.Config || {};
|
||||
|
||||
this._definition = definition;
|
||||
this._ports = definition.ports || {};
|
||||
|
||||
/**
|
||||
* Path to the Tor executable.
|
||||
|
@ -264,12 +263,10 @@ class TorProcess extends EventEmitter {
|
|||
* @returns {Promise<ChildProcess>} - The process that has been created.
|
||||
*/
|
||||
async create() {
|
||||
let dnsPort = this._ports.dns_port || await getPort();
|
||||
let socksPort = this._ports.socks_port || await getPort();
|
||||
let controlPort = this._ports.control_port || await getPort();
|
||||
this.logger.info(`[tor-${this.instance_name}]: DNS PORT = ${dnsPort}`);
|
||||
this.logger.info(`[tor-${this.instance_name}]: SOCKS PORT = ${socksPort}`);
|
||||
this.logger.info(`[tor-${this.instance_name}]: CONTROL PORT = ${controlPort}`);
|
||||
this._ports = {};
|
||||
let dnsPort = this._ports.dns_port = await getPort();
|
||||
let socksPort = this._ports.socks_port = await getPort();
|
||||
let controlPort = this._ports.control_port = await getPort();
|
||||
Object.freeze(this._ports);
|
||||
|
||||
let options = {
|
||||
|
@ -406,7 +403,7 @@ class TorProcess extends EventEmitter {
|
|||
* @returns {Error}
|
||||
*/
|
||||
this.emit('error', new Error(msg));
|
||||
this.logger.error(`[tor-${this.instance_name}]: ${text}`);
|
||||
this.logger.error(`[tor-${this.instance_name}]: ${msg}`);
|
||||
}
|
||||
|
||||
else if (text.indexOf('[notice]') !== -1) {
|
||||
|
|
|
@ -21,7 +21,7 @@ module.exports = {
|
|||
"Log": "notice stdout",
|
||||
"NewCircuitPeriod": "10"
|
||||
},
|
||||
"torPath": require('@deadcanaries/granax').tor(require('os').platform()),
|
||||
"torPath": require('granax').tor(require('os').platform()),
|
||||
"instances": null,
|
||||
"dns": {
|
||||
"timeout": 10000,
|
||||
|
|
Loading…
Add table
Reference in a new issue