This repository was archived by the owner on Jun 18, 2021. It is now read-only.
Repository navigation
Expand file tree
/
Copy pathtracker.js
More file actions
executable file
·74 lines (64 loc) · 2.31 KB
/
Copy pathtracker.js
File metadata and controls
executable file
·74 lines (64 loc) · 2.31 KB
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
73
74
#!/usr/bin/env node
const program = require('commander')
const { startTracker, Logger } = require('streamr-network')
const ethers = require('ethers')
const CURRENT_VERSION = require('../package.json').version
const logger = new Logger(module)
program
.version(CURRENT_VERSION)
.usage('<ethereumPrivateKey> <trackerName>')
.option('--port <port>', 'port', 30300)
.option('--ip <ip>', 'ip', '0.0.0.0')
.option('--maxNeighborsPerNode <maxNeighborsPerNode>', 'maxNeighborsPerNode', 4)
.option('--attachHttpEndpoints', 'attach http endpoints')
.option('--privateKeyFileName <privateKeyFileName>', 'private key filename', undefined)
.option('--certFileName <certFileName>', 'cert filename', undefined)
.description('Run tracker with reporting')
.parse(process.argv)
if (program.args.length < 2) {
program.help()
}
const privateKey = program.args[0]
const trackerName = program.args[1]
const wallet = new ethers.Wallet(privateKey)
const address = wallet ? wallet.address : null
const id = address || `tracker-${program.opts().port}`
const name = trackerName || address
async function main() {
try {
await startTracker({
host: program.opts().ip,
port: Number.parseInt(program.opts().port),
id,
name,
maxNeighborsPerNode: Number.parseInt(program.opts().maxNeighborsPerNode),
attachHttpEndpoints: program.opts().attachHttpEndpoints,
privateKeyFileName: program.opts().privateKeyFileName,
certFileName: program.opts().certFileName
})
const trackerObj = {}
const fields = [
'ip', 'port', 'maxNeighborsPerNode', 'privateKeyFileName', 'certFileName', 'attachHttpEndpoints']
fields.forEach((prop) => {
trackerObj[prop] = program.opts()[prop]
})
logger.info('started tracker: %o', {
id,
name,
...trackerObj
})
} catch (err) {
logger.getFinalLogger().error(err, 'tracker bin catch')
process.exit(1)
}
}
main()
// pino.finalLogger
process.on('uncaughtException', (err) => {
logger.getFinalLogger().error(err, 'uncaughtException')
process.exit(1)
})
process.on('unhandledRejection', (err) => {
logger.getFinalLogger().error(err, 'unhandledRejection')
process.exit(1)
})