Skip to content
Snippets Groups Projects
Commit e46f7a4b authored by Robert Martin-Legene's avatar Robert Martin-Legene
Browse files

Arreglando varias cosas

parent fa2bb985
No related branches found
No related tags found
No related merge requests found
*/lastseen */lastseen
*/status */status
cache cache
*/cache */*cache
network*/node network*/node
network*/bootnode network*/bootnode
network*/contracts/* network*/contracts/*
network/*.pid
...@@ -4,102 +4,118 @@ ...@@ -4,102 +4,118 @@
"use strict" "use strict"
const Libbfa = require( process.env.BFAHOME + '/bin/libbfa.js'); const Libbfa = require( process.env.BFAHOME + '/bin/libbfa.js');
var bfa = new Libbfa(); var bfa = new Libbfa();
var web3 = bfa.newweb3(); var web3 = bfa.newweb3();
var lastUnlock = 0; var lastUnlock = 0;
function peerlist() function readPeersCache()
{
if ( ! bfa.fs.existsSync( bfa.networkdir + '/peers.cache' ) )
return [];
var data = bfa.fs.readFileSync( bfa.networkdir + '/peers.cache' ).toString();
if ( data.length > 0 )
var p = data.split(/\r?\n/);
// for some odd reason, I keep seeing empty entries
for ( var i = p.length; i > 0; i-- )
if ( p[i] == '' )
p.splice(i,1);
return p;
}
function writePeersCache( peers )
{
// peers.cache is a list of peers we have connected out to in the past.
bfa.fs.writeFileSync(
bfa.networkdir + '/peers.cache',
peers.join("\n") + "\n",
{ mode: 0o644 }
);
}
function writeStatus( peers )
{ {
web3.bfa.admin.peers( // write network/status
function gotAdminPeers( nodelist ) { bfa.fs.writeFileSync(
var now = new Date(); bfa.networkdir + '/status',
var nowpeers = []; "UTC: " + new Date().toUTCString() + "\n"
var peers = []; + "BFA peers: " + peers.length + "\n"
var newpeers = []; + peers.sort().join("\n") + "\n",
if ( bfa.fs.existsSync( bfa.networkdir + '/peers.cache' ) ) { mode: 0o644 }
);
}
function parsenode( node )
{
if ( !n || !n.protocols || typeof n.protocols.eth != 'object' )
return;
// default info - likely to get overwritten.
var n;
if ( ! node.network )
return { info: "<"+node.id+">" };
if ( typeof node.network.inbound == 'boolean' )
n.dir = node.network.inbound ? "in" : "out";
if ( typeof node.enode == 'string' )
n.info = node.enode;
else
{
if ( node.id )
n.info += "<" + node.id + ">";
if ( node.network.remoteAddress )
{
if ( n.info )
n.info += "@";
n.info += node.network.remoteAddress;
}
}
return n;
}
function gotAdminPeers( nodelist )
{
var nowpeers = [];
var peers = readPeersCache();
var outpeers = [];
var candidatenew = [];
nodelist.forEach(
function(node) {
var n = parsenode( node );
if ( n )
{ {
var data = bfa.fs.readFileSync( bfa.networkdir + '/peers.cache' ).toString(); nowpeers.push( "peer " + ( n.dir ? n.dir : '') + ": " + n.info );
if ( data.length > 0 ) if ( peers.indexOf( n.info ) == -1 )
peers = data.split(/\r?\n/); {
var i = peers.length; if ( n.dir == 'out' )
// for some odd reason, I keep seeing empty entries outpeers.push( n.info );
while ( i-- > 0 ) candidatenew.push( n.info );
if ( peers[i] == '' )
peers.splice(i,1);
}
nodelist.forEach(
function(node) {
if ( 'object' == typeof(node.protocols.eth) )
{
// default info - likely to get overwritten.
var info = "<" + node.id + ">";
var dir = "";
if ( undefined != node.network )
{
if ( 'boolean' == typeof(node.network.inbound) )
{
if ( node.network.inbound )
dir = "in";
else
dir = "out";
}
if ( 'string' == typeof(node.enode) )
{
info = node.enode;
if (peers.indexOf( node.enode ) == -1 && dir == "out" )
newpeers.push( node.enode );
}
else
{
info = "";
if ( undefined != node.id )
info += "<" + node.id + ">";
if ( undefined != node.network.remoteAddress )
{
if ( info != "" )
info+= "@";
info += node.network.remoteAddress;
}
}
}
nowpeers.push( "peer " + dir + ": " + info );
}
} }
);
// write network/status
bfa.fs.writeFileSync(
bfa.networkdir + '/status',
"UTC: " + now.toUTCString() + "\n"
+ "BFA peers: " + nowpeers.length + "\n"
+ nowpeers.sort().join("\n") + "\n",
{ mode: 0o644 }
);
// Try to connect to a random node if we have very few peers
if ( nowpeers.length < 5 && peers.length > 0 )
{
var i = Math.floor( Math.random() * peers.length );
var enode = peers[i];
console.log(
"We have "
+ nowpeers.length
+ " peer" + ( nowpeers.length==1 ? '' : 's' ) + ", so will try to connect to "
+ 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.
peers = peers.concat( newpeers );
if (peers.length > 100)
peers.splice( 0, peers.length - 100 );
bfa.fs.writeFileSync(
bfa.networkdir + '/peers.cache',
peers.join("\n") + "\n",
{ mode: 0o644 }
);
} }
); );
writeStatus( nowpeers );
// write peers.cache (max 100 entries, FIFO)
peers = peers.concat( outpeers );
if (peers.length > 100)
peers.splice( 0, peers.length - 100 );
writePeersCache( peers );
// Try to connect to a random node if we have very few peers
if ( nowpeers.length < 5 && candidatenew.length > 0 )
{
var i = Math.floor( Math.random() * candidatenew.length );
var enode = candidatenew[i];
console.log(
"We have "
+ nowpeers.length
+ " peer" + ( nowpeers.length==1 ? '' : 's' ) + ", so will try to connect to "
+ enode
);
web3.bfa.admin.addPeer( enode );
}
}
function peerlist()
{
web3.bfa.admin.peers( gotAdminPeers );
} }
// Function to determine if our defaultAccount is allowed to seal/mine. // Function to determine if our defaultAccount is allowed to seal/mine.
...@@ -109,8 +125,8 @@ function mayseal() ...@@ -109,8 +125,8 @@ function mayseal()
var me = web3.eth.defaultAccount; var me = web3.eth.defaultAccount;
if ( undefined == me ) if ( undefined == me )
{ {
console.log( "Failed to get default account information." ); // Failed to get default account information.
return; me = 'xxxx'
} }
me = me.toLowerCase(); me = me.toLowerCase();
web3.eth.isMining(). web3.eth.isMining().
......
...@@ -101,7 +101,13 @@ function startgeth ...@@ -101,7 +101,13 @@ function startgeth
echo '***' echo '***'
echo echo
# (re)configure parameters (you never know if they changed) # (re)configure parameters (you never know if they changed)
flexargs="$( getsyncmode ) --extradata $( extradata )" flexargs="$( getsyncmode )"
xtra=$( extradata )
if [ -n "$xtra" ]
then
flexargs="${flexargs} --extradata $( extradata )"
fi
unset xtra
if [ "$netport" != 30303 ] if [ "$netport" != 30303 ]
then then
flexargs="${flexargs} --net $netport" flexargs="${flexargs} --net $netport"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment