Compare commits

..

No commits in common. "master" and "v4.0.9" have entirely different histories.

13 changed files with 107 additions and 234 deletions

5
.gitignore vendored
View file

@ -1,6 +1,5 @@
node_modules
*.log
npm-debug.log
.env
.vscode
.DS_Store
.DS_Store

View file

@ -1,23 +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).
## [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.
## [4.0.9] - 2018-12-14
### Changed
- Updates `multi-rpc` to version 1.4.0.

View file

@ -20,9 +20,7 @@ USER tor_router
ADD package.json /app/package.json
ADD package-lock.json /app/package-lock.json
RUN npm ci
RUN npm install
ADD . /app
@ -30,6 +28,6 @@ ENV HOME /home/tor_router
EXPOSE 9050 9053 9077
ENTRYPOINT [ "/bin/bash", "/app/docker-entrypoint.sh" ]
ENTRYPOINT [ "tor-router" ]
CMD [ "-s", "-d", "-j", "1" ]

View file

@ -1,3 +0,0 @@
#!/bin/bash
/app/bin/tor-router $@

View file

@ -1 +1 @@
tor-router.gh.zb.gy
tor-router.docs.zacharyboyd.nyc

View file

@ -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);

View file

@ -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,

262
package-lock.json generated
View file

@ -1,6 +1,6 @@
{
"name": "tor-router",
"version": "4.0.13",
"version": "4.0.9",
"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",
@ -117,9 +62,9 @@
"dev": true
},
"acorn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.5.tgz",
"integrity": "sha512-i33Zgp3XWtmZBMNvCr4azvOFeWVw1Rk6p3hfi3LUDvIFraOMywb1kAtrbi+med14m4Xfpqm3zRZMT+c0FNE7kg=="
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.4.tgz",
"integrity": "sha512-VY4i5EKSKkofY2I+6QLTbTTN/UvEQPCo6eiwzzSaSWfpaDhOmStMCMod6wmuPciNq+XS0faCglFu2lHZpdHUtg=="
},
"agent-base": {
"version": "4.2.1",
@ -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",
@ -1763,25 +1732,25 @@
}
},
"multi-rpc": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/multi-rpc/-/multi-rpc-1.5.5.tgz",
"integrity": "sha512-JS6Pr0e9Rk4jFKAnyJD4qVzahlkreHH0cA76cua9pqiYnJhrb+pqGDNFxcSBfLvLhNpnY+dCOaBlsuRPahkzQA==",
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/multi-rpc/-/multi-rpc-1.4.0.tgz",
"integrity": "sha512-A73Ux1mUiRw1LT8uvdxm+MbmxVZCCtV3nVHS1ksYIx+zuXsjc86VoK7Ck7SFW0OLxhMROnsOEhU9rPhR1Gywww==",
"requires": {
"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": "^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.1",
"multi-rpc-websocket-transport": "^1.2.1"
}
},
"multi-rpc-common": {
"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==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/multi-rpc-common/-/multi-rpc-common-2.1.0.tgz",
"integrity": "sha512-retoFduGmmijF9XgBTJPKMWSXGXkf44N3nSBkSXznYtjA2YC25C8MCEaZmvwE43+Oe7HPpuEcPWQkvE23psb5w==",
"requires": {
"@types/lodash": "^4.14.119",
"@types/serialize-error": "^2.1.0",
@ -1805,15 +1774,15 @@
}
},
"multi-rpc-core": {
"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==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/multi-rpc-core/-/multi-rpc-core-1.0.1.tgz",
"integrity": "sha512-9Pdjs15reJqM8nbEOTN81SedR6MH3QVThx7LmxRgzvWVvq4gyrN/J6HQ9Q4uj7EQ6DR6O/Ureb8npqEf7xYESQ==",
"requires": {
"@types/lodash": "^4.14.119",
"acorn": "^6.0.4",
"eventemitter2": "^5.0.1",
"lodash": "^4.17.11",
"multi-rpc-common": "^2.2.6",
"multi-rpc-common": "^2.1.0",
"parse-function": "^5.2.11"
},
"dependencies": {
@ -1830,111 +1799,71 @@
}
},
"multi-rpc-http-client-side-transport": {
"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==",
"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==",
"requires": {
"cross-fetch": "^3.0.0",
"multi-rpc-common": "^2.2.6"
"multi-rpc-common": "^2.1.0"
}
},
"multi-rpc-http-transport": {
"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==",
"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==",
"requires": {
"multi-rpc-common": "^2.2.6",
"multi-rpc-http-client-side-transport": "^1.0.5"
"multi-rpc-common": "^2.1.0",
"multi-rpc-http-client-side-transport": "^1.0.4"
}
},
"multi-rpc-json-serializer": {
"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==",
"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==",
"requires": {
"multi-rpc-common": "^2.2.6",
"multi-rpc-common": "^2.1.0",
"text-encoding": "^0.7.0"
}
},
"multi-rpc-msgpack-serializer": {
"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==",
"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==",
"requires": {
"@types/msgpack-lite": "^0.1.6",
"msgpack-lite": "^0.1.26",
"multi-rpc-common": "^2.2.6"
"multi-rpc-common": "^2.1.0"
}
},
"multi-rpc-tcp-transport": {
"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==",
"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==",
"requires": {
"multi-rpc-common": "^2.2.6"
"multi-rpc-common": "^2.1.0"
}
},
"multi-rpc-websocket-client-side-transport": {
"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==",
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/multi-rpc-websocket-client-side-transport/-/multi-rpc-websocket-client-side-transport-1.2.1.tgz",
"integrity": "sha512-uCQMpAJ271eVNngZiepQKNrEICoDhdRc+jFWHM474TxL0qBAw2aMctjhNnME/qUtj1Oal3CpUsTcytJD7kMrdA==",
"requires": {
"@types/websocket": "0.0.40",
"lodash": "^4.17.11",
"multi-rpc-common": "^2.2.6",
"multi-rpc-common": "^2.1.0",
"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.6",
"resolved": "https://registry.npmjs.org/multi-rpc-websocket-transport/-/multi-rpc-websocket-transport-1.2.6.tgz",
"integrity": "sha512-dlr0NvRTWjNhqKNhQfHJ+a05qyoejr3+4ijaf/8R5hnS1lwCt6jhQXHJ2gAoNNPSp28hqyMBEX0QvwrEMPChtA==",
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/multi-rpc-websocket-transport/-/multi-rpc-websocket-transport-1.2.1.tgz",
"integrity": "sha512-4jrWeHCK1TJZX1I3Np0qATWP2TjkV8y12QtgTZFUJ+7Owr4/or2aiAwUeiq7vt1P8MMwB2mgTq5CEW8jphyWvA==",
"requires": {
"@types/websocket": "0.0.40",
"multi-rpc-common": "^2.2.6",
"multi-rpc-websocket-client-side-transport": "^1.2.7",
"multi-rpc-common": "^2.1.0",
"multi-rpc-websocket-client-side-transport": "^1.2.1",
"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",
@ -1950,7 +1879,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",
"native-dns-cache": "git+https://github.com/znetstar/native-dns-cache.git#7743c19bd1b70d0ec32a364aadc77fbcfd5a67ad",
"native-dns-packet": "~0.1.1"
}
},
@ -2060,7 +1989,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 +2125,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 +2233,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 +2535,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 +2544,7 @@
"dependencies": {
"sprintf": {
"version": "0.1.3",
"resolved": false,
"integrity": "sha1-Uw/DFAXUdCL27bQPKb2vrFme3hE="
"bundled": true
}
}
}

View file

@ -1,6 +1,6 @@
{
"name": "tor-router",
"version": "4.0.13",
"version": "4.0.9",
"main": "src/index.js",
"repository": "git@github.com:znetstar/tor-router.git",
"author": "Zachary Boyd <zachary@zacharyboyd.nyc>",
@ -31,16 +31,14 @@
"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",
"multi-rpc": "^1.4.0",
"nanoid": "^1.2.3",
"native-dns": "git+https://github.com/znetstar/node-dns.git#336f1d3027b2a3da719b5cd65380219267901aeb",
"nconf": "^0.10.0",

View file

@ -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);
}

View file

@ -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) {

View file

@ -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,

View file

@ -148,7 +148,6 @@ async function main(nconf, logger) {
process.on('exit', cleanUp);
process.on('SIGINT', cleanUp);
process.on('SIGTERM', cleanUp);
process.on('uncaughtException', cleanUp.bind({ handleError: true }));
}