From cd64ff943ebc2826c6c932109dbf747c97980b6b Mon Sep 17 00:00:00 2001 From: webworker01 Date: Tue, 1 Oct 2019 05:42:33 +0000 Subject: [PATCH] Clone object before anonymizing --- libs/api.js | 20 +++++++++++--------- libs/website.js | 27 ++++++++++++++------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/libs/api.js b/libs/api.js index 05821ac..9eaa26f 100644 --- a/libs/api.js +++ b/libs/api.js @@ -33,21 +33,23 @@ module.exports = function(logger, portalConfig, poolConfigs){ case 'getblocksstats': portalStats.getBlocks(function(data){ //Anonymize - filterIterate(data, {split:{by:':', index:3}}, 'miner-'); + let anonData = JSON.parse(JSON.stringify(data)); + filterIterate(anonData, {split:{by:':', index:3}}, 'miner-'); res.header('Content-Type', 'application/json'); - res.end(JSON.stringify(data)); + res.end(JSON.stringify(anonData)); }); break; case 'payments': var poolBlocks = []; - for(var pool in portalStats.stats.pools) { - filterIterate(portalStats.stats.pools[pool].pending.blocks, {split:{by:':', index:3}}, 'miner-'); - for (payment in portalStats.stats.pools[pool].payments) { - filterIterate(portalStats.stats.pools[pool].payments[payment].amounts, {key: true}, 'miner-', ); - filterIterate(portalStats.stats.pools[pool].payments[payment].balances, {key: true}, 'miner-', ); - filterIterate(portalStats.stats.pools[pool].payments[payment].work, {key: true}, 'miner-', ); + let anonPortalStats = JSON.parse(JSON.stringify(portalStats.stats)); + for(var pool in anonPortalStats.pools) { + filterIterate(anonPortalStats.pools[pool].pending.blocks, {split:{by:':', index:3}}, 'miner-'); + for (payment in anonPortalStats.pools[pool].payments) { + filterIterate(anonPortalStats.pools[pool].payments[payment].amounts, {key: true}, 'miner-', ); + filterIterate(anonPortalStats.pools[pool].payments[payment].balances, {key: true}, 'miner-', ); + filterIterate(anonPortalStats.pools[pool].payments[payment].work, {key: true}, 'miner-', ); } - poolBlocks.push({name: pool, pending: portalStats.stats.pools[pool].pending, payments: portalStats.stats.pools[pool].payments}); + poolBlocks.push({name: pool, pending: anonPortalStats.pools[pool].pending, payments: anonPortalStats.pools[pool].payments}); } res.header('Content-Type', 'application/json'); res.end(JSON.stringify(poolBlocks)); diff --git a/libs/website.js b/libs/website.js index 46a025c..c301e67 100644 --- a/libs/website.js +++ b/libs/website.js @@ -118,22 +118,23 @@ module.exports = function(logger){ processTemplates(); //Anonymize - for (pool in portalStats.stats.pools) { - filterIterate(portalStats.stats.pools[pool].confirmed.blocks, {split:{by:':', index:3}}, 'miner-'); - filterIterate(portalStats.stats.pools[pool].currentRoundShares, {key: true}, 'miner-'); - filterIterate(portalStats.stats.pools[pool].currentRoundTimes, {key: true}, 'miner-'); - filterIterate(portalStats.stats.pools[pool].miners, {key: true, prop: ['name']}, 'miner-', ); - filterIterate(portalStats.stats.pools[pool].pending.blocks, {split:{by:':', index:3}}, 'miner-'); - filterIterate(portalStats.stats.pools[pool].workers, {key: true, prop: ['name']}, 'worker-', ); - - for (payment in portalStats.stats.pools[pool].payments) { - filterIterate(portalStats.stats.pools[pool].payments[payment].amounts, {key: true}, 'miner-', ); - filterIterate(portalStats.stats.pools[pool].payments[payment].balances, {key: true}, 'miner-', ); - filterIterate(portalStats.stats.pools[pool].payments[payment].work, {key: true}, 'miner-', ); + let anonPortalStats = JSON.parse(JSON.stringify(portalStats.stats)); + for (pool in anonPortalStats.pools) { + filterIterate(anonPortalStats.pools[pool].confirmed.blocks, {split:{by:':', index:3}}, 'miner-'); + filterIterate(anonPortalStats.pools[pool].currentRoundShares, {key: true}, 'miner-'); + filterIterate(anonPortalStats.pools[pool].currentRoundTimes, {key: true}, 'miner-'); + filterIterate(anonPortalStats.pools[pool].miners, {key: true, prop: ['name']}, 'miner-', ); + filterIterate(anonPortalStats.pools[pool].pending.blocks, {split:{by:':', index:3}}, 'miner-'); + filterIterate(anonPortalStats.pools[pool].workers, {key: true, prop: ['name']}, 'worker-', ); + + for (payment in anonPortalStats.pools[pool].payments) { + filterIterate(anonPortalStats.pools[pool].payments[payment].amounts, {key: true}, 'miner-', ); + filterIterate(anonPortalStats.pools[pool].payments[payment].balances, {key: true}, 'miner-', ); + filterIterate(anonPortalStats.pools[pool].payments[payment].work, {key: true}, 'miner-', ); } } - var statData = 'data: ' + JSON.stringify(portalStats.stats) + '\n\n'; + var statData = 'data: ' + JSON.stringify(anonPortalStats) + '\n\n'; for (var uid in portalApi.liveStatConnections) { var res = portalApi.liveStatConnections[uid]; res.write(statData);