From 91e0fed95d0687faf20f5605bea380c2e60c5ced Mon Sep 17 00:00:00 2001 From: Josh Harvey Date: Sun, 12 Jun 2016 13:19:00 +0300 Subject: [PATCH] refactor db connection string --- bin/convert-txs.js | 8 +------- bin/lamassu-server | 31 ++++++++++--------------------- bin/ssu | 20 +------------------- bin/ssu-raqia | 8 +------- dev/notify.js | 9 +-------- lib/config.js | 8 +------- lib/options.js | 29 +++++++++++++++++++++++++++++ migrations/db.js | 15 +++------------ todo.txt | 1 - 9 files changed, 47 insertions(+), 82 deletions(-) create mode 100644 lib/options.js diff --git a/bin/convert-txs.js b/bin/convert-txs.js index 4ed380d5..ed23a941 100755 --- a/bin/convert-txs.js +++ b/bin/convert-txs.js @@ -1,14 +1,8 @@ #!/usr/bin/env node -var fs = require('fs') var pgp = require('pg-promise')() +var psqlUrl = require('../lib/options').postgres -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) db.manyOrNone(`select * from transactions where incoming=false diff --git a/bin/lamassu-server b/bin/lamassu-server index ee5dbd5f..cc886ab0 100755 --- a/bin/lamassu-server +++ b/bin/lamassu-server @@ -3,34 +3,23 @@ 'use strict' var fs = require('fs') -const os = require('os') -var path = require('path') var createServer = require('../lib/app.js') var argv = require('minimist')(process.argv.slice(2)) - -var options - -try { - options = JSON.parse(fs.readFileSync('/etc/lamassu.json')) -} catch (err) { - try { - const homePath = path.resolve(os.homedir(), '.lamassu', 'lamassu.json') - options = JSON.parse(fs.readFileSync(homePath)) - } catch (err2) { - console.log('Missing configuration file -- exiting.') - process.exit(1) - } -} - -process.env.DATABASE_URL = options.postgresql +var options = require('../lib/options') var port = process.env.PORT || 3000 var httpOnly = options.httpOnly || argv.http if (!httpOnly) { - options.https = { - key: fs.readFileSync(options.certKeyPath), - cert: fs.readFileSync(options.certPath) + try { + options.https = { + key: fs.readFileSync(options.certKeyPath), + cert: fs.readFileSync(options.certPath) + } + } catch (err) { + console.log('Please configure your certificate.') + console.log(err) + process.exit(1) } } diff --git a/bin/ssu b/bin/ssu index e1e99c9e..12cfeb8b 100755 --- a/bin/ssu +++ b/bin/ssu @@ -8,7 +8,7 @@ var argv = process.argv.slice(2) var pgp = require('pg-promise')() var inquirer = require('inquirer') var R = require('ramda') -var fs = require('fs') +var psqlUrl = require('../lib/options').postgres var cmd = argv[0] @@ -130,12 +130,6 @@ function reboot () { } function cryptoActivate (code, on) { - 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') @@ -180,12 +174,6 @@ function crypto () { code = code.toUpperCase() - 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') @@ -211,12 +199,6 @@ 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) } diff --git a/bin/ssu-raqia b/bin/ssu-raqia index ad6592d8..fdbec54e 100644 --- a/bin/ssu-raqia +++ b/bin/ssu-raqia @@ -11,6 +11,7 @@ var _ = require('lodash'); var pg = require('pg'); var uuid = require('node-uuid'); var async = require('async'); +var psqlUrl = require('../lib/options').postgres var raqiaPath = path.join(__dirname, '..', 'raqia.json'); @@ -33,13 +34,6 @@ try { process.exit(2); } -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 client = new pg.Client(psqlUrl); client.connect(function(err) { if (err) return console.log(err); diff --git a/dev/notify.js b/dev/notify.js index 6f3b849c..3c97ce3f 100644 --- a/dev/notify.js +++ b/dev/notify.js @@ -1,8 +1,8 @@ require('es6-promise').polyfill() -var fs = require('fs') var notifier = require('../lib/notifier') var db = require('../lib/postgresql_interface') +var psqlUrl = require('../lib/options').postgres function getBalances () { return [ @@ -11,13 +11,6 @@ function getBalances () { ] } -var psqlUrl -try { - psqlUrl = process.env.DATABASE_URL || JSON.parse(fs.readFileSync('/etc/lamassu.json')).postgresql -} catch (ex) { - psqlUrl = 'psql://lamassu:lamassu@localhost/lamassu' -} - db.init(psqlUrl) notifier.init(db, getBalances, {lowBalanceThreshold: 10}) console.log('DEBUG0') diff --git a/lib/config.js b/lib/config.js index 3794de35..3956e780 100644 --- a/lib/config.js +++ b/lib/config.js @@ -1,13 +1,7 @@ -var fs = require('fs') var pgp = require('pg-promise')() +var psqlUrl = require('../lib/options').postgres 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) } exports.connect = connect diff --git a/lib/options.js b/lib/options.js new file mode 100644 index 00000000..b087fb32 --- /dev/null +++ b/lib/options.js @@ -0,0 +1,29 @@ +'use strict' + +var fs = require('fs') +var path = require('path') +var os = require('os') + +var options +var configPath + +try { + configPath = '/etc/lamassu.json' + options = JSON.parse(fs.readFileSync(configPath)) +} catch (err) { + try { + configPath = path.resolve(os.homedir(), '.lamassu', 'lamassu.json') + options = JSON.parse(fs.readFileSync(configPath)) + } catch (err2) { + console.log('Missing configuration file -- exiting.') + process.exit(1) + } +} + +var psqlUrl = options.postgres +if (!psqlUrl) { + console.log('Missing postgres entry in configuration file: %s', configPath) + process.exit(2) +} + +module.exports = options diff --git a/migrations/db.js b/migrations/db.js index 586e384f..e69f4152 100644 --- a/migrations/db.js +++ b/migrations/db.js @@ -1,24 +1,15 @@ 'use strict'; -var fs = require('fs'); var pg = require('pg'); var async = require('async'); - -var conString; -try { - conString = process.env.DATABASE_URL || - JSON.parse(fs.readFileSync('/etc/lamassu.json')).postgresql; -} -catch (ex) { - conString = 'psql://lamassu:lamassu@localhost/lamassu'; -} +var psqlUrl = require('../lib/options').postgres exports.query = function query(sql, cb) { exports.multi([sql], cb); }; exports.silentQuery = function query(sql, cb) { - pg.connect(conString, function(err, client, done) { + pg.connect(psqlUrl, function(err, client, done) { if (err) { console.log(err.message); return cb(err); @@ -32,7 +23,7 @@ exports.silentQuery = function query(sql, cb) { }; exports.multi = function multi(sqls, cb) { - pg.connect(conString, function(err, client, done) { + pg.connect(psqlUrl, function(err, client, done) { if (err) { console.log(err.message); return cb(err); diff --git a/todo.txt b/todo.txt index fe66a94e..53b55cb1 100644 --- a/todo.txt +++ b/todo.txt @@ -6,5 +6,4 @@ - throttle status check for 3rd services like bitgo - load stuff from master config file -- set up DATABASE_URL environment variable in lamassu-server - add default configuration