You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.3 KiB
67 lines
2.3 KiB
#!/bin/bash -e
|
|
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
# OTHER DEALINGS IN THE SOFTWARE.
|
|
|
|
# Directories
|
|
# Allow access to /secrets/rpcpass.txt
|
|
# Allow access to LND directory (use /lnd/lnd.conf)
|
|
# Allow access to 'statuses'. /statuses/
|
|
|
|
# Output: /statuses/node-status-bitcoind-ready (when ready, where a service can pick it up)
|
|
# Then
|
|
PASSWORD=`cat /secrets/rpcpass.txt`
|
|
|
|
# If JSONRPCURL doesn't exist then set it
|
|
if [ -z $JSONRPCURL ]; then
|
|
JSONRPCURL="http://10.254.2.2:8332"
|
|
fi
|
|
|
|
while true; do
|
|
IS_NEUTRINO=`grep -c 'bitcoin.node=neutrino' /lnd/lnd.conf`
|
|
if [ $IS_NEUTRINO -eq 1 ]; then
|
|
echo "If set to neutrino then lets check"
|
|
|
|
INFO=`curl --user lncm:$PASSWORD --data-binary '{"jsonrpc": "1.0", "id":"switchme", "method": "getblockchaininfo", "params": [] }' $JSONRPCURL 2>/dev/null`
|
|
# check for errors
|
|
ERROR=`echo $INFO | jq .error`
|
|
if [ ! -z $ERROR ]; then
|
|
# if no errors
|
|
# Check prune mode
|
|
PRUNE_MODE=`echo $INFO | jq .result.pruned`
|
|
# check headers
|
|
HEADERS=`echo $INFO | jq .result.headers`
|
|
# check blocks
|
|
BLOCKS=`echo $INFO | jq .result.blocks`
|
|
|
|
if [ $PRUNE_MODE != "true" ]; then
|
|
echo "Not pruned"
|
|
# Node pruned so lets do the switching
|
|
echo "Checking if synced...."
|
|
if [ ! -f /statuses/node-status-bitcoind-ready ]; then
|
|
if [ $HEADERS -eq $BLOCKS ]; then
|
|
echo "Bitcoind has been switched across to neutrino"
|
|
touch /statuses/node-status-bitcoind-ready
|
|
sed -i 's/bitcoin.node\=neutrino/bitcoin.node\=bitcoind/g; ' /lnd/lnd.conf
|
|
fi
|
|
fi
|
|
else
|
|
echo "No need to switch from neutrino in pruned mode"
|
|
fi
|
|
else
|
|
# if bitcoind error
|
|
echo "Error from bitcoind"
|
|
echo $ERROR
|
|
fi
|
|
else
|
|
echo "Neutrino mode has been disabled"
|
|
#TODO: Lets maybe try to switch back
|
|
fi
|
|
# Run every every 1 hour
|
|
sleep 3600
|
|
done
|
|
|