diff --git a/bin/libbfa.js b/bin/libbfa.js index 2146b270a883e80d45416b7f560c2962d4ac6f78..bf0b61b7ab5a49878428908c75ec468f336c52b3 100644 --- a/bin/libbfa.js +++ b/bin/libbfa.js @@ -2,6 +2,8 @@ "use strict" +var request = require('request'); + module.exports = class Libbfa { constructor() { @@ -76,51 +78,54 @@ module.exports = class Libbfa newweb3() { - var provider = 'http://127.0.0.1:' + this.rpcport; - var w3 = new this.Web3( provider ); - w3.eth.extend({ - //property: 'bfaclique', - methods: [{ - name: 'bfaGetSigners', - call: 'clique_getSigners', - params: 0 - }] - }); - w3.eth.extend({ - methods: [{ - name: 'bfaMinerstart', - call: 'miner_start', - params: 0 - }] - }); - w3.eth.extend({ - methods: [{ - name: 'bfaMinerstop', - call: 'miner_stop', - params: 0 - }] - }); - w3.eth.extend({ - methods: [{ - name: 'bfaAdminpeers', - call: 'admin_peers', - params: 0 - }] - }); - w3.eth.extend({ - methods: [{ - name: 'bfaAdminaddPeer', - call: 'admin_addPeer', - params: 1 - }] - }); - w3.eth.personal.extend({ - methods: [{ - name: 'bfalistWallets', - call: 'personal_listWallets', - params: 0 - }] - }); + var provider = 'http://127.0.0.1:' + this.rpcport; + var w3 = new this.Web3( provider ); + w3.rpcreq = function( opname, params, callback ) + { + var extra = params.join(','); + var body = JSON.parse("{"+ + '"jsonrpc":"2.0",' + + '"id":1,' + + '"method":"' + opname + '",' + + '"params":[' + extra + ']' + +"}" + ); + request.post({ + uri: 'http://localhost:8545', + json: true, + body: body, + callback: function RPCresponse( err, obj ) + { + if ( err ) + throw new Error( err ); + if ( obj.body.error && obj.body.error.code && obj.body.error.message ) + throw new Error( 'Error ' + obj.body.error.code + ": "+ obj.body.error.message ); + callback(obj.body.result); + } + }); + }; + w3.bfa = { + clique: { + getSigners: function clique_getSigners( cb ) + { w3.rpcreq( 'clique_getSigners', [], cb ) }, + }, + miner: { + start: function miner_start() + { w3.rpcreq( 'miner_start', [], function(){} ) }, + stop: function miner_stop() + { w3.rpcreq( 'miner_stop', [], function(){} ) } + }, + admin: { + peers: function admin_peers( cb ) + { w3.rpcreq( 'admin_peers', [], cb ) }, + addPeer: function admin_addPeer( peer ) + { w3.rpcreq( 'admin_addPeer', [ "\""+peer+"\"" ], function(){} ) } + }, + personal: { + listWallets: function personal_listWallets( cb ) + { w3.rpcreq( 'personal_listWallets', [], cb ) } + } + }; if ( undefined != process.env.BFAACCOUNT ) { w3.eth.defaultAccount = this.account; } diff --git a/bin/monitor.js b/bin/monitor.js index 2838293a4437fd92aa98d2c65c7b746eb46762ab..30877d1642e8a7b10bd5de1af1399dc6fc8b528d 100755 --- a/bin/monitor.js +++ b/bin/monitor.js @@ -11,7 +11,7 @@ var lastUnlock = 0; function peerlist() { - web3.eth.bfaAdminpeers().then( + web3.bfa.admin.peers( function gotAdminPeers( nodelist ) { var now = new Date(); var nowpeers = []; @@ -86,7 +86,7 @@ function peerlist() + " peer" + ( nowpeers.length==1 ? '' : 's' ) + ", so will try to connect to " + enode ); - web3.eth.bfaAdminaddPeer( enode ); + web3.bfa.admin.addPeer( enode ); } // write network/peers.cache // peers.cache is a list of peers we have connected out to in the past. @@ -98,10 +98,6 @@ function peerlist() peers.join("\n") + "\n", { mode: 0o644 } ); - }, - function failedToGetAdminPeers(x) - { - // ignore connection problems? } ); } @@ -124,8 +120,7 @@ function mayseal() { // Get a list of clique.getSigners, so we can see if we are // in the list of authorized sealers. - web3.eth.bfaGetSigners() - .then( + web3.bfa.clique.getSigners( function gotListOfSealers(x) { var lcsealers = x.map( name => name.toLowerCase() ); @@ -135,7 +130,7 @@ function mayseal() if ( ! isMining ) { console.log( 'Started to seal.' ); - web3.eth.bfaMinerstart(); + web3.bfa.miner.start(); } } else @@ -143,20 +138,16 @@ function mayseal() if ( isMining ) { console.log( 'I was trying to seal, but am not authorized. Stopped trying.' ); - web3.eth.bfaMinerstop(); + web3.bfa.miner.stop(); } } - }, - function failedToGetListOfSealers(x) - { - console.log(x); } ); }, function failedToGetIsMiningBool(x) { // Probably geth is not running. - //console.log(x); + throw new Error(x); } ); } @@ -165,8 +156,7 @@ function unlock() { if ( lastUnlock + 600 > Date.now() / 1000 ) return; - web3.eth.personal.bfalistWallets() - .then( + web3.bfa.personal.listWallets( function pushone(x) { var i = x.length; @@ -192,12 +182,7 @@ function unlock() } lastUnlock = Date.now() / 1000; } - , - function err(x) - { - // we don't care? - } - ) + ); } function timer()