mirror of
https://github.com/raspiblitz/raspiblitz.git
synced 2025-10-10 21:03:09 +02:00
305 lines
9.1 KiB
Bash
Executable File
305 lines
9.1 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# get basic system information
|
||
# these are the same set of infos the WebGUI dialog/controler has
|
||
source /home/admin/raspiblitz.info
|
||
# get values from cache
|
||
|
||
# SETUPFILE
|
||
# this key/value file contains the state during the setup process
|
||
SETUPFILE="/var/cache/raspiblitz/temp/raspiblitz.setup"
|
||
|
||
# init SETUPFILE & temp dir on mem drive
|
||
sudo mkdir /var/cache/raspiblitz/temp
|
||
sudo chown admin:admin /var/cache/raspiblitz/temp
|
||
sudo rm $SETUPFILE 2>/dev/null
|
||
echo "# RASPIBLITZ SETUP STATE" > $SETUPFILE
|
||
sudo chown admin:admin $SETUPFILE
|
||
sudo chmod 777 $SETUPFILE
|
||
|
||
source <(/home/admin/_cache.sh get dnsworking)
|
||
|
||
# remember original setupphase
|
||
orgSetupPhase="${setupPhase}"
|
||
|
||
############################################
|
||
# PRESETUP: SET DNS (just if needed)
|
||
if [ "${dnsworking}" == "0" ]; then
|
||
sudo /home/admin/config.scripts/internet.dns.sh test
|
||
fi
|
||
|
||
############################################
|
||
# QuickOption: Update
|
||
if [ "${setupPhase}" == "update" ]; then
|
||
# show update dialog
|
||
/home/admin/setup.scripts/dialogUpdate.sh
|
||
if [ "$?" == "0" ]; then
|
||
# proceed with provision (mark Password A to be set)
|
||
echo "# OK update process starting .."
|
||
echo "setPasswordA=1" >> $SETUPFILE
|
||
else
|
||
# default to normal setup options
|
||
/home/admin/_cache.sh set setupPhase "setup"
|
||
echo "# you refused recovery option - defaulting to normal setup menu"
|
||
fi
|
||
fi
|
||
|
||
############################################
|
||
# QuickOption: Recovery
|
||
if [ "${setupPhase}" == "recovery" ]; then
|
||
# show recovery dialog
|
||
/home/admin/setup.scripts/dialogRecovery.sh
|
||
if [ "$?" == "0" ]; then
|
||
# proceed with provision (mark Password A to be set)
|
||
echo "# OK recover process starting .."
|
||
echo "setPasswordA=1" >> $SETUPFILE
|
||
else
|
||
# default to normal setup options
|
||
/home/admin/_cache.sh set setupPhase "setup"
|
||
echo "# you refused recovery option - defaulting to normal setup menu"
|
||
fi
|
||
fi
|
||
|
||
############################################
|
||
# QuickOption: Migration from other node
|
||
if [ "${setupPhase}" == "migration" ]; then
|
||
|
||
source <(/home/admin/_cache.sh get system_setup_storageMigration)
|
||
|
||
# show recovery dialog
|
||
echo "# Starting migration dialog (${system_setup_storageMigration}) ..."
|
||
|
||
/home/admin/setup.scripts/dialogMigration.sh ${system_setup_storageMigration} "normal"
|
||
if [ "$?" == "0" ]; then
|
||
# mark migration to happen on provision
|
||
echo "migrationOS='${system_setup_storageMigration}'" >> $SETUPFILE
|
||
# user needs to reset password A, B & C
|
||
echo "setPasswordA=1" >> $SETUPFILE
|
||
echo "setPasswordB=1" >> $SETUPFILE
|
||
echo "setPasswordC=1" >> $SETUPFILE
|
||
else
|
||
# on cancel - default to normal setup
|
||
/home/admin/_cache.sh set setupPhase "setup"
|
||
echo "# you refused node migration option - defaulting to normal setup"
|
||
/home/admin/00raspiblitz.sh
|
||
exit 1
|
||
fi
|
||
|
||
fi
|
||
|
||
############################################
|
||
# Fix: BOOT ORDER CHANGE FAILED
|
||
source <(/home/admin/_cache.sh get system_setup_secondtry)
|
||
if [ "${system_setup_secondtry}" == "1" ]; then
|
||
whiptail --title " BOOT ORDER CHANGE FAILED? " --msgbox "
|
||
You already ran a setup/recover and copied the system to SSD/NVMe. But it booted again from the old install medium. To fix it:
|
||
|
||
Press OK
|
||
Wait until shutdown.
|
||
Remove install medium.
|
||
Power up again." 16 50
|
||
sudo shutdown now
|
||
exit 1
|
||
fi
|
||
|
||
# fresh import setup values
|
||
source /home/admin/raspiblitz.info
|
||
|
||
############################################
|
||
# DEFAULT: Basic Setup menu
|
||
# user might default to from quick options
|
||
if [ "${setupPhase}" = "setup" ]; then
|
||
|
||
echo "# Starting basic setup dialog ..."
|
||
/home/admin/setup.scripts/dialogBasicSetup.sh ${orgSetupPhase}
|
||
menuresult=$?
|
||
|
||
# menu RECOVER menu option
|
||
if [ "${menuresult}" = "4" ]; then
|
||
setupPhase="${orgSetupPhase}"
|
||
/home/admin/_cache.sh set setupPhase "${setupPhase}"
|
||
# proceed with provision (mark Password A to be set)
|
||
echo "# OK update process starting .."
|
||
echo "setPasswordA=1" >> $SETUPFILE
|
||
fi
|
||
|
||
# menu MIGRATE menu option
|
||
if [ "${menuresult}" == "5" ]; then
|
||
setupPhase="${orgSetupPhase}"
|
||
/home/admin/_cache.sh set setupPhase "${setupPhase}"
|
||
# mark migration to happen on provision
|
||
echo "migrationOS='${hddGotMigrationData}'" >> $SETUPFILE
|
||
# user needs to reset password A, B & C
|
||
echo "setPasswordA=1" >> $SETUPFILE
|
||
echo "setPasswordB=1" >> $SETUPFILE
|
||
echo "setPasswordC=1" >> $SETUPFILE
|
||
fi
|
||
|
||
# exit to terminal
|
||
if [ "${menuresult}" == "3" ]; then
|
||
/home/admin/_cache.sh set setupPhase "${orgSetupPhase}"
|
||
exit 1
|
||
fi
|
||
|
||
# shutdown without changes
|
||
if [ "${menuresult}" == "2" ]; then
|
||
sudo shutdown now
|
||
exit 0
|
||
fi
|
||
|
||
###############################################
|
||
# FORMAT DRIVE on NEW SETUP or MIGRATION UPLOAD
|
||
if [ "${menuresult}" == "0" ] || [ "${menuresult}" == "1" ]; then
|
||
|
||
source <(/home/admin/_cache.sh get system_setup_askSystemCopy system_setup_bootFromStorage system_setup_combinedDataStorage)
|
||
|
||
if [ "${system_setup_askSystemCopy}" == "1" ]; then
|
||
# ask user about system copy
|
||
/home/admin/setup.scripts/dialogSystemCopy.sh
|
||
userChoice=$?
|
||
if [ "${userChoice}" == "0" ]; then
|
||
echo "systemCopy=1" >> $SETUPFILE
|
||
else
|
||
echo "systemCopy=0" >> $SETUPFILE
|
||
fi
|
||
fi
|
||
|
||
source <(/home/admin/_cache.sh get system_setup_storageMigration system_setup_storageBlockchainGB)
|
||
|
||
# only offer 'keep blockchain' option on systems that dont boot from storage
|
||
existingBlockchain=""
|
||
if [ "${system_setup_bootFromStorage}" == "0" ]; then
|
||
if [ "${system_setup_storageBlockchainGB}" != "" ] || [ "${system_setup_storageBlockchainGB}" != "0" ]; then
|
||
existingBlockchain="BITCOIN"
|
||
fi
|
||
fi
|
||
|
||
# ask user about possible existing blockchain and formatting HDD
|
||
/home/admin/setup.scripts/dialogDeleteData.sh "${existingBlockchain}"
|
||
userChoice=$?
|
||
if [ "${userChoice}" == "1" ]; then
|
||
|
||
echo "deleteData='all'" >> $SETUPFILE
|
||
|
||
elif [ "${userChoice}" == "2" ]; then
|
||
|
||
echo "deleteData='keepBlockchain'" >> $SETUPFILE
|
||
|
||
else
|
||
|
||
# STOP SETUP - loop back to setup menu start
|
||
exit 0
|
||
|
||
fi
|
||
|
||
fi
|
||
|
||
############################################
|
||
# UPLOAD MIGRATION
|
||
if [ "${menuresult}" == "1" ]; then
|
||
|
||
#/home/admin/setup.scripts/dialogMigration.sh raspiblitz
|
||
#if [ "$?" == "1" ]; then
|
||
# # upload did not worked .. exit with 0 to restart process from outside loop
|
||
# echo "Upload failed ... return to menu"
|
||
# sleep 2
|
||
# exit 0
|
||
#fi
|
||
|
||
echo "uploadMigration=1" >> $SETUPFILE
|
||
echo "setPasswordA=1" >> $SETUPFILE
|
||
fi
|
||
|
||
############################################
|
||
# FRESH SETUP
|
||
if [ "${menuresult}" == "0" ]; then
|
||
|
||
# user needs to set all passwords (defaults)
|
||
echo "setPasswordA=1" >> $SETUPFILE
|
||
echo "setPasswordB=1" >> $SETUPFILE
|
||
echo "setPasswordC=1" >> $SETUPFILE
|
||
|
||
############################################
|
||
# Setting Name for Node
|
||
|
||
echo "# Starting name dialog ..."
|
||
/home/admin/setup.scripts/dialogName.sh
|
||
|
||
############################################
|
||
# Choosing Blockchain & Lightning
|
||
|
||
echo "# Starting Blockchain & Lightning selection ..."
|
||
/home/admin/setup.scripts/dialogBlockchainLightning.sh
|
||
if [ "$?" == "1" ]; then
|
||
# exit with 0 to restart process from outside loop
|
||
exit 0
|
||
fi
|
||
|
||
############################################
|
||
# Lightning Wallet (new or restore) do this before passwords
|
||
# because password C not needed if LND rescue file is uploaded
|
||
|
||
lightningWalletDone=0
|
||
source ${SETUPFILE}
|
||
if [ "${lightning}" == "none" ]; then
|
||
lightningWalletDone=1
|
||
# also disable asking for password c if no lightning implementation was chosen
|
||
sed -i "s/^setPasswordC=.*/setPasswordC=0/g" ${SETUPFILE}
|
||
fi
|
||
while [ "${lightningWalletDone}" == "0" ]
|
||
do
|
||
|
||
if [ "${lightning}" == "lnd" ]; then
|
||
|
||
echo "# Starting lightning wallet dialog for LND ..."
|
||
/home/admin/setup.scripts/dialogLightningWallet-lnd.sh
|
||
dialogResult=$?
|
||
|
||
elif [ "${lightning}" == "cl" ]; then
|
||
|
||
echo "# Starting lightning wallet dialog for CORE LIGHTNING ..."
|
||
/home/admin/setup.scripts/dialogLightningWallet-cl.sh
|
||
dialogResult=$?
|
||
|
||
else
|
||
echo "FAIL: unknown lightning implementation (${lightning})"
|
||
lightningWalletDone=1
|
||
sleep 8
|
||
fi
|
||
|
||
# break loop only if a clean exit
|
||
if [ "${dialogResult}" == "0" ]; then
|
||
lightningWalletDone=1
|
||
fi
|
||
|
||
# allow user to cancel to terminal on dialog main menu
|
||
# all other cancels have other exit codes
|
||
if [ "${dialogResult}" == "1" ]; then
|
||
echo "# you selected cancel - sending exit code 1"
|
||
exit 1
|
||
fi
|
||
|
||
done
|
||
|
||
fi
|
||
|
||
fi
|
||
|
||
############################################
|
||
# Enter Passwords
|
||
# for fresh setup & migration
|
||
|
||
echo "# Starting passwords dialog ..."
|
||
sudo /home/admin/setup.scripts/dialogPasswords.sh || exit 1
|
||
|
||
# check if password A is set
|
||
source ${SETUPFILE}
|
||
if [ "${passwordA}" == "" ]; then
|
||
/home/admin/config.scripts/blitz.error.sh $(basename "$0") "missing-passworda-1" "missing passwordA(1) in (${SETUPFILE}) after dialogPasswords.sh" ""
|
||
exit 1
|
||
fi
|
||
|
||
# set flag for bootstrap process to kick-off provision process
|
||
/home/admin/_cache.sh set state "waitprovision"
|
||
|
||
clear |