Yoann Ciabaud
d7a651f360
Fixes for PR #155
2016-06-07 10:49:27 +02:00
jakefb
7906848037
Add json to tracker stats
2016-06-02 14:27:14 +12:00
Feross Aboukhadijeh
2959c2cea6
Use safe-buffer
...
Use the new Buffer APIs from Node v6 for added security. For example,
`Buffer.from()` will throw if passed a number, unlike `Buffer()` which
allocated UNINITIALIZED memory in that case.
Use the `safe-buffer` package for compatibility with previous versions
of
Node.js, including v4.x, v0.12, and v0.10.
https://github.com/feross/safe-buffer
2016-05-29 23:12:23 -07:00
Feross Aboukhadijeh
fafbb25367
Fix "Error: listener must be a function"
...
The websocket can error and close before the "connection" event has
fired. In that situation, socket.onMessageBound, etc. will be undefined.
Closes #148
2016-04-22 16:34:41 -07:00
Feross Aboukhadijeh
3cd84411fb
Fixes for PR #142
2016-03-30 00:31:51 -07:00
Diego Rodríguez
035994ccea
Web-based tracker statistics
2016-03-29 19:03:24 -03:00
Feross Aboukhadijeh
c92b1714db
Remove all Function.bind calls
...
For https://github.com/feross/webtorrent-desktop/issues/256
2016-03-28 23:38:23 -07:00
Feross Aboukhadijeh
721a7bea7c
make server and client always send { action: 'announce' }
2016-03-23 22:04:07 -07:00
Feross Aboukhadijeh
14ef5dc4b0
ensure that params.offers
is type Array
2016-03-18 22:49:13 -07:00
Feross Aboukhadijeh
efb81c29cc
fix: cleanup websocket connections
...
Removed by accident here:
https://github.com/feross/bittorrent-tracker/commit/d079171044e0c1f84f9e
431b110358ad1ff2b20f#diff-78c12f5adc1848d13b1c6f07055d996eL602
2016-03-18 22:48:59 -07:00
Feross Aboukhadijeh
4902a99260
ws server: ignore all future socket errors after socket close
2016-03-18 22:35:01 -07:00
Feross Aboukhadijeh
5020b538ce
fix: announces only have one info_hash
2016-03-18 15:57:18 -07:00
Feross Aboukhadijeh
36a4c2208a
null out bound functions
2016-03-18 15:55:12 -07:00
Feross Aboukhadijeh
bd92a827e1
fix: reference error
2016-03-18 15:55:07 -07:00
Feross Aboukhadijeh
0740f92d7c
server: more thorough socket cleanup
2016-03-18 15:06:05 -07:00
Feross Aboukhadijeh
5ee3f22e2b
Fixes for PR #134
2016-03-18 15:02:12 -07:00
Diego Rodríguez Baquero
5138d5c5a9
Standard fix
2016-03-17 16:52:48 -03:00
Diego Rodríguez Baquero
f70d0d2f07
Fix #113
2016-03-17 16:49:27 -03:00
Feross Aboukhadijeh
d079171044
Fixes for PR #129
2016-03-16 17:58:47 -07:00
Yoann Ciabaud
35e6eeaef2
Close the websocket only when no one is using it
2016-03-16 17:33:06 -07:00
Feross Aboukhadijeh
7a7ed575e1
check for params.offers to determine if offers were received
2016-03-15 20:06:53 -07:00
Feross Aboukhadijeh
ba4a52d2d1
Fixes for PR #125
2016-03-15 20:06:39 -07:00
Yoann Ciabaud
39507bf8be
Scrape implementation for websocket. Issue #116
2016-03-14 00:36:51 +01:00
Yoann Ciabaud
60f03b9529
Provide IP and HTTP headers in both HTTP and Websocket server
2016-03-03 11:10:54 +01:00
Alex
4142e8cf20
Remove info_hash from failure reason
2016-03-01 19:22:31 +01:00
Feross Aboukhadijeh
5dcdf9c4c1
ws tracker: don't crash with filter function
2016-02-29 17:35:04 -08:00
Feross Aboukhadijeh
0150982b9e
:: is already the default for node's http
2016-02-23 12:51:28 -08:00
Feross Aboukhadijeh
b5096e91c3
Support async createSwarm() and getSwarm()
...
Fix #95 .
Make server.getSwarm() and server.createSwarm() into async functions
that take a callback.
2016-01-03 19:50:23 +01:00
Feross Aboukhadijeh
b5de10156d
http server: fix bug in how peer ids are returned
2016-01-02 23:36:10 +01:00
Feross Aboukhadijeh
4816eb7a41
send 404 response when req headers are not sent
2015-12-17 00:41:07 +13:00
Feross Aboukhadijeh
5953841466
allow user to intercept 'request' event for http tracker
2015-12-17 00:40:46 +13:00
Feross Aboukhadijeh
714e876777
Give user chance to specify their own default http request handler
2015-12-16 12:37:53 +13:00
Feross Aboukhadijeh
c0555f4e1d
style
2015-12-16 12:19:44 +13:00
Feross Aboukhadijeh
f56ca3031b
WebSocket tracker should have a shorter interval – default: 2 minutes
2015-12-05 00:18:52 -08:00
Feross Aboukhadijeh
b4ec6fcbc4
fix huge websocket tracker interval
2015-12-05 00:02:57 -08:00
Feross Aboukhadijeh
d29367a4a0
if server.close() is called, end http response object
2015-08-24 00:11:21 +02:00
Linus Unnebäck
4ef0426b90
adhere to padded-blocks
2015-08-14 22:31:22 +02:00
Feross Aboukhadijeh
6935841d56
better debug log
2015-07-29 05:19:57 -07:00
Feross Aboukhadijeh
9db28c2fad
massive cleanup
2015-07-29 01:47:09 -07:00
Feross Aboukhadijeh
3746c05d79
restructure folders
2015-07-29 00:26:44 -07:00
Feross Aboukhadijeh
c4ee7aae36
fix thrown exception when websocket connection is aborted
...
alternative to https://github.com/feross/bittorrent-tracker/pull/89
2015-07-22 16:30:52 -07:00
Feross Aboukhadijeh
82aea33dfa
add server.ws.address() function
2015-07-16 18:31:13 -07:00
Feross Aboukhadijeh
89b3fb3086
support custom filter error messages
...
In addition to returning a boolean (`true` for allowed, `false` for
disallowed), you can return an `Error` object to disallow and provide a
custom reason.
Fixes #85
2015-07-08 10:13:52 -07:00
Feross Aboukhadijeh
f13accfc42
server: Enable WebSocket server by default
2015-07-08 09:44:00 -07:00
Feross Aboukhadijeh
834bf1db5e
server: http reqs 404 when only ws server is used
2015-07-08 09:43:47 -07:00
Feross Aboukhadijeh
bf5b9f289a
BREAKING: opts.filter function is async; add createSwarm
...
- The expected signature for opts.filter is now:
function myFilterFn (infoHash, params, cb) {
cb(infoHash === 'blah)
}
This allows interfacing with a database and fixes #80 .
Also, swarm.getSwarm() is no longer responsible for creating a Swarm
instance, only returning an instance if there is already one. Creating
a swarm happens in swarm.createSwarm(). This change only affects users
who were override swarm.getSwarm().
2015-07-04 17:13:07 -07:00
Feross Aboukhadijeh
8532426a87
Use anonymous functions
...
- allows overriding `onHttpRequest` on the tracker instance, instead of
only on the prototype
- plus, better perf (in theory)
2015-07-02 16:24:03 -07:00
Feross Aboukhadijeh
67291edfb3
server: emit full params object on server events
...
Fixes #81
2015-06-24 01:48:59 -07:00
Feross Aboukhadijeh
4816796fda
throw when listen is called twice in a row
2015-06-09 22:32:04 -07:00
Feross Aboukhadijeh
5be05f2794
Don't return if not listening (in onXXXXRequest)
...
Fixes #79
2015-06-09 22:25:25 -07:00
Feross Aboukhadijeh
ae9a99a6dc
add node 0.10 support back after PR
2015-05-29 21:05:00 -07:00
Garret Buell
e5531a315f
reuseAddr for dgram.CreateSocket
...
Creating a udp4 and udp6 socket on the same port can result in "ERROR: bind EADDRINUSE". Passing reuseAddr: true fixes this.
2015-05-29 10:43:35 -07:00
Feross Aboukhadijeh
340b3faff2
server: always send binary ids
2015-05-27 12:59:12 +02:00
Feross Aboukhadijeh
749cee1465
server command line: log peer_id for web peers
2015-05-27 12:58:50 +02:00
Feross Aboukhadijeh
a420af8a62
separate hostname.upd6 option for IPv6
2015-05-03 21:00:38 -07:00
Feross Aboukhadijeh
9c2b71fef1
fix listen debug log
2015-05-03 20:38:18 -07:00
Feross Aboukhadijeh
3eb0228c91
allow specifying hostnames for udp/http individually
2015-05-03 20:29:58 -07:00
Feross Aboukhadijeh
4da0f3b8ac
Listen over IPv6 for UDP
...
Fixes #73
2015-05-02 12:15:14 -07:00
Feross Aboukhadijeh
1cc5a511bd
udp server: support multiple info_hash scrape
...
Fixes #33
2015-05-01 17:36:07 -07:00
Feross Aboukhadijeh
efa15629dd
don't reply to http requests after server has stopped listening
2015-05-01 14:21:09 -07:00
Feross Aboukhadijeh
da0382a435
handle udp send errors
...
fixes #71
"Port should be > 0 and < 65536"
2015-05-01 14:20:53 -07:00
Feross Aboukhadijeh
1ec4eaa273
style
2015-05-01 14:17:11 -07:00
Feross Aboukhadijeh
604880b87b
server: support binding to specific hostname
...
Fixes #68
2015-04-02 11:42:13 +13:00
Feross Aboukhadijeh
7e7062d2ae
websocket tracker server/client: fix binary vs. hex bugs
2015-03-29 21:08:26 +13:00
Feross Aboukhadijeh
03bed33457
add webtorrent (websocket) tracker server
...
This PR merges webtorrent-tracker into this repo. Keeping the code in
sync between the two repos was becoming burdensome. This change should
not effect performance of the server since the webtorrent tracker is
disabled by default.
To enable the webtorrent tracker (disabled by default), do:
```js
var server = new Server({ ws: true })
```
2015-03-27 16:19:06 +13:00
Feross Aboukhadijeh
9ace2f5d3a
add command line server
...
Fixes #26
2015-03-19 21:47:47 -07:00
Feross Aboukhadijeh
bdc7edea70
preserve backwards compatibility
2015-02-19 12:56:09 -08:00
Nick Rafter
de19b61c52
Exposed full http request to filter function for more configurable filtering
2015-02-19 12:01:46 -05:00
Astro
138bdb8573
server: rm check for http/udp option
...
my use-case brings its own http server, i just use onHttpRequest()
2015-02-06 18:16:47 +01:00
Astro
b33531d835
server: allow onHttpRequest() with options={ action: 'announce' } for custom routing
...
For GH issue #58
2015-02-04 20:35:52 +01:00
Astro
e1b7fa7e5c
server: save HTTP req/res in params
...
For GH issue #58
2015-02-04 20:34:46 +01:00
Feross Aboukhadijeh
82e6792a6b
BREAKING CHANGES
...
Breaking changes:
- 'listening' event no longer emits with `port` param
- `server.port` property removed (instead, use
`server.http.address().port`)
Added features:
- expose http server as `server.http`
- expose udp server as `server.udp`
- client.destroy() - ungracefully leave the swarm
- server: added `filter` option to black/whitelist torrents
Bugfixes:
- client considers udp tracker errors to be warnings
- emit 'start', 'stop', 'update', etc. AFTER response sent
- fix udp error response action and message being `undefined`
Internal:
- remove `portfinder` dep
- add complete test for `filter` functionality
2015-01-29 14:59:08 -08:00
Sidd Sridharan
55079798c5
white/blacklist implemented ( #44 ) + docs/tests updated
2015-01-29 12:24:17 -08:00
Feross Aboukhadijeh
812c2ded4e
style
2015-01-28 18:18:47 -08:00
Feross Aboukhadijeh
a6f14037ff
style
2015-01-28 18:09:23 -08:00
Feross Aboukhadijeh
ebb86f728f
JavaScript Standard Style
...
https://github.com/feross/standard
2015-01-26 18:16:01 -08:00
Astro
2b8423b04a
server: fix interval unit
2015-01-05 19:55:58 +01:00
Astro
243c94e3d0
server: make onUdpRequest() part of public API
...
As per https://github.com/feross/bittorrent-tracker/pull/48#issuecomment-66893626
2014-12-14 00:12:21 +01:00
Feross Aboukhadijeh
83b4ecc7f5
Merge branch 'master' into server-ipv6
...
Conflicts:
server.js
2014-12-13 14:35:29 -08:00
Feross Aboukhadijeh
37203fb7a6
Merge pull request #49 from feross/reuse-udp
...
Server: reuse UDP socket
2014-12-13 14:17:21 -08:00
Astro
d79bf92db0
server: ipv6 support
2014-12-13 00:12:47 +01:00
Astro
80da7c50d0
server: reuse udp socket for responses
...
Reasons:
* Save file-descriptors
* Support clients behind NAT
2014-12-12 17:27:03 +01:00
Astro
2f7a7131d0
server: make onHttpRequest() part of public API
2014-12-12 16:52:13 +01:00
Feross Aboukhadijeh
79068a49cf
Use hex info_hash and peer_id throughout
2014-12-12 02:02:11 -08:00
Astro
991363a28c
Revert "server _onHttpRequest(): ensure non-empty params"
...
This reverts commit 74d9139049
.
Conflicts:
server.js
feross commented on 74d9139
5 hours ago
> Do we need to check for empty params here?
>
> _onRequest should return an error via callback because
> params.action is missing. Won't that work?
74d9139049 (commitcomment-8937428)
2014-12-12 02:57:01 +01:00
Feross Aboukhadijeh
edb5c6e854
code style
2014-12-11 12:53:39 -08:00
Astro
217bcf7de5
server _onUdpRequest(): don't check empty params, errors will be thrown now
2014-12-11 16:39:10 +01:00
Astro
7a8f9a779f
server _onHttpRequest(): don't wrap errors in errors
2014-12-11 16:24:33 +01:00
Astro
74d9139049
server _onHttpRequest(): ensure non-empty params
2014-12-11 16:22:17 +01:00
Astro
7a417a591d
parseUdpRequest(): fix params.ip
2014-12-11 16:11:12 +01:00
Astro
8439300df9
server: unify compact serialization
2014-12-10 16:51:35 +01:00
Astro
b72960dee3
server: split out Swarm
2014-12-10 16:47:41 +01:00
Astro
1c754a2f49
move parseHttpRequest(), parseUdpRequest() to lib/parse_{http,udp}.js
2014-12-10 00:44:45 +01:00
Astro
aea3c44c08
server: expose getSwarm()
...
drops capability to pass a *hex* infoHash
2014-12-09 23:18:47 +01:00
Astro
fee289b074
server: rm superfluous action fields
2014-12-09 23:18:35 +01:00
Astro
366b49bf06
server: split out _onRequest() et al
2014-12-09 02:35:05 +01:00
Astro
85be917d51
server: replace request string by action number
2014-12-09 00:29:02 +01:00
Astro
0bc88bcf22
server: split out parseUdpRequest()
2014-12-09 00:22:36 +01:00
Astro
037a53accb
server: split out parseHttpRequest()
2014-12-08 23:42:05 +01:00
Feross Aboukhadijeh
2824f16c49
don't assume peer var will exist
2014-11-26 17:40:34 +08:00