Compare commits
21 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6ab973e359 | ||
![]() |
0a414024c2 | ||
![]() |
a261baeed3 | ||
![]() |
6040db22dc | ||
![]() |
37a58f929a | ||
![]() |
c1b7a124c4 | ||
![]() |
5617f2bfdb | ||
![]() |
6b7054500d | ||
![]() |
bf0327ad66 | ||
![]() |
fbdbf525df | ||
![]() |
f89e4b20c5 | ||
![]() |
15408206a3 | ||
![]() |
76ab9ae829 | ||
![]() |
aca5498435 | ||
![]() |
5195b576be | ||
![]() |
08c0b7687e | ||
![]() |
089e9bbad1 | ||
![]() |
c1dfa465d5 | ||
![]() |
7b90edabd0 | ||
![]() |
1261821ab3 | ||
![]() |
459aef5ca3 |
15 changed files with 407 additions and 145 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -1,5 +1,6 @@
|
|||
node_modules
|
||||
npm-debug.log
|
||||
*.log
|
||||
.env
|
||||
.vscode
|
||||
.DS_Store
|
||||
.DS_Store
|
||||
|
||||
|
|
38
CHANGELOG.md
38
CHANGELOG.md
|
@ -1,13 +1,47 @@
|
|||
# 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.
|
||||
|
||||
## [4.0.7] - 2018-12-14
|
||||
### Changed
|
||||
- Updates `multi-rpc` to version 1.1.9.
|
||||
|
||||
## [4.0.6] - 2018-12-14
|
||||
### Changed
|
||||
- Updates `multi-rpc` to version 1.1.1.
|
||||
|
||||
## [4.0.5] - 2018-10-15
|
||||
### Changed
|
||||
- Prevents errors that occur when connecting to the destination in the SOCKS Proxy and HTTP Proxy from crashing the applications
|
||||
|
||||
## [4.0.4] - 2018-09-24
|
||||
### Changed
|
||||
- Replaces `jrpc2` with `multi-rpc` for providing the RPC Interface. No changes to the application or API.
|
||||
- Replaces `jrpc2` with `multi-rpc` for providing the RPC Interface. No changes to the application or API
|
||||
|
||||
## [4.0.3] - 2018-09-15
|
||||
|
||||
### Changed
|
||||
- References granax in `default_config.js` to comply with licensing requirements.
|
||||
- References granax in `default_config.js` to comply with licensing requirements
|
||||
|
||||
## [4.0.2] - 2018-09-15
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
415
package-lock.json
generated
415
package-lock.json
generated
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tor-router",
|
||||
"version": "4.0.4",
|
||||
"version": "4.0.13",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
@ -10,29 +10,71 @@
|
|||
"integrity": "sha1-nK+xca+CMpSQNTtIFvAzR6oVCjA=",
|
||||
"optional": true
|
||||
},
|
||||
"@types/acorn": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.3.tgz",
|
||||
"integrity": "sha512-gou/kWQkGPMZjdCKNZGDpqxLm9+ErG/pFZKPX4tvCjr0Xf4FCYYX3nAsu7aDVKJV3KUe27+mvqqyWT/9VZoM/A==",
|
||||
"@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": {
|
||||
"@types/estree": "*"
|
||||
"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/detect-node": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/detect-node/-/detect-node-2.0.0.tgz",
|
||||
"integrity": "sha512-+BozjlbPTACYITf1PWf62HLtDV79HbmZosUN1mv1gGrnjDCRwBXkDKka1sf6YQJvspmfPXVcy+X6tFW62KteeQ=="
|
||||
},
|
||||
"@types/estree": {
|
||||
"version": "0.0.39",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
|
||||
"integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw=="
|
||||
},
|
||||
"@types/events": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
|
||||
"integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
|
||||
},
|
||||
"@types/lodash": {
|
||||
"version": "4.14.119",
|
||||
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.119.tgz",
|
||||
"integrity": "sha512-Z3TNyBL8Vd/M9D9Ms2S3LmFq2sSMzahodD6rCS9V2N44HUMINb75jNkSuwAx7eo2ufqTdfOdtGQpNbieUjPQmw=="
|
||||
},
|
||||
"@types/msgpack-lite": {
|
||||
"version": "0.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/msgpack-lite/-/msgpack-lite-0.1.6.tgz",
|
||||
|
@ -46,10 +88,10 @@
|
|||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.4.tgz",
|
||||
"integrity": "sha512-fCHV45gS+m3hH17zgkgADUSi2RR1Vht6wOZ0jyHP8rjiQra9f+mIcgwPQHllmDocYOstIEbKlxbFDYlgrTPYqw=="
|
||||
},
|
||||
"@types/text-encoding": {
|
||||
"version": "0.0.33",
|
||||
"resolved": "https://registry.npmjs.org/@types/text-encoding/-/text-encoding-0.0.33.tgz",
|
||||
"integrity": "sha512-kAMOjud0Nw3HPY0Cu8cTFk0LVya8skY+ajb2rgrSahPQ6AreN0cpGBNrs8Kjlu9EhFIeh5cp7phovL7v9HrPdQ=="
|
||||
"@types/serialize-error": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/serialize-error/-/serialize-error-2.1.0.tgz",
|
||||
"integrity": "sha512-PXQYOySu+YjmtSKxWkXn00H3e4anQMiCaDw0Km7EHfM2/Da79Vni3Mt1QuKP9fmBobaLxN+3vjhSowjQp6XY9g=="
|
||||
},
|
||||
"@types/uuid": {
|
||||
"version": "3.4.4",
|
||||
|
@ -75,9 +117,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"acorn": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.1.tgz",
|
||||
"integrity": "sha512-SiwgrRuRD2D1R6qjwwoopKcCTkmmIWjy1M15Wv+Nk/7VUsBad4P8GOPft2t6coDZG0TuR5dq9o1v0g8wo7F6+A=="
|
||||
"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",
|
||||
|
@ -162,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",
|
||||
|
@ -194,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",
|
||||
|
@ -215,7 +262,8 @@
|
|||
"babylon": {
|
||||
"version": "7.0.0-beta.19",
|
||||
"resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz",
|
||||
"integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A=="
|
||||
"integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==",
|
||||
"dev": true
|
||||
},
|
||||
"balanced-match": {
|
||||
"version": "1.0.0",
|
||||
|
@ -304,6 +352,7 @@
|
|||
"version": "0.8.9",
|
||||
"resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz",
|
||||
"integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"underscore-contrib": "~0.3.0"
|
||||
}
|
||||
|
@ -497,12 +546,12 @@
|
|||
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
|
||||
},
|
||||
"cross-fetch": {
|
||||
"version": "2.2.2",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz",
|
||||
"integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=",
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.0.tgz",
|
||||
"integrity": "sha512-P8HyKlMwT1ed9LqEWlJu+zfcxfn0KI4Nl4nxyvu1a8sg4vgtHdwhElZOgSNzoar44zQMdliZcve4QG/04AUi9Q==",
|
||||
"requires": {
|
||||
"node-fetch": "2.1.2",
|
||||
"whatwg-fetch": "2.0.4"
|
||||
"node-fetch": "2.3.0",
|
||||
"whatwg-fetch": "3.0.0"
|
||||
}
|
||||
},
|
||||
"cross-spawn": {
|
||||
|
@ -614,11 +663,6 @@
|
|||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
||||
"dev": true
|
||||
},
|
||||
"detect-node": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
|
||||
"integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw=="
|
||||
},
|
||||
"diagnostics": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.0.tgz",
|
||||
|
@ -735,7 +779,8 @@
|
|||
"escape-string-regexp": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
|
||||
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
|
||||
"dev": true
|
||||
},
|
||||
"esprima": {
|
||||
"version": "2.7.3",
|
||||
|
@ -954,20 +999,8 @@
|
|||
"graceful-fs": {
|
||||
"version": "4.1.11",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
|
||||
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
|
||||
},
|
||||
"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"
|
||||
}
|
||||
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
|
||||
"dev": true
|
||||
},
|
||||
"growl": {
|
||||
"version": "1.10.5",
|
||||
|
@ -1430,6 +1463,7 @@
|
|||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz",
|
||||
"integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"xmlcreate": "^1.0.1"
|
||||
}
|
||||
|
@ -1445,6 +1479,7 @@
|
|||
"version": "3.5.5",
|
||||
"resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz",
|
||||
"integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"babylon": "7.0.0-beta.19",
|
||||
"bluebird": "~3.5.0",
|
||||
|
@ -1507,6 +1542,7 @@
|
|||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz",
|
||||
"integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.9"
|
||||
}
|
||||
|
@ -1519,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",
|
||||
|
@ -1624,7 +1649,8 @@
|
|||
"marked": {
|
||||
"version": "0.3.19",
|
||||
"resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
|
||||
"integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg=="
|
||||
"integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==",
|
||||
"dev": true
|
||||
},
|
||||
"mem": {
|
||||
"version": "1.1.0",
|
||||
|
@ -1660,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",
|
||||
|
@ -1742,38 +1763,182 @@
|
|||
}
|
||||
},
|
||||
"multi-rpc": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc/-/multi-rpc-1.0.4.tgz",
|
||||
"integrity": "sha512-EG+AI/9X6AjYfWY6cFGEMCTmfLe7JvlF+MBU9HukZSnEl5cu9jHJBobQXVLEm5TqjtsdGzXDD0/zFixvREGPKw==",
|
||||
"version": "1.5.5",
|
||||
"resolved": "https://registry.npmjs.org/multi-rpc/-/multi-rpc-1.5.5.tgz",
|
||||
"integrity": "sha512-JS6Pr0e9Rk4jFKAnyJD4qVzahlkreHH0cA76cua9pqiYnJhrb+pqGDNFxcSBfLvLhNpnY+dCOaBlsuRPahkzQA==",
|
||||
"requires": {
|
||||
"@types/acorn": "^4.0.3",
|
||||
"@types/detect-node": "^2.0.0",
|
||||
"@types/msgpack-lite": "^0.1.6",
|
||||
"@types/text-encoding": "0.0.33",
|
||||
"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.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",
|
||||
"@types/uuid": "^3.4.4",
|
||||
"@types/websocket": "0.0.40",
|
||||
"acorn": "^6.0.1",
|
||||
"cross-fetch": "^2.2.2",
|
||||
"detect-node": "^2.0.4",
|
||||
"eventemitter2": "^5.0.1",
|
||||
"msgpack-lite": "^0.1.26",
|
||||
"parse-function": "^5.2.10",
|
||||
"text-encoding": "^0.6.4",
|
||||
"uuid": "^3.3.2",
|
||||
"websocket": "^1.0.28"
|
||||
"lodash": "^4.17.11",
|
||||
"serialize-error": "^3.0.0",
|
||||
"uuid": "^3.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"eventemitter2": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz",
|
||||
"integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI="
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.11",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"requires": {
|
||||
"@types/lodash": "^4.14.119",
|
||||
"acorn": "^6.0.4",
|
||||
"eventemitter2": "^5.0.1",
|
||||
"lodash": "^4.17.11",
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"parse-function": "^5.2.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"eventemitter2": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz",
|
||||
"integrity": "sha1-YZegldX7a1folC9v1+qtY6CclFI="
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.11",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"requires": {
|
||||
"cross-fetch": "^3.0.0",
|
||||
"multi-rpc-common": "^2.2.6"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"requires": {
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"multi-rpc-http-client-side-transport": "^1.0.5"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"requires": {
|
||||
"multi-rpc-common": "^2.2.6",
|
||||
"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==",
|
||||
"requires": {
|
||||
"@types/msgpack-lite": "^0.1.6",
|
||||
"msgpack-lite": "^0.1.26",
|
||||
"multi-rpc-common": "^2.2.6"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"requires": {
|
||||
"multi-rpc-common": "^2.2.6"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"requires": {
|
||||
"@types/websocket": "0.0.40",
|
||||
"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.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.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.11.0",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz",
|
||||
"integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw=="
|
||||
"version": "2.12.1",
|
||||
"resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz",
|
||||
"integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw=="
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "1.2.3",
|
||||
|
@ -1785,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"
|
||||
}
|
||||
},
|
||||
|
@ -1895,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",
|
||||
|
@ -1905,9 +2069,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz",
|
||||
"integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U="
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz",
|
||||
"integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA=="
|
||||
},
|
||||
"nopt": {
|
||||
"version": "3.0.6",
|
||||
|
@ -2022,15 +2186,20 @@
|
|||
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M="
|
||||
},
|
||||
"parse-function": {
|
||||
"version": "5.2.10",
|
||||
"resolved": "https://registry.npmjs.org/parse-function/-/parse-function-5.2.10.tgz",
|
||||
"integrity": "sha512-ImvYblMk0ieHcFRK3WSyEgxuawHPLyqweT7POZYLj8eMD9uG0IScE+G0QHTvFscsLDQRD5p0Rtwl3GrfBByQfg==",
|
||||
"version": "5.2.11",
|
||||
"resolved": "https://registry.npmjs.org/parse-function/-/parse-function-5.2.11.tgz",
|
||||
"integrity": "sha512-2nQChgTKz80awFjQqs93ZzgQPOykT+BXomHUfwMdIben3PT2uohAPot+h5D+PNa0T+odzjuMZUMOoCyJfnej1Q==",
|
||||
"requires": {
|
||||
"arrify": "1.0.1",
|
||||
"babylon": "7.0.0-beta.47",
|
||||
"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",
|
||||
|
@ -2139,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",
|
||||
|
@ -2321,6 +2495,7 @@
|
|||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz",
|
||||
"integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"underscore": "~1.6.0"
|
||||
},
|
||||
|
@ -2328,7 +2503,8 @@
|
|||
"underscore": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
|
||||
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag="
|
||||
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2366,6 +2542,11 @@
|
|||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
|
||||
"integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw=="
|
||||
},
|
||||
"serialize-error": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-3.0.0.tgz",
|
||||
"integrity": "sha512-+y3nkkG/go1Vdw+2f/+XUXM1DXX1XcxTl99FfiD/OEPUNw4uo0i6FKABfTAN5ZcgGtjTRZcEbxcE/jtXbEY19A=="
|
||||
},
|
||||
"set-blocking": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
|
||||
|
@ -2426,15 +2607,16 @@
|
|||
}
|
||||
},
|
||||
"socksv5": {
|
||||
"version": "git+https://github.com/znetstar/socksv5.git#431e541390314adbbe765650d8d810ec1df38d8a",
|
||||
"from": "git+https://github.com/znetstar/socksv5.git#431e541390314adbbe765650d8d810ec1df38d8a",
|
||||
"version": "git+https://github.com/znetstar/socksv5.git#1480422215cf1464fa06f5aec4a3e7f2117e3403",
|
||||
"from": "git+https://github.com/znetstar/socksv5.git#1480422215cf1464fa06f5aec4a3e7f2117e3403",
|
||||
"requires": {
|
||||
"ipv6": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"ipv6": {
|
||||
"version": "3.1.1",
|
||||
"bundled": true,
|
||||
"resolved": false,
|
||||
"integrity": "sha1-RtoOJgrzb9m+tBKXyYe3whotnhw=",
|
||||
"requires": {
|
||||
"cli": "0.4.x",
|
||||
"cliff": "0.1.x",
|
||||
|
@ -2443,7 +2625,8 @@
|
|||
"dependencies": {
|
||||
"sprintf": {
|
||||
"version": "0.1.3",
|
||||
"bundled": true
|
||||
"resolved": false,
|
||||
"integrity": "sha1-Uw/DFAXUdCL27bQPKb2vrFme3hE="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2566,7 +2749,8 @@
|
|||
"strip-json-comments": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
|
||||
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
|
||||
"integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
|
||||
"dev": true
|
||||
},
|
||||
"supports-color": {
|
||||
"version": "5.4.0",
|
||||
|
@ -2580,7 +2764,8 @@
|
|||
"taffydb": {
|
||||
"version": "2.6.2",
|
||||
"resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz",
|
||||
"integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg="
|
||||
"integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=",
|
||||
"dev": true
|
||||
},
|
||||
"temp": {
|
||||
"version": "0.8.3",
|
||||
|
@ -2592,9 +2777,9 @@
|
|||
}
|
||||
},
|
||||
"text-encoding": {
|
||||
"version": "0.6.4",
|
||||
"resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz",
|
||||
"integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk="
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.7.0.tgz",
|
||||
"integrity": "sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA=="
|
||||
},
|
||||
"text-hex": {
|
||||
"version": "0.0.0",
|
||||
|
@ -2654,12 +2839,14 @@
|
|||
"underscore": {
|
||||
"version": "1.8.3",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
|
||||
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
|
||||
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=",
|
||||
"dev": true
|
||||
},
|
||||
"underscore-contrib": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz",
|
||||
"integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"underscore": "1.6.0"
|
||||
},
|
||||
|
@ -2667,7 +2854,8 @@
|
|||
"underscore": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
|
||||
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag="
|
||||
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2733,9 +2921,9 @@
|
|||
}
|
||||
},
|
||||
"whatwg-fetch": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
|
||||
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
|
||||
"integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
|
||||
},
|
||||
"when": {
|
||||
"version": "3.7.8",
|
||||
|
@ -2831,7 +3019,8 @@
|
|||
"xmlcreate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz",
|
||||
"integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8="
|
||||
"integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=",
|
||||
"dev": true
|
||||
},
|
||||
"y18n": {
|
||||
"version": "3.2.1",
|
||||
|
|
10
package.json
10
package.json
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "tor-router",
|
||||
"version": "4.0.4",
|
||||
"version": "4.0.13",
|
||||
"main": "src/index.js",
|
||||
"repository": "git@github.com:znetstar/tor-router.git",
|
||||
"author": "Zachary Boyd <zachary@zacharyboyd.nyc>",
|
||||
|
@ -31,19 +31,21 @@
|
|||
"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.0.4",
|
||||
"multi-rpc": "^1.5.5",
|
||||
"nanoid": "^1.2.3",
|
||||
"native-dns": "git+https://github.com/znetstar/node-dns.git#336f1d3027b2a3da719b5cd65380219267901aeb",
|
||||
"nconf": "^0.10.0",
|
||||
"shelljs": "^0.8.2",
|
||||
"socksv5": "git+https://github.com/znetstar/socksv5.git#431e541390314adbbe765650d8d810ec1df38d8a",
|
||||
"socksv5": "git+https://github.com/znetstar/socksv5.git#1480422215cf1464fa06f5aec4a3e7f2117e3403",
|
||||
"temp": "^0.8.3",
|
||||
"winston": "^3.0.0-rc5",
|
||||
"yargs": "^11.0.0"
|
||||
|
|
|
@ -147,6 +147,12 @@ class HTTPServer extends Server {
|
|||
|
||||
let buffer = [];
|
||||
|
||||
const onError = (err) => {
|
||||
this.logger.error("[http-proxy]: an error occured: "+err.message);
|
||||
res.writeHead(500);
|
||||
res.end();
|
||||
}
|
||||
|
||||
function onIncomingData(chunk) {
|
||||
buffer.push(chunk);
|
||||
}
|
||||
|
@ -157,26 +163,26 @@ class HTTPServer extends Server {
|
|||
|
||||
req.on('data', onIncomingData);
|
||||
req.on('end', preConnectClosed);
|
||||
req.on('error', function (err) {
|
||||
this.logger.error("[http-proxy]: an error occured: "+err.message);
|
||||
});
|
||||
req.on('error', onError);
|
||||
|
||||
let connect = (tor_instance) => {
|
||||
let source = { hostname: req.connection.remoteAddress, port: req.connection.remotePort, proto: 'http', by_name: Boolean(instance) };
|
||||
let socks_port = tor_instance.socks_port;
|
||||
|
||||
const agent = socks.HttpAgent({
|
||||
proxyHost: '127.0.0.1',
|
||||
proxyPort: socks_port,
|
||||
auths: [ socks.auth.None() ],
|
||||
localDNS: false
|
||||
});
|
||||
|
||||
let proxy_req = http.request({
|
||||
method: req.method,
|
||||
hostname: url.hostname,
|
||||
port: url.port,
|
||||
path: url.path,
|
||||
headers: req.headers,
|
||||
agent: socks.HttpAgent({
|
||||
proxyHost: '127.0.0.1',
|
||||
proxyPort: socks_port,
|
||||
auths: [ socks.auth.None() ],
|
||||
localDNS: false
|
||||
})
|
||||
agent
|
||||
}, (proxy_res) => {
|
||||
/**
|
||||
* Fires when the proxy has made a connection through an instance using HTTP or HTTP-Connect.
|
||||
|
@ -199,6 +205,8 @@ class HTTPServer extends Server {
|
|||
res.writeHead(proxy_res.statusCode, proxy_res.headers);
|
||||
});
|
||||
|
||||
proxy_req.on("error", onError);
|
||||
|
||||
req.removeListener('data', onIncomingData);
|
||||
|
||||
req.on('data', (chunk) => {
|
||||
|
@ -271,7 +279,7 @@ class HTTPServer extends Server {
|
|||
inbound_socket.on('error', onClose);
|
||||
inbound_socket.on('close', onClose);
|
||||
|
||||
socks.connect({
|
||||
const client = socks.connect({
|
||||
host: hostname,
|
||||
port: port,
|
||||
proxyHost: '127.0.0.1',
|
||||
|
@ -292,6 +300,8 @@ class HTTPServer extends Server {
|
|||
outbound_socket.pipe(inbound_socket);
|
||||
inbound_socket.pipe(outbound_socket);
|
||||
});
|
||||
|
||||
client.on('error', onClose);
|
||||
};
|
||||
|
||||
if (instance) {
|
||||
|
|
|
@ -146,7 +146,7 @@ class SOCKSServer extends Server{
|
|||
let source = { hostname: info.srcAddr, port: info.srcPort, proto: 'socks', by_name: Boolean(instance) };
|
||||
let socks_port = tor_instance.socks_port;
|
||||
|
||||
socks.connect({
|
||||
let client = socks.connect({
|
||||
host: info.dstAddr,
|
||||
port: info.dstPort,
|
||||
proxyHost: '127.0.0.1',
|
||||
|
@ -182,6 +182,8 @@ class SOCKSServer extends Server{
|
|||
outbound_socket.write(buffer.shift());
|
||||
}
|
||||
});
|
||||
|
||||
client.on('error', onClose);
|
||||
};
|
||||
|
||||
if (instance) {
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -132,7 +132,7 @@ async function main(nconf, logger) {
|
|||
}
|
||||
|
||||
if (error instanceof Error) {
|
||||
logger.error(`[global]: error shutting down: ${error.message}`);
|
||||
logger.error(`[global]: ${error.stack || 'An unknown error occured'}`);
|
||||
} else {
|
||||
error = 0;
|
||||
}
|
||||
|
@ -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