From 753f2c8e814c2c77b73058790f3504e0aab4a011 Mon Sep 17 00:00:00 2001 From: Alexander Blair Date: Fri, 19 May 2017 18:08:06 -0700 Subject: [PATCH] Update to include the new tool framework. --- init.js | 94 +++++++++++++++++++++++++++++-------------------- tools/blocks.js | 43 ++++++++++++++++++++++ 2 files changed, 98 insertions(+), 39 deletions(-) create mode 100644 tools/blocks.js diff --git a/init.js b/init.js index 053cee8..2ba9f62 100644 --- a/init.js +++ b/init.js @@ -5,11 +5,13 @@ let argv = require('minimist')(process.argv.slice(2)); let config = fs.readFileSync("./config.json"); let coinConfig = fs.readFileSync("./coinConfig.json"); let protobuf = require('protocol-buffers'); +let path = require('path'); global.support = require("./lib/support.js")(); global.config = JSON.parse(config); global.mysql = mysql.createPool(global.config.mysql); global.protos = protobuf(fs.readFileSync('./lib/data.proto')); +global.argv = argv; let comms; let coinInc; @@ -52,46 +54,60 @@ global.mysql.query("SELECT * FROM config").then(function (rows) { global.database.initEnv(); global.coinFuncs.blockedAddresses.push(global.config.pool.address); global.coinFuncs.blockedAddresses.push(global.config.payout.feeAddress); - switch(argv.module){ - case 'pool': - global.config.ports = []; - global.mysql.query("SELECT * FROM port_config").then(function(rows){ - rows.forEach(function(row){ - row.hidden = row.hidden === 1; - row.ssl = row.ssl === 1; - global.config.ports.push({ - port: row.poolPort, - difficulty: row.difficulty, - desc: row.portDesc, - portType: row.portType, - hidden: row.hidden, - ssl: row.ssl + if (argv.hasOwnProperty('tool') && fs.existsSync('./tools/'+argv.tool+'.js')) { + require('./lib/'+argv.tool+'.js'); + } else if (argv.hasOwnProperty('module')){ + switch(argv.module){ + case 'pool': + global.config.ports = []; + global.mysql.query("SELECT * FROM port_config").then(function(rows){ + rows.forEach(function(row){ + row.hidden = row.hidden === 1; + row.ssl = row.ssl === 1; + global.config.ports.push({ + port: row.poolPort, + difficulty: row.difficulty, + desc: row.portDesc, + portType: row.portType, + hidden: row.hidden, + ssl: row.ssl + }); }); + }).then(function(){ + require('./lib/pool.js'); }); - }).then(function(){ - require('./lib/pool.js'); - }); - break; - case 'blockManager': - require('./lib/blockManager.js'); - break; - case 'payments': - require('./lib/payments.js'); - break; - case 'api': - require('./lib/api.js'); - break; - case 'remoteShare': - require('./lib/remoteShare.js'); - break; - case 'worker': - require('./lib/worker.js'); - break; - case 'longRunner': - require('./lib/longRunner.js'); - break; - default: - console.error("Invalid module provided. Please provide a valid module"); - process.exit(1); + break; + case 'blockManager': + require('./lib/blockManager.js'); + break; + case 'payments': + require('./lib/payments.js'); + break; + case 'api': + require('./lib/api.js'); + break; + case 'remoteShare': + require('./lib/remoteShare.js'); + break; + case 'worker': + require('./lib/worker.js'); + break; + case 'longRunner': + require('./lib/longRunner.js'); + break; + default: + console.error("Invalid module provided. Please provide a valid module"); + process.exit(1); + } + } else { + console.error("Invalid module/tool provided. Please provide a valid module/tool"); + console.error("Valid Modules: pool, blockManager, payments, api, remoteShare, worker, longRunner"); + let valid_tools = "Valid Tools: "; + fs.readdirSync('./tools/').forEach(function(line){ + valid_tools += path.parse(line).name + ", "; + }); + valid_tools = valid_tools.slice(0, -2); + console.error(valid_tools); + process.exit(1); } }); \ No newline at end of file diff --git a/tools/blocks.js b/tools/blocks.js new file mode 100644 index 0000000..d6b2e1c --- /dev/null +++ b/tools/blocks.js @@ -0,0 +1,43 @@ +const valid_actions = ['finder', 'stats', 'list']; +let error = 0; +if (!global.argv.hasOwnProperty('action') || !valid_actions.hasOwnProperty(global.argv.action)) { + console.error("No action provided to block module."); + console.error("Valid actions: " + valid_actions.join(', ')); +} + +switch (global.argv.action) { + case 'finder': + if (!global.argv.hasOwnProperty('value')) { + console.error('No block provided in value field. Please use --value=blockID'); + error = 1; + break; + } + let blockID = parseInt(global.argv.value); + let block_data = global.database.getBlockByID(blockID); + /* + required string hash = 1; + required int64 difficulty = 2; + required int64 shares = 3; + required int64 timestamp = 4; + required POOLTYPE poolType = 5; + required bool unlocked = 6; + required bool valid = 7; + optional int64 value = 8; + */ + if (!block_data) { + console.error("Invalid blockID provided."); + error = 1; + break; + } + console.log("Data for block: " + blockID + '\n' + + 'Hash: ' + block_data.hash + '\n' + + 'Difficulty: ' + block_data.hash + '\n' + + 'Hashes Required: ' + block_data.hash + '\n' + + 'Find Time: ' + block_data.hash + '\n' + + 'Pool Type: ' + block_data.hash + '\n' + + 'Unlocked: ' + block_data.hash + '\n' + + 'Valid: ' + block_data.hash + '\n' + + 'Value: ' + block_data.hash + '\n'); +} + +process.exit(error); \ No newline at end of file