Commit Graph

61 Commits

Author SHA1 Message Date
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
Feross Aboukhadijeh
026f2c2de0 Recover from unexpected events better
When you restart the tracker server, all peers it's tracking are
discarded. Then, clients that are already running will continue to send
`update` events, but the tracker throws them away because it was
expected to get a `start` event first.

This should only be a warning, and not a fatal error. I just made the
following changes:

- unexpected `started` event (for peer already in swarm) is treated as
an `update`
- unexpected `stopped` event is discarded
- unexpected `completed` event is treated as a `start`
- unexpected `update` event (from peer not in swarm) is treated as
`start`

Fixes #42
2014-11-26 15:27:02 +08:00
Feross Aboukhadijeh
01286e2ee7 listen() without port picks random port 2014-08-16 19:05:56 -07:00
Feross Aboukhadijeh
3d3c0d44d0 better 'listening' event handling 2014-08-06 22:35:43 -07:00
Feross Aboukhadijeh
a8ad0ca1fd handle numWant === 0 2014-08-03 02:28:54 -07:00
Feross Aboukhadijeh
ea1548abb0 remove extra peer_id check 2014-08-03 01:51:55 -07:00
Feross Aboukhadijeh
ab32d5e7a1 cleanup debug() usage 2014-08-02 14:41:04 -07:00
Feross Aboukhadijeh
ad5c5b6133 lots of little cleanup 2014-08-02 13:43:06 -07:00
Feross Aboukhadijeh
8a6744f276 server: add debug logs 2014-07-20 03:33:33 -07:00
Feross Aboukhadijeh
d1ac7d930e listen for error on udp socket 2014-07-13 15:28:23 -07:00
Feross Aboukhadijeh
24c8535792 tracker returns warnings for non-fatal conditions 2014-07-12 18:56:25 -07:00
Feross Aboukhadijeh
be875c40af Fix serious client+server encoding error (fix #32) 2014-07-12 18:44:41 -07:00
Feross Aboukhadijeh
65c44e81f7 http server: error on invalid peer_id 2014-07-12 18:40:52 -07:00
Feross Aboukhadijeh
a685cb8088 Servers should obey the numWant parameter (fix #21) 2014-07-11 03:51:29 -07:00