2019-06-19 00:06:05 +02:00
#!/bin/bash
# get raspiblitz config
source /home/admin/raspiblitz.info
source /mnt/hdd/raspiblitz.conf
2019-06-27 22:20:31 +02:00
askBackupCopy( )
{
whiptail --title "LND Data Backup" --yes-button "Backup" --no-button "Skip" --yesno "
Before deleting your data, do you want
to make a backup of all your LND Data
and download that file to your laptop?
2019-06-19 00:06:05 +02:00
2019-06-27 22:20:31 +02:00
Download LND Data Backup now?
" 12 44
2019-06-19 00:55:16 +02:00
if [ $? -eq 0 ] ; then
clear
echo "*************************************"
echo "* PREPARING LND BACKUP DOWNLOAD"
echo "*************************************"
echo "please wait .."
sleep 2
/home/admin/config.scripts/lnd.rescue.sh backup
echo
2020-02-28 10:14:37 +01:00
echo "PRESS ENTER to continue once you are done downloading."
2019-06-19 00:55:16 +02:00
read key
else
clear
echo "*************************************"
2019-08-07 13:13:48 +02:00
echo "* JUST MAKING BACKUP TO SD CARD"
2019-06-19 00:55:16 +02:00
echo "*************************************"
echo "please wait .."
sleep 2
/home/admin/config.scripts/lnd.rescue.sh backup no-download
fi
2019-06-27 22:20:31 +02:00
}
infoResetSDCard( )
{
whiptail --title "RESET DONE" --msgbox "
OK Reset of HDD is done .
System will now shutdown.
To start fresh please write a fresh
RaspiBlitz image to your SD card.
" 12 40
}
2020-03-29 21:56:25 +02:00
copyHost( )
{
clear
2020-06-17 20:30:06 +02:00
echo
echo "# *** Copy Blockchain Source Modus ***"
2020-06-17 22:20:06 +02:00
2020-06-17 20:30:06 +02:00
echo "# get IP of RaspiBlitz to copy to ..."
targetIP = $( whiptail --inputbox "\nPlease enter the LOCAL IP of the\nRaspiBlitz to copy Blockchain to:" 10 38 "" --title " Target IP " --backtitle "RaspiBlitz - Copy Blockchain" 3>& 1 1>& 2 2>& 3)
2020-06-17 22:20:06 +02:00
targetIP = $( echo " ${ targetIP [0] } " )
2020-10-14 18:52:31 +02:00
localIP = $( ip addr | grep 'state UP' -A2 | egrep -v 'docker0|veth' | grep 'eth0\|wlan0\|enp0' | tail -n1 | awk '{print $2}' | cut -f1 -d'/' )
2020-06-17 22:23:01 +02:00
if [ ${# targetIP } -eq 0 ] ; then
return
fi
2020-06-17 22:20:06 +02:00
if [ " ${ localIP } " = = " ${ targetIP } " ] ; then
whiptail --msgbox "Dont type in the local IP of this RaspiBlitz,\nthe LOCAL IP of the other RaspiBlitz is needed." 8 54 "" --title " Testing Target IP " --backtitle "RaspiBlitz - Copy Blockchain"
return
fi
canPingIP = $( ping ${ targetIP } -c 1 | grep -c "1 received" )
if [ ${ canPingIP } -eq 0 ] ; then
whiptail --msgbox " Was not able to contact/ping: ${ targetIP } \n\n- check if IP of target RaspiBlitz is correct.\n- check to be on the same local network.\n- try again ... " 11 58 "" --title " Testing Target IP " --backtitle "RaspiBlitz - Copy Blockchain"
return
fi
echo "# get Password of RaspiBlitz to copy to ..."
2020-06-17 20:30:06 +02:00
targetPassword = $( whiptail --passwordbox "\nPlease enter the PASSWORD A of the\nRaspiBlitz to copy Blockchain to:" 10 38 "" --title "Target Password" --backtitle "RaspiBlitz - Copy Blockchain" 3>& 1 1>& 2 2>& 3)
2020-06-17 22:23:01 +02:00
if [ ${# targetPassword } -eq 0 ] ; then
return
fi
2020-07-24 18:01:53 +02:00
2020-11-30 14:14:49 +01:00
sudo rm /root/.ssh/known_hosts 2>/dev/null
2020-06-24 03:01:48 +02:00
canLogin = $( sudo sshpass -p " ${ targetPassword } " ssh -t -o StrictHostKeyChecking = no bitcoin@${ targetIP } "echo 'working'" 2>/dev/null | grep -c 'working' )
2020-06-17 22:23:01 +02:00
if [ ${ canLogin } -eq 0 ] ; then
2020-06-17 22:20:06 +02:00
whiptail --msgbox " Password was not working for IP: ${ targetIP } \n\n- check thats the correct IP for correct RaspiBlitz\n- check that you used PASSWORD A and had no typo\n- If you tried too often, wait 1h try again " 11 58 "" --title " Testing Target Password " --backtitle "RaspiBlitz - Copy Blockchain"
return
fi
2020-06-18 16:32:01 +02:00
echo "# stopping services ..."
2020-10-13 09:47:11 +02:00
sudo systemctl stop background
2020-06-17 22:52:43 +02:00
sudo systemctl stop lnd
sudo systemctl stop ${ network } d
sudo systemctl disable ${ network } d
2020-06-18 00:53:28 +02:00
sleep 5
sudo systemctl stop bitcoind 2>/dev/null
2020-06-17 22:33:45 +02:00
clear
echo
2020-06-17 22:52:43 +02:00
echo "# Starting copy over LAN (around 4-6 hours) ..."
sed -i "s/^state=.*/state=copysource/g" /home/admin/raspiblitz.info
2020-06-18 00:53:28 +02:00
cd /mnt/hdd/${ network }
2020-10-01 17:30:17 +02:00
# transfere beginning flag
2020-10-13 00:09:24 +02:00
date +%s > /home/admin/copy_begin.time
sudo sshpass -p " ${ targetPassword } " rsync -avhW -e 'ssh -o StrictHostKeyChecking=no -p 22' /home/admin/copy_begin.time bitcoin@${ targetIP } :/mnt/hdd/bitcoin
2020-10-13 00:14:06 +02:00
sudo rm -f /home/admin/copy_begin.time
2020-10-01 17:30:17 +02:00
2020-11-10 23:40:54 +01:00
# repeat the syncing of directories until
# a) there are no files left to transfere (be robust against failing connections, etc)
# b) the user hits a key to break loop after report
while :
do
# transfere blockchain data
rm -f ./transferred.rsync
sudo sshpass -p " ${ targetPassword } " rsync -avhW -e 'ssh -o StrictHostKeyChecking=no -p 22' --info= progress2 --log-file= ./transferred.rsync ./chainstate ./blocks bitcoin@${ targetIP } :/mnt/hdd/bitcoin
# check result
# the idea is even after successfull transfer the loop will run a second time
# but on the second time there will be no files transfered (log lines are below 4)
# thats the signal that its done
linesInLogFile = $( wc -l ./transferred.rsync | cut -d " " -f 1)
if [ ${ linesInLogFile } -lt 4 ] ; then
echo ""
echo "OK all files transfered. DONE"
sleep 2
break
fi
# wait 20 seconds for user exiting loop
echo ""
echo -en "OK on sync loop done ... will test in another if all was transferred."
echo -en "PRESS X TO MANUALLY FINISH SYNCING"
read -n 1 -t 6 keyPressed
if [ " ${ keyPressed } " = "x" ] ; then
echo ""
echo "Ending Sync ..."
sleep 2
break
fi
done
2020-10-01 17:30:17 +02:00
# transfere end flag
2020-11-10 23:40:54 +01:00
sed -i "s/^state=.*/state=/g" /home/admin/raspiblitz.info
2020-10-13 00:09:24 +02:00
date +%s > /home/admin/copy_end.time
sudo sshpass -p " ${ targetPassword } " rsync -avhW -e 'ssh -o StrictHostKeyChecking=no -p 22' /home/admin/copy_end.time bitcoin@${ targetIP } :/mnt/hdd/bitcoin
2020-10-13 00:14:06 +02:00
sudo rm -f /home/admin/copy_end.time
2020-10-01 17:30:17 +02:00
2020-06-18 16:32:01 +02:00
echo "# start services again ..."
2020-06-17 22:20:06 +02:00
sudo systemctl enable ${ network } d
sudo systemctl start ${ network } d
sudo systemctl start lnd
2020-10-13 09:47:11 +02:00
sudo systemctl start background
2020-06-17 22:20:06 +02:00
echo "# show final message"
whiptail --msgbox "OK - Copy Process Finished.\n\nNow check on the target RaspiBlitz if it was sucessful." 10 40 "" --title " DONE " --backtitle "RaspiBlitz - Copy Blockchain"
2020-06-17 20:30:06 +02:00
2020-03-29 21:56:25 +02:00
}
2020-09-29 12:35:22 +02:00
# when called with parameter "sourcemode"
if [ " $1 " = = "sourcemode" ] ; then
copyHost
raspiblitz
exit 0
fi
2019-06-27 22:20:31 +02:00
# Basic Options
2021-04-17 21:52:26 +02:00
#OPTIONS=(HARDWARE "Run Hardwaretest" \
OPTIONS = ( SOFTWARE "Run Softwaretest (DebugReport)" \
2020-02-14 13:12:57 +01:00
BACKUP-LND "Backup your LND data (Rescue-File)" \
2020-02-14 15:04:04 +01:00
MIGRATION "Migrate Blitz Data to new Hardware" \
2020-03-29 21:56:25 +02:00
COPY-SOURCE "Copy Blockchain Source Modus" \
2019-06-27 22:20:31 +02:00
RESET-CHAIN "Delete Blockchain & Re-Download" \
RESET-LND "Delete LND & start new node/wallet" \
RESET-HDD "Delete HDD Data but keep Blockchain" \
2020-05-01 21:40:25 +02:00
RESET-ALL "Delete HDD completly to start fresh" \
DELETE-ELEC "Delete Electrum Index" \
DELETE-INDEX "Delete Bitcoin Transaction-Index"
2019-06-27 22:20:31 +02:00
)
2019-06-19 00:55:16 +02:00
2020-05-02 21:30:06 +02:00
CHOICE = $( whiptail --clear --title "Repair Options" --menu "" 18 62 11 " ${ OPTIONS [@] } " 2>& 1 >/dev/tty)
2019-06-27 22:20:31 +02:00
clear
case $CHOICE in
2021-04-17 21:52:26 +02:00
# HARDWARE)
# ;;
2019-06-27 22:20:31 +02:00
SOFTWARE)
sudo /home/admin/XXdebugLogs.sh
echo "Press ENTER to return to main menu."
read key
; ;
2020-02-14 13:12:57 +01:00
BACKUP-LND)
2019-07-02 11:37:00 +02:00
sudo /home/admin/config.scripts/lnd.rescue.sh backup
2020-02-18 14:19:26 +01:00
echo
2020-02-18 14:21:30 +01:00
echo "Press ENTER when your backup download is done to shutdown."
2019-07-02 11:37:00 +02:00
read key
2020-02-18 14:21:30 +01:00
/home/admin/XXshutdown.sh
2019-07-02 11:37:00 +02:00
; ;
2020-02-14 15:04:04 +01:00
MIGRATION)
2020-02-14 14:35:11 +01:00
sudo /home/admin/config.scripts/blitz.migration.sh "export-gui"
2020-02-14 13:12:57 +01:00
echo "Press ENTER to return to main menu."
read key
; ;
2019-06-27 22:20:31 +02:00
RESET-CHAIN)
/home/admin/XXcleanHDD.sh -blockchain
/home/admin/98repairBlockchain.sh
echo "For reboot type: sudo shutdown -r now"
exit 1;
; ;
RESET-LND)
askBackupCopy
2019-08-07 12:56:28 +02:00
# ask for a new name so that network analysis has harder time to connect new node id with old
result = ""
while [ ${# result } -eq 0 ]
do
2021-03-16 21:43:34 +01:00
_temp = $( mktemp -p /dev/shm/)
2019-08-07 12:56:28 +02:00
l1 = "Please enter the new name of your LND node:\n"
l2 = "different name is better for a fresh identity\n"
l3 = "one word, keep characters basic & not too long"
dialog --backtitle " RaspiBlitz - Setup ( ${ network } / ${ chain } ) " --inputbox " $l1 $l2 $l3 " 13 52 2>$_temp
result = $( cat $_temp | tr -dc '[:alnum:]-.' | tr -d ' ' )
2020-05-02 11:32:04 +02:00
shred -u $_temp
2019-08-07 12:56:28 +02:00
echo "processing ..."
sleep 3
done
2020-04-18 01:23:36 +02:00
# make sure host is named like in the raspiblitz config
echo "Setting the Name/Alias/Hostname .."
sudo /home/admin/config.scripts/lnd.setname.sh ${ result }
2020-04-18 01:24:07 +02:00
sudo sed -i " s/^hostname=.*/hostname= ${ result } /g " /mnt/hdd/raspiblitz.conf
2020-04-18 01:23:36 +02:00
echo "stopping lnd ..."
2019-06-27 22:20:31 +02:00
sudo systemctl stop lnd
sudo rm -r /mnt/hdd/lnd
/home/admin/70initLND.sh
2019-08-07 12:56:28 +02:00
2020-04-17 19:28:32 +02:00
# go back to main menu (and show)
/home/admin/00raspiblitz.sh
2019-06-27 22:20:31 +02:00
exit 1;
; ;
RESET-HDD)
askBackupCopy
2019-06-19 00:55:16 +02:00
/home/admin/XXcleanHDD.sh
2019-06-27 22:20:31 +02:00
infoResetSDCard
sudo shutdown now
exit 1;
; ;
RESET-ALL)
askBackupCopy
/home/admin/XXcleanHDD.sh -all
infoResetSDCard
sudo shutdown now
2019-06-19 00:06:05 +02:00
exit 1;
; ;
2020-05-01 21:40:25 +02:00
DELETE-ELEC)
2020-05-02 21:33:39 +02:00
/home/admin/config.scripts/bonus.electrs.sh off deleteindex
2020-05-01 21:40:25 +02:00
exit 1;
; ;
DELETE-INDEX)
2020-05-02 21:33:39 +02:00
/home/admin/config.scripts/network.txindex.sh delete
2020-05-01 21:40:25 +02:00
exit 1;
; ;
2020-03-29 21:56:25 +02:00
COPY-SOURCE)
copyHost
2020-06-18 15:58:27 +02:00
/home/admin/config.scripts/lnd.unlock.sh
2020-03-29 21:56:25 +02:00
; ;
2019-06-19 00:06:05 +02:00
esac