Browse Source

Merge pull request #237 from SuperNETorg/v0.25

V0.25
pkg_automation_electrum
pbca26 7 years ago
committed by GitHub
parent
commit
09babe3312
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      gui/startup/index.html
  2. 12
      main.js
  3. 5
      package.json
  4. 120
      routes/electrumjs/electrumServers.js
  5. 7
      routes/electrumjs/electrumjs.core.js
  6. 2
      routes/ports.js
  7. 16
      routes/shepherd.js
  8. 1
      routes/shepherd/dex/coins.json
  9. 242
      routes/shepherd/dex/mmControl.js
  10. 39
      routes/shepherd/dex/mmRequest.js
  11. 4
      routes/shepherd/electrum/keys.js
  12. 2
      routes/shepherd/electrum/network.js
  13. 66
      routes/shepherd/paths.js
  14. 2
      version
  15. 2
      version_build

4
gui/startup/index.html

@ -27,7 +27,7 @@
width="80"
height="100" />
<div id="agamaModeStatus">
Choose Agama mode
<span id="agamaModeStatusText">Choose Agama mode</span>
<div
onClick="toggleMainWindowHelp()"
class="settings-help pointer"
@ -65,7 +65,7 @@
<li onClick="closeMainWindow(null, true)">
<a>Custom</a>
</li>
<li onClick="startKMDPassive()">
<li id="kmdPassiveMode" onClick="startKMDPassive()">
<a>KMD (passive)</a>
</li>
</ul>

12
main.js

@ -230,6 +230,7 @@ function createLoadingWindow() {
loadingWindow.createAppSettingsWindow = createAppSettingsWindow;
loadingWindow.startKMDNative = shepherd.startKMDNative;
loadingWindow.startSPV = shepherd.startSPV;
loadingWindow.arch = os.arch();
// load our index.html (i.e. easyDEX GUI)
loadingWindow.loadURL(`http://${appConfig.host}:${appConfig.agamaPort}/gui/startup`);
@ -382,6 +383,7 @@ function createWindow(status) {
shepherd.writeLog('show edex gui');
mainWindow.appConfig = appConfig;
mainWindow.appConfigSchema = shepherd.appConfigSchema;
mainWindow.arch = os.arch();
mainWindow.appBasicInfo = appBasicInfo;
mainWindow.appSessionHash = appSessionHash;
mainWindow.assetChainPorts = require('./routes/ports.js');
@ -393,10 +395,12 @@ function createWindow(status) {
mainWindow.getAppRuntimeLog = shepherd.getAppRuntimeLog;
mainWindow.nativeCoindList = nativeCoindList;
mainWindow.zcashParamsDownloadLinks = shepherd.zcashParamsDownloadLinks;
mainWindow.isWindows = os.platform() === 'win32' ? true : false;
mainWindow.isWindows = os.platform() === 'win32' ? true : false; // obsolete(?)
mainWindow.appExit = appExit;
mainWindow.getMaxconKMDConf = shepherd.getMaxconKMDConf;
mainWindow.setMaxconKMDConf = shepherd.setMaxconKMDConf;
mainWindow.getMMCacheData = shepherd.getMMCacheData;
mainWindow.activeSection = 'wallets';
if (appConfig.dev) {
mainWindow.loadURL('http://127.0.0.1:3000');
@ -476,6 +480,7 @@ function createWindow(status) {
let _appClosingInterval;
// shepherd.killRogueProcess('marketmaker');
if (!Object.keys(shepherd.coindInstanceRegistry).length ||
!appConfig.stopNativeDaemonsOnQuit) {
closeApp();
@ -511,8 +516,9 @@ app.on('window-all-closed', function() {
// Calling event.preventDefault() will prevent the default behaviour, which is terminating the application.
app.on('before-quit', function(event) {
shepherd.log('before-quit');
// shepherd.killRogueProcess('marketmaker');
if (!forceQuitApp &&
/*if (!forceQuitApp &&
mainWindow === null &&
loadingWindow != null) { // mainWindow not intitialised and loadingWindow not dereferenced
// loading window is still open
@ -523,7 +529,7 @@ app.on('before-quit', function(event) {
let code = `$('#loading_status_text').html('Preparing to shutdown the wallet.<br/>Please wait while all daemons are closed...')`;
loadingWindow.webContents.executeJavaScript(code);
event.preventDefault();
}
}*/
});
// Emitted when all windows have been closed and the application will quit.

5
package.json

@ -21,7 +21,7 @@
"author": "SuperNET",
"license": "MIT",
"devDependencies": {
"electron": "^1.6.15",
"electron": "1.6.5",
"electron-installer-debian": "^0.6.0",
"electron-installer-redhat": "^0.5.0"
},
@ -33,10 +33,11 @@
"buffer-reverse": "^1.0.1",
"coinkey": "^2.0.0",
"coinselect": "github:bitcoinjs/coinselect",
"marketmaker": "git://github.com/pbca26/marketmaker",
"electron": "1.6.5",
"express": "^4.14.0",
"fix-path": "^2.1.0",
"fs-extra": "^1.0.0",
"fs-extra": "^4.0.2",
"graceful-fs": "^4.1.11",
"js-sha256": "^0.7.1",
"nodejs-aes256": "^1.0.1",

120
routes/electrumjs/electrumServers.js

@ -16,25 +16,113 @@ let electrumServers = {
],
},
revs: { // !estimatefee
address: '173.212.225.176',
address: 'electrum1.cipig.net',
port: 10003,
proto: 'tcp',
txfee: 10000,
abbr: 'REVS',
serverList: [
'173.212.225.176:10003',
'136.243.45.140:10003'
'electrum1.cipig.net:10003',
'electrum2.cipig.net:10003'
],
},
supernet: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10005,
proto: 'tcp',
txfee: 10000,
abbr: 'SUPERNET',
serverList: [
'electrum1.cipig.net:10005',
'electrum2.cipig.net:10005'
],
},
dex: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10006,
proto: 'tcp',
txfee: 10000,
abbr: 'DEX',
serverList: [
'electrum1.cipig.net:10006',
'electrum2.cipig.net:10006'
],
},
bots: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10007,
proto: 'tcp',
txfee: 10000,
abbr: 'BOTS',
serverList: [
'electrum1.cipig.net:10007',
'electrum2.cipig.net:10007'
],
},
crypto: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10008,
proto: 'tcp',
txfee: 10000,
abbr: 'CRYPTO',
serverList: [
'electrum1.cipig.net:10008',
'electrum2.cipig.net:10008'
],
},
hodl: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10009,
proto: 'tcp',
txfee: 10000,
abbr: 'HODL',
serverList: [
'electrum1.cipig.net:10009',
'electrum2.cipig.net:10009'
],
},
pangea: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10010,
proto: 'tcp',
txfee: 10000,
abbr: 'PANGEA',
serverList: [
'electrum1.cipig.net:10010',
'electrum2.cipig.net:10010'
],
},
bet: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10012,
proto: 'tcp',
txfee: 10000,
abbr: 'BET',
serverList: [
'electrum1.cipig.net:10012',
'electrum2.cipig.net:10012'
],
},
mshark: { // !estimatefee
address: 'electrum1.cipig.net',
port: 10013,
proto: 'tcp',
txfee: 10000,
abbr: 'MSHARK',
serverList: [
'electrum1.cipig.net:10013',
'electrum2.cipig.net:10013'
],
},
mnz: { // !estimatefee
address: '173.212.225.176',
address: 'electrum1.cipig.net',
port: 10002,
proto: 'tcp',
txfee: 10000,
abbr: 'MNZ',
serverList: [
'173.212.225.176:10002',
'136.243.45.140:10002',
'electrum1.cipig.net:10002',
'electrum2.cipig.net:10002',
'18.216.195.109:10002',
'52.41.58.116:10002',
'52.67.48.29:10002',
@ -43,36 +131,36 @@ let electrumServers = {
],
},
wlc: { // !estimatefee
address: '173.212.225.176',
port: 50052,
address: 'electrum1.cipig.net',
port: 10014,
proto: 'tcp',
txfee: 10000,
abbr: 'WLC',
serverList: [
'173.212.225.176:50052',
'136.243.45.140:50052'
'electrum1.cipig.net:10014',
'electrum2.cipig.net:10014'
],
},
jumblr: { // !estimatefee
address: '173.212.225.176',
address: 'electrum1.cipig.net',
port: 10004,
proto: 'tcp',
txfee: 10000,
abbr: 'JUMBLR',
serverList: [
'173.212.225.176:10004',
'136.243.45.140:10004'
'electrum1.cipig.net:10004',
'electrum2.cipig.net:10004'
],
},
komodo: { // !estimatefee
address: '173.212.225.176',
address: 'electrum1.cipig.net',
port: 10001,
proto: 'tcp',
txfee: 10000,
abbr: 'KMD',
serverList: [
'173.212.225.176:10001',
'136.243.45.140:10001',
'electrum1.cipig.net:10001',
'electrum2.cipig.net:10001',
'18.216.195.109:10001',
'52.41.58.116:10001',
'52.67.48.29:10001',

7
routes/electrumjs/electrumjs.core.js

@ -25,6 +25,7 @@ SOFTWARE.
const tls = require('tls');
const net = require('net');
const EventEmitter = require('events').EventEmitter;
const SOCKET_MAX_TIMEOUT = 10000;
const makeRequest = function(method, params, id) {
return JSON.stringify({
@ -128,6 +129,12 @@ const getSocket = function(protocol, options) {
const initSocket = function(self, protocol, options) {
const conn = getSocket(protocol, options);
conn.setTimeout(SOCKET_MAX_TIMEOUT);
conn.on('timeout', () => {
console.log('socket timeout');
self.onError(new Error('socket timeout'));
self.onClose();
});
conn.setEncoding('utf8');
conn.setKeepAlive(true, 0);
conn.setNoDelay(true);

2
routes/ports.js

@ -11,7 +11,7 @@ const assetChainPorts = {
'BET': '14250',
'CRYPTO': '8516',
'HODL': '14431',
'SHARK': '10114',
'MSHARK': '8846',
'BOTS': '11964',
'MGW': '12386',
'COQUI': '14276',

16
routes/shepherd.js

@ -37,6 +37,20 @@ shepherd.rpcConf = {};
shepherd.appRuntimeLog = [];
shepherd.appRuntimeSPVLog = [];
shepherd.lockDownAddCoin = false;
shepherd.mmupass = null;
shepherd.mmRatesInterval = null;
shepherd.mmPublic = {
coins: [],
mmupass: null,
swaps: [],
bids: [],
asks: [],
isAuth: false,
rates: {},
prices: [],
coinsHelper: [],
stats: [],
};
// spv vars and libs
shepherd.electrumCoins = {
@ -86,6 +100,8 @@ shepherd = require('./shepherd/electrum/estimate.js')(shepherd);
// dex
shepherd = require('./shepherd/dex/coind.js')(shepherd);
shepherd = require('./shepherd/dex/mmControl.js')(shepherd);
shepherd = require('./shepherd/dex/mmRequest.js')(shepherd);
// core
shepherd = require('./shepherd/addCoinShortcuts.js')(shepherd);

1
routes/shepherd/dex/coins.json

File diff suppressed because one or more lines are too long

242
routes/shepherd/dex/mmControl.js

@ -0,0 +1,242 @@
const os = require('os');
const fs = require('fs-extra');
const portscanner = require('portscanner');
const exec = require('child_process').exec;
const execFile = require('child_process').execFile;
const path = require('path');
const request = require('request');
const Promise = require('bluebird');
const RATES_UPDATE_INTERVAL = 60000;
module.exports = (shepherd) => {
shepherd.get('/mm/start', (req, res, next) => {
shepherd.log('mm start is called');
shepherd.startMarketMaker({ passphrase: req.query.passphrase });
shepherd.mmupass = null;
shepherd.mmupass = setInterval(() => {
const options = {
url: `http://localhost:7783`,
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ method: 'balance' }),
};
// send back body on both success and error
// this bit replicates iguana core's behaviour
request(options, (error, response, body) => {
if (response &&
response.statusCode &&
response.statusCode === 200) {
const _parsedBody = JSON.parse(body);
if (_parsedBody.userpass) {
res.end(body);
clearInterval(shepherd.mmupass);
shepherd.mmupass = _parsedBody.userpass;
shepherd.mmPublic.mmupass = shepherd.mmupass;
shepherd.mmPublic.isAuth = true;
shepherd.mmPublic.coins = _parsedBody.coins;
shepherd.log(`mm start success`);
shepherd.log(`mm userpass ${_parsedBody.userpass}`);
shepherd.getCoinsHelper();
shepherd.getRates();
}
} else {
shepherd.log(`mm start responded with error ${error}`);
/*res.end(body ? body : JSON.stringify({
result: 'error',
error: {
code: -777,
message: `unable to call method balance at port 7783`,
},
}));*/
}
});
}, 500);
});
shepherd.getCoinsHelper = () => {
const defaultCoinsListFile = path.join(__dirname, '../dex/coins.json');
shepherd.mmPublic.coinsHelper = fs.readJsonSync(defaultCoinsListFile, { throws: false });
}
shepherd.getRates = () => {
function _getRates() {
const options = {
url: `https://min-api.cryptocompare.com/data/price?fsym=KMD&tsyms=BTC,USD`,
method: 'GET',
};
// send back body on both success and error
// this bit replicates iguana core's behaviour
request(options, (error, response, body) => {
if (response &&
response.statusCode &&
response.statusCode === 200) {
const _parsedBody = JSON.parse(body);
shepherd.log(`rates ${body}`);
shepherd.mmPublic.rates = _parsedBody;
} else {
shepherd.log(`mm unable to retrieve KMD/BTC,USD rate`);
}
});
}
_getRates();
shepherd.mmRatesInterval = setInterval(() => {
_getRates();
}, RATES_UPDATE_INTERVAL);
}
shepherd.getMMCacheData = () => {
return new Promise((resolve, reject) => {
resolve(shepherd.mmPublic);
});
}
shepherd.get('/mm/stop', (req, res, next) => {
shepherd.log('mm stop is called');
clearInterval(shepherd.mmRatesInterval);
shepherd.killRogueProcess('marketmaker');
shepherd.mmPublic = {
coins: [],
mmupass: null,
swaps: [],
bids: [],
asks: [],
isAuth: false,
rates: {},
};
const successObj = {
msg: 'success',
result: 'executed',
};
res.end(JSON.stringify(successObj));
});
shepherd.get('/mm/restart', (req, res, next) => {
shepherd.log('mm restart is called');
shepherd.killRogueProcess('marketmaker');
shepherd.mmPublic = {
coins: {},
mmupass: null,
swaps: [],
bids: [],
asks: [],
isAuth: false,
};
setTimeout(() => {
shepherd.startMarketMaker({ passphrase: req.query.passphrase });
const successObj = {
msg: 'success',
result: 'restarting',
};
res.end(JSON.stringify(successObj));
}, 1000);
});
shepherd.startMarketMaker = (data) => {
const defaultCoinsListFile = path.join(__dirname, '../dex/coins.json');
try {
// check if marketmaker instance is already running
portscanner.checkPortStatus(7783, '127.0.0.1', (error, status) => {
// Status is 'open' if currently in use or 'closed' if available
if (status === 'closed') {
// add BarterDEX check
const _coinsListFile = shepherd.agamaDir + '/coins.json';
fs.pathExists(_coinsListFile, (err, exists) => {
if (exists) {
shepherd.log('dex coins file exist');
data.coinslist = fs.readJsonSync(_coinsListFile, { throws: false });
shepherd.execMarketMaker(data);
} else if (!exists) {
shepherd.log(`dex coins file doesnt exist`);
fs.copy(defaultCoinsListFile, _coinsListFile)
.then(() => {
shepherd.log(`dex coins file copied to ${shepherd.agamaDir}`);
data.coinslist = fs.readJsonSync(_coinsListFile, { throws: false });
shepherd.execMarketMaker(data);
})
.catch(err => {
shepherd.log(`unable to copy dex coins file, ${err}`);
});
} else if (err) {
shepherd.log(`dex coins file doesnt exist, ${err}`);
}
});
} else {
shepherd.log(`port 7783 marketmaker is already in use`);
}
});
} catch(e) {
shepherd.log(`failed to start marketmaker err: ${e}`);
}
}
shepherd.execMarketMaker = (data) => {
const _customParam = {
gui: 'agama-buildog',
client: 1,
profitmargin: 0.01, // (?)
userhome: `${process.env.HOME}`,
passphrase: data.passphrase,
coins: data.coinslist,
};
//console.log(JSON.stringify(_customParam))
//console.log(`exec ${BarterDEXBin} ${JSON.stringify(_customParam)}`);
let params = _customParam;
if (os.platform() !== 'win32') {
params = `'${JSON.stringify(_customParam)}'`;
} else {
shepherd.mmBin = `"${shepherd.mmBin}"`;
params.userhome = process.env.APPDATA;
if (!!params.coins) { // if not undefined and true
delete params.coins; // for Windows we should use coins.json file, and don't pass coins in command line
}
params = JSON.stringify(_customParam);
params = params.replace(/"/g, '\\"');
params = `"${params}"`;
}
const logStream = fs.createWriteStream(`${shepherd.agamaDir}/logFile.log`, { flags: 'a' });
shepherd.log('starting mm');
const mmid = exec(`${shepherd.mmBin} ${params}`, {
cwd: shepherd.agamaDir,
maxBuffer: 1024 * 50000 // 50 mb
}, function(error, stdout, stderr) {
// console.log(`stdout: ${stdout}`);
// console.log(`stderr: ${stderr}`);
if (error !== null) {
shepherd.log(`mm exec error: ${error}`);
}
});
mmid.stdout.on('data', (data) => {
// console.log(`child stdout:\n${data}`);
}).pipe(logStream);
mmid.stderr.on('data', (data) => {
// console.error(`child stderr:\n${data}`);
}).pipe(logStream);
}
return shepherd;
};

39
routes/shepherd/dex/mmRequest.js

@ -0,0 +1,39 @@
const request = require('request');
module.exports = (shepherd) => {
// payload
// record all calls
shepherd.post('/mm/request', (req, res, next) => {
let _payload = req.body.payload;
_payload.userpass = shepherd.mmupass;
const options = {
url: `http://localhost:7783`,
method: 'POST',
body: JSON.stringify(_payload),
};
shepherd.log(_payload);
// send back body on both success and error
// this bit replicates iguana core's behaviour
request(options, (error, response, body) => {
if (response &&
response.statusCode &&
response.statusCode === 200) {
const _parsedBody = JSON.parse(body);
shepherd.mmPublic[_payload.mapToProp] = _parsedBody;
res.end(body);
} else {
res.end(body ? body : JSON.stringify({
result: 'error',
error: {
code: -777,
message: `unable to call method ${_payload.method} at port 7783`,
},
}));
}
});
});
return shepherd;
};

4
routes/shepherd/electrum/keys.js

@ -1,10 +1,10 @@
const sha256 = require('js-sha256');
module.exports = (shepherd) => {
shepherd.seedToWif = (seed, network, iguana, old) => {
shepherd.seedToWif = (seed, network, iguana) => {
let bytes;
if (old) {
if (process.argv.indexOf('spvold=true') > -1) {
bytes = shepherd.sha256(seed, { asBytes: true });
} else {
const hash = sha256.create().update(seed);

2
routes/shepherd/electrum/network.js

@ -14,6 +14,7 @@ module.exports = (shepherd) => {
coin === 'COQUI' ||
coin === 'HODL' ||
coin === 'SHARK' ||
coin === 'MSHARK' ||
coin === 'BOTS' ||
coin === 'MGW' ||
coin === 'MVP' ||
@ -33,6 +34,7 @@ module.exports = (shepherd) => {
coinUC === 'COQUI' ||
coinUC === 'HODL' ||
coinUC === 'SHARK' ||
coinUC === 'MSHARK' ||
coinUC === 'BOTS' ||
coinUC === 'MGW' ||
coinUC === 'MVP' ||

66
routes/shepherd/paths.js

@ -1,8 +1,12 @@
const path = require('path');
const fixPath = require('fix-path');
const os = require('os');
module.exports = (shepherd) => {
shepherd.pathsAgama = () => {
switch (shepherd.os.platform()) {
switch (os.platform()) {
case 'darwin':
shepherd.fixPath();
fixPath();
shepherd.agamaDir = `${process.env.HOME}/Library/Application Support/Agama`;
break;
@ -12,60 +16,64 @@ module.exports = (shepherd) => {
case 'win32':
shepherd.agamaDir = `${process.env.APPDATA}/Agama`;
shepherd.agamaDir = shepherd.path.normalize(shepherd.agamaDir);
shepherd.agamaDir = path.normalize(shepherd.agamaDir);
break;
}
}
shepherd.pathsDaemons = () => {
switch (shepherd.os.platform()) {
switch (os.platform()) {
case 'darwin':
shepherd.fixPath();
fixPath();
shepherd.agamaTestDir = `${process.env.HOME}/Library/Application Support/Agama/test`,
shepherd.komododBin = shepherd.path.join(__dirname, '../../assets/bin/osx/komodod'),
shepherd.komodocliBin = shepherd.path.join(__dirname, '../../assets/bin/osx/komodo-cli'),
shepherd.komododBin = path.join(__dirname, '../../assets/bin/osx/komodod'),
shepherd.komodocliBin = path.join(__dirname, '../../assets/bin/osx/komodo-cli'),
shepherd.komodoDir = shepherd.appConfig.dataDir.length ? shepherd.appConfig.dataDir : `${process.env.HOME}/Library/Application Support/Komodo`,
shepherd.zcashdBin = '/Applications/ZCashSwingWalletUI.app/Contents/MacOS/zcashd',
shepherd.zcashcliBin = '/Applications/ZCashSwingWalletUI.app/Contents/MacOS/zcash-cli',
shepherd.zcashDir = `${process.env.HOME}/Library/Application Support/Zcash`,
shepherd.zcashParamsDir = `${process.env.HOME}/Library/Application Support/ZcashParams`,
shepherd.chipsBin = shepherd.path.join(__dirname, '../../assets/bin/osx/chipsd'),
shepherd.chipscliBin = shepherd.path.join(__dirname, '../../assets/bin/osx/chips-cli'),
shepherd.chipsBin = path.join(__dirname, '../../assets/bin/osx/chipsd'),
shepherd.chipscliBin = path.join(__dirname, '../../assets/bin/osx/chips-cli'),
shepherd.chipsDir = `${process.env.HOME}/Library/Application Support/Chips`,
shepherd.coindRootDir = shepherd.path.join(__dirname, '../../assets/bin/osx/dex/coind');
shepherd.coindRootDir = path.join(__dirname, '../../assets/bin/osx/dex/coind'),
shepherd.mmBin = path.join(__dirname, '../../node_modules/marketmaker/bin/darwin/x64/marketmaker');
break;
case 'linux':
shepherd.agamaTestDir = `${process.env.HOME}/.agama/test`,
shepherd.komododBin = shepherd.path.join(__dirname, '../../assets/bin/linux64/komodod'),
shepherd.komodocliBin = shepherd.path.join(__dirname, '../../assets/bin/linux64/komodo-cli'),
shepherd.komododBin = path.join(__dirname, '../../assets/bin/linux64/komodod'),
shepherd.komodocliBin = path.join(__dirname, '../../assets/bin/linux64/komodo-cli'),
shepherd.komodoDir = shepherd.appConfig.dataDir.length ? shepherd.appConfig.dataDir : `${process.env.HOME}/.komodo`,
shepherd.zcashParamsDir = `${process.env.HOME}/.zcash-params`,
shepherd.chipsBin = shepherd.path.join(__dirname, '../../assets/bin/linux64/chipsd'),
shepherd.chipscliBin = shepherd.path.join(__dirname, '../../assets/bin/linux64/chips-cli'),
shepherd.chipsBin = path.join(__dirname, '../../assets/bin/linux64/chipsd'),
shepherd.chipscliBin = path.join(__dirname, '../../assets/bin/linux64/chips-cli'),
shepherd.chipsDir = `${process.env.HOME}/.chips`,
shepherd.coindRootDir = shepherd.path.join(__dirname, '../../assets/bin/linux64/dex/coind');
shepherd.coindRootDir = path.join(__dirname, '../../assets/bin/linux64/dex/coind'),
shepherd.mmBin = path.join(__dirname, '../../node_modules/marketmaker/bin/linux/x64/marketmaker');
break;
case 'win32':
shepherd.agamaTestDir = `${process.env.APPDATA}/Agama/test`;
shepherd.agamaTestDir = shepherd.path.normalize(shepherd.agamaTestDir);
shepherd.komododBin = shepherd.path.join(__dirname, '../../assets/bin/win64/komodod.exe'),
shepherd.komododBin = shepherd.path.normalize(shepherd.komododBin),
shepherd.komodocliBin = shepherd.path.join(__dirname, '../../assets/bin/win64/komodo-cli.exe'),
shepherd.komodocliBin = shepherd.path.normalize(shepherd.komodocliBin),
shepherd.agamaTestDir = path.normalize(shepherd.agamaTestDir);
shepherd.komododBin = path.join(__dirname, '../../assets/bin/win64/komodod.exe'),
shepherd.komododBin = path.normalize(shepherd.komododBin),
shepherd.komodocliBin = path.join(__dirname, '../../assets/bin/win64/komodo-cli.exe'),
shepherd.komodocliBin = path.normalize(shepherd.komodocliBin),
shepherd.komodoDir = shepherd.appConfig.dataDir.length ? shepherd.appConfig.dataDir : `${process.env.APPDATA}/Komodo`,
shepherd.komodoDir = shepherd.path.normalize(shepherd.komodoDir);
shepherd.chipsBin = shepherd.path.join(__dirname, '../../assets/bin/win64/chipsd.exe'),
shepherd.chipsBin = shepherd.path.normalize(shepherd.chipsBin),
shepherd.chipscliBin = shepherd.path.join(__dirname, '../../assets/bin/win64/chips-cli.exe'),
shepherd.chipscliBin = shepherd.path.normalize(shepherd.chipscliBin),
shepherd.komodoDir = path.normalize(shepherd.komodoDir);
shepherd.chipsBin = path.join(__dirname, '../../assets/bin/win64/chipsd.exe'),
shepherd.chipsBin = path.normalize(shepherd.chipsBin),
shepherd.chipscliBin = path.join(__dirname, '../../assets/bin/win64/chips-cli.exe'),
shepherd.chipscliBin = path.normalize(shepherd.chipscliBin),
shepherd.chipsDir = `${process.env.APPDATA}/Chips`,
shepherd.chipsDir = shepherd.path.normalize(shepherd.chipsDir);
shepherd.chipsDir = path.normalize(shepherd.chipsDir);
shepherd.zcashParamsDir = `${process.env.APPDATA}/ZcashParams`;
shepherd.zcashParamsDir = shepherd.path.normalize(shepherd.zcashParamsDir);
shepherd.coindRootDir = shepherd.path.join(__dirname, '../../assets/bin/osx/dex/coind');
shepherd.coindRootDir = shepherd.path.normalize(shepherd.coindRootDir);
shepherd.zcashParamsDir = path.normalize(shepherd.zcashParamsDir);
shepherd.coindRootDir = path.join(__dirname, '../../assets/bin/osx/dex/coind');
shepherd.coindRootDir = path.normalize(shepherd.coindRootDir);
shepherd.mmBin = path.join(__dirname, '../../node_modules/marketmaker/bin/win32/x64/marketmaker.exe');
shepherd.mmBin = path.normalize(shepherd.mmBin);
break;
}
}

2
version

@ -1,3 +1,3 @@
version=0.2.0.24g
version=0.2.0.25a
type=e-beta
minversion=0.2.0.2

2
version_build

@ -1 +1 @@
0.2.0.24g-beta
0.2.0.25a-beta
Loading…
Cancel
Save