diff --git a/bin/start.sh b/bin/start.sh index 8718e5a560461200efffe2e8065ea142e04ebd2a..20d78c70103a528c78c7b3897252fc2fd9727cd5 100755 --- a/bin/start.sh +++ b/bin/start.sh @@ -78,11 +78,52 @@ function startmonitor ) 9>> $pidfile } +function geth_capab +{ + geth_version=$( geth --help | sed -n '/^VERSION:/{n;s/^ *//;s/-.*$//;p}' ) + # default to a dumb version + test -n "${geth_version}" || geth_version=0.0.0 + v_major=${geth_version%%.*} + tmp=${geth_version%.*} + v_minor=${tmp#*.} + v_patch=${geth_version##*.} + unset tmp + # + # Determine capabilities + # 0 legacy + # 1 supports --allow-insecure-unlock + cap=0 + if [ "${v_major}" -lt 1 ] + then + cap=0 + elif [ "${v_major}" -eq 1 ] + then + if [ "${v_minor}" -eq 8 ] + then + if [ "${v_patch}" -gt 28 ] + then + cap=1 + fi + elif [ "${v_minor}" -ge 9 ] + then + cap=1 + fi + elif [ "${v_major}" -ge 2 ] + then + cap=1 + fi + if [ ${cap} -ge 1 ] + then + flexargs="${flexargs} --allow-insecure-unlock" + fi +} + function startgeth { # Start the node. local ERRTEXT="geth section failed" which geth >/dev/null 2>&1 || return 0 + # ( flock --nonblock --exclusive 9 || ( echo "A geth is already running." @@ -93,22 +134,29 @@ function startgeth then echo Starting geth echo Logging everything to ${BFANODEDIR}/log - echo Consider running: tail -n 1000 -F ${BFANODEDIR}/log + echo Consider running: bfalog.sh fi + loop_counter=0 while : do + loop_counter=$(( ${loop_counter} + 1 )) ERRTEXT="geth" echo echo '***' + echo "*** loop #${loop_number}" + echo '***' echo # (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" @@ -121,14 +169,27 @@ function startgeth then flexargs="${flexargs} --verbosity ${BFAVERBOSITY:-3}" fi + # the basic modules + rpcapis="eth,net,web3,clique" if [ -e "${BFANODEDIR}/opentx" ] then - # INADDR_ANY - # Oh, and don't put keys in / :-) - flexargs="${flexargs} --rpcapi eth,net,web3,clique --rpcaddr 0.0.0.0 --rpcvhosts localhost,opentx.bfa.ar --keystore /" + # If you want other hostnames, put them in this file (comma separated) + read txhostnames dummy < ${BFANODEDIR}/opentx + if [ "${txhostnames}" = "" ] + then + # but if you don't put any hostnames, these are the defaults + txhostnames="localhost,opentx.bfa.ar" + fi + flexargs="${flexargs} --rpcvhosts ${txhostnames}" + # INADDR_ANY - listen on all addresses + flexargs="${flexargs} --rpcaddr 0.0.0.0" + # Oh, and don't put your keys in / because we use that as a dummy directory + flexargs="${flexargs} --keystore /" else - flexargs="${flexargs} --rpcapi eth,net,web3,admin,clique,miner,personal" + # expose more modules, if we are a private node (localhost'ed) + rpcapis="${rpcapis},admin,miner,personal" fi + flexargs="${flexargs} --rpcapi ${rpcapis}" set -x geth \ --datadir ${BFANODEDIR} \ @@ -137,11 +198,11 @@ function startgeth --gcmode archive \ ${flexargs} \ --rpccorsdomain \* \ - --allow-insecure-unlock \ --bootnodes "${bootnodes}" & set +x echo $! > ${BFANODEDIR}/geth.pid - wait + rv=0 + wait -n || rv=$? sleep 60 done 2>&1 | ${BFAHOME}/bin/log.sh ${BFANODEDIR}/log & ) 9>> ${BFANODEDIR}/start-loop.pid