mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-25 07:07:46 +01:00
233 lines
8.1 KiB
Bash
Executable file
233 lines
8.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# command info
|
|
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "--help" ] || [ "$1" = "-help" ]; then
|
|
echo "# script to check LND states"
|
|
echo "# lnd.check.sh basic-setup"
|
|
echo "# lnd.check.sh prestart [mainnet|testnet|signet]"
|
|
exit 1
|
|
fi
|
|
|
|
# load raspiblitz conf
|
|
source /mnt/hdd/raspiblitz.conf
|
|
|
|
# check/repair lnd config before starting
|
|
if [ "$1" == "prestart" ]; then
|
|
|
|
echo "### RUNNING lnd.check.sh prestart"
|
|
echo "# user($USER)"
|
|
|
|
# set default chain parameter
|
|
targetchain=$2
|
|
if [ "${targetchain}" == "" ]; then
|
|
targetchain="mainnet"
|
|
fi
|
|
|
|
# restart counting
|
|
if [ "${lightning}" == "lnd" ] && [ "${targetchain}" == "mainnet" ]; then
|
|
# count start if that service is the main lightning client
|
|
/home/admin/config.scripts/blitz.systemd.sh log lightning STARTED
|
|
fi
|
|
|
|
# prefixes for parallel services
|
|
if [ "${targetchain}" = "mainnet" ];then
|
|
netprefix=""
|
|
portprefix=""
|
|
rpcportmod=0
|
|
zmqprefix=28
|
|
elif [ "${targetchain}" = "testnet" ];then
|
|
netprefix="t"
|
|
portprefix=1
|
|
rpcportmod=1
|
|
zmqprefix=21
|
|
elif [ "${targetchain}" = "signet" ];then
|
|
netprefix="s"
|
|
portprefix=3
|
|
rpcportmod=3
|
|
zmqprefix=23
|
|
else
|
|
echo "err='unvalid chain parameter on lnd.check.sh'"
|
|
exit 1
|
|
fi
|
|
|
|
echo "# checking lnd config for ${targetchain}"
|
|
lndConfFile="/mnt/hdd/lnd/${netprefix}lnd.conf"
|
|
echo "# lndConfFile(${lndConfFile})"
|
|
|
|
# [bitcoind] Section ..
|
|
sectionName="[Bb]itcoind"
|
|
if [ "${network}" != "bitcoin" ]; then
|
|
sectionName="${network}d"
|
|
fi
|
|
echo "# [${sectionName}] config ..."
|
|
|
|
# make sure lnd config has a [bitcoind] section
|
|
sectionExists=$(sudo cat ${lndConfFile} | grep -c "^\[${sectionName}\]")
|
|
echo "# sectionExists(${sectionExists})"
|
|
if [ "${sectionExists}" == "0" ]; then
|
|
echo "# adding template section [${network}d]"
|
|
echo "
|
|
[${network}d]
|
|
${network}d.rpcuser=
|
|
${network}d.rpcpass=
|
|
${network}d.zmqpubrawblock=
|
|
${network}d.zmqpubrawtx=
|
|
" | sudo tee -a /mnt/hdd/lnd/lnd.conf
|
|
fi
|
|
|
|
# get line number of [bitcoind] section
|
|
sectionLine=$(sudo cat ${lndConfFile} | grep -n "^\[${sectionName}\]" | cut -d ":" -f1)
|
|
echo "# sectionLine(${sectionLine})"
|
|
|
|
# remove RPC user & pass from lnd.conf ... since v1.7
|
|
# https://github.com/rootzoll/raspiblitz/issues/2160
|
|
# echo "- #2160 lnd.conf --> make sure contains no RPC user/pass for bitcoind" >> ${logFile}
|
|
# sudo sed -i '/^\[Bitcoind\]/d' /mnt/hdd/lnd/lnd.conf
|
|
# sudo sed -i '/^bitcoind.rpchost=/d' /mnt/hdd/lnd/lnd.conf
|
|
# sudo sed -i '/^bitcoind.rpcpass=/d' /mnt/hdd/lnd/lnd.conf
|
|
# sudo sed -i '/^bitcoind.rpcuser=/d' /mnt/hdd/lnd/lnd.conf
|
|
# sudo sed -i '/^bitcoind.zmqpubrawblock=/d' /mnt/hdd/lnd/lnd.conf
|
|
# sudo sed -i '/^bitcoind.zmqpubrawtx=/d' /mnt/hdd/lnd/lnd.conf
|
|
|
|
# check basic LND setup
|
|
elif [ "$1" == "basic-setup" ]; then
|
|
|
|
# check TLS exits
|
|
tlsExists=$(sudo ls /mnt/hdd/lnd/tls.cert 2>/dev/null | grep -c 'tls.cert')
|
|
if [ ${tlsExists} -gt 0 ]; then
|
|
echo "tls=1"
|
|
else
|
|
echo "tls=0"
|
|
echo "err='tls.cert is missing in /mnt/hdd/lnd'"
|
|
fi
|
|
# check TLS exits (on SD card for admin)
|
|
tlsExists=$(sudo ls /home/admin/.lnd/tls.cert 2>/dev/null | grep -c 'tls.cert')
|
|
if [ ${tlsExists} -gt 0 ]; then
|
|
echo "tlsCopy=1"
|
|
# check if the same
|
|
orgChecksum=$(sudo shasum -a 256 /mnt/hdd/lnd/tls.cert 2>/dev/null | cut -d " " -f1)
|
|
cpyChecksum=$(sudo shasum -a 256 /home/admin/.lnd/tls.cert 2>/dev/null | cut -d " " -f1)
|
|
if [ "${orgChecksum}" == "${cpyChecksum}" ]; then
|
|
echo "tlsMismatch=0"
|
|
else
|
|
echo "tlsMismatch=1"
|
|
echo "err='tls.cert for user admin is old'"
|
|
fi
|
|
else
|
|
echo "tlsCopy=0"
|
|
echo "tlsMismatch=0"
|
|
echo "err='tls.cert is missing for user admin'"
|
|
fi
|
|
|
|
# check lnd.conf exists
|
|
lndConfExists=$(sudo ls /mnt/hdd/lnd/lnd.conf 2>/dev/null | grep -c 'lnd.conf')
|
|
if [ ${lndConfExists} -gt 0 ]; then
|
|
echo "config=1"
|
|
else
|
|
echo "config=0"
|
|
echo "err='lnd.conf is missing in /mnt/hdd/lnd'"
|
|
fi
|
|
# check lnd.conf exits (on SD card for admin)
|
|
lndConfExists=$(sudo ls /home/admin/.lnd/lnd.conf 2>/dev/null | grep -c 'lnd.conf')
|
|
if [ ${lndConfExists} -gt 0 ]; then
|
|
echo "configCopy=1"
|
|
# check if the same
|
|
orgChecksum=$(sudo shasum -a 256 /mnt/hdd/lnd/lnd.conf 2>/dev/null | cut -d " " -f1)
|
|
cpyChecksum=$(sudo shasum -a 256 /home/admin/.lnd/lnd.conf 2>/dev/null | cut -d " " -f1)
|
|
if [ "${orgChecksum}" == "${cpyChecksum}" ]; then
|
|
echo "configMismatch=0"
|
|
else
|
|
echo "configMismatch=1"
|
|
echo "err='lnd.conf for user admin is old'"
|
|
fi
|
|
else
|
|
echo "configCopy=0"
|
|
echo "configMismatch=0"
|
|
echo "err='lnd.conf is missing for user admin'"
|
|
fi
|
|
|
|
# get network from config (BLOCKCHAIN)
|
|
lndNetwork=""
|
|
source <(sudo cat /mnt/hdd/lnd/lnd.conf 2>/dev/null | grep 'bitcoin.active' | sed 's/^[a-z]*\./bitcoin_/g')
|
|
source <(sudo cat /mnt/hdd/lnd/lnd.conf 2>/dev/null | grep 'litecoin.active' | sed 's/^[a-z]*\./litecoin_/g')
|
|
if [ "${bitcoin_active}" == "1" ] && [ "${litecoin_active}" == "1" ]; then
|
|
echo "err='lnd.conf: bitcoin and litecoin are set active at the same time'"
|
|
elif [ "${bitcoin_active}" == "1" ]; then
|
|
lndNetwork="bitcoin"
|
|
elif [ "${litecoin_active}" == "1" ]; then
|
|
lndNetwork="litecoin"
|
|
else
|
|
echo "err='lnd.conf: no blockchain network is set'"
|
|
fi
|
|
echo "network='${lndNetwork}'"
|
|
|
|
# check if network is same the raspiblitz config
|
|
if [ "${network}" != "${lndNetwork}" ]; then
|
|
echo "err='lnd.conf: blockchain network in lnd.conf (${lndNetwork}) is different from raspiblitz.conf (${network})'"
|
|
fi
|
|
|
|
# # get chain from config (TESTNET / MAINNET)
|
|
# lndChain=""
|
|
# source <(sudo cat /mnt/hdd/lnd/lnd.conf 2>/dev/null | grep "${lndNetwork}.mainnet" | sed 's/^[a-z]*\.//g')
|
|
# source <(sudo cat /mnt/hdd/lnd/lnd.conf 2>/dev/null | grep "${lndNetwork}.testnet" | sed 's/^[a-z]*\.//g')
|
|
# if [ "${mainnet}" == "1" ] && [ "${testnet}" == "1" ]; then
|
|
# echo "err='lnd.conf: mainnet and testnet are set active at the same time'"
|
|
# elif [ "${mainnet}" == "1" ]; then
|
|
# lndChain="main"
|
|
# elif [ "${testnet}" == "1" ]; then
|
|
# lndChain="test"
|
|
# else
|
|
# echo "err='lnd.conf: neither testnet or mainnet is set active (raspiblitz needs one of them active in lnd.conf)'"
|
|
# fi
|
|
# echo "chain='${lndChain}'"
|
|
#
|
|
# # check if chain is same the raspiblitz config
|
|
# if [ "${chain}" != "${lndChain}" ]; then
|
|
# echo "err='lnd.conf: testnet/mainnet in lnd.conf (${lndChain}) is different from raspiblitz.conf (${chain})'"
|
|
# fi
|
|
|
|
# check for admin macaroon exist (on HDD)
|
|
adminMacaroonExists=$(sudo ls /mnt/hdd/lnd/data/chain/${network}/${chain}net/admin.macaroon 2>/dev/null | grep -c 'admin.macaroon')
|
|
if [ ${adminMacaroonExists} -gt 0 ]; then
|
|
echo "macaroon=1"
|
|
else
|
|
echo "macaroon=0"
|
|
echo "err='admin.macaroon is missing in /mnt/hdd/lnd/data/chain/${network}/${chain}net'"
|
|
fi
|
|
# check for admin macaroon exist (on SD card for admin)
|
|
adminMacaroonExists=$(sudo ls /home/admin/.lnd/data/chain/${network}/${chain}net/admin.macaroon 2>/dev/null | grep -c 'admin.macaroon')
|
|
if [ ${adminMacaroonExists} -gt 0 ]; then
|
|
echo "macaroonCopy=1"
|
|
# check if the same
|
|
orgChecksum=$(sudo shasum -a 256 /mnt/hdd/lnd/data/chain/${network}/${chain}net/admin.macaroon 2>/dev/null | cut -d " " -f1)
|
|
cpyChecksum=$(sudo shasum -a 256 /home/admin/.lnd/data/chain/${network}/${chain}net/admin.macaroon 2>/dev/null | cut -d " " -f1)
|
|
if [ "${orgChecksum}" == "${cpyChecksum}" ]; then
|
|
echo "macaroonMismatch=0"
|
|
else
|
|
echo "macaroonMismatch=1"
|
|
echo "err='admin.macaroon for user admin is old'"
|
|
fi
|
|
else
|
|
echo "macaroonCopy=0"
|
|
echo "macaroonMismatch=0"
|
|
echo "err='admin.macaroon is missing for user admin'"
|
|
fi
|
|
|
|
# check for walletDB exist
|
|
walletExists=$(sudo ls /mnt/hdd/lnd/data/chain/${network}/${chain}net/wallet.db 2>/dev/null | grep -c 'wallet.db')
|
|
if [ ${walletExists} -gt 0 ]; then
|
|
echo "wallet=1"
|
|
else
|
|
echo "wallet=0"
|
|
fi
|
|
|
|
# check basic LND logs
|
|
torConnectionProblem=$(sudo journalctl -u lnd -b --no-pager -n14 | grep "lnd\[" | grep -c "dial tcp 127.0.0.1:9050: connect: connection refused")
|
|
if [ ${torConnectionProblem} -gt 0 ]; then
|
|
echo "err='Tor tcp connection refused'"
|
|
fi
|
|
|
|
else
|
|
echo "# FAIL: parameter not known - run with -h for help"
|
|
exit 1
|
|
fi
|