mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-24 14:51:03 +01:00
454 lines
14 KiB
Bash
Executable file
454 lines
14 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# get raspiblitz config
|
|
echo "get raspiblitz config"
|
|
source /home/admin/raspiblitz.info
|
|
source /mnt/hdd/raspiblitz.conf
|
|
|
|
echo "services default values"
|
|
if [ ${#autoPilot} -eq 0 ]; then autoPilot="off"; fi
|
|
if [ ${#autoUnlock} -eq 0 ]; then autoUnlock="off"; fi
|
|
if [ ${#runBehindTor} -eq 0 ]; then runBehindTor="off"; fi
|
|
if [ ${#autoNatDiscovery} -eq 0 ]; then autoNatDiscovery="off"; fi
|
|
if [ ${#networkUPnP} -eq 0 ]; then networkUPnP="off"; fi
|
|
if [ ${#touchscreen} -eq 0 ]; then touchscreen=0; fi
|
|
if [ ${#lcdrotate} -eq 0 ]; then lcdrotate=0; fi
|
|
if [ ${#zerotier} -eq 0 ]; then zerotier="off"; fi
|
|
if [ ${#circuitbreaker} -eq 0 ]; then circuitbreaker="off"; fi
|
|
|
|
echo "# map LND to on/off"
|
|
lndNode="off"
|
|
if [ "${lightning}" == "lnd" ] || [ "${lnd}" == "on" ]; then
|
|
lndNode="on"
|
|
fi
|
|
|
|
echo "# map CLN to on/off"
|
|
clnNode="off"
|
|
if [ "${lightning}" == "cln" ] || [ "${cln}" == "on" ]; then
|
|
clnNode="on"
|
|
fi
|
|
|
|
echo "# map dropboxbackup to on/off"
|
|
DropboxBackup="off"
|
|
if [ ${#dropboxBackupTarget} -gt 0 ]; then DropboxBackup="on"; fi
|
|
|
|
echo "# map localbackup to on/off"
|
|
LocalBackup="off"
|
|
if [ ${#localBackupDeviceUUID} -gt 0 ] && [ "${localBackupDeviceUUID}" != "off" ]; then LocalBackup="on"; fi
|
|
|
|
echo "# map zerotier to on/off"
|
|
zerotierSwitch="off"
|
|
if [ "${zerotier}" != "off" ]; then zerotierSwitch="on"; fi
|
|
|
|
echo "# map parallel testnets to on/off"
|
|
parallelTestnets="off"
|
|
if [ "${testnet}" == "on"] || [ "${signet}" == "on" ]; then
|
|
parallelTestnets="on"
|
|
fi
|
|
|
|
echo "# map domain to on/off"
|
|
domainValue="off"
|
|
dynDomainMenu='DynamicDNS'
|
|
if [ ${#dynDomain} -gt 0 ]; then
|
|
domainValue="on"
|
|
dynDomainMenu="${dynDomain}"
|
|
fi
|
|
|
|
echo "# map lcdrotate to on/off"
|
|
lcdrotateMenu='off'
|
|
if [ ${lcdrotate} -gt 0 ]; then
|
|
lcdrotateMenu='on'
|
|
fi
|
|
|
|
echo "# map touchscreen to on/off"
|
|
touchscreenMenu='off'
|
|
if [ ${touchscreen} -gt 0 ]; then
|
|
touchscreenMenu='on'
|
|
fi
|
|
|
|
echo "# map autopilot to on/off"
|
|
lndAutoPilotOn=$(sudo cat /mnt/hdd/lnd/lnd.conf 2>/dev/null | grep -c 'autopilot.active=1')
|
|
if [ ${lndAutoPilotOn} -eq 1 ]; then
|
|
autoPilot="on"
|
|
else
|
|
autoPilot="off"
|
|
fi
|
|
|
|
echo "# map keysend to on/off"
|
|
keysend="on"
|
|
source <(sudo /home/admin/config.scripts/lnd.keysend.sh status)
|
|
if [ ${keysendOn} -eq 0 ]; then
|
|
keysend="off"
|
|
fi
|
|
|
|
# show select dialog
|
|
echo "run dialog ..."
|
|
|
|
# BASIC MENU INFO
|
|
OPTIONS=()
|
|
|
|
# LCD options (only when running with LCD screen)
|
|
if [ "${displayClass}" == "lcd" ]; then
|
|
OPTIONS+=(s 'Touchscreen' ${touchscreenMenu})
|
|
OPTIONS+=(r 'LCD Rotate' ${lcdrotateMenu})
|
|
fi
|
|
|
|
# Important basic options
|
|
OPTIONS+=(t 'Run behind Tor' ${runBehindTor})
|
|
OPTIONS+=(z 'ZeroTier' ${zerotierSwitch})
|
|
|
|
if [ ${#runBehindTor} -eq 0 ] || [ "${runBehindTor}" = "off" ]; then
|
|
OPTIONS+=(y ${dynDomainMenu} ${domainValue})
|
|
OPTIONS+=(b 'BTC UPnP (AutoNAT)' ${networkUPnP})
|
|
fi
|
|
OPTIONS+=(p 'Parallel Testnet/Signet' ${parallelTestnets})
|
|
|
|
# LND & options (only when running LND)
|
|
OPTIONS+=(m 'LND LIGHTNING LABS NODE' ${lndNode})
|
|
if [ "${lndNode}" == "on" ]; then
|
|
OPTIONS+=(a '-LND Channel Autopilot' ${autoPilot})
|
|
OPTIONS+=(k '-LND Accept Keysend' ${keysend})
|
|
OPTIONS+=(c '-LND Circuitbreaker (firewall)' ${circuitbreaker})
|
|
OPTIONS+=(u '-LND Auto-Unlock' ${autoUnlock})
|
|
OPTIONS+=(d '-LND StaticChannelBackup DropBox' ${DropboxBackup})
|
|
OPTIONS+=(e '-LND StaticChannelBackup USB Drive' ${LocalBackup})
|
|
OPTIONS+=(l '-LND UPnP (AutoNAT)' ${autoNatDiscovery})
|
|
fi
|
|
|
|
# C-Lightning & options/PlugIns
|
|
OPTIONS+=(n 'CLN C-LIGHTNING NODE' ${clnNode})
|
|
|
|
CHOICE_HEIGHT=$(("${#OPTIONS[@]}/2+1"))
|
|
HEIGHT=$((CHOICE_HEIGHT+6))
|
|
CHOICES=$(dialog --title ' Node Settings & Options ' --checklist ' use spacebar to activate/de-activate ' $HEIGHT 45 $CHOICE_HEIGHT "${OPTIONS[@]}" 2>&1 >/dev/tty)
|
|
dialogcancel=$?
|
|
clear
|
|
|
|
# check if user canceled dialog
|
|
echo "dialogcancel(${dialogcancel}) (${CHOICE_HEIGHT})"
|
|
if [ ${dialogcancel} -eq 1 ]; then
|
|
echo "user canceled"
|
|
exit 0
|
|
elif [ ${dialogcancel} -eq 255 ]; then
|
|
echo "ESC pressed"
|
|
exit 0
|
|
fi
|
|
|
|
needsReboot=0
|
|
anychange=0
|
|
|
|
# LND AUTOPILOT process choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "a")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${autoPilot}" != "${choice}" ] && [ "${lndNode}" == "on" ]; then
|
|
echo "Autopilot Setting changed .."
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/lnd.autopilot.sh ${choice}
|
|
needsReboot=1
|
|
else
|
|
echo "Autopilot Setting unchanged."
|
|
fi
|
|
|
|
# Dynamic Domain
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "y")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${domainValue}" != "${choice}" ]; then
|
|
echo "Dynamic Domain changed .."
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/internet.dyndomain.sh ${choice}
|
|
needsReboot=1
|
|
else
|
|
echo "Dynamic Domain unchanged."
|
|
fi
|
|
|
|
# UPnP
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "b")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${networkUPnP}" != "${choice}" ]; then
|
|
echo "BTC UPnP Setting changed .."
|
|
anychange=1
|
|
if [ "${choice}" = "on" ]; then
|
|
echo "Starting BTC UPNP ..."
|
|
/home/admin/config.scripts/network.upnp.sh on
|
|
networkUPnP="on"
|
|
needsReboot=1
|
|
else
|
|
echo "Stopping BTC UPNP ..."
|
|
/home/admin/config.scripts/network.upnp.sh off
|
|
networkUPnP="off"
|
|
needsReboot=1
|
|
fi
|
|
else
|
|
echo "BTC UPnP Setting unchanged."
|
|
fi
|
|
|
|
# LND AutoNAT
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "l")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${autoNatDiscovery}" != "${choice}" ] && [ "${lndNode}" == "on" ]; then
|
|
echo "AUTO NAT Setting changed .."
|
|
anychange=1
|
|
if [ "${choice}" = "on" ]; then
|
|
echo "Starting autoNAT ..."
|
|
/home/admin/config.scripts/lnd.autonat.sh on
|
|
autoNatDiscovery="on"
|
|
needsReboot=1
|
|
else
|
|
echo "Stopping autoNAT ..."
|
|
/home/admin/config.scripts/lnd.autonat.sh off
|
|
autoNatDiscovery="off"
|
|
needsReboot=1
|
|
fi
|
|
else
|
|
echo "LND AUTONAT Setting unchanged."
|
|
fi
|
|
|
|
# Tor process choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "t")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${runBehindTor}" != "${choice}" ]; then
|
|
echo "Tor Setting changed .."
|
|
|
|
# special actions if Tor is turned on
|
|
if [ "${choice}" = "on" ]; then
|
|
|
|
# inform user about privacy risk
|
|
whiptail --title " PRIVACY NOTICE " --msgbox "
|
|
RaspiBlitz will now install/activate Tor & after reboot run behind it.
|
|
|
|
Please keep in mind that thru your LND node id & your previous IP history with your internet provider your lightning node could still be linked to your personal id even when running behind Tor. To unlink you from that IP history its recommended that after the switch/reboot to Tor you also use the REPAIR > RESET-LND option to create a fresh LND wallet. That might involve closing all channels & move your funds out of RaspiBlitz before that RESET-LND.
|
|
" 16 76
|
|
|
|
# make sure AutoNAT & UPnP is off
|
|
/home/admin/config.scripts/lnd.autonat.sh off
|
|
/home/admin/config.scripts/network.upnp.sh off
|
|
fi
|
|
|
|
# change Tor
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/internet.tor.sh ${choice}
|
|
needsReboot=1
|
|
|
|
else
|
|
echo "Tor Setting unchanged."
|
|
fi
|
|
|
|
# LND Auto-Unlock
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "u")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${autoUnlock}" != "${choice}" ] && [ "${lndNode}" == "on" ]; then
|
|
echo "LND Autounlock Setting changed .."
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/lnd.autounlock.sh ${choice}
|
|
if [ $? -eq 0 ]; then
|
|
l1="AUTO-UNLOCK IS NOW OFF"
|
|
if [ "${choice}" = "on" ]; then
|
|
l1="AUTO-UNLOCK IS NOW ACTIVE"
|
|
fi
|
|
dialog --title 'OK' --msgbox "\n${l1}\n" 9 50
|
|
needsReboot=1
|
|
fi
|
|
else
|
|
echo "LND Autounlock Setting unchanged."
|
|
fi
|
|
|
|
# lcd rotate
|
|
choice="0"; check=$(echo "${CHOICES}" | grep -c "r")
|
|
if [ ${check} -eq 1 ]; then choice="1"; fi
|
|
if [ "${lcdrotate}" != "${choice}" ]; then
|
|
echo "LCD Rotate Setting changed .."
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/blitz.display.sh rotate ${choice}
|
|
needsReboot=1
|
|
else
|
|
echo "LCD Rotate Setting unchanged."
|
|
fi
|
|
|
|
# touchscreen
|
|
choice="0"; check=$(echo "${CHOICES}" | grep -c "s")
|
|
if [ ${check} -eq 1 ]; then choice="1"; fi
|
|
if [ "${touchscreen}" != "${choice}" ]; then
|
|
echo "Touchscreen Setting changed .."
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/blitz.touchscreen.sh ${choice}
|
|
if [ "${choice}" == "1" ]; then
|
|
dialog --title 'Touchscreen Activated' --msgbox 'Touchscreen was activated - will reboot.\n\nAfter reboot use the SCREEN option in main menu to calibrate the touchscreen.' 9 48
|
|
fi
|
|
needsReboot=1
|
|
else
|
|
echo "Touchscreen Setting unchanged."
|
|
fi
|
|
|
|
# LND circuitbreaker
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "c")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${circuitbreaker}" != "${choice}" ] && [ "${lndNode}" == "on" ]; then
|
|
echo "Circuitbreaker Setting changed .."
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/bonus.circuitbreaker.sh ${choice}
|
|
else
|
|
echo "Circuitbreaker Setting unchanged."
|
|
fi
|
|
|
|
# LND DropBox process choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "d")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${DropboxBackup}" != "${choice}" ] && [ "${lndNode}" == "on" ]; then
|
|
echo "DropBox Setting changed .."
|
|
anychange=1
|
|
sudo -u admin /home/admin/config.scripts/dropbox.upload.sh ${choice}
|
|
if [ "${choice}" = "on" ]; then
|
|
# doing initial upload so that user can see result
|
|
source /mnt/hdd/raspiblitz.conf
|
|
sudo /home/admin/config.scripts/dropbox.upload.sh upload ${dropboxBackupTarget} /mnt/hdd/lnd/data/chain/${network}/${chain}net/channel.backup
|
|
fi
|
|
else
|
|
echo "Dropbox backup setting unchanged."
|
|
fi
|
|
|
|
# LocalBackup process choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "e")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${LocalBackup}" != "${choice}" ]; then
|
|
echo "BackupdDevice Setting changed .."
|
|
anychange=1
|
|
sudo /home/admin/config.scripts/blitz.backupdevice.sh ${choice}
|
|
else
|
|
echo "BackupdDevice setting unchanged."
|
|
fi
|
|
|
|
# LND Keysend process choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "k")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${keysend}" != "${choice}" ] && [ "${lndNode}" == "on" ]; then
|
|
echo "keysend setting changed .."
|
|
anychange=1
|
|
needsReboot=1
|
|
sudo -u admin /home/admin/config.scripts/lnd.keysend.sh ${choice}
|
|
dialog --msgbox "Accept Keysend is now ${choice} after Reboot." 5 46
|
|
else
|
|
echo "keysend setting unchanged."
|
|
fi
|
|
|
|
# ZeroTier process choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "z")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${zerotierSwitch}" != "${choice}" ]; then
|
|
echo "zerotier setting changed .."
|
|
anychange=1
|
|
error=""
|
|
source <(sudo -u admin /home/admin/config.scripts/bonus.zerotier.sh ${choice})
|
|
if [ "${choice}" == "on" ]; then
|
|
if [ ${#error} -eq 0 ]; then
|
|
dialog --msgbox "Your RaspiBlitz joined the ZeroTier network." 6 46
|
|
else
|
|
if [ "${error}" != "cancel" ]; then
|
|
dialog --msgbox "ZeroTier Error:\n${error}" 8 46
|
|
fi
|
|
fi
|
|
else
|
|
dialog --msgbox "ZeroTier is now OFF." 5 46
|
|
fi
|
|
|
|
else
|
|
echo "ZeroTier setting unchanged."
|
|
fi
|
|
|
|
# LND choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "m")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${lndNode}" != "${choice}" ]; then
|
|
anychange=1
|
|
echo "# LND NODE Setting changed .."
|
|
if [ "${choice}" = "on" ]; then
|
|
echo "# turning ON"
|
|
/home/admin/config.scripts/lnd.install.sh on mainnet
|
|
if [ "${testnet}" == "on" ]; then
|
|
/home/admin/config.scripts/lnd.install.sh on testnet
|
|
fi
|
|
if [ "${signet}" == "on" ]; then
|
|
/home/admin/config.scripts/lnd.install.sh on signet
|
|
fi
|
|
else
|
|
echo "# turning OFF"
|
|
/home/admin/config.scripts/lnd.install.sh off mainnet
|
|
/home/admin/config.scripts/lnd.install.sh off testnet
|
|
/home/admin/config.scripts/lnd.install.sh off signet
|
|
fi
|
|
else
|
|
echo "LND NODE setting unchanged."
|
|
fi
|
|
|
|
# CLN choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "n")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${clnNode}" != "${choice}" ]; then
|
|
anychange=1
|
|
echo "# C-Lightning NODE Setting changed .."
|
|
if [ "${choice}" = "on" ]; then
|
|
echo "# turning ON"
|
|
/home/admin/config.scripts/cln.install.sh on mainnet
|
|
sudo /home/admin/config.scripts/cln.install.sh display-seed mainnet
|
|
if [ "${testnet}" == "on" ]; then
|
|
/home/admin/config.scripts/cln.install.sh on testnet
|
|
fi
|
|
if [ "${signet}" == "on" ]; then
|
|
/home/admin/config.scripts/cln.install.sh on signet
|
|
fi
|
|
else
|
|
echo "# turning OFF"
|
|
/home/admin/config.scripts/cln.install.sh off mainnet
|
|
/home/admin/config.scripts/cln.install.sh off testnet
|
|
/home/admin/config.scripts/cln.install.sh off signet
|
|
fi
|
|
else
|
|
echo "C-Lightning NODE setting unchanged."
|
|
fi
|
|
|
|
# parallel testnet process choice
|
|
choice="off"; check=$(echo "${CHOICES}" | grep -c "p")
|
|
if [ ${check} -eq 1 ]; then choice="on"; fi
|
|
if [ "${testnet}" != "${choice}" ]; then
|
|
echo "# Parallel Testnets Setting changed .."
|
|
anychange=1
|
|
if [ "${choice}" = "on" ]; then
|
|
/home/admin/config.scripts/bitcoin.install.sh on testnet
|
|
/home/admin/config.scripts/bitcoin.install.sh on signet
|
|
if [ "${lightning}" == "lnd" ] || [ "${lnd}" == "on" ]; then
|
|
/home/admin/config.scripts/lnd.install.sh on testnet
|
|
/home/admin/config.scripts/lnd.install.sh on signet
|
|
fi
|
|
if [ "${lightning}" == "cln" ] || [ "${cln}" == "on" ]; then
|
|
/home/admin/config.scripts/cln.install.sh on testnet
|
|
/home/admin/config.scripts/cln.install.sh on signet
|
|
fi
|
|
else
|
|
# just turn al lightning testnets off (even if not on before)
|
|
/home/admin/config.scripts/lnd.install.sh off testnet
|
|
/home/admin/config.scripts/lnd.install.sh off signet
|
|
/home/admin/config.scripts/cln.install.sh off testnet
|
|
/home/admin/config.scripts/cln.install.sh off signet
|
|
/home/admin/config.scripts/bitcoin.install.sh off testnet
|
|
/home/admin/config.scripts/bitcoin.install.sh off signet
|
|
fi
|
|
# make sure to reboot - nodes that people activate testnets can take a reboot
|
|
needsReboot=1
|
|
else
|
|
echo "# Testnet Setting unchanged."
|
|
fi
|
|
|
|
if [ ${anychange} -eq 0 ]; then
|
|
dialog --msgbox "NOTHING CHANGED!\nUse Spacebar to check/uncheck services." 8 58
|
|
exit 0
|
|
fi
|
|
|
|
if [ ${needsReboot} -eq 1 ]; then
|
|
sleep 2
|
|
dialog --pause "OK. System will reboot to activate changes." 8 58 8
|
|
clear
|
|
echo "rebooting .. (please wait)"
|
|
# stop bitcoind
|
|
sudo -u bitcoin ${network}-cli stop
|
|
sleep 4
|
|
sudo /home/admin/config.scripts/blitz.shutdown.sh reboot
|
|
fi
|