diff --git a/routes/shepherd.js b/routes/shepherd.js index d9654f8..f52f8b6 100644 --- a/routes/shepherd.js +++ b/routes/shepherd.js @@ -17,6 +17,7 @@ const electron = require('electron'), async = require('async'), rimraf = require('rimraf'), portscanner = require('portscanner'), + btoa = require('btoa'), Promise = require('bluebird'); const fixPath = require('fix-path'); @@ -296,7 +297,7 @@ shepherd.post('/cli', function(req, res, next) { }; res.end(JSON.stringify(errorObj)); - } else if (!req.body.payload.cmd.match(/^[0-9a-zA-Z \[\]"'/\\]+$/g)) { + } else if (!req.body.payload.cmd.match(/^[0-9a-zA-Z _\[\]"'/\\]+$/g)) { const errorObj = { 'msg': 'error', 'result': 'wrong cli string format' @@ -309,30 +310,64 @@ shepherd.post('/cli', function(req, res, next) { const _cmd = req.body.payload.cmd; const _params = req.body.payload.params ? ' ' + req.body.payload.params : ''; - exec(komodocliBin + (_chain ? ' -ac_name=' + _chain : '') + ' ' + _cmd + _params, function(error, stdout, stderr) { - console.log('stdout: ' + stdout) - console.log('stderr: ' + stderr) - if (error !== null) { - console.log('exec error: ' + error) - } + if (_mode === 'default') { + const auth = { + user: 'user2492216534', + pass: 'pass343c4e8953af5eafda16bdd65054fc7aac276c8bcbede1fdfdf44fb43dce95cd20', + port: 12167 + }; - let responseObj; + const options = { + url: 'http://localhost:' + auth.port, + method: 'POST', + auth: { + 'user': auth.user, + 'pass': auth.pass + }, + body: JSON.stringify({ + 'agent': 'bitcoinrpc', + 'method': _cmd + /*'params': [ + ]*/ + }) + }; - if (stderr) { - responseObj = { - 'msg': 'error', - 'result': stderr - }; - } else { - responseObj = { - 'msg': 'success', - 'result': stdout - }; - } + request(options, function (error, response, body) { + if (response && + response.statusCode && + response.statusCode === 200) { + res.end(body); + } else { + // TODO: error + } + }); + } else { + exec(komodocliBin + (_chain ? ' -ac_name=' + _chain : '') + ' ' + _cmd + _params, function(error, stdout, stderr) { + console.log('stdout: ' + stdout); + console.log('stderr: ' + stderr); - res.end(JSON.stringify(responseObj)); - }); + if (error !== null) { + console.log('exec error: ' + error); + } + + let responseObj; + + if (stderr) { + responseObj = { + 'msg': 'error', + 'result': stderr + }; + } else { + responseObj = { + 'msg': 'success', + 'result': stdout + }; + } + + res.end(JSON.stringify(responseObj)); + }); + } } });