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
*/status
cache
*/cache
*/*cache
network*/node
network*/bootnode
network*/contracts/*
network/*.pid
......@@ -4,102 +4,118 @@
"use strict"
const Libbfa = require( process.env.BFAHOME + '/bin/libbfa.js');
var bfa = new Libbfa();
var web3 = bfa.newweb3();
var lastUnlock = 0;
const Libbfa = require( process.env.BFAHOME + '/bin/libbfa.js');
var bfa = new Libbfa();
var web3 = bfa.newweb3();
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(
function gotAdminPeers( nodelist ) {
var now = new Date();
var nowpeers = [];
var peers = [];
var newpeers = [];
if ( bfa.fs.existsSync( bfa.networkdir + '/peers.cache' ) )
// write network/status
bfa.fs.writeFileSync(
bfa.networkdir + '/status',
"UTC: " + new Date().toUTCString() + "\n"
+ "BFA peers: " + peers.length + "\n"
+ peers.sort().join("\n") + "\n",
{ 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();
if ( data.length > 0 )
peers = data.split(/\r?\n/);
var i = peers.length;
// for some odd reason, I keep seeing empty entries
while ( i-- > 0 )
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 );
}
nowpeers.push( "peer " + ( n.dir ? n.dir : '') + ": " + n.info );
if ( peers.indexOf( n.info ) == -1 )
{
if ( n.dir == 'out' )
outpeers.push( n.info );
candidatenew.push( n.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.
......@@ -109,8 +125,8 @@ function mayseal()
var me = web3.eth.defaultAccount;
if ( undefined == me )
{
console.log( "Failed to get default account information." );
return;
// Failed to get default account information.
me = 'xxxx'
}
me = me.toLowerCase();
web3.eth.isMining().
......
......@@ -101,7 +101,13 @@ function startgeth
echo '***'
echo
# (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 ]
then
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