Skip to content

Instantly share code, notes, and snippets.

@nsmith
Created June 1, 2014 23:11
Show Gist options
  • Save nsmith/8105fc7e3d09886107ce to your computer and use it in GitHub Desktop.
Save nsmith/8105fc7e3d09886107ce to your computer and use it in GitHub Desktop.
#!/usr/bin/env node
var fs = require('fs'),
stream = require('stream'),
path = require('path'),
cadence = require('cadence'),
run = require('./monitor/run')
require('cadence')(module, cadence(function (step, options) {
var pems = {}, config = {}, params = {}, useSSL
step(function () {
params = {}
params['ip'] = process.env.PUBLIC_IP
params['socket'] = process.env.AGENT_TCP_SOCKET
params['agent'] = process.env.AGENT_HTTP_SOCKET
params['broker'] = process.env.BROKER_HTTP_SOCKET
params['resolver'] = process.env.RESOLVER_HTTP_SOCKET
params['user'] = process.env.RESOLVER_USER
params['password'] = process.env.RESOLVER_PASSWORD
params['wink'] = process.env.WINK_API_URL
params['ca'] = process.env.CA_CERT_PATH
params['cert'] = process.env.SERVER_CERT_PATH
params['key'] = process.env.SERVER_KEY_PATH
params['loggly'] = process.env.LOGGLY
params['tags'] = process.env.LOGGLY_TAGS
return params
}, function (specified) {
var params = {
ip: '127.0.0.1',
socket: 9092,
agent: 8086,
broker: 8080,
resolver: 8081
}
for (var key in specified) {
params[key] = specified[key]
}
"loggly,wink,user,password".split(/,/).forEach(function (param) {
if (!params[param]) {
options.abend(param + ' required')
}
})
config.tags = [ params.ip ].concat(params.tags ? params.tags.split(/\s*,\s*/) : [])
config.loggly = params.loggly
config.wink = params.wink
step(function () {
var ssl = "ca,cert,key".split(/,/)
if (ssl.every(function (param) { return params[param] })) {
step(function (param) {
step([function () {
fs.readFile(params[param], step())
}, /^ENOENT$/, function (errors, error) {
options.abend('pem missing', param)
}], function () {
config[param] = params[param]
})
})(ssl)
config.ssl = true
}
}, function () {
var scheme, credentials
scheme = config.ssl ? 'https' : 'http'
credentials = {
resolver: params.user + ':' + params.password
}
"agent,broker,resolver".split(/,/).forEach(function (service) {
var credential = credentials[service] || 'a:z'
config[service] = scheme + '://' + credential + '@' +
params.ip + ':' + params[service]
})
config.resolver = 'http://' + credentials.resolver + '@' +
params.ip + ':' + params.resolver
scheme = config.ssl ? 'tls' : 'net'
config.socket = scheme + '://' + params.ip + ':' + params.socket
if (params.dryrun) {
options.stdout.write(require('util').inspect(config) + '\n')
} else {
var file = path.join(__dirname, '../server/server')
run(options, file, params.loggly, config.tags, config, step())
}
})
})
}))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment