mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2024-11-19 01:40:16 +01:00
379 lines
12 KiB
Bash
Executable File
379 lines
12 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
source <(/home/admin/_cache.sh get \
|
|
state \
|
|
setupPhase \
|
|
network \
|
|
chain \
|
|
lightning \
|
|
codeVersion \
|
|
hostname \
|
|
undervoltageReports \
|
|
hdd_used_info \
|
|
internet_localip \
|
|
internet_public_ip_clean \
|
|
internet_rx \
|
|
internet_tx \
|
|
system_ram_available_mb \
|
|
system_ram_mb \
|
|
system_ups_status \
|
|
system_ups_battery \
|
|
system_cpu_load \
|
|
system_temp_celsius \
|
|
system_temp_fahrenheit \
|
|
runBehindTor \
|
|
ups \
|
|
ElectRS \
|
|
BTCRPCexplorer \
|
|
joinmarket \
|
|
blitzapi \
|
|
)
|
|
|
|
# PARAMETER 1: forcing view on a given network
|
|
PARAMETER_CHAIN=$2
|
|
if [ "${PARAMETER_CHAIN}" == "mainnet" ]; then
|
|
chain="main"
|
|
fi
|
|
if [ "${PARAMETER_CHAIN}" == "testnet" ]; then
|
|
chain="test"
|
|
fi
|
|
if [ "${PARAMETER_CHAIN}" == "signet" ]; then
|
|
chain="sig"
|
|
fi
|
|
|
|
# PARAMETER 2: forcing view on a lightning implementation
|
|
PARAMETER_LIGHTNING=$1
|
|
if [ "${PARAMETER_LIGHTNING}" == "lnd" ]; then
|
|
lightning="lnd"
|
|
fi
|
|
if [ "${PARAMETER_LIGHTNING}" == "cl" ]; then
|
|
lightning="cl"
|
|
fi
|
|
if [ "${PARAMETER_LIGHTNING}" == "none" ]; then
|
|
lightning=""
|
|
fi
|
|
|
|
# set colors
|
|
color_red='\033[0;31m'
|
|
color_green='\033[0;32m'
|
|
color_amber='\033[0;33m'
|
|
color_yellow='\033[1;93m'
|
|
color_gray='\033[0;37m'
|
|
|
|
# generate netprefix
|
|
netprefix=${chain:0:1}
|
|
if [ "${netprefix}" == "m" ]; then
|
|
netprefix=""
|
|
fi
|
|
|
|
## get UPS info
|
|
upsInfo=""
|
|
if [ "${system_ups_status}" = "ONLINE" ]; then
|
|
upsInfo="${color_gray}${system_ups_battery}"
|
|
fi
|
|
if [ "${system_ups_status}" = "ONBATT" ]; then
|
|
upsInfo="${color_red}${system_ups_battery}"
|
|
fi
|
|
if [ "${system_ups_status}" = "SHUTTING DOWN" ]; then
|
|
upsInfo="${color_red}DOWN"
|
|
fi
|
|
|
|
# check hostname
|
|
if [ ${#hostname} -eq 0 ]; then hostname="raspiblitz"; fi
|
|
|
|
# for oldnodes
|
|
if [ ${#chain} -eq 0 ]; then
|
|
network="bitcoin"
|
|
chain="main"
|
|
fi
|
|
|
|
# ram info string
|
|
ram=$(printf "%sM / %sM" "${system_ram_available_mb}" "${system_ram_mb}")
|
|
if [ "${system_ram_available_mb}" != "" ] && [ ${system_ram_available_mb} -lt 50 ]; then
|
|
color_ram="${color_red}\e[7m"
|
|
else
|
|
color_ram=${color_green}
|
|
fi
|
|
|
|
# Tor info string
|
|
torInfo=""
|
|
if [ "${runBehindTor}" = "on" ]; then
|
|
torInfo="+ Tor"
|
|
fi
|
|
|
|
#######################
|
|
# BITCOIN INFO
|
|
|
|
# get block data - use meta on cache to call dynamic variable name
|
|
source <(/home/admin/_cache.sh meta btc_${chain}net_blocks_headers)
|
|
btc_blocks_headers="${value}"
|
|
source <(/home/admin/_cache.sh meta btc_${chain}net_blocks_verified)
|
|
btc_blocks_verified="${value}"
|
|
source <(/home/admin/_cache.sh meta btc_${chain}net_blocks_behind)
|
|
btc_blocks_behind="${value}"
|
|
source <(/home/admin/_cache.sh meta btc_${chain}net_sync_percentage)
|
|
if [ "${value}" != "" ]; then
|
|
sync_percentage="${value}%"
|
|
fi
|
|
|
|
# construct blockinfo string
|
|
if [ "${btc_blocks_behind}" == "" ]; then
|
|
sync="WAIT"
|
|
sync_color="${color_yellow}"
|
|
elif [ ${btc_blocks_behind} -lt 2 ]; then
|
|
sync="OK"
|
|
sync_color="${color_green}"
|
|
else
|
|
sync=""
|
|
sync_color="${color_red}"
|
|
fi
|
|
blockInfo="Blocks ${btc_blocks_verified}/${btc_blocks_headers} ${color_gray}Sync ${sync_color}${sync}"
|
|
if [ "${btc_blocks_headers}" == "" ]; then
|
|
blockInfo="${color_red}Not Started | Not Ready Yet | No Data${color_gray}"
|
|
fi
|
|
|
|
# get address data - use meta on cache to call dynamic variable name
|
|
source <(/home/admin/_cache.sh meta btc_${chain}net_version)
|
|
networkVersion="${value} "
|
|
source <(/home/admin/_cache.sh meta btc_${chain}net_peers)
|
|
btc_peers=${value}
|
|
if [ "${btc_peers}" == "" ]; then
|
|
networkConnectionsInfo=""
|
|
elif [ ${btc_peers} -gt 0 ]; then
|
|
networkConnectionsInfo="${color_green}${btc_peers} ${color_gray}peers"
|
|
else
|
|
networkConnectionsInfo="${color_red}${btc_peers} ${color_gray}peers"
|
|
fi
|
|
|
|
#######################
|
|
# LIGHTNING INFO
|
|
|
|
# default values
|
|
ln_alias=${hostname}
|
|
ln_baseInfo="-"
|
|
ln_channelInfo="\n"
|
|
ln_external="\n"
|
|
ln_feeReport=""
|
|
ln_peersInfo=""
|
|
ln_version=""
|
|
ln_publicColor="${color_green}"
|
|
|
|
if [ "${lightning}" != "" ]; then
|
|
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_version)
|
|
ln_version="${value}"
|
|
|
|
# get alias
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_alias)
|
|
if [ "${value}" != "" ]; then
|
|
ln_alias="${value}"
|
|
fi
|
|
|
|
# consider tor address green for public
|
|
# when not Tor use yellow because not sure if public
|
|
if [ "${runBehindTor}" != "on" ]; then
|
|
ln_publicColor="${color_yellow}"
|
|
fi
|
|
|
|
# get the public address/URI
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_address)
|
|
ln_external="${value}"
|
|
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_peers)
|
|
if [ "${value}" != "" ]; then
|
|
ln_peersInfo="${color_green}${value} ${color_gray}peers"
|
|
fi
|
|
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_ready)
|
|
ln_ready="${value}"
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_sync_chain)
|
|
ln_sync="${value}"
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_locked)
|
|
ln_locked="${value}"
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_recovery_mode)
|
|
ln_recovery_mode="${value}"
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_recovery_done)
|
|
ln_recovery_done="${value}"
|
|
|
|
# lightning is still starting
|
|
if [ "${ln_ready}" != "1" ]; then
|
|
|
|
ln_baseInfo="\n ${color_red}Not Started | Not Ready Yet | No Data"
|
|
ln_peersInfo=""
|
|
|
|
# lightning is still syncing
|
|
elif [ "${ln_locked}" == "1" ]; then
|
|
|
|
ln_baseInfo="${color_amber}Wallet Locked"
|
|
ln_peersInfo=""
|
|
|
|
# lightning is still syncing
|
|
elif [ "${ln_recovery_mode}" == "1" ] && [ "${ln_recovery_done}" == "0" ]; then
|
|
|
|
ln_baseInfo="${color_amber}Rescanning transactions"
|
|
ln_peersInfo=""
|
|
|
|
# lightning is still syncing
|
|
elif [ "${ln_sync}" != "1" ]; then
|
|
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_sync_progress)
|
|
ln_syncprogress="${value}"
|
|
ln_baseInfo="${color_amber}Scanning blocks: ${ln_syncprogress}"
|
|
ln_peersInfo=""
|
|
|
|
# OK lightning is ready - get more details
|
|
else
|
|
|
|
# create fee report
|
|
if [ "${lightning}" == "lnd" ]; then
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_fees_daily)
|
|
ln_dailyfees="${value}"
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_fees_weekly)
|
|
ln_weeklyfees="${value}"
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_fees_month)
|
|
ln_monthlyfees="${value}"
|
|
ln_feeReport="Fee Report (D-W-M): ${color_green}${ln_dailyfees}-${ln_weeklyfees}-${ln_monthlyfees} ${color_gray}${netprefix}sat"
|
|
else
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_fees_total)
|
|
ln_totalfees="${value}"
|
|
ln_feeReport="Fee Report: ${color_green}${ln_totalfees} ${color_gray}${netprefix}msat"
|
|
fi
|
|
|
|
# on-chain wallet info
|
|
ln_pendingonchain=""
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_wallet_onchain_pending)
|
|
ln_onchain_pending="${value}"
|
|
if [ "${ln_onchain_pending}" != "" ] && [ ${ln_onchain_pending} -gt 0 ]; then ln_pendingonchain=" (+${ln_onchain_pending})"; fi
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_wallet_onchain_balance)
|
|
ln_walletbalance=$(printf "%'d" "${value}")
|
|
ln_baseInfo="${color_gray}Wallet ${ln_walletbalance} ${netprefix}sat ${ln_pendingonchain}"
|
|
|
|
# channel pending info
|
|
ln_channelbalance_pending=""
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_wallet_channels_pending)
|
|
ln_channels_pending="${value}"
|
|
if [ "${ln_channels_pending}" != "" ] && [ ${ln_channels_pending} -gt 0 ]; then ln_channelbalance_pending=" (+${ln_channels_pending})"; fi
|
|
|
|
# get channel infos
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_wallet_channels_balance)
|
|
ln_channels_balance=$(printf "%'d" "${value}")
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_channels_active)
|
|
ln_channels_online="${value}"
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_channels_total)
|
|
ln_channels_total="${value}"
|
|
|
|
# construct channel info string
|
|
ln_channelInfo="${ln_channels_online}/${ln_channels_total} Channels ${ln_channels_balance} ${netprefix}sat${ln_channelbalance_pending}"
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
lastLine="\
|
|
${color_yellow}
|
|
${color_yellow}${ln_publicColor}${ln_external}${color_gray}"
|
|
|
|
if [ "${joinmarket}" = "on" ];then
|
|
# show JoinMarket stats in place of the LND URI only if the Yield Generator is running
|
|
if [ $(sudo -u joinmarket pgrep -f "yg-privacyenhanced.py" 2>/dev/null | wc -l) -gt 2 ]; then
|
|
trap 'rm -f "$JMstats"' EXIT
|
|
JMstats=$(mktemp -p /dev/shm)
|
|
sudo -u joinmarket /home/joinmarket/info.stats.sh > $JMstats
|
|
JMstatsL1=$(sed -n 1p < "$JMstats")
|
|
JMstatsL2=$(sed -n 2p < "$JMstats")
|
|
JMstatsL3=$(sed -n 3p < "$JMstats")
|
|
JMstatsL4=$(sed -n 4p < "$JMstats")
|
|
lastLine="\
|
|
${color_gray}
|
|
${color_gray} ╦╔╦╗ ${color_gray}$JMstatsL1
|
|
${color_gray} ║║║║ ${color_gray}$JMstatsL2
|
|
${color_gray} ╚╝╩ ╩ ${color_gray}$JMstatsL3
|
|
${color_gray} ◎=◎=◎=◎=◎ ${color_gray}$JMstatsL4"
|
|
fi
|
|
fi
|
|
|
|
if [ "${lightning}" == "cl" ]; then
|
|
LNline="CLN ${color_green}${ln_version} ${ln_baseInfo}"
|
|
elif [ "${lightning}" == "lnd" ]; then
|
|
LNline="LND ${color_green}${ln_version} ${ln_baseInfo}"
|
|
fi
|
|
|
|
LNinfo=" + Lightning Network"
|
|
if [ "${lightning}" == "" ] || [ "${lightning}" == "none" ]; then
|
|
LNinfo=""
|
|
fi
|
|
|
|
webuiinfo=""
|
|
source <(/home/admin/_cache.sh meta ln_${lightning}_${chain}net_recovery_done)
|
|
if [ "${blitzapi}" == "on" ]; then
|
|
webuiinfo="Web Admin --> http://${internet_localip}"
|
|
fi
|
|
|
|
datetime=$(date -R)
|
|
|
|
stty sane
|
|
sleep 1
|
|
clear
|
|
|
|
printf "
|
|
${color_yellow}
|
|
${color_yellow}
|
|
${color_yellow}
|
|
${color_yellow} ${color_amber}%s ${color_green} ${ln_alias} ${upsInfo}
|
|
${color_yellow} ${color_gray}${network^} Fullnode${LNinfo} ${torInfo}
|
|
${color_yellow} ,/ ${color_yellow}%s
|
|
${color_yellow} ,'/ ${color_gray}%s
|
|
${color_yellow} ,' / ${color_gray}%s, temp %s°C %s°F
|
|
${color_yellow} ,' /_____ ${color_gray}Free Mem ${color_ram}${ram} ${color_gray} HDDuse ${color_hdd}%s${color_gray}
|
|
${color_yellow},'_____ ,' ${color_gray}SSH admin@${internet_localip}${color_gray} d${internet_rx} u${internet_tx}
|
|
${color_yellow} / ,' ${color_gray}${webuiinfo}
|
|
${color_yellow} / ,' ${color_gray}${network} ${color_green}${networkVersion}${color_gray}${chain}net ${networkConnectionsInfo}
|
|
${color_yellow} /,' ${color_gray}${blockInfo} %s
|
|
${color_yellow} /' ${color_gray}
|
|
${color_yellow} ${color_gray}${LNline}
|
|
${color_yellow} ${color_gray}${ln_channelInfo} ${ln_peersInfo}
|
|
${color_yellow} ${color_gray}${ln_feeReport}
|
|
$lastLine
|
|
" \
|
|
"RaspiBlitz v${codeVersion}" \
|
|
"-------------------------------------------" \
|
|
"Refreshed: ${datetime}" \
|
|
"CPU load${system_cpu_load##up*, }" "${system_temp_celsius}" "${system_temp_fahrenheit}" \
|
|
"${hdd_used_info}" "${sync_percentage}"
|
|
|
|
if [ ${#undervoltageReports} -gt 0 ] && [ "${undervoltageReports}" != "0" ]; then
|
|
echo "${undervoltageReports} undervoltage reports - run 'Hardware Test' in menu"
|
|
elif [ ${#ups} -gt 1 ] && [ "${upsStatus}" = "n/a" ]; then
|
|
echo "UPS service activated but not running"
|
|
else
|
|
|
|
# checking status of apps and display if in sync or problems
|
|
appInfoLine=""
|
|
|
|
# Electrum Server - electrs
|
|
if [ "${ElectRS}" = "on" ]; then
|
|
error=""
|
|
source <(sudo /home/admin/config.scripts/bonus.electrs.sh status-sync 2>/dev/null)
|
|
if [ ${#infoSync} -gt 0 ]; then
|
|
appInfoLine="Electrum: ${infoSync}"
|
|
fi
|
|
fi
|
|
|
|
# BTC RPC EXPLORER
|
|
if [ "${BTCRPCexplorer}" = "on" ]; then
|
|
error=""
|
|
source <(sudo /home/admin/config.scripts/bonus.btc-rpc-explorer.sh status 2>/dev/null)
|
|
if [ ${#error} -gt 0 ]; then
|
|
appInfoLine="ERROR BTC-RPC-Explorer: ${error} (try restart)"
|
|
elif [ "${isIndexed}" = "0" ]; then
|
|
appInfoLine="BTC-RPC-Explorer: ${indexInfo}"
|
|
fi
|
|
fi
|
|
|
|
if [ ${#appInfoLine} -gt 0 ]; then
|
|
echo "${appInfoLine}"
|
|
fi
|
|
|
|
fi
|
|
|