UNPKG

2.5 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3const minimist = require('minimist')
4const Server = require('../')
5
6const 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 'quiet',
17 'silent',
18 'trust-proxy',
19 'version',
20 'stats'
21 ],
22 default: {
23 port: 8000,
24 stats: true
25 }
26})
27
28if (argv.version) {
29 console.log(require('../package.json').version)
30 process.exit(0)
31}
32
33if (argv.help) {
34 console.log((() => {
35 /*
36 webtorrent-tracker - Start a webtorrent tracker server
37
38 Usage:
39 webtorrent-tracker [OPTIONS]
40
41 Options:
42 -p, --port [number] change the port [default: 8000]
43 --trust-proxy trust 'x-forwarded-for' header from reverse proxy
44 --interval client announce interval (ms) [default: 120000]
45 --stats enable web-based statistics (default: true)
46 -q, --quiet only show error output
47 -s, --silent show no output
48 -v, --version print the current version
49
50 Please report bugs! https://github.com/DiegoRBaquero/uwt/issues
51
52 */
53 }).toString().split(/\n/).slice(2, -2).join('\n'))
54 process.exit(0)
55}
56
57if (argv.silent) argv.quiet = true
58
59const server = new Server({
60 interval: argv.interval,
61 stats: argv.stats,
62 trustProxy: argv['trust-proxy']
63})
64
65server.on('error', err => {
66 if (!argv.silent) console.error('ERROR: ' + err.message)
67})
68server.on('warning', err => {
69 if (!argv.quiet) console.log('WARNING: ' + err.message)
70})
71server.on('update', addr => {
72 if (!argv.quiet) console.log('update: ' + addr)
73})
74server.on('complete', addr => {
75 if (!argv.quiet) console.log('complete: ' + addr)
76})
77server.on('start', addr => {
78 if (!argv.quiet) console.log('start: ' + addr)
79})
80server.on('stop', addr => {
81 if (!argv.quiet) console.log('stop: ' + addr)
82})
83
84server.listen(argv.port, () => {
85 if (server.ws && !argv.quiet) {
86 const wsAddr = server.http.address()
87 const wsHost = wsAddr.address !== '::' ? wsAddr.address : 'localhost'
88 const wsPort = wsAddr.port
89 console.log('Tracker: ws://' + wsHost + ':' + wsPort)
90 }
91 if (server.http && argv.stats && !argv.quiet) {
92 const statsAddr = server.http.address()
93 const statsHost = statsAddr.address !== '::' ? statsAddr.address : 'localhost'
94 const statsPort = statsAddr.port
95 console.log('Tracker stats: http://' + statsHost + ':' + statsPort + '/stats')
96 }
97})