diff --git a/bin/monitor.js b/bin/monitor.js index ca4a629f89b8da255659461405f923fe2a7d384f..55a449278a8e0b44fd8d57ff0d85bcd602d6102c 100755 --- a/bin/monitor.js +++ b/bin/monitor.js @@ -7,13 +7,7 @@ const Libbfa = require( process.env.BFAHOME + '/bin/libbfa.js'); var bfa = new Libbfa(); var web3 = bfa.newweb3(); - -function pluralEnglish( num, single, plural ) -{ - if ( num == 1 ) - return single; - return plural; -} +var lastUnlock = 0; function peerlist() { @@ -89,7 +83,7 @@ function peerlist() console.log( "We have " + nowpeers.length - + " peer" + pluralEnglish(nowpeers.length,'','s') + ", so will try to connect to " + + " peer" + ( nowpeers.length==1 ? '' : 's' ) + ", so will try to connect to " + enode ); web3.eth.bfaAdminaddPeer( enode ); @@ -167,10 +161,51 @@ function mayseal() ); } +function unlock() +{ + var now = new Date(); + if ( lastUnlock + 600 > now ) + return; + lastUnlock = now; + web3.eth.personal.bfalistWallets() + .then( + function pushone(x) + { + var i = x.length; + var wallets = new Array(); + while ( i-- > 0 ) + if ( x[i].status == "Locked" ) + wallets.push( x[i] ); + i = wallets.length; + if ( i == 0 ) + return; + var promises = new Array(); + while ( i-- > 0 ) + { + var j = wallets[i].accounts.length; + while ( j-- > 0 ) + { + var addr = wallets[i].accounts[j].address; + var promise = + web3.eth.personal.unlockAccount( addr, "", 0 ) + .catch( error => { } ); + promises.push( promise ); + } + } + } + , + function err(x) + { + // we don't care? + } + ) +} + function timer() { peerlist(); mayseal(); + unlock(); } peerlist();