mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-25 23:21:13 +01:00
203 lines
No EOL
6.5 KiB
Bash
Executable file
203 lines
No EOL
6.5 KiB
Bash
Executable file
#!/bin/bash
|
|
_temp=$(mktemp -p /dev/shm/)
|
|
|
|
## get basic info
|
|
source /home/admin/raspiblitz.info
|
|
|
|
# set place where zipped TAR file gets stored on migration dialog
|
|
defaultZipPath="/mnt/hdd/temp"
|
|
|
|
# prepare the config file (what will later become the raspiblitz.config)
|
|
source /home/admin/_version.info
|
|
CONFIGFILE="/home/admin/raspiblitz.config.tmp"
|
|
rm $CONFIGFILE 2>/dev/null
|
|
echo "# RASPIBLITZ CONFIG FILE" > $CONFIGFILE
|
|
echo "raspiBlitzVersion='${codeVersion}'" >> $CONFIGFILE
|
|
echo "lcdrotate=1" >> $CONFIGFILE
|
|
|
|
# prepare the setup file (that constains info just needed for the rest of setup process)
|
|
SETUPFILE="/home/admin/raspiblitz.setup.tmp"
|
|
rm $SETUPFILE 2>/dev/null
|
|
echo "# RASPIBLITZ SETUP FILE" > $SETUPFILE
|
|
|
|
# choose blockchain or select migration
|
|
OPTIONS=()
|
|
OPTIONS+=(BITCOIN "Setup BITCOIN and Lightning (DEFAULT)")
|
|
OPTIONS+=(LITECOIN "Setup LITECOIN and Lightning (EXPERIMENTAL)")
|
|
OPTIONS+=(MIGRATION "Upload a Migration File from old RaspiBlitz")
|
|
CHOICE=$(dialog --clear \
|
|
--backtitle "RaspiBlitz ${codeVersion} - Setup" \
|
|
--title "⚡ Welcome to your RaspiBlitz ⚡" \
|
|
--menu "\nChoose how you want to setup your RaspiBlitz: \n " \
|
|
12 64 6 \
|
|
"${OPTIONS[@]}" \
|
|
2>&1 >/dev/tty)
|
|
clear
|
|
network=""
|
|
migration=""
|
|
case $CHOICE in
|
|
CLOSE)
|
|
# TODO: check if case every comes up
|
|
echo "CLOSE"
|
|
exit 1;
|
|
;;
|
|
BITCOIN)
|
|
network="bitcoin"
|
|
echo "network=bitcoin" >> $CONFIGFILE
|
|
;;
|
|
LITECOIN)
|
|
network="litecoin"
|
|
echo "network=litecoin" >> $CONFIGFILE
|
|
;;
|
|
MIGRATION)
|
|
migration="raspiblitz"
|
|
echo "migration=raspiblitz" >> $SETUPFILE
|
|
;;
|
|
esac
|
|
|
|
# IMPORT MIGRATION DIALOG
|
|
# if fails then restart the complete provision dialog
|
|
if [ "${migration}" == "raspiblitz" ]; then
|
|
|
|
# make sure that temp directory exists and can be written by admin
|
|
sudo mkdir -p ${defaultZipPath}
|
|
sudo chmod 777 -R ${defaultZipPath}
|
|
|
|
clear
|
|
echo
|
|
echo "*****************************"
|
|
echo "* UPLOAD THE MIGRATION FILE *"
|
|
echo "*****************************"
|
|
echo "If you have a migration file on your laptop you can now"
|
|
echo "upload it and restore on the new HDD/SSD."
|
|
echo
|
|
echo "ON YOUR LAPTOP open a new terminal and change into"
|
|
echo "the directory where your migration file is and"
|
|
echo "COPY, PASTE AND EXECUTE THE FOLLOWING COMMAND:"
|
|
echo "scp -r ./raspiblitz-*.tar.gz admin@${localip}:${defaultZipPath}"
|
|
echo ""
|
|
echo "Use password 'raspiblitz' to authenticate file transfer."
|
|
echo "PRESS ENTER when upload is done."
|
|
read key
|
|
|
|
countZips=$(sudo ls ${defaultZipPath}/raspiblitz-*.tar.gz 2>/dev/null | grep -c 'raspiblitz-')
|
|
|
|
# in case no upload found
|
|
if [ ${countZips} -eq 0 ]; then
|
|
echo
|
|
echo "FAIL: Was not able to detect uploaded file in ${defaultZipPath}"
|
|
echo "error='no file found'"
|
|
sleep 3
|
|
/home/admin/00provisionDialog.sh
|
|
exit 1
|
|
fi
|
|
|
|
# in case of multiple files
|
|
if [ ${countZips} -gt 1 ]; then
|
|
echo
|
|
echo "# FAIL: Multiple possible files detected in ${defaultZipPath}"
|
|
echo "error='multiple files'"
|
|
sleep 3
|
|
/home/admin/00provisionDialog.sh
|
|
exit 1
|
|
fi
|
|
|
|
# unzip migration file and check
|
|
echo
|
|
echo "OK: Upload found in ${defaultZipPath} - restoring data ... (please wait)"
|
|
source <(sudo /home/admin/config.scripts/blitz.migration.sh "import")
|
|
if [ ${#error} -gt 0 ]; then
|
|
echo
|
|
echo "# FAIL: Was not able to restore data"
|
|
echo "error='${error}'"
|
|
sleep 3
|
|
/home/admin/00provisionDialog.sh
|
|
exit 1
|
|
fi
|
|
|
|
echo
|
|
echo "OK: Migration data was imported - will now recover/restore RaspiBlitz with this data"
|
|
echo "PRESS ENTER TO CONTINUE"
|
|
read key
|
|
exit 0
|
|
fi
|
|
|
|
|
|
###################
|
|
# ENTER NAME
|
|
###################
|
|
|
|
# welcome and ask for name of RaspiBlitz
|
|
result=""
|
|
while [ ${#result} -eq 0 ]
|
|
do
|
|
l1="Please enter the name of your new RaspiBlitz:\n"
|
|
l2="one word, keep characters basic & not too long"
|
|
dialog --backtitle "RaspiBlitz - Setup (${network}/${chain})" --inputbox "$l1$l2" 11 52 2>$_temp
|
|
result=$( cat $_temp | tr -dc '[:alnum:]-.' | tr -d ' ' )
|
|
shred -u $_temp
|
|
echo "processing ..."
|
|
sleep 3
|
|
done
|
|
|
|
# set lightning alias
|
|
sed -i "s/^alias=.*/alias=${result}/g" /home/admin/assets/lnd.${network}.conf
|
|
|
|
# store hostname for later - to be set right before the next reboot
|
|
# work around - because without a reboot the hostname seems not updates in the whole system
|
|
valueExistsInInfoFile=$(sudo cat /home/admin/raspiblitz.info | grep -c "hostname=")
|
|
if [ ${valueExistsInInfoFile} -eq 0 ]; then
|
|
# add
|
|
echo "hostname=${result}" >> /home/admin/raspiblitz.info
|
|
else
|
|
# update
|
|
sed -i "s/^hostname=.*/hostname=${result}/g" /home/admin/raspiblitz.info
|
|
fi
|
|
|
|
###################
|
|
# ENTER PASSWORDS
|
|
###################
|
|
|
|
# show password info dialog
|
|
dialog --backtitle "RaspiBlitz - Setup (${network}/${chain})" --msgbox "RaspiBlitz uses 4 different passwords.
|
|
Referenced as password A, B, C and D.
|
|
|
|
A) Master User Password
|
|
B) Blockchain RPC Password
|
|
C) LND Wallet Password
|
|
D) LND Seed Password
|
|
|
|
Choose now 4 new passwords - all min 8 chars,
|
|
no spaces and only special characters - or .
|
|
Write them down & store them in a safe place.
|
|
" 15 52
|
|
|
|
# call set password a script
|
|
sudo /home/admin/config.scripts/blitz.setpassword.sh a
|
|
|
|
# sucess info dialog
|
|
dialog --backtitle "RaspiBlitz" --msgbox "OK - password A was set\nfor all users pi, admin, root & bitcoin" 6 52
|
|
|
|
# call set password b script
|
|
sudo /home/admin/config.scripts/blitz.setpassword.sh b
|
|
|
|
# success info dialog
|
|
dialog --backtitle "RaspiBlitz" --msgbox "OK - RPC password changed \n\nNow starting the Setup of your RaspiBlitz." 7 52
|
|
|
|
###################
|
|
# TOR BY DEFAULT
|
|
# https://github.com/rootzoll/raspiblitz/issues/592
|
|
#
|
|
###################
|
|
echo "runBehindTor=on" >> /home/admin/raspiblitz.info
|
|
#whiptail --title ' Privacy Level - How do you want to run your node? ' --yes-button='Public IP' --no-button='TOR NETWORK' --yesno "Running your Lightning node with your Public IP is common and faster, but might reveal your personal identity and location.\n
|
|
#You can better protect your privacy with running your lightning node as a TOR Hidden Service from the start, but it can make it harder to connect with other non-TOR nodes and remote mobile apps later on.
|
|
# " 12 75
|
|
#if [ $? -eq 1 ]; then
|
|
# echo "runBehindTor=on" >> /home/admin/raspiblitz.info
|
|
#fi
|
|
|
|
# set SetupState
|
|
sudo sed -i "s/^setupStep=.*/setupStep=20/g" /home/admin/raspiblitz.info
|
|
|
|
clear |