Compare commits
13 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6ab973e359 | ||
![]() |
0a414024c2 | ||
![]() |
a261baeed3 | ||
![]() |
6040db22dc | ||
![]() |
37a58f929a | ||
![]() |
c1b7a124c4 | ||
![]() |
5617f2bfdb | ||
![]() |
6b7054500d | ||
![]() |
bf0327ad66 | ||
![]() |
fbdbf525df | ||
![]() |
f89e4b20c5 | ||
![]() |
15408206a3 | ||
![]() |
76ab9ae829 |
13 changed files with 231 additions and 108 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
|||
node_modules
|
||||
npm-debug.log
|
||||
*.log
|
||||
.env
|
||||
.vscode
|
||||
.DS_Store
|
||||
.DS_Store
|
||||
|
||||
|
|
14
CHANGELOG.md
14
CHANGELOG.md
|
@ -1,5 +1,19 @@
|
|||
# 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).
|
||||
|
||||
## [4.0.11] - 2019-01-15
|
||||
### Changed
|
||||
- Updates `multi-rpc` to version 1.5.5.
|
||||
|
||||
## [4.0.10] - 2018-12-14
|
||||
### Changed
|
||||
- Updates `multi-rpc` to version 1.4.1.
|
||||
|
|
|
@ -20,7 +20,9 @@ USER tor_router
|
|||
|
||||
ADD package.json /app/package.json
|
||||
|
||||
RUN npm install
|
||||
ADD package-lock.json /app/package-lock.json
|
||||
|
||||
RUN npm ci
|
||||
|
||||
ADD . /app
|
||||
|
||||
|
@ -28,6 +30,6 @@ ENV HOME /home/tor_router
|
|||
|
||||
EXPOSE 9050 9053 9077
|
||||
|
||||
ENTRYPOINT [ "tor-router" ]
|
||||
ENTRYPOINT [ "/bin/bash", "/app/docker-entrypoint.sh" ]
|
||||
|
||||
CMD [ "-s", "-d", "-j", "1" ]
|
3
docker-entrypoint.sh
Normal file
3
docker-entrypoint.sh
Normal file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
/app/bin/tor-router $@
|
|
@ -1 +1 @@
|
|||
tor-router.docs.zacharyboyd.nyc
|
||||
tor-router.gh.zb.gy
|
|
@ -56,7 +56,7 @@ const shell = require('shelljs');
|
|||
const getPort = require('get-port');
|
||||
const del = require('del');
|
||||
const temp = require('temp');
|
||||
const { TorController } = require('granax');
|
||||
const { TorController } = require('@deadcanaries/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('granax').tor(require('os').platform()),
|
||||
"torPath": require('@deadcanaries/granax').tor(require('os').platform()),
|
||||
"instances": null,
|
||||
"dns": {
|
||||
"timeout": 10000,
|
||||
|
|
264
package-lock.json
generated
264
package-lock.json
generated
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tor-router",
|
||||
"version": "4.0.9",
|
||||
"version": "4.0.13",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -10,9 +10,64 @@
|
|||
"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": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
|
||||
"resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
|
||||
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
|
||||
},
|
||||
"@types/lodash": {
|
||||
|
@ -62,9 +117,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"acorn": {
|
||||
"version": "6.0.4",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz",
|
||||
"integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg=="
|
||||
"version": "6.0.5",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz",
|
||||
"integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg=="
|
||||
},
|
||||
"agent-base": {
|
||||
"version": "4.2.1",
|
||||
|
@ -149,9 +204,9 @@
|
|||
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY="
|
||||
},
|
||||
"arrify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
|
||||
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0="
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
|
||||
"integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug=="
|
||||
},
|
||||
"asn1": {
|
||||
"version": "0.2.4",
|
||||
|
@ -181,6 +236,11 @@
|
|||
"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",
|
||||
|
@ -942,19 +1002,6 @@
|
|||
"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",
|
||||
|
@ -1508,17 +1555,6 @@
|
|||
"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",
|
||||
|
@ -1650,11 +1686,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"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",
|
||||
|
@ -1732,25 +1763,25 @@
|
|||
}
|
||||
},
|
||||
"multi-rpc": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc/-/multi-rpc-1.4.1.tgz",
|
||||
"integrity": "sha512-/7eWHsw8CJpEPV/Dou9pRNdK8omzzffvC85IhVRakB/P85GB8a4S1XHyAY2+RJXrMzbRO+0l2cRRuUPkSP1O2A==",
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc/-/multi-rpc-1.5.5.tgz",
|
||||
"integrity": "sha512-JS6Pr0e9Rk4jFKAnyJD4qVzahlkreHH0cA76cua9pqiYnJhrb+pqGDNFxcSBfLvLhNpnY+dCOaBlsuRPahkzQA==",
|
||||
"requires": {
|
||||
"multi-rpc-common": "^2.1.0",
|
||||
"multi-rpc-core": "^1.0.1",
|
||||
"multi-rpc-http-client-side-transport": "^1.0.4",
|
||||
"multi-rpc-http-transport": "^1.0.3",
|
||||
"multi-rpc-json-serializer": "^1.0.4",
|
||||
"multi-rpc-msgpack-serializer": "^1.0.4",
|
||||
"multi-rpc-tcp-transport": "^1.1.0",
|
||||
"multi-rpc-websocket-client-side-transport": "^1.2.3",
|
||||
"multi-rpc-websocket-transport": "^1.2.2"
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"multi-rpc-core": "^1.0.3",
|
||||
"multi-rpc-http-client-side-transport": "^1.0.5",
|
||||
"multi-rpc-http-transport": "^1.0.4",
|
||||
"multi-rpc-json-serializer": "^1.0.5",
|
||||
"multi-rpc-msgpack-serializer": "^1.0.5",
|
||||
"multi-rpc-tcp-transport": "^1.1.3",
|
||||
"multi-rpc-websocket-client-side-transport": "^1.2.7",
|
||||
"multi-rpc-websocket-transport": "^1.2.5"
|
||||
}
|
||||
},
|
||||
"multi-rpc-common": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-common/-/multi-rpc-common-2.1.0.tgz",
|
||||
"integrity": "sha512-retoFduGmmijF9XgBTJPKMWSXGXkf44N3nSBkSXznYtjA2YC25C8MCEaZmvwE43+Oe7HPpuEcPWQkvE23psb5w==",
|
||||
"version": "2.2.6",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-common/-/multi-rpc-common-2.2.6.tgz",
|
||||
"integrity": "sha512-TEN63Sd2GYFbPJtCGh+7uwWk2N+W+Q6AZkPwAGsVPesFg9VptP34wBKlPSjyT0S5+OmjhDtcuCMUk664nfqNpg==",
|
||||
"requires": {
|
||||
"@types/lodash": "^4.14.119",
|
||||
"@types/serialize-error": "^2.1.0",
|
||||
|
@ -1774,15 +1805,15 @@
|
|||
}
|
||||
},
|
||||
"multi-rpc-core": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-core/-/multi-rpc-core-1.0.1.tgz",
|
||||
"integrity": "sha512-9Pdjs15reJqM8nbEOTN81SedR6MH3QVThx7LmxRgzvWVvq4gyrN/J6HQ9Q4uj7EQ6DR6O/Ureb8npqEf7xYESQ==",
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-core/-/multi-rpc-core-1.0.3.tgz",
|
||||
"integrity": "sha512-2CuqXaEBxaru2sDG0ng5EkM7F722RdYFv+GjQA8Ui/2QH5yMtb5EbwXM0S0LFrRkFWOzGaeHJLQ9n3pc15S0+Q==",
|
||||
"requires": {
|
||||
"@types/lodash": "^4.14.119",
|
||||
"acorn": "^6.0.4",
|
||||
"eventemitter2": "^5.0.1",
|
||||
"lodash": "^4.17.11",
|
||||
"multi-rpc-common": "^2.1.0",
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"parse-function": "^5.2.11"
|
||||
},
|
||||
"dependencies": {
|
||||
|
@ -1799,71 +1830,111 @@
|
|||
}
|
||||
},
|
||||
"multi-rpc-http-client-side-transport": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-http-client-side-transport/-/multi-rpc-http-client-side-transport-1.0.4.tgz",
|
||||
"integrity": "sha512-QjjA1F5GAERhn0aCsfOjNzaFrRyf7pU4pQLM/BnH1jyX7C/Mrh0YXHwCQKUKWzLygTD7AXEkSGGPyoTl1Wh0xw==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-http-client-side-transport/-/multi-rpc-http-client-side-transport-1.0.5.tgz",
|
||||
"integrity": "sha512-5+UXbN5V+BJrQwC09FJpv+4+B+ZjJaTeAfNorqQDjKhPEIFNnShxmvgUOfNghNph6H3hhHMnoM942kUA7rhb0w==",
|
||||
"requires": {
|
||||
"cross-fetch": "^3.0.0",
|
||||
"multi-rpc-common": "^2.1.0"
|
||||
"multi-rpc-common": "^2.2.6"
|
||||
}
|
||||
},
|
||||
"multi-rpc-http-transport": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-http-transport/-/multi-rpc-http-transport-1.0.3.tgz",
|
||||
"integrity": "sha512-Qvuxkuc4UB+F13goGz4rXP0wl2prVga0rn+eLJdwaDGfTDLgkWlh7H5iXb4jZEcdOyKqDjcZqcY1pVTfl7KeCg==",
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-http-transport/-/multi-rpc-http-transport-1.0.4.tgz",
|
||||
"integrity": "sha512-R4q+RrQjuk2t02aZtBze6yUDB/RZzklcx1HsZjT7lFBCzbPZWgZqhVeJLgbMlhLbo4/E6fG/nvW5MYZDdOLz3g==",
|
||||
"requires": {
|
||||
"multi-rpc-common": "^2.1.0",
|
||||
"multi-rpc-http-client-side-transport": "^1.0.4"
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"multi-rpc-http-client-side-transport": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"multi-rpc-json-serializer": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-json-serializer/-/multi-rpc-json-serializer-1.0.4.tgz",
|
||||
"integrity": "sha512-0b+r728HPCCW8S41x62gHxOITHy1QutL08pCuSufmnre3tjOmljXyTN8EUEHs2xu9Gu6WXriWxlb5EKGPJc7BA==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-json-serializer/-/multi-rpc-json-serializer-1.0.5.tgz",
|
||||
"integrity": "sha512-5OUU1+U4clAanrc9tn2XZ328OjeSxG+vmnb78tLyQkxfXgDJ3igZrODSnV2i5MoBC3qi99Tdp73oCkBU4rfkxg==",
|
||||
"requires": {
|
||||
"multi-rpc-common": "^2.1.0",
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"text-encoding": "^0.7.0"
|
||||
}
|
||||
},
|
||||
"multi-rpc-msgpack-serializer": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-msgpack-serializer/-/multi-rpc-msgpack-serializer-1.0.4.tgz",
|
||||
"integrity": "sha512-8gy6GsZSQvKAWqiGaUG2MhUPcWu2ErDkbT2fsUdlxieO6llotrT9gTB6F5NaQKo/mUjpvShNHqCAmyGPos5erQ==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-msgpack-serializer/-/multi-rpc-msgpack-serializer-1.0.5.tgz",
|
||||
"integrity": "sha512-Sa+CjMjKICDQcTolS70PUbR61uKNBmFWNInQF5hpCkS1iICnjCK490+JaGio5OAXsB58VDzwMmBrzbZialS/IQ==",
|
||||
"requires": {
|
||||
"@types/msgpack-lite": "^0.1.6",
|
||||
"msgpack-lite": "^0.1.26",
|
||||
"multi-rpc-common": "^2.1.0"
|
||||
"multi-rpc-common": "^2.2.6"
|
||||
}
|
||||
},
|
||||
"multi-rpc-tcp-transport": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-tcp-transport/-/multi-rpc-tcp-transport-1.1.0.tgz",
|
||||
"integrity": "sha512-H4EbNMjDlGmgvBKrmxZ7XVtAYhXluivfiOGDMqlGYerPdiu3IdLKqD+x6IzYfFgoTa3ljRGlKhz5ipAnTnvBxw==",
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-tcp-transport/-/multi-rpc-tcp-transport-1.1.3.tgz",
|
||||
"integrity": "sha512-pcahuoXtKbWhVLJ/mi6Dd6r6JI+6RhpTkReWkXrI/AYsivdCYkn1TGNuj3Xpt9yJsLkYXchPHW2qF3mZcGGVWQ==",
|
||||
"requires": {
|
||||
"multi-rpc-common": "^2.1.0"
|
||||
"multi-rpc-common": "^2.2.6"
|
||||
}
|
||||
},
|
||||
"multi-rpc-websocket-client-side-transport": {
|
||||
"version": "1.2.3",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-websocket-client-side-transport/-/multi-rpc-websocket-client-side-transport-1.2.3.tgz",
|
||||
"integrity": "sha512-9t3gj01BjSysJHOlnKiQa0cJTtjPrXQNOhE8hxvx1j9SvQ9yfVFmVZVKxw8IbSth6x3m61iLRCLmqnRwRkAfcw==",
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-websocket-client-side-transport/-/multi-rpc-websocket-client-side-transport-1.2.7.tgz",
|
||||
"integrity": "sha512-VmzWFF+xSOmLOjlcA5AbqUfIs8T+2U/WpfMvU9pjzLb76VSOaRJ+6FWbwQRYiBClsM4gqj9aohP0XSvR9DyxEg==",
|
||||
"requires": {
|
||||
"@types/websocket": "0.0.40",
|
||||
"multi-rpc-common": "^2.1.0",
|
||||
"lodash": "^4.17.11",
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"websocket": "^1.0.28"
|
||||
},
|
||||
"dependencies": {
|
||||
"lodash": {
|
||||
"version": "4.17.11",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"multi-rpc-websocket-transport": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-websocket-transport/-/multi-rpc-websocket-transport-1.2.2.tgz",
|
||||
"integrity": "sha512-9k91VRqjWFjldO9Nu9MO6ppWJvkhOnwvmSeNW6K+bvwGdf94gKZOVqnTyN9U9jX51ZJjg0l2b17YH06wXIQ94g==",
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc-websocket-transport/-/multi-rpc-websocket-transport-1.2.6.tgz",
|
||||
"integrity": "sha512-dlr0NvRTWjNhqKNhQfHJ+a05qyoejr3+4ijaf/8R5hnS1lwCt6jhQXHJ2gAoNNPSp28hqyMBEX0QvwrEMPChtA==",
|
||||
"requires": {
|
||||
"@types/websocket": "0.0.40",
|
||||
"multi-rpc-common": "^2.1.0",
|
||||
"multi-rpc-websocket-client-side-transport": "^1.2.3",
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"multi-rpc-websocket-client-side-transport": "^1.2.7",
|
||||
"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",
|
||||
|
@ -1879,7 +1950,7 @@
|
|||
"from": "git+https://github.com/znetstar/node-dns.git#336f1d3027b2a3da719b5cd65380219267901aeb",
|
||||
"requires": {
|
||||
"ipaddr.js": "~0.1.3",
|
||||
"native-dns-cache": "git+https://github.com/znetstar/native-dns-cache.git#7743c19bd1b70d0ec32a364aadc77fbcfd5a67ad",
|
||||
"native-dns-cache": "git+https://github.com/znetstar/native-dns-cache.git",
|
||||
"native-dns-packet": "~0.1.1"
|
||||
}
|
||||
},
|
||||
|
@ -1989,8 +2060,7 @@
|
|||
"ncp": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz",
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=",
|
||||
"optional": true
|
||||
"integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M="
|
||||
},
|
||||
"nice-try": {
|
||||
"version": "1.0.5",
|
||||
|
@ -2125,6 +2195,11 @@
|
|||
"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",
|
||||
|
@ -2233,6 +2308,11 @@
|
|||
"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",
|
||||
|
@ -2535,7 +2615,8 @@
|
|||
"dependencies": {
|
||||
"ipv6": {
|
||||
"version": "3.1.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-RtoOJgrzb9m+tBKXyYe3whotnhw=",
|
||||
"requires": {
|
||||
"cli": "0.4.x",
|
||||
"cliff": "0.1.x",
|
||||
|
@ -2544,7 +2625,8 @@
|
|||
"dependencies": {
|
||||
"sprintf": {
|
||||
"version": "0.1.3",
|
||||
"bundled": true
|
||||
"resolved": false,
|
||||
"integrity": "sha1-Uw/DFAXUdCL27bQPKb2vrFme3hE="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tor-router",
|
||||
"version": "4.0.10",
|
||||
"version": "4.0.13",
|
||||
"main": "src/index.js",
|
||||
"repository": "git@github.com:znetstar/tor-router.git",
|
||||
"author": "Zachary Boyd <zachary@zacharyboyd.nyc>",
|
||||
|
@ -31,14 +31,16 @@
|
|||
"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.4.1",
|
||||
"multi-rpc": "^1.5.5",
|
||||
"nanoid": "^1.2.3",
|
||||
"native-dns": "git+https://github.com/znetstar/node-dns.git#336f1d3027b2a3da719b5cd65380219267901aeb",
|
||||
"nconf": "^0.10.0",
|
||||
|
|
|
@ -27,7 +27,9 @@ 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);
|
||||
|
||||
|
@ -462,6 +464,19 @@ 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('granax');
|
||||
const { TorController } = require('@deadcanaries/granax');
|
||||
const nanoid = require("nanoid");
|
||||
const winston = require('winston');
|
||||
Promise.promisifyAll(temp);
|
||||
|
@ -52,6 +52,7 @@ class TorProcess extends EventEmitter {
|
|||
definition.Config = definition.Config || {};
|
||||
|
||||
this._definition = definition;
|
||||
this._ports = definition.ports || {};
|
||||
|
||||
/**
|
||||
* Path to the Tor executable.
|
||||
|
@ -263,10 +264,12 @@ class TorProcess extends EventEmitter {
|
|||
* @returns {Promise<ChildProcess>} - The process that has been created.
|
||||
*/
|
||||
async create() {
|
||||
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();
|
||||
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}`);
|
||||
Object.freeze(this._ports);
|
||||
|
||||
let options = {
|
||||
|
@ -403,7 +406,7 @@ class TorProcess extends EventEmitter {
|
|||
* @returns {Error}
|
||||
*/
|
||||
this.emit('error', new Error(msg));
|
||||
this.logger.error(`[tor-${this.instance_name}]: ${msg}`);
|
||||
this.logger.error(`[tor-${this.instance_name}]: ${text}`);
|
||||
}
|
||||
|
||||
else if (text.indexOf('[notice]') !== -1) {
|
||||
|
|
|
@ -21,7 +21,7 @@ module.exports = {
|
|||
"Log": "notice stdout",
|
||||
"NewCircuitPeriod": "10"
|
||||
},
|
||||
"torPath": require('granax').tor(require('os').platform()),
|
||||
"torPath": require('@deadcanaries/granax').tor(require('os').platform()),
|
||||
"instances": null,
|
||||
"dns": {
|
||||
"timeout": 10000,
|
||||
|
|
|
@ -148,6 +148,7 @@ async function main(nconf, logger) {
|
|||
|
||||
process.on('exit', cleanUp);
|
||||
process.on('SIGINT', cleanUp);
|
||||
process.on('SIGTERM', cleanUp);
|
||||
process.on('uncaughtException', cleanUp.bind({ handleError: true }));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue