update ssu, email and sms
This commit is contained in:
parent
e42bde7b63
commit
7e15308499
5 changed files with 117 additions and 53 deletions
80
bin/ssu
80
bin/ssu
|
|
@ -199,43 +199,65 @@ function crypto () {
|
|||
})
|
||||
}
|
||||
|
||||
function connect () {
|
||||
var psqlUrl
|
||||
try {
|
||||
psqlUrl = process.env.DATABASE_URL || JSON.parse(fs.readFileSync('/etc/lamassu.json')).postgresql
|
||||
} catch (ex) {
|
||||
psqlUrl = 'psql://lamassu:lamassu@localhost/lamassu'
|
||||
}
|
||||
return pgp(psqlUrl)
|
||||
}
|
||||
|
||||
function loadConfig (db) {
|
||||
return db.one('select data from user_config where type=$1', 'exchanges')
|
||||
.then(function (data) {
|
||||
return data.data
|
||||
})
|
||||
}
|
||||
|
||||
function updateConfig (db, config) {
|
||||
db.none('update user_config set data=$1 where type=$2', [config, 'exchanges'])
|
||||
db.none('notify "config_update"')
|
||||
}
|
||||
|
||||
function modifyConfig (config, plugin, keys, result) {
|
||||
keys.forEach(function (key) {
|
||||
var value = result[key]
|
||||
config.exchanges.plugins.settings[plugin] = config.exchanges.plugins.settings[plugin] || {}
|
||||
config.exchanges.plugins.settings[plugin][key] = value
|
||||
})
|
||||
return config
|
||||
}
|
||||
|
||||
function configure () {
|
||||
var plugin = argv[1]
|
||||
var key = argv[2]
|
||||
var keys = argv.slice(2)
|
||||
|
||||
if (!plugin || !key) {
|
||||
console.log('\nssu config <plugin> <key>')
|
||||
if (!plugin || keys.length === 0) {
|
||||
console.log('\nssu config <plugin> <key> [<key> ...]')
|
||||
console.log('Configure a plugin setting.')
|
||||
process.exit(1)
|
||||
}
|
||||
|
||||
inquirer.prompt([{
|
||||
type: 'password',
|
||||
name: 'value',
|
||||
message: 'Enter value for ' + key + ': ',
|
||||
validate: function (val) {
|
||||
return !val || val.length === 0
|
||||
? 'Please enter a value for ' + key
|
||||
: true
|
||||
var questions = keys.map(function (key) {
|
||||
return {
|
||||
type: 'input',
|
||||
name: key,
|
||||
message: 'Enter value for ' + key + ':',
|
||||
validate: function (val) {
|
||||
return !val || val.length === 0
|
||||
? 'Please enter a value for ' + key
|
||||
: true
|
||||
}
|
||||
}
|
||||
}]).then(function (result) {
|
||||
var value = result.value
|
||||
|
||||
var psqlUrl
|
||||
try {
|
||||
psqlUrl = process.env.DATABASE_URL || JSON.parse(fs.readFileSync('/etc/lamassu.json')).postgresql
|
||||
} catch (ex) {
|
||||
psqlUrl = 'psql://lamassu:lamassu@localhost/lamassu'
|
||||
}
|
||||
var db = pgp(psqlUrl)
|
||||
|
||||
return db.one('select data from user_config where type=$1', 'exchanges')
|
||||
.then(function (data) {
|
||||
var config = data.data
|
||||
config.exchanges.plugins.settings[plugin] = config.exchanges.plugins.settings[plugin] || {}
|
||||
config.exchanges.plugins.settings[plugin][key] = value
|
||||
db.none('update user_config set data=$1 where type=$2', [config, 'exchanges'])
|
||||
db.none('notify "config_update"')
|
||||
})
|
||||
inquirer.prompt(questions).then(function (result) {
|
||||
var db = connect()
|
||||
return loadConfig(db)
|
||||
.then(function (config) {
|
||||
var _config = modifyConfig(config, plugin, keys, result)
|
||||
return updateConfig(db, _config)
|
||||
})
|
||||
.then(function () {
|
||||
console.log('success')
|
||||
|
|
|
|||
24
lib/config.js
Normal file
24
lib/config.js
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
require('es6-promise').polyfill()
|
||||
var fs = require('fs')
|
||||
var pgp = require('pg-promise')()
|
||||
|
||||
function connect () {
|
||||
var psqlUrl
|
||||
try {
|
||||
psqlUrl = process.env.DATABASE_URL || JSON.parse(fs.readFileSync('/etc/lamassu.json')).postgresql
|
||||
} catch (ex) {
|
||||
psqlUrl = 'psql://lamassu:lamassu@localhost/lamassu'
|
||||
}
|
||||
return pgp(psqlUrl)
|
||||
}
|
||||
|
||||
function loadConfig () {
|
||||
var db = connect()
|
||||
return db.one('select data from user_config where type=$1', 'exchanges')
|
||||
.then(function (data) {
|
||||
pgp.end()
|
||||
return data.data
|
||||
})
|
||||
}
|
||||
|
||||
exports.loadConfig = loadConfig
|
||||
34
lib/email.js
34
lib/email.js
|
|
@ -1,4 +1,5 @@
|
|||
var SMTPConnection = require('smtp-connection')
|
||||
var Config = require('./config')
|
||||
|
||||
/*
|
||||
|
||||
|
|
@ -17,24 +18,31 @@ var options = {
|
|||
}
|
||||
|
||||
function send (from, to, subject, body, cb) {
|
||||
var connection = new SMTPConnection(options)
|
||||
connection.connect(function () {
|
||||
connection.login({user: 'josh@lamassu.is', pass: 'HPtXGp}9baafiqns%6YFH'}, function (err) {
|
||||
if (err) return console.error(err)
|
||||
var envelope = {
|
||||
from: from,
|
||||
to: to
|
||||
}
|
||||
var message = 'Subject: ' + subject + '\n\n' + body
|
||||
connection.send(envelope, message, function (err, info) {
|
||||
connection.quit()
|
||||
cb(err, info)
|
||||
Config.loadConfig()
|
||||
.then(function (config) {
|
||||
var _config = config.exchanges.plugins.settings.email
|
||||
var user = _config.user
|
||||
var pass = _config.pass
|
||||
|
||||
var connection = new SMTPConnection(options)
|
||||
connection.connect(function () {
|
||||
connection.login({user: user, pass: pass}, function (err) {
|
||||
if (err) return console.error(err)
|
||||
var envelope = {
|
||||
from: from,
|
||||
to: to
|
||||
}
|
||||
var message = 'Subject: ' + subject + '\n\n' + body
|
||||
connection.send(envelope, message, function (err, info) {
|
||||
connection.quit()
|
||||
cb(err, info)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
send('josh@lamassu.is', 'joshmh@gmail.com', 'Another test', 'Screen is stale.\n\nTest3', function (err, info) {
|
||||
send('josh@lamassu.is', 'joshmh@gmail.com', 'Another test', 'Screen is stale.\n\nTest4', function (err, info) {
|
||||
console.log(err)
|
||||
console.log(info)
|
||||
})
|
||||
|
|
|
|||
30
lib/sms.js
30
lib/sms.js
|
|
@ -1,12 +1,22 @@
|
|||
var accountSid = 'AC5b08587439d5e0adb5132d133941ab76'
|
||||
var authToken = 'b4acf1212c0271d852706d17711e9670'
|
||||
var client = require('twilio')(accountSid, authToken)
|
||||
var Client = require('twilio')
|
||||
var Config = require('./config')
|
||||
|
||||
client.messages.create({
|
||||
body: '[Lamassu] ALERT Stale screen: acceptingFirstBill',
|
||||
to: '+359899948650',
|
||||
from: '+16035383222'
|
||||
}, function (err, message) {
|
||||
console.log(err)
|
||||
console.log(message)
|
||||
var toNumber = process.argv[2]
|
||||
|
||||
Config.loadConfig()
|
||||
.then(function (config) {
|
||||
var _config = config.exchanges.plugins.settings.sms
|
||||
var accountSid = _config.accountSid
|
||||
var authToken = _config.authToken
|
||||
var fromNumber = _config.fromNumber
|
||||
|
||||
var client = Client(accountSid, authToken)
|
||||
client.messages.create({
|
||||
body: '[Lamassu] ALERT Stale screen: acceptingFirstBill',
|
||||
to: toNumber,
|
||||
from: fromNumber
|
||||
}, function (err, message) {
|
||||
console.log(err)
|
||||
console.log(message)
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
"prompt": "^1.0.0",
|
||||
"promptly": "^1.1.0",
|
||||
"ramda": "^0.19.1",
|
||||
"smtp-connection": "^2.2.1",
|
||||
"smtp-connection": "^2.3.2",
|
||||
"twilio": "^3.3.0-edge",
|
||||
"web3": "^0.15.3",
|
||||
"wreck": "5.1.0"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue