From bc9d328cecae184d0816b48315a8aaa50b8e928f Mon Sep 17 00:00:00 2001 From: Robert Martin-Legene <robert@nic.ar> Date: Fri, 27 Sep 2019 19:34:07 -0300 Subject: [PATCH] Soporte en libbfa para SOCKETTYPE/SOCKETURL --- bin/generate-genesis-block.sh | 12 +++++ bin/libbfa.js | 20 ++++++-- bin/libbfa.sh | 94 +++++++++++++---------------------- bin/localstate.pl | 2 +- bin/singlestart.sh | 2 +- bin/start.sh | 21 +------- bin/walker.pl | 2 +- 7 files changed, 66 insertions(+), 87 deletions(-) create mode 100755 bin/generate-genesis-block.sh diff --git a/bin/generate-genesis-block.sh b/bin/generate-genesis-block.sh new file mode 100755 index 0000000..a437fc2 --- /dev/null +++ b/bin/generate-genesis-block.sh @@ -0,0 +1,12 @@ +#!/bin/bash +# Robert Martin-Legene <robert@nic.ar> + +if [ -z "${BFAHOME}" ]; then echo "\$BFAHOME not set. Did you source bfa/bin/env ?" >&2; exit 1; fi +source ${BFAHOME}/bin/libbfa.sh || exit 1 + +if [ ! -d "${BFANODEDIR}" -o ! -d "${BFANODEDIR}/geth/chaindata" ] +then + echo "Node is not initialised. Initialising with genesis." + geth --cache 0 --datadir "${BFANODEDIR}" --networkid ${BFANETWORKID} init "${BFANETWORKDIR}/genesis.json" +fi + diff --git a/bin/libbfa.js b/bin/libbfa.js index 02a7aeb..c4b9937 100644 --- a/bin/libbfa.js +++ b/bin/libbfa.js @@ -46,11 +46,21 @@ module.exports = class Libbfa } } // - this.netport = Number.parseInt( this.setfromfile( this.nodedir+'/netport', 30303 )); - this.rpcport = Number.parseInt( this.setfromfile( this.nodedir+'/rpcport', 8545 )); - //this.provider = 'http://127.0.0.1:' + this.rpcport; // old - this.provider = new this.Web3.providers.IpcProvider(this.nodedir+'/geth.ipc', net) this.account = process.env.BFAACCOUNT; + this.netport = 30303; + this.rpcport = 8545; + this.sockettype = 'ipc'; + this.socketurl = 'http://127.0.0.1:' + this.rpcport; // old + this.socketurl = this.nodedir+'/geth.ipc'; // overwrite with newer ipc method + if ( this.sockettype == 'ipc' ) { + this.provider = new this.Web3.providers.IpcProvider( this.nodedir+'/geth.ipc', net ); + } else if ( this.sockettype == 'ws' ) { + this.provider = new this.Web3.providers.WebsocketProvider( this.socketurl ); + } else if ( this.sockettype == 'http') { + this.provider = new this.Web3.providers.HttpProvider( this.socketurl ); + } else { + fatal("Unknown sockettype."); + } } contract(w3, name) @@ -75,7 +85,7 @@ module.exports = class Libbfa fatal( txt ) { - console.log( txt ); + console.error( txt ); process.exit( 1 ); } diff --git a/bin/libbfa.sh b/bin/libbfa.sh index 6ee139d..c051466 100644 --- a/bin/libbfa.sh +++ b/bin/libbfa.sh @@ -65,12 +65,13 @@ function geth_exec geth_attach --exec "$1" </dev/null } +rpc_counter=0 function geth_rpc { - local cmd=$1 - test -n "$cmd" - local params= + local params= connectstring= cmd=$1 shift + test -n "$cmd" + rpc_counter=$(( $rpc_counter + 1 )) if [ $# -gt 0 ] then params=',"params":[' @@ -82,12 +83,18 @@ function geth_rpc # Eat the last comma and add a ] params=${params/%,/]} fi + if [ "$BFASOCKETTYPE" = "ipc" ] + then + connectstring="--unix-socket ${BFASOCKETURL}" + else + connectstring="${BFASOCKETURL}" + fi local json=$( - curl \ - -H 'Content-type: application/json' \ - -X POST \ - --data "{\"jsonrpc\":\"2.0\",\"method\":\"${cmd}\"${params},\"id\":1}" \ - http://127.0.0.1:$rpcport \ + curl \ + -H 'Content-type: application/json' \ + -X POST \ + --data "{\"jsonrpc\":\"2.0\",\"method\":\"${cmd}\"${params},\"id\":${rpc_counter}}" \ + ${connectstring} \ 2>/dev/null ) test -n "$json" @@ -104,34 +111,9 @@ function create_account geth --cache 0 --datadir ${BFANODEDIR} --password /dev/null account new } -function extradata -{ - local acct=$( - ls -1d "${BFANODEDIR}"/keystore/*--* 2>/dev/null | - head -1 | - sed 's/.*--//' - ) - if [ -n "$acct" ] - then - # something uniqueish - ## find default interface - local def_if=$( - ( ip -4 route show ; ip -6 route show ) | - expand | - sed -ne '/^default /{s/ */ /g;s/^.* dev //;s/ .*//;p;q}' - ) - local mymac=$( - ip link show ${def_if} | - sed -ne '/link\|ether/{s/^.*link.ether //;s/ .*//;s/://g;p;q}' - ) - # - echo -n "${acct:0:19}.${mymac:0:12}" - fi -} - function prereq { - err=0 + local err=0 while [ -n "$1" ] do if ! which $1 > /dev/null @@ -193,30 +175,22 @@ test -d "${BFANETWORKDIR}" || fatal "\$BFANETWORKDIR (\"${BFANETWORKDIR}\" test -n "$BFANODEDIR" || BFANODEDIR="${BFANETWORKDIR}/node" if [ ! -d "${BFANODEDIR}" -o ! -d "${BFANODEDIR}/geth/chaindata" ] then - echo "Node is not initialised. Initialising with genesis." - geth --cache 0 --datadir "${BFANODEDIR}" --networkid ${BFANETWORKID} init "${BFANETWORKDIR}/genesis.json" -fi -# -# netport -netport=30303 -if [ -r "${BFANODEDIR}/netport" ] -then - netport=$( cat ${BFANODEDIR}/netport ) - test $? = 0 -fi -if [ "$netport" != "30303" ] -then - netportarg="--port ${netport}" -fi -# -# rpcport -rpcport=8545 -if [ -r "${BFANODEDIR}/rpcport" ] -then - rpcport=$( cat ${BFANODEDIR}/rpcport ) - test $? = 0 -fi -if [ "$rpcport" != "8545" ] -then - rpcportarg="--rpcport ${rpcport}" + generate-genesis-block.sh fi + +true ${BFASOCKETTYPE:=ipc} +case "${BFASOCKETTYPE}" in + ipc) + test ${BFASOCKETURL:="ipc:${BFANODEDIR}/geth.ipc"} + ;; + http) + test ${BFASOCKETURL:="http://127.0.0.1:8545"} + ;; + ws) + test ${BFASOCKETURL:="ws://127.0.0.1:8546"} + ;; + *) + echo "Unknown socket type. Supported types are http, ws, ipc" >&2 + exit 1 +esac +BFASOCKET diff --git a/bin/localstate.pl b/bin/localstate.pl index d8e1f3d..f3af0d1 100755 --- a/bin/localstate.pl +++ b/bin/localstate.pl @@ -264,7 +264,7 @@ if ( $result ) my $i = 0; if ( scalar @$result ) { - foreach my $account ( sort @$result ) + foreach my $account ( @$result ) { my $maymine = ''; $maymine = 'sealer' diff --git a/bin/singlestart.sh b/bin/singlestart.sh index a00962e..9963ecf 100755 --- a/bin/singlestart.sh +++ b/bin/singlestart.sh @@ -88,7 +88,7 @@ PIDIDX[$!]="log.sh" exec > ${LOGPIPE} 2>&1 echo "*** Starting geth." -geth --config ${BFATOML} --gcmode archive --verbosity ${BFAVERBOSITY:-3} --allow-insecure-unlock & +geth --config ${BFATOML} --gcmode archive --allow-insecure-unlock & PIDIDX[$!]="geth" # bootnode diff --git a/bin/start.sh b/bin/start.sh index 182bedb..4fc9770 100755 --- a/bin/start.sh +++ b/bin/start.sh @@ -126,29 +126,12 @@ function geth_args # (re)configure parameters (you never know if they changed) flexargs="$( getsyncmode )" geth_capab - xtra=$( extradata ) - if [ -n "$xtra" ] - then - flexargs="${flexargs} --extradata $( extradata )" - fi - unset xtra # - if [ "$netport" != 30303 ] - then - flexargs="${flexargs} --port $netport" - fi - if [ "$rpcport" != 30303 ] - then - flexargs="${flexargs} --rpcport $rpcport" - fi - if [ -n "$BFAVERBOSITY" -a "$BFAVERBOSITY" != 3 ] - then - flexargs="${flexargs} --verbosity ${BFAVERBOSITY:-3}" - fi # the basic modules - rpcapis="eth,net,web3,clique" + local rpcapis="eth,net,web3,clique" if [ -e "${BFANODEDIR}/opentx" ] then + local txhostnames dummy # If you want other hostnames, put them in this file (comma separated) read txhostnames dummy < ${BFANODEDIR}/opentx if [ "${txhostnames}" = "" ] diff --git a/bin/walker.pl b/bin/walker.pl index 5dfd3f5..292dd77 100755 --- a/bin/walker.pl +++ b/bin/walker.pl @@ -74,7 +74,7 @@ sub hex2string($) sub rpcreq { my ( $opname, @params ) = @_; - my $req = HTTP::Request->new( POST => 'http://127.0.0.1:' . $libbfa->{'rpcport'} ); + my $req = HTTP::Request->new( POST => 'http://127.0.0.1:8545' ); $req->content_type('application/json'); my $extra = scalar @params ? sprintf(qq(,\"params\":[%s]), join(',', @params)) -- GitLab