diff --git a/package-lock.json b/package-lock.json index 96a6b5d..93eabb4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "rats-search", - "version": "0.8.0", + "version": "0.9.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1680,7 +1680,7 @@ "optional": true, "requires": { "delegates": "1.0.0", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -1696,9 +1696,9 @@ "optional": true }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "optional": true, "requires": { "core-util-is": "1.0.2", @@ -2111,7 +2111,7 @@ "debug": "3.1.0", "inherits": "2.0.3", "randombytes": "2.0.6", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "safe-buffer": "5.1.1", "speedometer": "1.0.0", "unordered-array-remove": "1.0.2", @@ -2142,9 +2142,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -2230,9 +2230,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -2252,7 +2252,7 @@ "get-browser-rtc": "1.0.2", "inherits": "2.0.3", "randombytes": "2.0.6", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" } }, "string_decoder": { @@ -2319,7 +2319,7 @@ "requires": { "defined": "1.0.0", "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -2333,9 +2333,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -2897,7 +2897,7 @@ "requires": { "block-stream2": "1.1.0", "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -2911,9 +2911,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -3529,7 +3529,7 @@ "multistream": "2.1.0", "once": "1.4.0", "piece-length": "1.0.0", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "run-parallel": "1.1.7", "simple-sha1": "2.1.0", "xtend": "4.0.1" @@ -3559,9 +3559,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -4896,7 +4896,7 @@ "integrity": "sha1-lI/KregiH3FfXsrdxUhi+qrMkyU=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "typedarray-to-buffer": "3.1.2", "xtend": "4.0.1" }, @@ -4912,9 +4912,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -5563,8 +5563,7 @@ "jsbn": { "version": "0.1.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "json-schema": { "version": "0.2.3", @@ -7485,7 +7484,7 @@ "integrity": "sha1-J6nBqsUb+266lq8tE6hNCyqOrGg=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "to-arraybuffer": "1.0.1" }, "dependencies": { @@ -7500,9 +7499,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -7774,7 +7773,7 @@ "inherits": "2.0.3", "mp4-box-encoding": "1.1.2", "next-event": "1.0.0", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -7788,9 +7787,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -7822,7 +7821,7 @@ "integrity": "sha1-YlwmfVxEQkrWKUeItbtNo9yzLx0=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -7836,9 +7835,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -9462,7 +9461,7 @@ "integrity": "sha1-AbqVQnYFK3g5AOY9YRjY/POHXX8=", "requires": { "inherits": "2.0.3", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -9476,9 +9475,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -9932,25 +9931,15 @@ "dev": true }, "render-media": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/render-media/-/render-media-2.11.0.tgz", - "integrity": "sha512-TjQjOxZ0HfSxZCfSSMxMvQNvXgQhPScpH8kd+zt+BE65jXVXa65mMPfEMmvGzMpDuXHgqJzAtvdcnXcxMaTu+A==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/render-media/-/render-media-2.12.0.tgz", + "integrity": "sha512-fgHc//6ClJMywYVlU1yPMl5+QAmGrNvkuUpIn7p2JZJI1uB7DIxwpDts216ubFf2yyH0lihPOs9oY2egKksbfA==", "requires": { - "debug": "2.6.9", + "debug": "3.1.0", "is-ascii": "1.0.0", "mediasource": "2.1.3", "stream-to-blob-url": "2.1.0", "videostream": "2.4.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } } }, "repeat-element": { @@ -10149,6 +10138,11 @@ "ajv": "5.5.2" } }, + "scmp": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/scmp/-/scmp-0.0.3.tgz", + "integrity": "sha1-NkjfLXKUZB5/eGc//CloHZutkHM=" + }, "semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", @@ -10240,6 +10234,14 @@ "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz", "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=" }, + "simple-encryptor": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/simple-encryptor/-/simple-encryptor-1.2.0.tgz", + "integrity": "sha512-RZv50jILXa5VE2Mw2vkQXeYqvPUgv+IJXnn4VGaiX5+01zjqAozgYsqgwq0TmsGINk7+MdNrcsY/W1GiHrQdnw==", + "requires": { + "scmp": "0.0.3" + } + }, "simple-get": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.7.0.tgz", @@ -10259,7 +10261,7 @@ "get-browser-rtc": "1.0.2", "inherits": "2.0.3", "randombytes": "2.0.6", - "readable-stream": "2.3.4" + "readable-stream": "2.3.5" }, "dependencies": { "isarray": { @@ -10273,9 +10275,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -10312,7 +10314,7 @@ "debug": "3.1.0", "inherits": "2.0.3", "randombytes": "2.0.6", - "readable-stream": "2.3.4", + "readable-stream": "2.3.5", "safe-buffer": "5.1.1", "ws": "4.1.0" }, @@ -10328,9 +10330,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -12391,8 +12393,8 @@ "random-iterate": "1.0.1", "randombytes": "2.0.6", "range-parser": "1.2.0", - "readable-stream": "2.3.4", - "render-media": "2.11.0", + "readable-stream": "2.3.5", + "render-media": "2.12.0", "run-parallel": "1.1.7", "run-parallel-limit": "1.0.3", "safe-buffer": "5.1.1", @@ -12425,9 +12427,9 @@ "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "readable-stream": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", - "integrity": "sha512-vuYxeWYM+fde14+rajzqgeohAI7YoJcHE7kXDAc4Nk0EbuKnJfqtY9YtRkLo/tqkuF7MsBQRhPnPeyjYITp3ZQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.5.tgz", + "integrity": "sha512-tK0yDhrkygt/knjowCUiWP9YdV7c5R+8cR0r/kt9ZhBU906Fs6RpQJCEilamRJj1Nx2rWI6LkW9gKqjTkshhEw==", "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", diff --git a/package.json b/package.json index 679fb84..fb274d9 100644 --- a/package.json +++ b/package.json @@ -97,6 +97,7 @@ "react-input-range": "^1.3.0", "react-markdown": "^3.1.5", "react-tap-event-plugin": "^3.0.2", + "simple-encryptor": "^1.2.0", "stun": "^1.1.0", "webtorrent": "github:DEgITx/webtorrent" }, diff --git a/src/app/app.js b/src/app/app.js index 43b25f8..f00deeb 100644 --- a/src/app/app.js +++ b/src/app/app.js @@ -91,9 +91,16 @@ class App extends Component { window.torrentSocket.on('peer', (numOfPeers) => { window.peers = numOfPeers - console.log(window.peers) this.forceUpdate() }) + + window.torrentSocket.emit('peers', (numOfPeers) => { + if(numOfPeers > 0) + { + window.peers = numOfPeers + this.forceUpdate() + } + }) } componentWillUnmount() { appReady = false; diff --git a/src/background/background.js b/src/background/background.js index 625951b..a61d115 100644 --- a/src/background/background.js +++ b/src/background/background.js @@ -337,7 +337,7 @@ app.on("ready", () => { } callback.apply(null, arg) }) - }) + }, app.getPath("userData")) }) }); diff --git a/src/background/p2p.js b/src/background/p2p.js index 9a32068..c3863c1 100644 --- a/src/background/p2p.js +++ b/src/background/p2p.js @@ -197,6 +197,13 @@ class p2p { { return this.peers.filter(peer => !!peer.emit) } + + addresses(peers) + { + if(!peers || !Array.isArray(peers)) + return + return peers.map(peer => ({address: peer.address, port: peer.port})) + } } module.exports = p2p \ No newline at end of file diff --git a/src/background/spider.js b/src/background/spider.js index f2a039f..f28ee27 100644 --- a/src/background/spider.js +++ b/src/background/spider.js @@ -1,6 +1,7 @@ const config = require('./config'); const client = new (require('./bt/client')) const spider = new (require('./bt/spider'))(client) +const fs = require('fs'); const mysql = require('mysql'); const getPeersStatisticUDP = require('./bt/udp-tracker-request') const crypto = require('crypto') @@ -15,6 +16,7 @@ const natUpnp = require('nat-upnp'); //var phantomjs = require('phantomjs-prebuilt') var ipaddr = require('ipaddr.js'); //const disk = require('diskusage'); +const encryptor = require('simple-encryptor')('rats-on-the-boat-enc-v0'); const os = require('os'); let rootPath = os.platform() === 'win32' ? 'c:' : '/'; @@ -33,7 +35,7 @@ let torrentClientHashMap = {} //server.listen(config.httpPort); //console.log('Listening web server on', config.httpPort, 'port') -module.exports = function (send, recive) +module.exports = function (send, recive, dataDirectory) { let torrentsId = 1; @@ -255,6 +257,17 @@ setInterval(() => { const p2p = new P2PServer(send) p2p.listen() +// load initial peers +if(dataDirectory && fs.existsSync(dataDirectory + '/peers.p2p')) +{ + const peersEncrypted = fs.readFileSync(dataDirectory + '/peers.p2p', 'utf8') + const peers = encryptor.decrypt(peersEncrypted) + if(peers && peers.length > 0) + { + peers.forEach(peer => p2p.add(peer)) + console.log('loaded', peers.length, 'peers') + } +} //io.on('connection', function(socket) //{ @@ -589,6 +602,14 @@ p2p.listen() }); }); + recive('peers', (callback) => + { + if(typeof callback != 'function') + return; + + callback(p2p.size) + }); + recive('config', (callback) => { if(typeof callback != 'function') @@ -1186,6 +1207,14 @@ this.stop = (callback) => { if(upnp) upnp.ratsUnmap() + // safe future peers + if(dataDirectory) + { + const peersEncripted = encryptor.encrypt(p2p.addresses(p2p.peersList())) + fs.writeFileSync(dataDirectory + '/peers.p2p', peersEncripted, 'utf8'); + console.log('peers saved') + } + torrentClient.destroy(() => { sphinx.end(() => spider.close(() => { mysqlSingle.destroy()