Browse Source

Merge pull request #98 from pbca26/master

cache, forks
all-modes
pbca26 8 years ago
committed by GitHub
parent
commit
77888c6418
  1. BIN
      assets/bin/osx/iguana
  2. BIN
      assets/bin/osx/komodo-cli
  3. BIN
      assets/bin/osx/komodod
  4. 0
      assets/bin/osx/libgcc_s.1.dylib
  5. 0
      assets/bin/osx/libgomp.1.dylib
  6. 0
      assets/bin/osx/libstdc++.6.dylib
  7. 6
      gui/init.js
  8. 34
      gui/loading.js
  9. 37
      main.js
  10. 30
      private/kmdcli.js
  11. 22
      routes/cache.js
  12. 96
      routes/shepherd.js

BIN
assets/bin/osx/iguana

Binary file not shown.

BIN
assets/bin/osx/komodo-cli

Binary file not shown.

BIN
assets/bin/osx/komodod

Binary file not shown.

0
assets/bin/osx/libgcc_s.1.dylib

0
assets/bin/osx/libgomp.1.dylib

0
assets/bin/osx/libstdc++.6.dylib

6
gui/init.js

@ -15,6 +15,11 @@ $(document).ready(function() {
if (appConf && !appConf.manualIguanaStart) {
StartIguana();
}
/*if (appConf && appConf.forks && appConf.forks.basilisk) {
setTimeout(function() {
StartBasiliskInstance();
}, 4000);
}*/
var portcheck;
@ -25,7 +30,6 @@ $(document).ready(function() {
if (result !== 'error') {
stopcheck();
StartIguana_Cache();
$('#loading_status_text').text('Connecting to Basilisk Network...');
EDEX_DEXgetinfoAll(appConf.skipBasiliskNetworkCheck, appConf.minNotaries);
}

34
gui/loading.js

@ -65,18 +65,28 @@ function StartIguana() {
});
}
function StartIguana_Cache() {
ajax_data = { 'name': 'IGUANA_CACHE' };
var start_iguana_cache= $.ajax({
type: 'POST',
data: JSON.stringify(ajax_data),
url: 'http://127.0.0.1:17777/shepherd/forks',
contentType: 'application/json', // send as JSON
})
start_iguana_cache.done(function(data) {
_data = JSON.parse(data);
console.log(_data.result);
sessionStorage.setItem('IguanaCachePort', _data.result);
function StartBasiliskInstance() {
var ajax_data = { 'name': 'basilisk'};
console.log(ajax_data);
$.ajax({
type: 'POST',
data: JSON.stringify(ajax_data),
url: 'http://127.0.0.1:17777/shepherd/forks',
dataType: 'xml/html/script/json', // expected format for response
contentType: 'application/json', // send as JSON
success: function(data, textStatus, jqXHR) {
var AjaxOutputData = JSON.parse(data);
console.log('== Shepherd Forks Data OutPut ==');
console.log(AjaxOutputData);
},
error: function(xhr, textStatus, error) {
console.log(xhr.statusText);
if ( xhr.readyState == 0 ) {
}
console.log(textStatus);
console.log(error);
}
});
}

37
main.js

@ -21,7 +21,7 @@ var express = require('express'),
pm2 = require('pm2'),
cluster = require('cluster'),
numCPUs = require('os').cpus().length,
coincli = require('./private/coincli.js'),
kmdcli = require('./private/kmdcli.js'),
ipc = require('electron').ipcMain;
Promise = require('bluebird');
@ -240,35 +240,14 @@ function createLoadingWindow() {
}
});
/*
* var ipc = require('electron').ipcRenderer;
* ipc.once('coincliReply', function(event, response){
* console.log(response);
* });
* ipc.send('InvokeCoinCliAction', '{"cli":"kmd","command":"getinfo"}');
*/
ipc.on('InvokeCoinCliAction', function(event, data){
console.log(JSON.stringify(data));
console.log(data.cli)
console.log(data.command)
if (data.cli == 'kmd') {
coincli.kmdcommand(data.command, function(err, command) {
//console.log(command);
var result = command;
event.sender.send('coincliReply', result);
});
}
if (data.cli == 'zec') {
coincli.zeccommand(data.command, function(err, command) {
//console.log(command);
var result = command;
event.sender.send('coincliReply', result);
});
}
ipc.on('invokeAction', function(event, data){
//console.log(data);
kmdcli.command(data, function(err, command) {
//console.log(command);
var result = command;
event.sender.send('kmdcliReply', result);
});
});
//ca333 todo - add os detector to use correct binary - so we can use the same bundle on ALL OS platforms
/*if (os.platform() === 'win32') {
process.chdir(iguanaDir);

30
private/coincli.js → private/kmdcli.js

@ -50,13 +50,12 @@ console.log(komodocliBin)
* The **komodo-cli** command is used to get komodo api calls answer.
*
* @private
* @category coincli
* @category kmdcli
*
*/
var coincli = module.exports = {
var kmdcli = module.exports = {
exec: child_process.exec,
kmdcommand: kmdcommand,
zeccommand: zeccommand
command: command
};
/**
@ -64,11 +63,11 @@ var coincli = module.exports = {
*
* @private
* @static
* @category coincli
* @category kmdcli
* @param {function} callback The callback function.
*
*/
function parse_coincli_commands(callback) {
function parse_kmdcli_commands(callback) {
return function(error, stdout, stderr) {
if (error) callback(error, stderr);
else callback(error, stdout);
@ -81,13 +80,13 @@ function parse_coincli_commands(callback) {
*
* @private
* @static
* @category coincli
* @category kmdcli
* @param {function} callback The callback function.
* @example
*
* var coincli = require('./coincli');
* var kmdcli = require('./kmdcli');
*
* coincli.kmdcommand('getinfo', function(err, command) {
* kmdcli.command('getinfo', function(err, command) {
* console.log(command);
* });
*
@ -119,18 +118,9 @@ function parse_coincli_commands(callback) {
* }
*
*/
function kmdcommand(kmd_command, callback) {
function command(kmd_command, callback) {
if (callback) {
return this.exec(komodocliBin + " " + kmd_command,
parse_coincli_commands(callback));
}
}
function zeccommand(zec_command, callback) {
if (callback) {
return this.exec(zcashcliBin + " " + zec_command,
parse_coincli_commands(callback));
parse_kmdcli_commands(callback));
}
}

22
routes/cache.js

@ -22,15 +22,12 @@ cache.get = function(req, res, next) {
res.end(JSON.stringify(errorObj));
} else {
//var parsedJSON = 'JPARSE';//'JSON parse error';
try {
var parsedJSON = JSON.parse(data);
var successObj = {
'msg': 'success',
'result': parsedJSON
};
var parsedJSON = JSON.parse(data),
successObj = {
'msg': 'success',
'result': parsedJSON
};
res.end(JSON.stringify(successObj));
} catch (e) {
@ -340,7 +337,7 @@ cache.one = function(req, res, next) {
}
});
function execDEXRequests(address, coin) {
function execDEXRequests(coin, address) {
let dexUrls = {
'listunspent': 'http://' + cache.appConfig.host + ':' + iguanaCorePort + '/api/dex/listunspent?userpass=' + sessionKey + '&symbol=' + coin + '&address=' + address,
'listtransactions': 'http://' + cache.appConfig.host + ':' + iguanaCorePort + '/api/dex/listtransactions?userpass=' + sessionKey + '&count=100&skip=0&symbol=' + coin + '&address=' + address,
@ -359,6 +356,7 @@ cache.one = function(req, res, next) {
}
console.log(coin + ' address ' + address);
if (!outObj.basilisk[coin][address]) {
outObj.basilisk[coin][address] = {};
writeCache();
@ -540,7 +538,7 @@ cache.one = function(req, res, next) {
}
});
async.each(outObj.basilisk[coin].addresses, function(address) {
execDEXRequests(address, coin);
execDEXRequests(coin, address);
});
}
@ -548,7 +546,7 @@ cache.one = function(req, res, next) {
if (addresses) {
parseAddresses(coin, addresses);
} else {
var tempUrl = 'http://' + cache.appConfig.host + ':' + iguanaCorePort + '/api/bitcoinrpc/getaddressesbyaccount?userpass=' + sessionKey + '&coin=' + coin + '&account=*';
var tempUrl = 'http://' + cache.appConfig.host + ':' + cache.appConfig.iguanaCorePort /*iguanaCorePort*/ + '/api/bitcoinrpc/getaddressesbyaccount?userpass=' + sessionKey + '&coin=' + coin + '&account=*';
request({
url: mock ? 'http://localhost:17777/shepherd/mock?url=' + tempUrl : tempUrl,
method: 'GET'
@ -579,7 +577,7 @@ cache.one = function(req, res, next) {
});
if (coin === 'all') {
var tempUrl = 'http://' + cache.appConfig.host + ':' + iguanaCorePort + '/api/InstantDEX/allcoins?userpass=' + sessionKey;
var tempUrl = 'http://' + cache.appConfig.host + ':' + /*iguanaCorePort*/ cache.appConfig.iguanaCorePort + '/api/InstantDEX/allcoins?userpass=' + sessionKey;
request({
url: mock ? 'http://localhost:17777/shepherd/mock?url=' + tempUrl : tempUrl,
method: 'GET'

96
routes/shepherd.js

@ -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);

Loading…
Cancel
Save