Browse Source

more config related cleanup:

- configure electrumX servers with the same mechanisms as everything else
- include _PORT and _ELECTRUMX_SERVERS configs in .env-sample
- drop support for overriding configs via app/credentials.js, and use that filename for the new, dynamic, env-based credentials config file
fix-133-memory-crash
Dan Janosik 6 years ago
parent
commit
057fea2fbb
  1. 9
      .env-sample
  2. 2
      .gitignore
  3. 2
      app/api/electrumApi.js
  4. 35
      app/config.js
  5. 0
      app/credentials.js

9
.env-sample

@ -1,6 +1,9 @@
# The active coin: BTC/LTC # The active coin: BTC/LTC
#BTCEXP_COIN = BTC #BTCEXP_COIN = BTC
# Port to run the site on
#BTCEXP_PORT = 3002
# Bitcoin RPC Credentials (URI -OR- HOST/PORT/USER/PASS) # Bitcoin RPC Credentials (URI -OR- HOST/PORT/USER/PASS)
#BTCEXP_BITCOIND_URI = bitcoin://rpcusername:rpcpassword@127.0.0.1:8332 #BTCEXP_BITCOIND_URI = bitcoin://rpcusername:rpcpassword@127.0.0.1:8332
#BTCEXP_BITCOIND_HOST = localhost #BTCEXP_BITCOIND_HOST = localhost
@ -8,7 +11,11 @@
#BTCEXP_BITCOIND_USER = rpcusername #BTCEXP_BITCOIND_USER = rpcusername
#BTCEXP_BITCOIND_PASS = rpcpassword #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_ENABLE_INFLUXDB = true
#BTCEXP_INFLUXDB_URI = influx://username:password@127.0.0.1:8086 #BTCEXP_INFLUXDB_URI = influx://username:password@127.0.0.1:8086
#BTCEXP_INFLUXDB_HOST = 127.0.0.1 #BTCEXP_INFLUXDB_HOST = 127.0.0.1

2
.gitignore

@ -59,5 +59,3 @@ typings/
public/css/radial-progress.css public/css/radial-progress.css
app/credentials.js

2
app/api/electrumApi.js

@ -57,7 +57,7 @@ function connectToServer(host, port, protocol) {
var defaultProtocol = port === 50001 ? 'tcp' : 'tls'; var defaultProtocol = port === 50001 ? 'tcp' : 'tls';
var electrumClient = new ElectrumClient(port, host, protocol || defaultProtocol); var electrumClient = new ElectrumClient(port, host, protocol || defaultProtocol);
electrumClient.initElectrum({client:"btc-rpc-explorer-v1.1", version:"1.2"}).then(function(res) { 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); electrumClients.push(electrumClient);

35
app/config.js

@ -1,25 +1,12 @@
var fs = require('fs'); var fs = require('fs');
var crypto = require('crypto'); var crypto = require('crypto');
var url = require('url');
var coins = require("./coins.js"); var coins = require("./coins.js");
var credentials = require("./credentials.js");
var currentCoin = process.env.BTCEXP_COIN || "BTC"; 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; var rpcCred = credentials.rpc;
if (rpcCred.cookie && !rpcCred.username && !rpcCred.password && fs.existsSync(rpcCred.cookie)) { 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')) .update('btc-rpc-explorer-cookie-secret').digest('hex'))
|| "0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"; || "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 = { module.exports = {
cookieSecret: cookieSecret, cookieSecret: cookieSecret,
demoSite: !!process.env.BTCEXP_DEMO, demoSite: !!process.env.BTCEXP_DEMO,
@ -107,12 +103,7 @@ module.exports = {
"walletpassphrasechange", "walletpassphrasechange",
], ],
// https://uasf.saltylemon.org/electrum electrumXServers:electrumXServers,
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"}, ...
],
site: { site: {
blockTxPageSize:20, blockTxPageSize:20,

0
app/defaultCredentials.js → app/credentials.js

Loading…
Cancel
Save