From ba177da61de3a71eb12a1bb0d29de9d73d7dfb9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= <11800544+babico@users.noreply.github.com> Date: Sat, 24 Apr 2021 04:43:59 +0300 Subject: [PATCH 1/8] index update --- server.js | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 89 insertions(+), 9 deletions(-) diff --git a/server.js b/server.js index e490d7a5d..4ec67e453 100644 --- a/server.js +++ b/server.js @@ -263,15 +263,95 @@ class Server extends EventEmitter { } else if (req.url === '/stats') { res.setHeader('Content-Type', 'text/html') res.end(` -

${stats.torrents} torrents (${stats.activeTorrents} active)

-

Connected Peers: ${stats.peersAll}

-

Peers Seeding Only: ${stats.peersSeederOnly}

-

Peers Leeching Only: ${stats.peersLeecherOnly}

-

Peers Seeding & Leeching: ${stats.peersSeederAndLeecher}

-

IPv4 Peers: ${stats.peersIPv4}

-

IPv6 Peers: ${stats.peersIPv6}

-

Clients:

- ${printClients(stats.clients)} + + + Tracker Stats + + + + +
+
Tracker Stats
+
There are ${stats.torrents} torrents, ${stats.activeTorrents} are active.
+
Connected Peers: ${stats.peersAll}
+
+ +
+
Peers Seeding Only: ${stats.peersSeederOnly}
+
Peers Leeching Only: ${stats.peersLeecherOnly}
+
Peers Seeding &; Leeching: ${stats.peersSeederAndLeecher}
+
+ +
+
IPv4 Peers: ${stats.peersIPv4}
+
IPv6 Peers: ${stats.peersIPv6}
+
+ +
+
+

Clients:

+ ${printClients(stats.clients)} +
+
+ + `.replace(/^\s+/gm, '')) // trim left } } From dcfbca2eb4d2c53d05431860ba746d920b3d3b3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= <11800544+babico@users.noreply.github.com> Date: Sat, 24 Apr 2021 04:48:09 +0300 Subject: [PATCH 2/8] Index update fix --- server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.js b/server.js index 4ec67e453..523e2796a 100644 --- a/server.js +++ b/server.js @@ -336,7 +336,7 @@ class Server extends EventEmitter {
Peers Seeding Only: ${stats.peersSeederOnly}
Peers Leeching Only: ${stats.peersLeecherOnly}
-
Peers Seeding &; Leeching: ${stats.peersSeederAndLeecher}
+
Peers Seeding & Leeching: ${stats.peersSeederAndLeecher}
From 9534efcc43bbc1de4dfb95864ae61a52d6f1e3cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= <11800544+babico@users.noreply.github.com> Date: Sat, 24 Apr 2021 04:48:43 +0300 Subject: [PATCH 3/8] Add files via upload --- favicon.ico | Bin 0 -> 4286 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 favicon.ico diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..652dd231d32b9e5ccc9db940abbb69d7143e664b GIT binary patch literal 4286 zcmcgw>r)d~6i@$ywjbKB^jrUierc=Lu~I+zU=*n{(rGI%B|+`f2ak}pHd7Rsaf%L; zcE$$@uNaj!Qo<<0^ffviG$CLTLxQ#>o5U%3?rwg)cf&4WlMSQ+FLSc@o_p^7oyXmC z?xIq?LjKCiRPxO5WU7ZaHBe}_rG9`1+@9G{ft^L2QRg~QSZTbml=S`8ucY;S^h zax9;CL7qK0gdt}YOpZMQ4LT3N$yf@mi870rJl~3O310(SYa{;b?F5^M7hEf!w9I{q z{+WG*Dg-jk?1k0Sgaj9ni%R2YPznD+(fEVTN(r0lU?RGVxa$#R0}`IR!?P^x=4*n@ zf)A)4+BERoyCWA}b9`@JNBq85(!uE14b%NPFu~^q*Ty3u%vg*V)t$h&{xn>++hAkS zyldDr5KQt&@T4Pak%Si$zHcx*dq^OgyBT_24Z7Q#5eYFe>D5Cnl|qlM8N-I2)e~8x z7?*~2b_wrHhS2!#dI?-3SdHU_U-19o+BwLj2X|A+smN?`}Vf?D$J|3)sOz zTNXVh>7Z-DbGH*SqXW2d;t&SgYT=o(!sD2RR$Yfq;`1=GvDl)r^W?qgXgY#xYLc_- z%VDbD2~*vN7&y8MhK4=(zWvmO`CP=zex~A4jCXwrW6chNP4QRASi1v%T<=CYottB_ z_b8O`!&urx`%|RG**d=fjdhOyUqbw8ZaIIv23H$1XMpNKNjU%YyKzZJ z@?B^pN0s7h`Pv1NQ?)dwlA8DIi5(8B5mUWi;nyF&g==C2?#F+Tx+&J~jnzTSYx3NZ zCOI(seUoz3I_?j0`;^8Mo7yeMR+1NL);jJFO6#-vey@Ak=f&mJj32~U6jy_yF&^fh zLbzyHz-je467S-$Mg3RDB1FD#I54qAgyI2kq_5OQ#=hR@iXyTiRFYL{?`2Rv4DNhycHSRg6do4 zdGRST9_JBx!Ig|n_hMoMpZJ{GE#g!AKe_c0o!<1ulX^_!O)(EHQ`L=a=zZ9+>DVFw XJ!>@H)i=upyD2v1$^Relvd8}c6a literal 0 HcmV?d00001 From cccfb65bef12f58ff6ced1027d25e23851f285f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= <11800544+babico@users.noreply.github.com> Date: Sat, 24 Apr 2021 04:55:47 +0300 Subject: [PATCH 4/8] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1ac360579..85dda3a8a 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ [downloads-url]: https://npmjs.org/package/bittorrent-tracker [standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg [standard-url]: https://standardjs.com - +#UPDATED STATS INDEX #### Simple, robust, BitTorrent tracker (client & server) implementation ![tracker visualization](img/img.png) From 076805ae37fae85a804b3ebbf02b57972173702a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= <11800544+babico@users.noreply.github.com> Date: Sat, 24 Apr 2021 04:56:07 +0300 Subject: [PATCH 5/8] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 85dda3a8a..6bedee0ef 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,9 @@ [downloads-url]: https://npmjs.org/package/bittorrent-tracker [standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg [standard-url]: https://standardjs.com -#UPDATED STATS INDEX + +# UPDATED STATS INDEX # + #### Simple, robust, BitTorrent tracker (client & server) implementation ![tracker visualization](img/img.png) From 5af58b72ab88696bcf8aee2548bfa68a52ef0c32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= <11800544+babico@users.noreply.github.com> Date: Sat, 24 Apr 2021 05:02:27 +0300 Subject: [PATCH 6/8] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 6bedee0ef..a2fc8ee41 100644 --- a/README.md +++ b/README.md @@ -42,12 +42,12 @@ Also see [bittorrent-dht](https://www.npmjs.com/package/bittorrent-dht). ### Tracker stats -![Screenshot](img/trackerStats.png) +![Screenshot](https://babico.s-ul.eu/10VVv0sn) ## install -``` -npm install bittorrent-tracker +```sh +npm install https://github.com/babico/bittorrent-tracker.git --save ``` ## usage @@ -247,7 +247,7 @@ Client.scrape({ announce: announceUrl, infoHash: [ infoHash1, infoHash2 ]}, func Install `bittorrent-tracker` globally: ```sh -$ npm install -g bittorrent-tracker +$ npm install -g https://github.com/babico/bittorrent-tracker.git --save ``` Easily start a tracker server: From 3e7dc6786f338182ee0d8b8099da2b860c110f2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= <11800544+babico@users.noreply.github.com> Date: Tue, 25 Jan 2022 08:34:44 +0300 Subject: [PATCH 7/8] 30min interval --- server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server.js b/server.js index e71021343..f4854ab82 100644 --- a/server.js +++ b/server.js @@ -39,7 +39,7 @@ class Server extends EventEmitter { this.intervalMs = opts.interval ? opts.interval - : 10 * 60 * 1000 // 10 min + : 30 * 60 * 1000 // 10 min this._trustProxy = !!opts.trustProxy if (typeof opts.filter === 'function') this._filter = opts.filter From 78147ad260b36ee42acfc95000224e84744b4c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=BCsl=C3=BCm=20Bar=C4=B1=C5=9F=20Korkmazer?= Date: Fri, 11 Aug 2023 20:59:20 +0300 Subject: [PATCH 8/8] add: changed index test --- package.json | 1 + server.js | 16 ++++++++-------- test/stats.js | 28 +++++++++++----------------- 3 files changed, 20 insertions(+), 25 deletions(-) diff --git a/package.json b/package.json index 9d537a8a1..5232dafe7 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "compact2string": "^1.4.1", "debug": "^4.1.1", "ip": "^1.1.5", + "jsdom": "^22.1.0", "lru": "^3.1.0", "minimist": "^1.2.5", "once": "^1.4.0", diff --git a/server.js b/server.js index ee4c9e255..dba45cda1 100644 --- a/server.js +++ b/server.js @@ -331,25 +331,25 @@ class Server extends EventEmitter {
Tracker Stats
-
There are ${stats.torrents} torrents, ${stats.activeTorrents} are active.
-
Connected Peers: ${stats.peersAll}
+
There are
${stats.torrents}
torrents,
${stats.activeTorrents}
are active.
+
Connected Peers:
${stats.peersAll}
-
Peers Seeding Only: ${stats.peersSeederOnly}
-
Peers Leeching Only: ${stats.peersLeecherOnly}
-
Peers Seeding & Leeching: ${stats.peersSeederAndLeecher}
+
Peers Seeding Only:
${stats.peersSeederOnly}
+
Peers Leeching Only:
${stats.peersLeecherOnly}
+
Peers Seeding & Leeching:
${stats.peersSeederAndLeecher}
-
IPv4 Peers: ${stats.peersIPv4}
-
IPv6 Peers: ${stats.peersIPv6}
+
IPv4 Peers:
${stats.peersIPv4}
+
IPv6 Peers:
${stats.peersIPv6}

Clients:

- ${printClients(stats.clients)} +
${printClients(stats.clients)}
diff --git a/test/stats.js b/test/stats.js index 3ffa3fe3f..c3e542429 100644 --- a/test/stats.js +++ b/test/stats.js @@ -3,29 +3,23 @@ import commonTest from './common.js' import fixtures from 'webtorrent-fixtures' import get from 'simple-get' import test from 'tape' +import jsdom from 'jsdom' const peerId = Buffer.from('-WW0091-4ea5886ce160') const unknownPeerId = Buffer.from('01234567890123456789') function parseHtml (html) { - const extractValue = /[^v^h](\d+)/ - const array = html.replace('torrents', '\n').split('\n').filter(line => line && line.trim().length > 0).map(line => { - const a = extractValue.exec(line) - if (a) { - return parseInt(a[1]) - } - return null - }) - let i = 0 + const dom = new jsdom.JSDOM(html) + return { - torrents: array[i++], - activeTorrents: array[i++], - peersAll: array[i++], - peersSeederOnly: array[i++], - peersLeecherOnly: array[i++], - peersSeederAndLeecher: array[i++], - peersIPv4: array[i++], - peersIPv6: array[i] + torrents: parseInt(dom.window.document.getElementById('torrents').textContent), + activeTorrents: parseInt(dom.window.document.getElementById('activeTorrents').textContent), + peersAll: parseInt(dom.window.document.getElementById('peersAll').textContent), + peersSeederOnly: parseInt(dom.window.document.getElementById('peersSeederOnly').textContent), + peersLeecherOnly: parseInt(dom.window.document.getElementById('peersLeecherOnly').textContent), + peersSeederAndLeecher: parseInt(dom.window.document.getElementById('peersSeederAndLeecher').textContent), + peersIPv4: parseInt(dom.window.document.getElementById('peersIPv4').textContent), + peersIPv6: parseInt(dom.window.document.getElementById('peersIPv6').textContent) } }