feat: backport remote BTC node support

This commit is contained in:
Sérgio Salgado 2023-02-01 15:16:35 +00:00
parent 24473de6d5
commit 1b6ba5e6dc
15 changed files with 272 additions and 55 deletions

View file

@ -6,6 +6,8 @@ const setEnvVariable = require('./set-env-var')
fs.copyFileSync(path.resolve(__dirname, '../.sample.env'), path.resolve(__dirname, '../.env'))
setEnvVariable('NODE_ENV', 'development')
setEnvVariable('LAMASSU_DB', 'DEV')
setEnvVariable('POSTGRES_USER', 'postgres')
setEnvVariable('POSTGRES_PASSWORD', 'postgres123')
@ -20,6 +22,7 @@ setEnvVariable('KEY_PATH', `${process.env.PWD}/certs/Lamassu_OP.key`)
setEnvVariable('MNEMONIC_PATH', `${process.env.HOME}/.lamassu/mnemonics/mnemonic.txt`)
setEnvVariable('MIGRATE_STATE_PATH', `${process.env.HOME}/.lamassu/.migrate`)
setEnvVariable('BLOCKCHAIN_DIR', `${process.env.PWD}/blockchains`)
setEnvVariable('OFAC_DATA_DIR', `${process.env.HOME}/.lamassu/ofac`)
setEnvVariable('ID_PHOTO_CARD_DIR', `${process.env.HOME}/.lamassu/idphotocard`)
setEnvVariable('FRONT_CAMERA_DIR', `${process.env.HOME}/.lamassu/frontcamera`)
@ -28,5 +31,8 @@ setEnvVariable('OPERATOR_DATA_DIR', `${process.env.HOME}/.lamassu/operatordata`)
setEnvVariable('OFAC_SOURCES_NAMES', 'sdn_advanced,cons_advanced')
setEnvVariable('OFAC_SOURCES_URLS', 'https://www.treasury.gov/ofac/downloads/sanctions/1.0/sdn_advanced.xml,https://www.treasury.gov/ofac/downloads/sanctions/1.0/cons_advanced.xml')
setEnvVariable('BTC_NODE_LOCATION', 'remote')
setEnvVariable('BTC_WALLET_LOCATION', 'local')
setEnvVariable('HOSTNAME', 'localhost')
setEnvVariable('LOG_LEVEL', 'debug')

View file

@ -14,6 +14,8 @@ if (!_.isEqual(_.intersection(_.keys(argv), requiredParams), requiredParams)) {
fs.copyFileSync(path.resolve(__dirname, '../.sample.env'), path.resolve('/etc', 'lamassu', '.env'))
setEnvVariable('NODE_ENV', 'production')
setEnvVariable('POSTGRES_USER', 'lamassu_pg')
setEnvVariable('POSTGRES_PASSWORD', `${argv['db-password']}`)
setEnvVariable('POSTGRES_HOST', 'localhost')
@ -40,5 +42,8 @@ setEnvVariable('COIN_ATM_RADAR_URL', `https://coinatmradar.info/api/lamassu/`)
setEnvVariable('OFAC_SOURCES_NAMES', 'sdn_advanced,cons_advanced')
setEnvVariable('OFAC_SOURCES_URLS', 'https://www.treasury.gov/ofac/downloads/sanctions/1.0/sdn_advanced.xml,https://www.treasury.gov/ofac/downloads/sanctions/1.0/cons_advanced.xml')
setEnvVariable('BTC_NODE_LOCATION', 'local')
setEnvVariable('BTC_WALLET_LOCATION', 'local')
setEnvVariable('HOSTNAME', `${argv.hostname}`)
setEnvVariable('LOG_LEVEL', 'info')

32
tools/migrate-env.js Normal file
View file

@ -0,0 +1,32 @@
const fs = require('fs')
const path = require('path')
const _ = require('lodash/fp')
const setEnvVariable = require('./set-env-var')
const ENV_PATH = process.env.NODE_ENV === 'production' ? path.resolve('/etc', 'lamassu', '.env') : path.resolve(__dirname, '../.env')
const BACKUP_TIMESTAMP = Date.now()
const BACKUP_PATH = `${ENV_PATH}-${BACKUP_TIMESTAMP}`
const migrateEnv = newVars => {
try {
fs.copyFileSync(ENV_PATH, BACKUP_PATH)
_.forEach(it => {
setEnvVariable(it[0], it[1], { ENV_PATH })
}, newVars)
fs.unlinkSync(BACKUP_PATH)
console.log('Environment migration successful')
} catch (e) {
// Rollback the migration and restore the backup file
if (fs.existsSync(BACKUP_PATH)) {
console.log('Rolling back the environment migration...')
fs.copyFileSync(BACKUP_PATH, ENV_PATH)
fs.unlinkSync(BACKUP_PATH)
console.log('Rollback finished')
}
console.log('Environment migration failed')
throw e
}
}
module.exports = migrateEnv

View file

@ -1,9 +1,10 @@
const fs = require('fs')
const os = require('os')
const path = require('path')
const _ = require('lodash/fp')
const setEnvVariable = (key, value) => {
const ENV_PATH = path.resolve(__dirname, '../.env')
const setEnvVariable = (key, value, opts) => {
const ENV_PATH = !_.isNil(opts.ENV_PATH) ? opts.ENV_PATH : process.env.NODE_ENV === 'production' ? path.resolve('/etc', 'lamassu', '.env') : path.resolve(__dirname, '../.env')
const ENV_VARIABLES = fs.readFileSync(ENV_PATH, 'utf-8').split(os.EOL)
const target = ENV_VARIABLES.indexOf(ENV_VARIABLES.find(line => line.match(new RegExp(`^${key}=`))))