'use strict'; var path = require('path'), fs = require('fs'), rootPath = path.normalize(__dirname + '/..'), env, db, port, b_port, p2p_port; var packageStr = fs.readFileSync('package.json'); var version = JSON.parse(packageStr).version; function getUserHome() { return process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME']; } var home = process.env.INSIGHT_DB || ( getUserHome() + '/.insight' ); if (process.env.INSIGHT_NETWORK === 'livenet') { env = 'livenet'; db = home; port = '3000'; b_port = '8332'; p2p_port = '8333'; } else { env = 'testnet'; db = home + '/testnet'; port = '3001'; b_port = '18332'; p2p_port = '18333'; } switch(process.env.NODE_ENV) { case 'production': env += ''; break; case 'test': env += ' - test environment'; break; default: env += ' - development'; break; } var network = process.env.INSIGHT_NETWORK || 'testnet'; var dataDir = process.env.BITCOIND_DATADIR; var isWin = /^win/.test(process.platform); var isMac = /^darwin/.test(process.platform); var isLinux = /^linux/.test(process.platform); if (!dataDir) { if (isWin) dataDir = '%APPDATA%\\Bitcoin\\'; if (isMac) dataDir = process.env.HOME + '/Library/Application Support/Bitcoin/'; if (isLinux) dataDir = process.env.HOME + '/.bitcoin/'; } dataDir += network === 'testnet' ? 'testnet3' : ''; var safeConfirmations = process.env.SAFE_CONFIRMATIONS || 6; var bitcoindConf = { protocol: process.env.BITCOIND_PROTO || 'http', user: process.env.BITCOIND_USER || 'user', pass: process.env.BITCOIND_PASS || 'pass', host: process.env.BITCOIND_HOST || '127.0.0.1', port: process.env.BITCOIND_PORT || b_port, p2pPort: process.env.BITCOIND_P2P_PORT || p2p_port, dataDir: dataDir, // DO NOT CHANGE THIS! disableAgent: true }; /*jshint multistr: true */ console.log( '\n\ ____ _ __ __ ___ _ \n\ / _/___ _____(_)___ _/ /_ / /_ / | ____ (_)\n\ / // __ \\/ ___/ / __ `/ __ \\/ __/ / /\| \| / __ \\/ / \n\ _/ // / / (__ ) / /_/ / / / / /_ / ___ |/ /_/ / / \n\ /___/_/ /_/____/_/\\__, /_/ /_/\\__/ /_/ |_/ .___/_/ \n\ /____/ /_/ \n\ \n\t\t\t\t\t\tv%s\n\ # Configuration:\n\ \t\tNetwork: %s\tINSIGHT_NETWORK\n\ \t\tDatabase Path: %s\tINSIGHT_DB\n\ \t\tSafe Confirmations: %s\tSAFE_CONFIRMATIONS\n\ # Bicoind Connection configuration:\n\ \t\tRPC Username: %s\tBITCOIND_USER\n\ \t\tRPC Password: %s\tBITCOIND_PASS\n\ \t\tRPC Protocol: %s\tBITCOIND_PROTO\n\ \t\tRPC Host: %s\tBITCOIND_HOST\n\ \t\tRPC Port: %s\tBITCOIND_PORT\n\ \t\tP2P Port: %s\tBITCOIND_P2P_PORT\n\ \t\tData Dir: %s\tBITCOIND_DATADIR\n\ \t\t%s\n\ \nChange setting by assigning the enviroment variables in the last column. Example:\n\ $ INSIGHT_NETWORK="testnet" BITCOIND_HOST="123.123.123.123" ./insight.js\ \n\n', version, network, home, safeConfirmations, bitcoindConf.user, bitcoindConf.pass?'Yes(hidden)':'No', bitcoindConf.protocol, bitcoindConf.host, bitcoindConf.port, bitcoindConf.p2p_port, dataDir+(network==='testnet'?'*':''), (network==='testnet'?'* (/testnet3 is added automatically)':'') ); if (! fs.existsSync(db)){ console.log('## ERROR ##\n\tDB Directory "%s" not found. \n\tCreate it, move your old DB there or set the INSIGHT_DB environment variable.\n\tNOTE: In older insight-api versions, db was stored at /db', db); process.exit(-1); } module.exports = { root: rootPath, publicPath: process.env.INSIGHT_PUBLIC_PATH || false, appName: 'Insight ' + env, apiPrefix: '/api', port: port, leveldb: db, bitcoind: bitcoindConf, network: network, disableP2pSync: false, disableHistoricSync: false, poolMatchFile: rootPath + '/etc/minersPoolStrings.json', // Time to refresh the currency rate. In minutes currencyRefresh: 10, keys: { segmentio: process.env.INSIGHT_SEGMENTIO_KEY }, safeConfirmations: safeConfirmations, // PLEASE NOTE THAT *FULL RESYNC* IS NEEDED TO CHANGE safeConfirmations };