mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2025-01-15 09:19:48 +00:00
49 lines
1.6 KiB
CoffeeScript
49 lines
1.6 KiB
CoffeeScript
Promise = require 'bluebird'
|
|
_ = require 'lodash'
|
|
fs = Promise.promisifyAll require 'fs'
|
|
config = require './config'
|
|
mixpanel = require 'mixpanel'
|
|
|
|
# Parses package.json and returns resin-supervisor's version
|
|
exports.getSupervisorVersion = ->
|
|
fs.readFileAsync(__dirname + '/../package.json', 'utf-8')
|
|
.then (data) ->
|
|
obj = JSON.parse data
|
|
return obj.version
|
|
|
|
mixpanelClient = mixpanel.init(config.mixpanelToken)
|
|
|
|
exports.mixpanelProperties = mixpanelProperties =
|
|
username: require('/boot/config.json').username
|
|
|
|
exports.mixpanelTrack = (event, properties={}) ->
|
|
console.log('Event:', event, JSON.stringify(properties))
|
|
# Mutation is bad, and it should feel bad
|
|
properties = _.assign(_.cloneDeep(properties), mixpanelProperties)
|
|
|
|
mixpanelClient.track(event, properties)
|
|
|
|
# Returns an array of the host's ip address(es) by parsing the host /proc/net/fib_trie
|
|
exports.findIpAddrs = ->
|
|
fs.readFileAsync('/mnt/fib_trie', 'utf8')
|
|
.then (fibtrie) ->
|
|
prevLine = ''
|
|
fibtrie.split('\n')
|
|
.map (line) ->
|
|
line = line.trim()
|
|
|
|
# We only care about LOCAL routes (not UNICAST or BROADCAST)
|
|
if line.match(/LOCAL$/)
|
|
# Then we make sure the previous line was an ending branch (and hence contains an IP - 127.0.0.0 has BROADCAST and LOCAL entries)
|
|
if prevLine.match(/^\|--/)
|
|
# Then we remove the ending branch bit
|
|
maybeAddr = prevLine.replace(/^\|--/, '').trim()
|
|
# And ignore loopback/docker interfaces.
|
|
# TODO: Docker interface can technically be on another address range if 172.17
|
|
if !maybeAddr.match(/^(127.0.0.1|172.17.)/)
|
|
ipAddr = maybeAddr
|
|
|
|
prevLine = line
|
|
return ipAddr
|
|
.filter(Boolean)
|