mirror of
https://github.com/janoside/btc-rpc-explorer.git
synced 2026-08-13 12:33:13 +02:00
use strict; "const" for lots of "requires"
This commit is contained in:
parent
39e9edec81
commit
5593f73579
24 changed files with 288 additions and 242 deletions
109
app.js
109
app.js
|
|
@ -1,13 +1,13 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
'use strict';
|
||||
"use strict";
|
||||
|
||||
var os = require('os');
|
||||
var path = require('path');
|
||||
var dotenv = require("dotenv");
|
||||
var fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const dotenv = require("dotenv");
|
||||
const fs = require('fs');
|
||||
|
||||
var configPaths = [ path.join(os.homedir(), '.config', 'btc-rpc-explorer.env'), path.join(process.cwd(), '.env') ];
|
||||
const configPaths = [ path.join(os.homedir(), '.config', 'btc-rpc-explorer.env'), path.join(process.cwd(), '.env') ];
|
||||
configPaths.filter(fs.existsSync).forEach(path => {
|
||||
console.log('Loading env file:', path);
|
||||
dotenv.config({ path });
|
||||
|
|
@ -17,51 +17,50 @@ global.cacheStats = {};
|
|||
|
||||
// debug module is already loaded by the time we do dotenv.config
|
||||
// so refresh the status of DEBUG env var
|
||||
var debug = require("debug");
|
||||
const debug = require("debug");
|
||||
debug.enable(process.env.DEBUG || "btcexp:app,btcexp:error");
|
||||
|
||||
var debugLog = debug("btcexp:app");
|
||||
var debugErrorLog = debug("btcexp:error");
|
||||
var debugPerfLog = debug("btcexp:actionPerformace");
|
||||
const debugLog = debug("btcexp:app");
|
||||
const debugErrorLog = debug("btcexp:error");
|
||||
const debugPerfLog = debug("btcexp:actionPerformace");
|
||||
|
||||
var express = require('express');
|
||||
var favicon = require('serve-favicon');
|
||||
var logger = require('morgan');
|
||||
var cookieParser = require('cookie-parser');
|
||||
var bodyParser = require('body-parser');
|
||||
var session = require("express-session");
|
||||
var csurf = require("csurf");
|
||||
var config = require("./app/config.js");
|
||||
var simpleGit = require('simple-git');
|
||||
var utils = require("./app/utils.js");
|
||||
var moment = require("moment");
|
||||
var Decimal = require('decimal.js');
|
||||
var bitcoinCore = require("bitcoin-core");
|
||||
var pug = require("pug");
|
||||
var momentDurationFormat = require("moment-duration-format");
|
||||
var coreApi = require("./app/api/coreApi.js");
|
||||
var coins = require("./app/coins.js");
|
||||
var request = require("request");
|
||||
var qrcode = require("qrcode");
|
||||
var addressApi = require("./app/api/addressApi.js");
|
||||
var electrumAddressApi = require("./app/api/electrumAddressApi.js");
|
||||
var coreApi = require("./app/api/coreApi.js");
|
||||
var auth = require('./app/auth.js');
|
||||
var sso = require('./app/sso.js');
|
||||
var markdown = require("markdown-it")();
|
||||
const express = require('express');
|
||||
const favicon = require('serve-favicon');
|
||||
const logger = require('morgan');
|
||||
const cookieParser = require('cookie-parser');
|
||||
const bodyParser = require('body-parser');
|
||||
const session = require("express-session");
|
||||
const csurf = require("csurf");
|
||||
const config = require("./app/config.js");
|
||||
const simpleGit = require('simple-git');
|
||||
const utils = require("./app/utils.js");
|
||||
const moment = require("moment");
|
||||
const Decimal = require('decimal.js');
|
||||
const bitcoinCore = require("bitcoin-core");
|
||||
const pug = require("pug");
|
||||
const momentDurationFormat = require("moment-duration-format");
|
||||
const coreApi = require("./app/api/coreApi.js");
|
||||
const coins = require("./app/coins.js");
|
||||
const request = require("request");
|
||||
const qrcode = require("qrcode");
|
||||
const addressApi = require("./app/api/addressApi.js");
|
||||
const electrumAddressApi = require("./app/api/electrumAddressApi.js");
|
||||
const auth = require('./app/auth.js');
|
||||
const sso = require('./app/sso.js');
|
||||
const markdown = require("markdown-it")();
|
||||
const v8 = require("v8");
|
||||
|
||||
var package_json = require('./package.json');
|
||||
const package_json = require('./package.json');
|
||||
global.appVersion = package_json.version;
|
||||
|
||||
var crawlerBotUserAgentStrings = [ "Googlebot", "Bingbot", "Slurp", "DuckDuckBot", "Baiduspider", "YandexBot", "Sogou", "Exabot", "facebot", "ia_archiver" ];
|
||||
const crawlerBotUserAgentStrings = [ "Googlebot", "Bingbot", "Slurp", "DuckDuckBot", "Baiduspider", "YandexBot", "Sogou", "Exabot", "facebot", "ia_archiver" ];
|
||||
|
||||
var baseActionsRouter = require('./routes/baseRouter.js');
|
||||
var apiActionsRouter = require('./routes/apiRouter.js');
|
||||
var snippetActionsRouter = require('./routes/snippetRouter.js');
|
||||
var adminActionsRouter = require('./routes/adminRouter.js');
|
||||
const baseActionsRouter = require('./routes/baseRouter.js');
|
||||
const apiActionsRouter = require('./routes/apiRouter.js');
|
||||
const snippetActionsRouter = require('./routes/snippetRouter.js');
|
||||
const adminActionsRouter = require('./routes/adminRouter.js');
|
||||
|
||||
var app = express();
|
||||
const app = express();
|
||||
|
||||
app.use(require("express-status-monitor")({
|
||||
path: config.baseUrl + 'admin/status',
|
||||
|
|
@ -412,20 +411,22 @@ app.onStartup = function() {
|
|||
|
||||
|
||||
// dump "startup" heap after 5sec
|
||||
(function () {
|
||||
var callback = function() {
|
||||
debugLog("Waited 5 sec after startup, now dumping 'startup' heap...");
|
||||
if (false) {
|
||||
(function () {
|
||||
var callback = function() {
|
||||
debugLog("Waited 5 sec after startup, now dumping 'startup' heap...");
|
||||
|
||||
const filename = `./heapDumpAtStartup-${Date.now()}.heapsnapshot`;
|
||||
const heapdumpStream = v8.getHeapSnapshot();
|
||||
const fileStream = fs.createWriteStream(filename);
|
||||
heapdumpStream.pipe(fileStream);
|
||||
|
||||
debugLog("Heap dump at startup written to", filename);
|
||||
};
|
||||
const filename = `./heapDumpAtStartup-${Date.now()}.heapsnapshot`;
|
||||
const heapdumpStream = v8.getHeapSnapshot();
|
||||
const fileStream = fs.createWriteStream(filename);
|
||||
heapdumpStream.pipe(fileStream);
|
||||
|
||||
setTimeout(callback, 5000);
|
||||
})();
|
||||
debugLog("Heap dump at startup written to", filename);
|
||||
};
|
||||
|
||||
setTimeout(callback, 5000);
|
||||
})();
|
||||
}
|
||||
|
||||
|
||||
if (global.sourcecodeVersion == null && fs.existsSync('.git')) {
|
||||
|
|
|
|||
|
|
@ -1,13 +1,15 @@
|
|||
var config = require("./../config.js");
|
||||
var coins = require("../coins.js");
|
||||
var utils = require("../utils.js");
|
||||
"use strict";
|
||||
|
||||
var coinConfig = coins[config.coin];
|
||||
const config = require("./../config.js");
|
||||
const coins = require("../coins.js");
|
||||
const utils = require("../utils.js");
|
||||
|
||||
var electrumAddressApi = require("./electrumAddressApi.js");
|
||||
var blockchainAddressApi = require("./blockchainAddressApi.js");
|
||||
var blockchairAddressApi = require("./blockchairAddressApi.js");
|
||||
var blockcypherAddressApi = require("./blockcypherAddressApi.js");
|
||||
const coinConfig = coins[config.coin];
|
||||
|
||||
const electrumAddressApi = require("./electrumAddressApi.js");
|
||||
const blockchainAddressApi = require("./blockchainAddressApi.js");
|
||||
const blockchairAddressApi = require("./blockchairAddressApi.js");
|
||||
const blockcypherAddressApi = require("./blockcypherAddressApi.js");
|
||||
|
||||
function getSupportedAddressApis() {
|
||||
return ["blockchain.com", "blockchair.com", "blockcypher.com", "electrumx"];
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
var request = require("request");
|
||||
var utils = require("./../utils.js");
|
||||
"use strict";
|
||||
|
||||
const request = require("request");
|
||||
const utils = require("./../utils.js");
|
||||
|
||||
|
||||
function getAddressDetails(address, scriptPubkey, sort, limit, offset) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
var request = require("request");
|
||||
var utils = require("./../utils.js");
|
||||
"use strict";
|
||||
|
||||
const request = require("request");
|
||||
const utils = require("./../utils.js");
|
||||
|
||||
|
||||
function getAddressDetails(address, scriptPubkey, sort, limit, offset) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
var request = require("request");
|
||||
var utils = require("./../utils.js");
|
||||
"use strict";
|
||||
|
||||
const request = require("request");
|
||||
const utils = require("./../utils.js");
|
||||
|
||||
|
||||
function getAddressDetails(address, scriptPubkey, sort, limit, offset) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
|
|
|
|||
|
|
@ -1,32 +1,34 @@
|
|||
var debug = require("debug");
|
||||
"use strict";
|
||||
|
||||
var debugLog = debug("btcexp:core");
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:core");
|
||||
|
||||
var LRU = require("lru-cache");
|
||||
var fs = require('fs');
|
||||
const LRU = require("lru-cache");
|
||||
const fs = require('fs');
|
||||
|
||||
var utils = require("../utils.js");
|
||||
var config = require("../config.js");
|
||||
var coins = require("../coins.js");
|
||||
var redisCache = require("../redisCache.js");
|
||||
var Decimal = require("decimal.js");
|
||||
var md5 = require("md5");
|
||||
const utils = require("../utils.js");
|
||||
const config = require("../config.js");
|
||||
const coins = require("../coins.js");
|
||||
const redisCache = require("../redisCache.js");
|
||||
const Decimal = require("decimal.js");
|
||||
const md5 = require("md5");
|
||||
|
||||
// choose one of the below: RPC to a node, or mock data while testing
|
||||
var rpcApi = require("./rpcApi.js");
|
||||
const rpcApi = require("./rpcApi.js");
|
||||
//var rpcApi = require("./mockApi.js");
|
||||
|
||||
|
||||
// this value should be incremented whenever data format changes, to avoid
|
||||
// pulling old-format data from a persistent cache
|
||||
var cacheKeyVersion = "v1";
|
||||
const cacheKeyVersion = "v1";
|
||||
|
||||
|
||||
const ONE_SEC = 1000;
|
||||
const ONE_MIN = 60 * ONE_SEC;
|
||||
const ONE_HR = 60 * ONE_MIN;
|
||||
const FIFTEEN_MIN = 15 * ONE_MIN;
|
||||
const ONE_DAY = 24 * ONE_HR;
|
||||
const ONE_YR = 265 * ONE_DAY;
|
||||
const ONE_YR = 365 * ONE_DAY;
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,22 @@
|
|||
var debug = require("debug");
|
||||
var debugLog = debug("btcexp:electrumx");
|
||||
"use strict";
|
||||
|
||||
var config = require("./../config.js");
|
||||
var coins = require("../coins.js");
|
||||
var utils = require("../utils.js");
|
||||
var sha256 = require("crypto-js/sha256");
|
||||
var hexEnc = require("crypto-js/enc-hex");
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:electrumx");
|
||||
|
||||
const config = require("./../config.js");
|
||||
const coins = require("../coins.js");
|
||||
const utils = require("../utils.js");
|
||||
const sha256 = require("crypto-js/sha256");
|
||||
const hexEnc = require("crypto-js/enc-hex");
|
||||
|
||||
var coinConfig = coins[config.coin];
|
||||
const coinConfig = coins[config.coin];
|
||||
|
||||
global.net = require('net');
|
||||
global.tls = require('tls');
|
||||
|
||||
const ElectrumClient = require('electrum-client');
|
||||
|
||||
var electrumClients = [];
|
||||
const electrumClients = [];
|
||||
|
||||
global.electrumStats = {
|
||||
base: {
|
||||
|
|
@ -25,7 +27,7 @@ global.electrumStats = {
|
|||
rpc: {}
|
||||
};
|
||||
|
||||
var noConnectionsErrorText = "No ElectrumX connection available. This could mean that the connection was lost or that ElectrumX is processing transactions and therefore not accepting requests. This tool will try to reconnect. If you manage your own ElectrumX server you may want to check your ElectrumX logs.";
|
||||
const noConnectionsErrorText = "No ElectrumX connection available. This could mean that the connection was lost or that ElectrumX is processing transactions and therefore not accepting requests. This tool will try to reconnect. If you manage your own ElectrumX server you may want to check your ElectrumX logs.";
|
||||
|
||||
|
||||
function connectToServers() {
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
var utils = require("../utils.js");
|
||||
var config = require("../config.js");
|
||||
var coins = require("../coins.js");
|
||||
"use strict";
|
||||
|
||||
var SHA256 = require("crypto-js/sha256");
|
||||
var earliestBlockTime = 1231006505;
|
||||
var avgBlockTime = 200000;
|
||||
var currentBlockHeight = 1234567;
|
||||
const utils = require("../utils.js");
|
||||
const config = require("../config.js");
|
||||
const coins = require("../coins.js");
|
||||
|
||||
const SHA256 = require("crypto-js/sha256");
|
||||
const earliestBlockTime = 1231006505;
|
||||
const avgBlockTime = 200000;
|
||||
const currentBlockHeight = 1234567;
|
||||
|
||||
|
||||
function getBlockchainInfo() {
|
||||
|
|
@ -37,9 +39,9 @@ function getRawMempool() {
|
|||
}
|
||||
|
||||
function getBlockByHeight(blockHeight) {
|
||||
var txCount = utils.seededRandomIntBetween(blockHeight, 1, 20);
|
||||
var txids = [];
|
||||
for (var i = 0; i < txCount; i++) {
|
||||
const txCount = utils.seededRandomIntBetween(blockHeight, 1, 20);
|
||||
const txids = [];
|
||||
for (let i = 0; i < txCount; i++) {
|
||||
txids.push(SHA256("" + blockHeight + "_" + i));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,18 @@
|
|||
var debug = require('debug');
|
||||
"use strict";
|
||||
|
||||
var debugLog = debug("btcexp:rpc");
|
||||
const debug = require('debug');
|
||||
const debugLog = debug("btcexp:rpc");
|
||||
|
||||
var async = require("async");
|
||||
var semver = require("semver");
|
||||
const async = require("async");
|
||||
const semver = require("semver");
|
||||
|
||||
var utils = require("../utils.js");
|
||||
var config = require("../config.js");
|
||||
var coins = require("../coins.js");
|
||||
const utils = require("../utils.js");
|
||||
const config = require("../config.js");
|
||||
const coins = require("../coins.js");
|
||||
|
||||
var activeQueueTasks = 0;
|
||||
let activeQueueTasks = 0;
|
||||
|
||||
var rpcQueue = async.queue(function(task, callback) {
|
||||
const rpcQueue = async.queue(function(task, callback) {
|
||||
activeQueueTasks++;
|
||||
//debugLog("activeQueueTasks: " + activeQueueTasks);
|
||||
|
||||
|
|
@ -24,7 +25,7 @@ var rpcQueue = async.queue(function(task, callback) {
|
|||
|
||||
}, config.rpcConcurrency);
|
||||
|
||||
var minRpcVersions = {getblockstats:"0.17.0"};
|
||||
const minRpcVersions = {getblockstats:"0.17.0"};
|
||||
|
||||
global.rpcStats = {};
|
||||
|
||||
|
|
@ -347,7 +348,7 @@ function getRpcData(cmd) {
|
|||
return new Promise(function(resolve, reject) {
|
||||
debugLog(`RPC: ${cmd}`);
|
||||
|
||||
rpcCall = function(callback) {
|
||||
let rpcCall = function(callback) {
|
||||
var client = (cmd == "gettxoutsetinfo" ? global.rpcClientNoTimeout : global.rpcClient);
|
||||
|
||||
client.command(cmd, function(err, result, resHeaders) {
|
||||
|
|
@ -402,7 +403,7 @@ function getRpcDataWithParams(request) {
|
|||
return new Promise(function(resolve, reject) {
|
||||
debugLog(`RPC: ${JSON.stringify(request)}`);
|
||||
|
||||
rpcCall = function(callback) {
|
||||
let rpcCall = function(callback) {
|
||||
global.rpcClient.command([request], function(err, result, resHeaders) {
|
||||
try {
|
||||
if (err != null) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
var basicAuth = require('basic-auth');
|
||||
"use strict";
|
||||
|
||||
const basicAuth = require('basic-auth');
|
||||
|
||||
module.exports = pass => (req, res, next) => {
|
||||
var cred = basicAuth(req);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
var btc = require("./coins/btc.js");
|
||||
var ltc = require("./coins/ltc.js");
|
||||
"use strict";
|
||||
|
||||
const btc = require("./coins/btc.js");
|
||||
const ltc = require("./coins/ltc.js");
|
||||
|
||||
module.exports = {
|
||||
"BTC": btc,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
var Decimal = require("decimal.js");
|
||||
Decimal8 = Decimal.clone({ precision:8, rounding:8 });
|
||||
"use strict";
|
||||
|
||||
const Decimal = require("decimal.js");
|
||||
const Decimal8 = Decimal.clone({ precision:8, rounding:8 });
|
||||
|
||||
var currencyUnits = [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
var Decimal = require("decimal.js");
|
||||
Decimal8 = Decimal.clone({ precision:8, rounding:8 });
|
||||
const Decimal = require("decimal.js");
|
||||
const Decimal8 = Decimal.clone({ precision:8, rounding:8 });
|
||||
|
||||
var currencyUnits = [
|
||||
const currencyUnits = [
|
||||
{
|
||||
type:"native",
|
||||
name:"LTC",
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
var debug = require("debug");
|
||||
var debugLog = debug("btcexp:config");
|
||||
"use strict";
|
||||
|
||||
var fs = require('fs');
|
||||
var crypto = require('crypto');
|
||||
var url = require('url');
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:config");
|
||||
|
||||
var baseUrl = (process.env.BTCEXP_BASEURL || "/").trim();
|
||||
const fs = require('fs');
|
||||
const crypto = require('crypto');
|
||||
const url = require('url');
|
||||
|
||||
let baseUrl = (process.env.BTCEXP_BASEURL || "/").trim();
|
||||
if (!baseUrl.startsWith("/")) {
|
||||
baseUrl = "/" + baseUrl;
|
||||
}
|
||||
|
|
@ -13,12 +15,12 @@ if (!baseUrl.endsWith("/")) {
|
|||
baseUrl += "/";
|
||||
}
|
||||
|
||||
var coins = require("./coins.js");
|
||||
var credentials = require("./credentials.js");
|
||||
const coins = require("./coins.js");
|
||||
const credentials = require("./credentials.js");
|
||||
|
||||
var currentCoin = process.env.BTCEXP_COIN || "BTC";
|
||||
const currentCoin = process.env.BTCEXP_COIN || "BTC";
|
||||
|
||||
var rpcCred = credentials.rpc;
|
||||
const rpcCred = credentials.rpc;
|
||||
|
||||
if (rpcCred.cookie && !rpcCred.username && !rpcCred.password && fs.existsSync(rpcCred.cookie)) {
|
||||
console.log(`Loading RPC cookie file: ${rpcCred.cookie}`);
|
||||
|
|
@ -30,16 +32,16 @@ if (rpcCred.cookie && !rpcCred.username && !rpcCred.password && fs.existsSync(rp
|
|||
}
|
||||
}
|
||||
|
||||
var cookieSecret = process.env.BTCEXP_COOKIE_SECRET
|
||||
const cookieSecret = process.env.BTCEXP_COOKIE_SECRET
|
||||
|| (rpcCred.password && crypto.createHmac('sha256', JSON.stringify(rpcCred))
|
||||
.update('btc-rpc-explorer-cookie-secret').digest('hex'))
|
||||
|| "0x000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f";
|
||||
|
||||
|
||||
var electrumXServerUriStrings = (process.env.BTCEXP_ELECTRUMX_SERVERS || "").split(',').filter(Boolean);
|
||||
var electrumXServers = [];
|
||||
for (var i = 0; i < electrumXServerUriStrings.length; i++) {
|
||||
var uri = url.parse(electrumXServerUriStrings[i]);
|
||||
const electrumXServerUriStrings = (process.env.BTCEXP_ELECTRUMX_SERVERS || "").split(',').filter(Boolean);
|
||||
const electrumXServers = [];
|
||||
for (let i = 0; i < electrumXServerUriStrings.length; i++) {
|
||||
const uri = url.parse(electrumXServerUriStrings[i]);
|
||||
|
||||
electrumXServers.push({protocol:uri.protocol.substring(0, uri.protocol.length - 1), host:uri.hostname, port:parseInt(uri.port)});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
var os = require('os');
|
||||
var path = require('path');
|
||||
var url = require('url');
|
||||
"use strict";
|
||||
|
||||
var btcUri = process.env.BTCEXP_BITCOIND_URI ? url.parse(process.env.BTCEXP_BITCOIND_URI, true) : { query: { } };
|
||||
var btcAuth = btcUri.auth ? btcUri.auth.split(':') : [];
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const url = require('url');
|
||||
|
||||
const btcUri = process.env.BTCEXP_BITCOIND_URI ? url.parse(process.env.BTCEXP_BITCOIND_URI, true) : { query: { } };
|
||||
const btcAuth = btcUri.auth ? btcUri.auth.split(':') : [];
|
||||
|
||||
module.exports = {
|
||||
rpc: {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,12 @@
|
|||
var redis = require("redis");
|
||||
var bluebird = require("bluebird");
|
||||
"use strict";
|
||||
|
||||
var config = require("./config.js");
|
||||
var utils = require("./utils.js");
|
||||
const redis = require("redis");
|
||||
const bluebird = require("bluebird");
|
||||
|
||||
var redisClient = null;
|
||||
const config = require("./config.js");
|
||||
const utils = require("./utils.js");
|
||||
|
||||
const redisClient = null;
|
||||
if (config.redisUrl) {
|
||||
bluebird.promisifyAll(redis.RedisClient.prototype);
|
||||
|
||||
|
|
@ -14,7 +16,7 @@ if (config.redisUrl) {
|
|||
function createCache(keyPrefix, onCacheEvent) {
|
||||
return {
|
||||
get: function(key) {
|
||||
var prefixedKey = `${keyPrefix}-${key}`;
|
||||
const prefixedKey = `${keyPrefix}-${key}`;
|
||||
|
||||
return new Promise(function(resolve, reject) {
|
||||
onCacheEvent("redis", "try", prefixedKey);
|
||||
|
|
@ -40,7 +42,7 @@ function createCache(keyPrefix, onCacheEvent) {
|
|||
});
|
||||
},
|
||||
set: function(key, obj, maxAgeMillis) {
|
||||
var prefixedKey = `${keyPrefix}-${key}`;
|
||||
const prefixedKey = `${keyPrefix}-${key}`;
|
||||
|
||||
redisClient.set(prefixedKey, JSON.stringify(obj), "PX", maxAgeMillis);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
"use strict";
|
||||
|
||||
const crypto = require('crypto');
|
||||
const fs = require('fs');
|
||||
|
||||
|
|
|
|||
33
app/utils.js
33
app/utils.js
|
|
@ -1,20 +1,21 @@
|
|||
var debug = require("debug");
|
||||
"use strict";
|
||||
|
||||
var debugLog = debug("btcexp:utils");
|
||||
var debugErrorLog = debug("btcexp:error");
|
||||
var debugErrorVerboseLog = debug("btcexp:errorVerbose");
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:utils");
|
||||
const debugErrorLog = debug("btcexp:error");
|
||||
const debugErrorVerboseLog = debug("btcexp:errorVerbose");
|
||||
|
||||
var Decimal = require("decimal.js");
|
||||
var request = require("request");
|
||||
var qrcode = require("qrcode");
|
||||
const Decimal = require("decimal.js");
|
||||
const request = require("request");
|
||||
const qrcode = require("qrcode");
|
||||
|
||||
var config = require("./config.js");
|
||||
var coins = require("./coins.js");
|
||||
var coinConfig = coins[config.coin];
|
||||
var redisCache = require("./redisCache.js");
|
||||
const config = require("./config.js");
|
||||
const coins = require("./coins.js");
|
||||
const coinConfig = coins[config.coin];
|
||||
const redisCache = require("./redisCache.js");
|
||||
|
||||
|
||||
var exponentScales = [
|
||||
const exponentScales = [
|
||||
{val:1000000000000000000000000000000000, name:"?", abbreviation:"V", exponent:"33"},
|
||||
{val:1000000000000000000000000000000, name:"?", abbreviation:"W", exponent:"30"},
|
||||
{val:1000000000000000000000000000, name:"?", abbreviation:"X", exponent:"27"},
|
||||
|
|
@ -28,11 +29,11 @@ var exponentScales = [
|
|||
{val:1000, name:"kilo", abbreviation:"K", exponent:"3", textDesc:"thou"}
|
||||
];
|
||||
|
||||
var ipMemoryCache = {};
|
||||
const ipMemoryCache = {};
|
||||
|
||||
var ipRedisCache = null;
|
||||
const ipRedisCache = null;
|
||||
if (redisCache.active) {
|
||||
var onRedisCacheEvent = function(cacheType, eventType, cacheKey) {
|
||||
const onRedisCacheEvent = function(cacheType, eventType, cacheKey) {
|
||||
global.cacheStats.redis[eventType]++;
|
||||
//debugLog(`cache.${cacheType}.${eventType}: ${cacheKey}`);
|
||||
}
|
||||
|
|
@ -40,7 +41,7 @@ if (redisCache.active) {
|
|||
ipRedisCache = redisCache.createCache("v0", onRedisCacheEvent);
|
||||
}
|
||||
|
||||
var ipCache = {
|
||||
const ipCache = {
|
||||
get:function(key) {
|
||||
return new Promise(function(resolve, reject) {
|
||||
if (ipMemoryCache[key] != null) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
"use strict";
|
||||
|
||||
var os = require('os');
|
||||
var path = require('path');
|
||||
var dotenv = require("dotenv");
|
||||
|
|
|
|||
9
bin/www
9
bin/www
|
|
@ -1,6 +1,9 @@
|
|||
#!/usr/bin/env node
|
||||
var debug = require('debug')('www');
|
||||
var app = require('../app');
|
||||
|
||||
"use strict";
|
||||
|
||||
const debug = require('debug')('www');
|
||||
const app = require('../app');
|
||||
|
||||
const v8 = require('v8');
|
||||
const maxOldSpaceSize = parseInt(process.env.BTCEXP_OLD_SPACE_MAX_SIZE, 10) || 1024;
|
||||
|
|
@ -10,7 +13,7 @@ debug(`Set max_old_space_size to ${maxOldSpaceSize} MB`);
|
|||
app.set('port', process.env.PORT || process.env.BTCEXP_PORT || 3002);
|
||||
app.set('host', process.env.BTCEXP_HOST || '127.0.0.1');
|
||||
|
||||
var server = app.listen(app.get('port'), app.get('host'), function() {
|
||||
const server = app.listen(app.get('port'), app.get('host'), function() {
|
||||
debug('Express server listening on ' + server.address().address + ':' + server.address().port);
|
||||
|
||||
if (app.onStartup) {
|
||||
|
|
|
|||
|
|
@ -1,26 +1,28 @@
|
|||
var debug = require("debug");
|
||||
var debugLog = debug("btcexp:router");
|
||||
"use strict";
|
||||
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:router");
|
||||
|
||||
const fs = require('fs');
|
||||
const v8 = require('v8');
|
||||
|
||||
var express = require('express');
|
||||
var csurf = require('csurf');
|
||||
var router = express.Router();
|
||||
var util = require('util');
|
||||
var moment = require('moment');
|
||||
var bitcoinCore = require("bitcoin-core");
|
||||
var qrcode = require('qrcode');
|
||||
var bitcoinjs = require('bitcoinjs-lib');
|
||||
var sha256 = require("crypto-js/sha256");
|
||||
var hexEnc = require("crypto-js/enc-hex");
|
||||
var Decimal = require("decimal.js");
|
||||
const express = require('express');
|
||||
const csurf = require('csurf');
|
||||
const router = express.Router();
|
||||
const util = require('util');
|
||||
const moment = require('moment');
|
||||
const bitcoinCore = require("bitcoin-core");
|
||||
const qrcode = require('qrcode');
|
||||
const bitcoinjs = require('bitcoinjs-lib');
|
||||
const sha256 = require("crypto-js/sha256");
|
||||
const hexEnc = require("crypto-js/enc-hex");
|
||||
const Decimal = require("decimal.js");
|
||||
|
||||
var utils = require('./../app/utils.js');
|
||||
var coins = require("./../app/coins.js");
|
||||
var config = require("./../app/config.js");
|
||||
var coreApi = require("./../app/api/coreApi.js");
|
||||
var addressApi = require("./../app/api/addressApi.js");
|
||||
const utils = require('./../app/utils.js');
|
||||
const coins = require("./../app/coins.js");
|
||||
const config = require("./../app/config.js");
|
||||
const coreApi = require("./../app/api/coreApi.js");
|
||||
const addressApi = require("./../app/api/addressApi.js");
|
||||
|
||||
const forceCsrf = csurf({ ignoreMethods: [] });
|
||||
|
||||
|
|
|
|||
|
|
@ -1,23 +1,25 @@
|
|||
var debug = require("debug");
|
||||
var debugLog = debug("btcexp:router");
|
||||
"use strict";
|
||||
|
||||
var express = require('express');
|
||||
var csurf = require('csurf');
|
||||
var router = express.Router();
|
||||
var util = require('util');
|
||||
var moment = require('moment');
|
||||
var bitcoinCore = require("bitcoin-core");
|
||||
var qrcode = require('qrcode');
|
||||
var bitcoinjs = require('bitcoinjs-lib');
|
||||
var sha256 = require("crypto-js/sha256");
|
||||
var hexEnc = require("crypto-js/enc-hex");
|
||||
var Decimal = require("decimal.js");
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:router");
|
||||
|
||||
var utils = require('./../app/utils.js');
|
||||
var coins = require("./../app/coins.js");
|
||||
var config = require("./../app/config.js");
|
||||
var coreApi = require("./../app/api/coreApi.js");
|
||||
var addressApi = require("./../app/api/addressApi.js");
|
||||
const express = require('express');
|
||||
const csurf = require('csurf');
|
||||
const router = express.Router();
|
||||
const util = require('util');
|
||||
const moment = require('moment');
|
||||
const bitcoinCore = require("bitcoin-core");
|
||||
const qrcode = require('qrcode');
|
||||
const bitcoinjs = require('bitcoinjs-lib');
|
||||
const sha256 = require("crypto-js/sha256");
|
||||
const hexEnc = require("crypto-js/enc-hex");
|
||||
const Decimal = require("decimal.js");
|
||||
|
||||
const utils = require('./../app/utils.js');
|
||||
const coins = require("./../app/coins.js");
|
||||
const config = require("./../app/config.js");
|
||||
const coreApi = require("./../app/api/coreApi.js");
|
||||
const addressApi = require("./../app/api/addressApi.js");
|
||||
|
||||
const forceCsrf = csurf({ ignoreMethods: [] });
|
||||
|
||||
|
|
|
|||
|
|
@ -1,26 +1,28 @@
|
|||
var debug = require("debug");
|
||||
var debugLog = debug("btcexp:router");
|
||||
"use strict";
|
||||
|
||||
var express = require('express');
|
||||
var csurf = require('csurf');
|
||||
var router = express.Router();
|
||||
var util = require('util');
|
||||
var moment = require('moment');
|
||||
var bitcoinCore = require("bitcoin-core");
|
||||
var qrcode = require('qrcode');
|
||||
var bitcoinjs = require('bitcoinjs-lib');
|
||||
var sha256 = require("crypto-js/sha256");
|
||||
var hexEnc = require("crypto-js/enc-hex");
|
||||
var Decimal = require("decimal.js");
|
||||
var semver = require("semver");
|
||||
var markdown = require("markdown-it")();
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:router");
|
||||
|
||||
var utils = require('./../app/utils.js');
|
||||
var coins = require("./../app/coins.js");
|
||||
var config = require("./../app/config.js");
|
||||
var coreApi = require("./../app/api/coreApi.js");
|
||||
var addressApi = require("./../app/api/addressApi.js");
|
||||
var rpcApi = require("./../app/api/rpcApi.js");
|
||||
const express = require('express');
|
||||
const csurf = require('csurf');
|
||||
const router = express.Router();
|
||||
const util = require('util');
|
||||
const moment = require('moment');
|
||||
const bitcoinCore = require("bitcoin-core");
|
||||
const qrcode = require('qrcode');
|
||||
const bitcoinjs = require('bitcoinjs-lib');
|
||||
const sha256 = require("crypto-js/sha256");
|
||||
const hexEnc = require("crypto-js/enc-hex");
|
||||
const Decimal = require("decimal.js");
|
||||
const semver = require("semver");
|
||||
const markdown = require("markdown-it")();
|
||||
|
||||
const utils = require('./../app/utils.js');
|
||||
const coins = require("./../app/coins.js");
|
||||
const config = require("./../app/config.js");
|
||||
const coreApi = require("./../app/api/coreApi.js");
|
||||
const addressApi = require("./../app/api/addressApi.js");
|
||||
const rpcApi = require("./../app/api/rpcApi.js");
|
||||
|
||||
const forceCsrf = csurf({ ignoreMethods: [] });
|
||||
|
||||
|
|
|
|||
|
|
@ -1,23 +1,25 @@
|
|||
var debug = require("debug");
|
||||
var debugLog = debug("btcexp:router");
|
||||
"use strict";
|
||||
|
||||
var express = require('express');
|
||||
var csurf = require('csurf');
|
||||
var router = express.Router();
|
||||
var util = require('util');
|
||||
var moment = require('moment');
|
||||
var bitcoinCore = require("bitcoin-core");
|
||||
var qrcode = require('qrcode');
|
||||
var bitcoinjs = require('bitcoinjs-lib');
|
||||
var sha256 = require("crypto-js/sha256");
|
||||
var hexEnc = require("crypto-js/enc-hex");
|
||||
var Decimal = require("decimal.js");
|
||||
const debug = require("debug");
|
||||
const debugLog = debug("btcexp:router");
|
||||
|
||||
var utils = require('./../app/utils.js');
|
||||
var coins = require("./../app/coins.js");
|
||||
var config = require("./../app/config.js");
|
||||
var coreApi = require("./../app/api/coreApi.js");
|
||||
var addressApi = require("./../app/api/addressApi.js");
|
||||
const express = require('express');
|
||||
const csurf = require('csurf');
|
||||
const router = express.Router();
|
||||
const util = require('util');
|
||||
const moment = require('moment');
|
||||
const bitcoinCore = require("bitcoin-core");
|
||||
const qrcode = require('qrcode');
|
||||
const bitcoinjs = require('bitcoinjs-lib');
|
||||
const sha256 = require("crypto-js/sha256");
|
||||
const hexEnc = require("crypto-js/enc-hex");
|
||||
const Decimal = require("decimal.js");
|
||||
|
||||
const utils = require('./../app/utils.js');
|
||||
const coins = require("./../app/coins.js");
|
||||
const config = require("./../app/config.js");
|
||||
const coreApi = require("./../app/api/coreApi.js");
|
||||
const addressApi = require("./../app/api/addressApi.js");
|
||||
|
||||
const forceCsrf = csurf({ ignoreMethods: [] });
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue