|
|
@ -23,7 +23,7 @@ Promise = require('bluebird'); |
|
|
|
const fixPath = require('fix-path'); |
|
|
|
var ps = require('ps-node'), |
|
|
|
setconf = require('../private/setconf.js'), |
|
|
|
coincli = require('../private/coincli.js'), |
|
|
|
kmdcli = require('../private/kmdcli.js'), |
|
|
|
assetChainPorts = require('./ports.js') |
|
|
|
shepherd = express.Router(), |
|
|
|
iguanaInstanceRegistry = {}; |
|
|
@ -91,13 +91,17 @@ shepherd.appConfig = { |
|
|
|
}, |
|
|
|
"killIguanaOnStart": true, |
|
|
|
"dev": false, |
|
|
|
"v2": false |
|
|
|
"v2": false, |
|
|
|
"forks": { |
|
|
|
"basilisk": false, |
|
|
|
"all": false |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
shepherd.quitKomodod = function() { |
|
|
|
shepherd.quitKomodod = function(chain) { |
|
|
|
// exit komodod gracefully
|
|
|
|
console.log('exec ' + komodocliBin + ' stop'); |
|
|
|
exec(komodocliBin + ' stop', function(error, stdout, stderr) { |
|
|
|
console.log('exec ' + komodocliBin + (chain ? ' ac_name=' + chain : '') + ' stop'); |
|
|
|
exec(komodocliBin + (chain ? ' ac_name=' + chain : '') + ' stop', function(error, stdout, stderr) { |
|
|
|
console.log('stdout: ' + stdout) |
|
|
|
console.log('stderr: ' + stderr) |
|
|
|
if (error !== null) { |
|
|
@ -228,6 +232,62 @@ shepherd.setIO = function(io) { |
|
|
|
cache.setVar('iguanaDir', iguanaDir); |
|
|
|
cache.setVar('appConfig', shepherd.appConfig); |
|
|
|
|
|
|
|
/* |
|
|
|
* type: GET |
|
|
|
* |
|
|
|
*/ |
|
|
|
shepherd.get('/forks/restart', function(req, res, next) { |
|
|
|
var _pmid = req.query.pmid; |
|
|
|
|
|
|
|
pm2.connect(function(err) { |
|
|
|
if (err) { |
|
|
|
console.error(err); |
|
|
|
} |
|
|
|
|
|
|
|
pm2.restart(_pmid, function(err, ret) { |
|
|
|
if (err) { |
|
|
|
console.error(err); |
|
|
|
} |
|
|
|
pm2.disconnect(); |
|
|
|
|
|
|
|
var successObj = { |
|
|
|
'msg': 'success', |
|
|
|
'result': 'restarted' |
|
|
|
}; |
|
|
|
|
|
|
|
res.end(JSON.stringify(successObj)); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
/* |
|
|
|
* type: GET |
|
|
|
* |
|
|
|
*/ |
|
|
|
shepherd.get('/forks/stop', function(req, res, next) { |
|
|
|
var _pmid = req.query.pmid; |
|
|
|
|
|
|
|
pm2.connect(function(err) { |
|
|
|
if (err) { |
|
|
|
console.error(err); |
|
|
|
} |
|
|
|
|
|
|
|
pm2.stop(_pmid, function(err, ret) { |
|
|
|
if (err) { |
|
|
|
console.error(err); |
|
|
|
} |
|
|
|
pm2.disconnect(); |
|
|
|
|
|
|
|
var successObj = { |
|
|
|
'msg': 'success', |
|
|
|
'result': 'stopped' |
|
|
|
}; |
|
|
|
|
|
|
|
res.end(JSON.stringify(successObj)); |
|
|
|
}); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
/* |
|
|
|
* type: GET |
|
|
|
* |
|
|
@ -246,7 +306,8 @@ shepherd.get('/forks', function(req, res, next) { |
|
|
|
* params: name |
|
|
|
*/ |
|
|
|
shepherd.post('/forks', function(req, res, next) { |
|
|
|
const name = req.body.name; |
|
|
|
const mode = req.body.mode, |
|
|
|
coin = req.body.coin, |
|
|
|
port = shepherd.appConfig.iguanaCorePort; |
|
|
|
|
|
|
|
portscanner.findAPortNotInUse(port, port + 100, '127.0.0.1', function(error, _port) { |
|
|
@ -259,12 +320,18 @@ shepherd.post('/forks', function(req, res, next) { |
|
|
|
console.log('iguana core fork port ' + _port); |
|
|
|
pm2.start({ |
|
|
|
script: iguanaBin, // path to binary
|
|
|
|
name: 'IGUANA ' + _port + ' ' + name, |
|
|
|
name: 'IGUANA ' + _port + ' ' + mode + ' / ' + coin, |
|
|
|
exec_mode : 'fork', |
|
|
|
args: ['-port=' + _port], |
|
|
|
cwd: iguanaDir //set correct iguana directory
|
|
|
|
}, function(err, apps) { |
|
|
|
iguanaInstanceRegistry[_port] = name; |
|
|
|
iguanaInstanceRegistry[_port] = { |
|
|
|
'mode': mode, |
|
|
|
'coin': coin, |
|
|
|
'pid': apps[0].process.pid, |
|
|
|
'pmid': apps[0].pm2_env.pm_id |
|
|
|
}; |
|
|
|
cache.setVar('iguanaInstances', iguanaInstanceRegistry); |
|
|
|
|
|
|
|
var successObj = { |
|
|
|
'msg': 'success', |
|
|
@ -311,7 +378,7 @@ shepherd.delete('/groom', function(req, res, next) { |
|
|
|
* type: POST |
|
|
|
* params: filename, payload |
|
|
|
*/ |
|
|
|
shepherd.post('/groom', function(req, res) { |
|
|
|
shepherd.post('/groom', function(req, res, next) { |
|
|
|
cache.groomPost(req, res, next); |
|
|
|
}); |
|
|
|
|
|
|
@ -713,7 +780,12 @@ function herder(flock, data) { |
|
|
|
args: ['-port=' + shepherd.appConfig.iguanaCorePort], |
|
|
|
cwd: iguanaDir //set correct iguana directory
|
|
|
|
}, function(err, apps) { |
|
|
|
iguanaInstanceRegistry[shepherd.appConfig.iguanaCorePort] = 'main'; |
|
|
|
iguanaInstanceRegistry[shepherd.appConfig.iguanaCorePort] = { |
|
|
|
'mode': 'main', |
|
|
|
'coin': 'none', |
|
|
|
'pid': apps[0].process.pid, |
|
|
|
'pmid': apps[0].pm2_env.pm_id |
|
|
|
}; |
|
|
|
pm2.disconnect(); // Disconnect from PM2
|
|
|
|
if (err) { |
|
|
|
throw err; |
|
|
@ -1071,8 +1143,8 @@ function setConf(flock) { |
|
|
|
|
|
|
|
function getConf(flock) { |
|
|
|
var komodoDir = '', |
|
|
|
ZcashDir = '', |
|
|
|
DaemonConfPath = ''; |
|
|
|
ZcashDir = '', |
|
|
|
DaemonConfPath = ''; |
|
|
|
|
|
|
|
console.log(flock); |
|
|
|
|
|
|
|