2015-03-20 04:47:47 +00:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
|
|
|
var minimist = require('minimist')
|
|
|
|
var Server = require('../').Server
|
|
|
|
|
|
|
|
var argv = minimist(process.argv.slice(2), {
|
|
|
|
alias: {
|
|
|
|
h: 'help',
|
|
|
|
p: 'port',
|
|
|
|
q: 'quiet',
|
|
|
|
s: 'silent',
|
|
|
|
v: 'version'
|
|
|
|
},
|
|
|
|
boolean: [
|
|
|
|
'help',
|
|
|
|
'http',
|
|
|
|
'quiet',
|
|
|
|
'silent',
|
|
|
|
'trust-proxy',
|
|
|
|
'udp',
|
2015-04-09 10:53:03 +00:00
|
|
|
'version',
|
|
|
|
'ws'
|
2015-03-20 04:47:47 +00:00
|
|
|
],
|
|
|
|
default: {
|
|
|
|
http: true,
|
|
|
|
port: 8000,
|
2015-04-09 10:53:03 +00:00
|
|
|
udp: true,
|
|
|
|
ws: false
|
2015-03-20 04:47:47 +00:00
|
|
|
}
|
|
|
|
})
|
|
|
|
|
|
|
|
if (argv.version) {
|
|
|
|
console.log(require('../package.json').version)
|
|
|
|
process.exit(0)
|
|
|
|
}
|
|
|
|
|
|
|
|
if (argv.help) {
|
|
|
|
console.log(function () {
|
|
|
|
/*
|
|
|
|
bittorrent-tracker - Start a bittorrent tracker server
|
|
|
|
|
|
|
|
Usage:
|
2015-07-06 23:56:36 +00:00
|
|
|
bittorrent-tracker [OPTIONS]
|
2015-03-20 04:47:47 +00:00
|
|
|
|
|
|
|
Options:
|
|
|
|
-p, --port [number] change the port [default: 8000]
|
|
|
|
--trust-proxy trust 'x-forwarded-for' header from reverse proxy
|
|
|
|
--interval tell clients to announce on this interval (ms)
|
2015-07-06 23:56:36 +00:00
|
|
|
--http enable http server? [default: true]
|
|
|
|
--udp enable udp server? [default: true]
|
|
|
|
--ws enable websocket server? [default: false]
|
2015-03-20 04:47:47 +00:00
|
|
|
-q, --quiet only show error output
|
|
|
|
-s, --silent show no output
|
|
|
|
-v, --version print the current version
|
|
|
|
|
|
|
|
Please report bugs! https://github.com/feross/bittorrent-tracker/issues
|
|
|
|
|
|
|
|
*/
|
|
|
|
}.toString().split(/\n/).slice(2, -2).join('\n'))
|
|
|
|
process.exit(0)
|
|
|
|
}
|
|
|
|
|
|
|
|
if (argv.silent) argv.quiet = true
|
|
|
|
|
|
|
|
var server = new Server({
|
|
|
|
http: argv.http,
|
|
|
|
interval: argv.interval,
|
|
|
|
trustProxy: argv['trust-proxy'],
|
2015-04-09 10:53:03 +00:00
|
|
|
udp: argv.udp,
|
|
|
|
ws: argv.ws
|
2015-03-20 04:47:47 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
server.on('error', function (err) {
|
|
|
|
if (!argv.silent) console.error('ERROR: ' + err.message)
|
|
|
|
})
|
|
|
|
server.on('warning', function (err) {
|
|
|
|
if (!argv.quiet) console.log('WARNING: ' + err.message)
|
|
|
|
})
|
|
|
|
server.on('update', function (addr) {
|
|
|
|
if (!argv.quiet) console.log('update: ' + addr)
|
|
|
|
})
|
|
|
|
server.on('complete', function (addr) {
|
|
|
|
if (!argv.quiet) console.log('complete: ' + addr)
|
|
|
|
})
|
|
|
|
server.on('start', function (addr) {
|
|
|
|
if (!argv.quiet) console.log('start: ' + addr)
|
|
|
|
})
|
|
|
|
server.on('stop', function (addr) {
|
|
|
|
if (!argv.quiet) console.log('stop: ' + addr)
|
|
|
|
})
|
|
|
|
|
|
|
|
server.listen(argv.port, function () {
|
|
|
|
if (server.http && !argv.quiet) {
|
2015-05-22 14:30:06 +00:00
|
|
|
console.log('HTTP tracker: http://localhost:' + server.http.address().port + '/announce')
|
2015-03-20 04:47:47 +00:00
|
|
|
}
|
|
|
|
if (server.udp && !argv.quiet) {
|
2015-05-22 14:30:06 +00:00
|
|
|
console.log('UDP tracker: udp://localhost:' + server.udp.address().port)
|
2015-03-20 04:47:47 +00:00
|
|
|
}
|
2015-04-09 10:53:03 +00:00
|
|
|
if (server.ws && !argv.quiet) {
|
2015-05-22 14:30:06 +00:00
|
|
|
console.log('WebSocket tracker: ws://localhost:' + server.http.address().port)
|
2015-04-09 10:53:03 +00:00
|
|
|
}
|
2015-03-20 04:47:47 +00:00
|
|
|
})
|