diff --git a/bin/convert-txs.js b/bin/convert-txs.js index a972338d..e4e685cc 100755 --- a/bin/convert-txs.js +++ b/bin/convert-txs.js @@ -1,11 +1,9 @@ #!/usr/bin/env node -const path = require('path') -const os = require('os') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) var pgp = require('pg-promise')() +require('../lib/environment-helper') const { PSQL_URL } = require('../lib/constants') var db = pgp(PSQL_URL) diff --git a/bin/lamassu-configure-frontcamera b/bin/lamassu-configure-frontcamera index b2e3a67f..4fd5036a 100755 --- a/bin/lamassu-configure-frontcamera +++ b/bin/lamassu-configure-frontcamera @@ -2,9 +2,7 @@ 'use strict' -const path = require('path') -const os = require('os') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') const setEnvVariable = require('../tools/set-env-var') diff --git a/bin/lamassu-eth-recovery b/bin/lamassu-eth-recovery index ee4d2964..17bf4c05 100644 --- a/bin/lamassu-eth-recovery +++ b/bin/lamassu-eth-recovery @@ -1,7 +1,6 @@ #!/usr/bin/env node -const path = require('path') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') const hdkey = require('ethereumjs-wallet/hdkey') const hkdf = require('futoin-hkdf') const db = require('../lib/db') diff --git a/bin/lamassu-migrate b/bin/lamassu-migrate index 9e5bb307..fee47747 100755 --- a/bin/lamassu-migrate +++ b/bin/lamassu-migrate @@ -1,9 +1,7 @@ #!/usr/bin/env node const _ = require('lodash/fp') -const path = require('path') -const os = require('os') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') const db = require('../lib/db') const migrate = require('../lib/migrate') const { asyncLocalStorage, defaultStore } = require('../lib/async-storage') diff --git a/bin/lamassu-mnemonic b/bin/lamassu-mnemonic index 64712d59..d9262f0e 100755 --- a/bin/lamassu-mnemonic +++ b/bin/lamassu-mnemonic @@ -1,9 +1,7 @@ #!/usr/bin/env node const fs = require('fs') -const os = require('os') -const path = require('path') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') const MNEMONIC_PATH = process.env.MNEMONIC_PATH diff --git a/bin/lamassu-ofac-update-sources b/bin/lamassu-ofac-update-sources index 3fc309b5..a79e6c0c 100755 --- a/bin/lamassu-ofac-update-sources +++ b/bin/lamassu-ofac-update-sources @@ -2,12 +2,9 @@ 'use strict' -const os = require('os') +require('../lib/environment-helper') const setEnvVariable = require('../tools/set-env-var') -const path = require('path') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) - if (!process.env.OFAC_SOURCES_NAMES && !process.env.OFAC_SOURCES_URLS) { 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') diff --git a/bin/lamassu-operator b/bin/lamassu-operator index c4fe097a..20b14b1b 100644 --- a/bin/lamassu-operator +++ b/bin/lamassu-operator @@ -2,11 +2,8 @@ const fs = require('fs') const hkdf = require('futoin-hkdf') -const os = require('os') - -const path = require('path') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') const mnemonicHelpers = require('../lib/mnemonic-helpers') const MNEMONIC_PATH = process.env.MNEMONIC_PATH diff --git a/bin/lamassu-register b/bin/lamassu-register index c35b1f8a..d9ccfddb 100755 --- a/bin/lamassu-register +++ b/bin/lamassu-register @@ -1,8 +1,6 @@ #!/usr/bin/env node -const path = require('path') -const os = require('os') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') const { asyncLocalStorage, defaultStore } = require('../lib/async-storage') const userManagement = require('../lib/new-admin/graphql/modules/userManagement') const authErrors = require('../lib/new-admin/graphql/errors/authentication') diff --git a/bin/lamassu-update-to-mnemonic b/bin/lamassu-update-to-mnemonic index 59dc183b..b8528e0e 100755 --- a/bin/lamassu-update-to-mnemonic +++ b/bin/lamassu-update-to-mnemonic @@ -5,11 +5,11 @@ const fs = require('fs') const path = require('path') const os = require('os') + +require('../lib/environment-helper') const mnemonicHelpers = require('../lib/mnemonic-helpers') const setEnvVariable = require('../tools/set-env-var') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) - if (!process.env.MNEMONIC_PATH && process.env.SEED_PATH) { const seed = fs.readFileSync(process.env.SEED_PATH, 'utf8').trim() const mnemonic = mnemonicHelpers.fromSeed(seed) diff --git a/bin/migrate-config.js b/bin/migrate-config.js index 7d864618..bab5f5a5 100644 --- a/bin/migrate-config.js +++ b/bin/migrate-config.js @@ -4,10 +4,7 @@ const pgp = require('pg-promise')() -const os = require('os') -const path = require('path') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) - +require('../lib/environment-helper') const { PSQL_URL } = require('../lib/constants') const db = pgp(PSQL_URL) diff --git a/bin/old-lamassu-register b/bin/old-lamassu-register index 25b6daea..64d7ca5b 100755 --- a/bin/old-lamassu-register +++ b/bin/old-lamassu-register @@ -1,9 +1,6 @@ #!/usr/bin/env node -const path = require('path') -const os = require('os') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) - +require('../lib/environment-helper') const login = require('../lib/admin/login') const name = process.argv[2] diff --git a/dev/recreate-seeds.js b/dev/recreate-seeds.js index bd542df1..8acb3920 100644 --- a/dev/recreate-seeds.js +++ b/dev/recreate-seeds.js @@ -6,9 +6,9 @@ const fs = require('fs') const path = require('path') const os = require('os') const bip39 = require('bip39') -const setEnvVariable = require('../tools/set-env-var') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') +const setEnvVariable = require('../tools/set-env-var') if (process.env.MNEMONIC_PATH && !process.env.SEED_PATH) { const mnemonic = fs.readFileSync(process.env.MNEMONIC_PATH, 'utf8') diff --git a/lib/app.js b/lib/app.js index c6ea5a61..88789f51 100644 --- a/lib/app.js +++ b/lib/app.js @@ -1,12 +1,9 @@ const fs = require('fs') -const path = require('path') const http = require('http') const https = require('https') const argv = require('minimist')(process.argv.slice(2)) -const os = require('os') - -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('./environment-helper') const { asyncLocalStorage, defaultStore } = require('./async-storage') const routes = require('./routes') const logger = require('./logger') diff --git a/lib/environment-helper.js b/lib/environment-helper.js new file mode 100644 index 00000000..6d864390 --- /dev/null +++ b/lib/environment-helper.js @@ -0,0 +1,2 @@ +const path = require('path') +require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve('/etc', 'lamassu', '.env') : path.resolve(__dirname, '../.env') }) diff --git a/lib/migrate-options.js b/lib/migrate-options.js index 8c79fa51..2ec6f29c 100644 --- a/lib/migrate-options.js +++ b/lib/migrate-options.js @@ -57,7 +57,7 @@ function updateOptionBasepath (result, optionName) { async function run () { // load current opts const options = load().opts - const shouldMigrate = !fs.existsSync(process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env')) + const shouldMigrate = !fs.existsSync(process.env.NODE_ENV === 'production' ? path.resolve('/etc', 'lamassu', '.env') : path.resolve(__dirname, '../.env')) // write the resulting .env if (shouldMigrate) { diff --git a/lib/new-admin/admin-server.js b/lib/new-admin/admin-server.js index b3e9c0af..fcc2e12a 100644 --- a/lib/new-admin/admin-server.js +++ b/lib/new-admin/admin-server.js @@ -10,11 +10,8 @@ const nocache = require('nocache') const cookieParser = require('cookie-parser') const { graphqlUploadExpress } = require('graphql-upload') const { ApolloServer } = require('apollo-server-express') -const _ = require('lodash/fp') -const os = require('os') - -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../../.env') }) +require('../environment-helper') const { asyncLocalStorage, defaultStore } = require('../async-storage') const logger = require('../logger') diff --git a/lib/new-admin/graphql-dev-insecure.js b/lib/new-admin/graphql-dev-insecure.js index 2fa8bb07..1f8f8e90 100644 --- a/lib/new-admin/graphql-dev-insecure.js +++ b/lib/new-admin/graphql-dev-insecure.js @@ -1,10 +1,7 @@ const express = require('express') -const path = require('path') const { ApolloServer } = require('apollo-server-express') -const os = require('os') - -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../../.env') }) +require('../environment-helper') const { typeDefs, resolvers } = require('./graphql/schema') const logger = require('../logger') diff --git a/lib/options-loader.js b/lib/options-loader.js index 5c81fd66..ba10ffc7 100644 --- a/lib/options-loader.js +++ b/lib/options-loader.js @@ -4,7 +4,7 @@ const os = require('os') const argv = require('minimist')(process.argv.slice(2)) const _ = require('lodash/fp') -require('dotenv').config({ path: process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') }) +require('./environment-helper') const DATABASE = process.env.LAMASSU_DB ?? 'PROD' const dbMapping = psqlConf => ({ diff --git a/tools/build-prod-env.js b/tools/build-prod-env.js index 99e7c2be..b285447d 100644 --- a/tools/build-prod-env.js +++ b/tools/build-prod-env.js @@ -13,7 +13,7 @@ if (!_.isEqual(_.intersection(_.keys(argv), requiredParams), requiredParams)) { process.exit(2) } -fs.copyFileSync(path.resolve(__dirname, '../.sample.env'), process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env')) +fs.copyFileSync(path.resolve(__dirname, '../.sample.env'), process.env.NODE_ENV === 'production' ? path.resolve('/etc', 'lamassu', '.env') : path.resolve(__dirname, '../.env')) setEnvVariable('POSTGRES_USER', 'lamassu_pg') setEnvVariable('POSTGRES_PASSWORD', `${argv['db-password']}`) diff --git a/tools/check-user-count.js b/tools/check-user-count.js index 26a24091..b50b580e 100644 --- a/tools/check-user-count.js +++ b/tools/check-user-count.js @@ -1,7 +1,6 @@ #!/usr/bin/env node -const path = require('path') -require('dotenv').config({ path: path.resolve(__dirname, '../.env') }) +require('../lib/environment-helper') const db = require('../lib/db') const getCount = () => { diff --git a/tools/set-env-var.js b/tools/set-env-var.js index fbe0086b..ba736875 100644 --- a/tools/set-env-var.js +++ b/tools/set-env-var.js @@ -3,7 +3,7 @@ const os = require('os') const path = require('path') const setEnvVariable = (key, value) => { - const ENV_PATH = process.env.NODE_ENV === 'production' ? path.resolve(os.homedir(), '.lamassu', '.env') : path.resolve(__dirname, '../.env') + const 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}=`))))