diff --git a/.env-sample b/.env-sample index 87051aa..2ee997b 100644 --- a/.env-sample +++ b/.env-sample @@ -1,6 +1,9 @@ # The active coin: BTC/LTC #BTCEXP_COIN = BTC +# Port to run the site on +#BTCEXP_PORT = 3002 + # Bitcoin RPC Credentials (URI -OR- HOST/PORT/USER/PASS) #BTCEXP_BITCOIND_URI = bitcoin://rpcusername:rpcpassword@127.0.0.1:8332 #BTCEXP_BITCOIND_HOST = localhost @@ -8,7 +11,11 @@ #BTCEXP_BITCOIND_USER = rpcusername #BTCEXP_BITCOIND_PASS = rpcpassword -# Optional: InfluxDB Credentials (URI -OR- HOST/PORT/DBNAME/USER/PASS) +# Optional ElectrumX Servers, used to display address transaction histories +# Ref: https://uasf.saltylemon.org/electrum +#BTCEXP_ELECTRUMX_SERVERS = tls://electrumx.server.com:50002,tcp://127.0.0.1:50001,... + +# Optional InfluxDB Credentials (URI -OR- HOST/PORT/DBNAME/USER/PASS) #BTCEXP_ENABLE_INFLUXDB = true #BTCEXP_INFLUXDB_URI = influx://username:password@127.0.0.1:8086 #BTCEXP_INFLUXDB_HOST = 127.0.0.1 diff --git a/.gitignore b/.gitignore index eebb1de..31f1139 100644 --- a/.gitignore +++ b/.gitignore @@ -59,5 +59,3 @@ typings/ public/css/radial-progress.css - -app/credentials.js \ No newline at end of file diff --git a/app/api/electrumApi.js b/app/api/electrumApi.js index a9576f0..38ba0ec 100644 --- a/app/api/electrumApi.js +++ b/app/api/electrumApi.js @@ -57,7 +57,7 @@ function connectToServer(host, port, protocol) { var defaultProtocol = port === 50001 ? 'tcp' : 'tls'; var electrumClient = new ElectrumClient(port, host, protocol || defaultProtocol); electrumClient.initElectrum({client:"btc-rpc-explorer-v1.1", version:"1.2"}).then(function(res) { - console.log("Connected to ElectrumX Server: " + host + ":" + port + ", versions: " + res); + console.log("Connected to ElectrumX Server: " + host + ":" + port + ", versions: " + JSON.stringify(res)); electrumClients.push(electrumClient); diff --git a/app/config.js b/app/config.js index a20ada9..9776c85 100644 --- a/app/config.js +++ b/app/config.js @@ -1,25 +1,12 @@ var fs = require('fs'); var crypto = require('crypto'); +var url = require('url'); + var coins = require("./coins.js"); +var credentials = require("./credentials.js"); var currentCoin = process.env.BTCEXP_COIN || "BTC"; -var credentials = require("./defaultCredentials.js"); -var overrideCredentials = null; - -try { - Object.assign(overrideCredentials, require("./credentials.js")); - -} catch (err) { - // expected -} - -if (overrideCredentials != null) { - for (var key in overrideCredentials) { - credentials[key] = overrideCredentials[key]; - } -} - var rpcCred = credentials.rpc; if (rpcCred.cookie && !rpcCred.username && !rpcCred.password && fs.existsSync(rpcCred.cookie)) { @@ -35,6 +22,15 @@ var cookieSecret = process.env.BTCEXP_COOKIE_SECRET .update('btc-rpc-explorer-cookie-secret').digest('hex')) || "0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"; + +var electrumXServerUriStrings = (process.env.BTCEXP_ELECTRUMX_SERVERS || "").split(','); +var electrumXServers = []; +for (var i = 0; i < electrumXServerUriStrings.length; i++) { + var uri = url.parse(electrumXServerUriStrings[i]); + + electrumXServers.push({protocol:uri.protocol.substring(0, uri.protocol.length - 1), host:uri.hostname, port:parseInt(uri.port)}); +} + module.exports = { cookieSecret: cookieSecret, demoSite: !!process.env.BTCEXP_DEMO, @@ -107,12 +103,7 @@ module.exports = { "walletpassphrasechange", ], - // https://uasf.saltylemon.org/electrum - electrumXServers:[ - // set host & port of electrum servers to connect to - // protocol can be "tls" or "tcp", it defaults to "tcp" if port is 50001 and "tls" otherwise - // {host: "electrum.example.com", port:50002, protocol: "tls"}, ... - ], + electrumXServers:electrumXServers, site: { blockTxPageSize:20, diff --git a/app/defaultCredentials.js b/app/credentials.js similarity index 100% rename from app/defaultCredentials.js rename to app/credentials.js