-
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathbin.js
executable file
·72 lines (63 loc) · 1.96 KB
/
bin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/usr/bin/env node
var discovery = require('./')
var minimist = require('minimist')
var argv = minimist(process.argv.slice(2), {
alias: {port: 'p', host: 'h', server: 's', domain: 'd'}
})
var rcvd = {}
var cmd = argv._[0]
var disc = discovery(argv)
if (cmd === 'listen') {
disc.listen(argv.port, onlisten)
if (argv.diag) {
var diagServer = require('./diagnostics-server').createServer(disc, {password: argv.diagpw})
diagServer.listen((typeof argv.diag === 'number' ? argv.diag : 3030), ondiaglisten)
}
} else if (cmd === 'lookup') {
disc.on('peer', onpeer)
lookup()
setInterval(lookup, 1000)
} else if (cmd === 'announce') {
if (!argv.port) throw new Error('You need to specify --port')
announce()
setInterval(announce, 1000)
} else {
console.error(
'dns-discovery [command]\n' +
' announce [name]\n' +
' --port=(port)\n' +
' --host=(optional host)\n' +
' --server=(optional discovery server)\n' +
' --domain=(optional authoritative domain)\n' +
' lookup [name]\n' +
' --server=(optional discovery server)\n' +
' --domain=(optional authoritative domain)\n' +
' listen\n' +
' --port=(optional port)\n' +
' --ttl=(optional ttl in seconds)\n' +
' --domain=(optional authoritative domain)\n' +
' --diag=(enable diagnostic server, optional port, default 3030)\n' +
' --diagpw=(optional password for diagnostic server)'
)
process.exit(1)
}
function lookup () {
disc.lookup(argv._[1])
}
function announce () {
disc.announce(argv._[1], argv.port)
}
function onpeer (name, peer) {
var addr = peer.host + ':' + peer.host
if (rcvd[addr]) return
rcvd[addr] = true
console.log(name, peer)
}
function onlisten (err) {
if (err) throw err
console.log('Server is listening on port %d', argv.port || 53)
}
function ondiaglisten (err) {
if (err) throw err
console.log('Diagnostics server is listening on port %d', (typeof argv.diag === 'number' ? argv.diag : 3030))
}