From 58943a6074df88ac62e056a4cd899f4acd57b239 Mon Sep 17 00:00:00 2001 From: zc Date: Sun, 4 Jul 2021 06:59:52 +0800 Subject: [PATCH 1/4] Update package.json Enable http-tracker in browser. --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 90eb43d3..33eb73be 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ }, "browser": { "./lib/common-node.js": false, - "./lib/client/http-tracker.js": false, "./lib/client/udp-tracker.js": false, "./server.js": false }, From d90e0be41b48a4575ad84927f474d9e42b63617c Mon Sep 17 00:00:00 2001 From: Cong Zuo Date: Sun, 4 Jul 2021 11:44:00 +0800 Subject: [PATCH 2/4] Expose HTTPTracker to browser env. --- lib/client/http-tracker.js | 17 ++++++++++++++--- package.json | 1 + server.js | 4 ++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/client/http-tracker.js b/lib/client/http-tracker.js index 890c1ea6..3e9c5912 100644 --- a/lib/client/http-tracker.js +++ b/lib/client/http-tracker.js @@ -3,12 +3,23 @@ const bencode = require('bencode') const compact2string = require('compact2string') const debug = require('debug')('bittorrent-tracker:http-tracker') const get = require('simple-get') +const querystring = require('querystring-browser') const common = require('../common') const Tracker = require('./tracker') const HTTP_SCRAPE_SUPPORT = /\/(announce)[^/]*$/ +const REQUEST_TIMEOUT = 15000 +const DESTROY_TIMEOUT = 1000 + +const querystringStringify = obj => { + let ret = querystring.stringify(obj, null, null, { encodeURIComponent: escape }) + ret = ret.replace(/[@*/+]/g, char => // `escape` doesn't encode the characters @*/+ so we do it manually + `%${char.charCodeAt(0).toString(16).toUpperCase()}`) + return ret +} + /** * HTTP torrent tracker client (for an individual tracker) * @@ -86,7 +97,7 @@ class HTTPTracker extends Tracker { // Otherwise, wait a short time for pending requests to complete, then force // destroy them. - timeout = setTimeout(destroyCleanup, common.DESTROY_TIMEOUT) + timeout = setTimeout(destroyCleanup, DESTROY_TIMEOUT) // But, if all pending requests complete before the timeout fires, do cleanup // right away. @@ -111,13 +122,13 @@ class HTTPTracker extends Tracker { _request (requestUrl, params, cb) { const self = this const u = requestUrl + (!requestUrl.includes('?') ? '?' : '&') + - common.querystringStringify(params) + querystringStringify(params) this.cleanupFns.push(cleanup) let request = get.concat({ url: u, - timeout: common.REQUEST_TIMEOUT, + timeout: REQUEST_TIMEOUT, headers: { 'user-agent': this.client._userAgent || '' } diff --git a/package.json b/package.json index 33eb73be..a22dc0ec 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "devDependencies": { "@webtorrent/semantic-release-config": "1.0.5", "magnet-uri": "6.2.0", + "querystring-browser": "^1.0.4", "semantic-release": "17.4.3", "standard": "*", "tape": "5.2.2", diff --git a/server.js b/server.js index a72b3391..43c4748d 100644 --- a/server.js +++ b/server.js @@ -68,6 +68,10 @@ class Server extends EventEmitter { process.nextTick(() => { this.http.on('request', (req, res) => { if (res.headersSent) return + res.setHeader('Access-Control-Allow-Origin', '*') + res.setHeader('Access-Control-Allow-Headers', '*') + res.setHeader('Access-Control-Allow-Credentials', 'true') + res.setHeader('Access-Control-Allow-Methods', '*') this.onHttpRequest(req, res) }) }) From 3f8359eb6fe99d77a77da7098584bd26b490f696 Mon Sep 17 00:00:00 2001 From: Cong Zuo Date: Sun, 17 Oct 2021 09:31:32 +0800 Subject: [PATCH 3/4] update package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a22dc0ec..e009f346 100644 --- a/package.json +++ b/package.json @@ -44,11 +44,11 @@ "string2compact": "^1.3.0", "unordered-array-remove": "^1.0.2", "ws": "^7.4.5" + "querystring-browser": "^1.0.4" }, "devDependencies": { "@webtorrent/semantic-release-config": "1.0.5", "magnet-uri": "6.2.0", - "querystring-browser": "^1.0.4", "semantic-release": "17.4.3", "standard": "*", "tape": "5.2.2", From 3d2d936ac3ed6f51a617de074df3c5bd2cc08e48 Mon Sep 17 00:00:00 2001 From: Cong Zuo Date: Tue, 19 Oct 2021 18:36:24 +0800 Subject: [PATCH 4/4] fix typo --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e009f346..97b8edbb 100644 --- a/package.json +++ b/package.json @@ -43,7 +43,7 @@ "simple-websocket": "^9.1.0", "string2compact": "^1.3.0", "unordered-array-remove": "^1.0.2", - "ws": "^7.4.5" + "ws": "^7.4.5", "querystring-browser": "^1.0.4" }, "devDependencies": {