Skip to content

Commit 9ace2f5

Browse files
committed
add command line server
Fixes webtorrent#26
1 parent 8f977ee commit 9ace2f5

File tree

3 files changed

+102
-5
lines changed

3 files changed

+102
-5
lines changed

bin/cmd.js

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
#!/usr/bin/env node
2+
3+
var minimist = require('minimist')
4+
var Server = require('../').Server
5+
6+
var argv = minimist(process.argv.slice(2), {
7+
alias: {
8+
h: 'help',
9+
p: 'port',
10+
q: 'quiet',
11+
s: 'silent',
12+
v: 'version'
13+
},
14+
boolean: [
15+
'help',
16+
'http',
17+
'quiet',
18+
'silent',
19+
'trust-proxy',
20+
'udp',
21+
'version'
22+
],
23+
default: {
24+
http: true,
25+
port: 8000,
26+
udp: true
27+
}
28+
})
29+
30+
if (argv.version) {
31+
console.log(require('../package.json').version)
32+
process.exit(0)
33+
}
34+
35+
if (argv.help) {
36+
console.log(function () {
37+
/*
38+
bittorrent-tracker - Start a bittorrent tracker server
39+
40+
Usage:
41+
bittorrent-tracker
42+
43+
Options:
44+
-p, --port [number] change the port [default: 8000]
45+
--trust-proxy trust 'x-forwarded-for' header from reverse proxy
46+
--interval tell clients to announce on this interval (ms)
47+
--http enable http server [default: true]
48+
--udp enable udp server [default: true]
49+
-q, --quiet only show error output
50+
-s, --silent show no output
51+
-v, --version print the current version
52+
53+
Please report bugs! https://github.com/feross/bittorrent-tracker/issues
54+
55+
*/
56+
}.toString().split(/\n/).slice(2, -2).join('\n'))
57+
process.exit(0)
58+
}
59+
60+
if (argv.silent) argv.quiet = true
61+
62+
var server = new Server({
63+
http: argv.http,
64+
interval: argv.interval,
65+
trustProxy: argv['trust-proxy'],
66+
udp: argv.udp
67+
})
68+
69+
server.on('error', function (err) {
70+
if (!argv.silent) console.error('ERROR: ' + err.message)
71+
})
72+
server.on('warning', function (err) {
73+
if (!argv.quiet) console.log('WARNING: ' + err.message)
74+
})
75+
server.on('update', function (addr) {
76+
if (!argv.quiet) console.log('update: ' + addr)
77+
})
78+
server.on('complete', function (addr) {
79+
if (!argv.quiet) console.log('complete: ' + addr)
80+
})
81+
server.on('start', function (addr) {
82+
if (!argv.quiet) console.log('start: ' + addr)
83+
})
84+
server.on('stop', function (addr) {
85+
if (!argv.quiet) console.log('stop: ' + addr)
86+
})
87+
88+
server.listen(argv.port, function () {
89+
if (server.http && !argv.quiet) {
90+
console.log('http server listening on ' + server.http.address().port)
91+
}
92+
if (server.udp && !argv.quiet) {
93+
console.log('udp server listening on ' + server.udp.address().port)
94+
}
95+
})

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"hat": "0.0.3",
2323
"inherits": "^2.0.1",
2424
"ip": "^0.3.0",
25+
"minimist": "^1.1.1",
2526
"once": "^1.3.0",
2627
"run-series": "^1.0.2",
2728
"simple-get": "^1.3.0",

server.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@ inherits(Server, EventEmitter)
2424
* keep overall statistics about the torrent. The response includes a peer list that
2525
* helps the client participate in the torrent.
2626
*
27-
* @param {Object} opts options
28-
* @param {Number} opts.interval interval in ms that clients should announce on
29-
* @param {Number} opts.trustProxy Trust 'x-forwarded-for' header from reverse proxy
30-
* @param {boolean} opts.http Start an http server? (default: true)
31-
* @param {boolean} opts.udp Start a udp server? (default: true)
27+
* @param {Object} opts options object
28+
* @param {Number} opts.interval tell clients to announce on this interval (ms)
29+
* @param {Number} opts.trustProxy trust 'x-forwarded-for' header from reverse proxy
30+
* @param {boolean} opts.http start an http server? (default: true)
31+
* @param {boolean} opts.udp start a udp server? (default: true)
32+
* @param {function} opts.filter black/whitelist fn for disallowing/allowing torrents
3233
*/
3334
function Server (opts) {
3435
var self = this

0 commit comments

Comments
 (0)