2019-01-14 14:39:01 +01:00
#!/bin/bash
# command info
2022-05-05 10:59:50 +02:00
if [ " $1 " = = "" ] || [ " $1 " = "-h" ] || [ " $1 " = "-help" ] ; then
2019-01-14 14:39:01 +01:00
echo "small config script to set a passwords A,B,C & D"
2022-05-05 10:59:50 +02:00
echo "blitz.passwords.sh set a [?newpassword] "
echo "blitz.passwords.sh set b [?newpassword] "
echo "blitz.passwords.sh set c [?oldpassword] [?newpassword] "
echo "blitz.passwords.sh check [a|b|c] [passwordToCheck]"
2019-04-12 23:16:38 +01:00
echo "or just as a password enter dialog (result as file)"
2022-05-05 10:59:50 +02:00
echo "blitz.passworda.sh set [x] [text] [result-file] [?empty-allowed]"
2019-01-14 14:39:01 +01:00
exit 1
fi
2022-05-05 10:59:50 +02:00
# check if started with sudo
echo " runningUser=' $EUID ' "
if [ " $EUID " -ne 0 ] ; then
echo "error='need user root'"
exit 1
fi
# prepare hased password storage
hashedPasswordSalt = ""
hashedPasswordStoragePath = "/mnt/hdd/app-data/passwords"
if [ $( df | grep -c "/mnt/hdd" ) -gt 0 ] ; then
# check if path & salt file exists
if [ $( ls ${ hashedPasswordStoragePath } /salt.txt | grep -c "salt.txt" ) -eq 0 ] ; then
echo "# creating salt & hashedPasswordStoragePath ..."
mkdir -p ${ hashedPasswordStoragePath }
echo " $RANDOM - $( date +%N) " | shasum -a 512 | cut -d " " -f1 | cut -c 1-16 > ${ hashedPasswordStoragePath } /salt.txt
chmod 660 ${ hashedPasswordStoragePath } /salt.txt
chown -R admin:admin ${ hashedPasswordStoragePath }
else
echo "# salt file exists"
fi
hashedPasswordSalt = $( cat ${ hashedPasswordStoragePath } /salt.txt)
else
echo "error='hdd not mounted yet - cannot set/check blitz passwords yet'"
echo "correct=0"
exit 1
fi
############################
# CHECKING PASSWORDS
############################
if [ " $1 " = = "check" ] ; then
# brute force protection
# if there was another try within last minute add another 3 seconds delay protection
source <( /home/admin/_cache.sh meta system_password_bruteforceprotection)
/home/admin/_cache.sh set system_password_bruteforceprotection on 60
if [ " ${ value } " = = "on" ] && [ " ${ stillvalid } " = = "1" ] ; then
echo "# multiple tries within last minute - respond slow"
sleep 5 # advanced brute force protection
else
echo "# first try within last minute - respond fast"
sleep 1 # basic brute force protection
fi
typeOfPassword = $2
if [ " ${ typeOfPassword } " != "a" ] && [ " ${ typeOfPassword } " != "b" ] && [ " ${ typeOfPassword } " != "c" ] ; then
echo "error='unknown password to check'"
echo "correct=0"
exit 1
fi
passwordToCheck = $3
clearedPassword = $( echo " ${ passwordToCheck } " | tr -dc '[:alnum:]-.' | tr -d ' ' )
if [ ${# clearedPassword } -lt ${# passwordToCheck } ] ; then
echo "error='password to check contains unvalid chars'"
echo "correct=0"
exit 1
fi
passwordHashSystem = $( cat ${ hashedPasswordStoragePath } /${ typeOfPassword } .hash 2>/dev/null)
passwordHashTest = $( mkpasswd -m sha-512 " ${ passwordToCheck } " -S " ${ hashedPasswordSalt : 0 : 16 } " )
#echo "# passwordToCheck(${passwordToCheck})"
#echo "# passwordHashSystem(${passwordHashSystem})"
#echo "# hashedPasswordSalt(${hashedPasswordSalt})"
#echo "# passwordHashTest(${passwordHashTest})"
if [ ${# passwordHashSystem } -eq 0 ] ; then
echo "error='password cannot be checked - no hash available'"
echo "correct=0"
exit 1
fi
if [ " ${ passwordHashSystem } " = = " ${ passwordHashTest } " ] ; then
echo "correct=1"
else
echo "correct=0"
fi
exit
fi
############################
# SETTING PASSWORDS
############################
if [ " $1 " != "set" ] ; then
echo "error='unkown parameter'"
exit 1
fi
# for all other calls user needs to be root
2019-01-14 16:05:39 +01:00
if [ " $EUID " -ne 0 ]
then echo "Please run as root (with sudo)"
exit
fi
# load raspiblitz config (if available)
2019-02-02 23:49:04 +01:00
source /home/admin/raspiblitz.info
source /mnt/hdd/raspiblitz.conf
2019-01-14 16:25:43 +01:00
if [ ${# network } -eq 0 ] ; then
network = "bitcoin"
fi
if [ ${# chain } -eq 0 ] ; then
chain = "main"
fi
2019-01-14 16:05:39 +01:00
2021-04-17 01:09:06 +02:00
# 1. parameter [?a|b|c]
2022-05-05 10:59:50 +02:00
abcd = $2
2019-01-14 14:39:01 +01:00
# run interactive if no further parameters
2021-04-18 18:04:59 +02:00
reboot = 0;
2019-01-14 15:30:01 +01:00
OPTIONS = ( )
2019-01-14 14:39:01 +01:00
if [ ${# abcd } -eq 0 ] ; then
2021-04-18 18:04:59 +02:00
reboot = 1;
2020-09-15 18:43:08 +02:00
emptyAllowed = 1
2021-08-30 21:23:44 +02:00
OPTIONS += ( A "Master Login Password" )
OPTIONS += ( B "RPC/App Password" )
if [ " ${ lightning } " = = "lnd" ] || [ " ${ lnd } " = = "on" ] ; then
2021-09-20 12:19:07 +01:00
OPTIONS += ( C "LND Lightning Wallet Password" )
2021-09-20 14:44:56 +01:00
fi
2021-09-26 10:30:09 +01:00
if [ " ${ cl } " = = "on" ] && [ " ${ clEncryptedHSM } " = = "on" ] ; then
OPTIONS += ( CL "C-Lightning Wallet Password" )
2021-08-30 21:23:44 +02:00
fi
2019-01-14 14:39:01 +01:00
CHOICE = $( dialog --clear \
2019-01-14 15:39:50 +01:00
--backtitle "RaspiBlitz" \
--title "Set Password" \
--menu "Which password to change?" \
11 50 7 \
2019-01-14 14:39:01 +01:00
" ${ OPTIONS [@] } " \
2>& 1 >/dev/tty)
clear
case $CHOICE in
A)
abcd = 'a' ;
; ;
B)
abcd = 'b' ;
; ;
C)
abcd = 'c' ;
; ;
D)
abcd = 'd' ;
; ;
2021-09-26 10:30:09 +01:00
CL)
abcd = 'cl' ;
2021-09-20 12:19:07 +01:00
; ;
2020-02-17 15:29:45 +01:00
*)
2021-08-04 00:18:30 +02:00
exit 0
2020-02-17 15:29:45 +01:00
; ;
2019-01-14 14:39:01 +01:00
esac
fi
2019-01-14 17:42:44 +01:00
############################
2019-01-14 15:47:47 +01:00
# PASSWORD A
if [ " ${ abcd } " = "a" ] ; then
2022-05-05 10:59:50 +02:00
newPassword = $3
2021-04-17 01:09:06 +02:00
2019-01-14 17:05:12 +01:00
# if no password given by parameter - ask by dialog
if [ ${# newPassword } -eq 0 ] ; then
2020-05-02 15:46:50 +02:00
clear
2019-01-14 17:05:12 +01:00
# ask user for new password A (first time)
2020-05-02 15:40:46 +02:00
password1 = $( whiptail --passwordbox "\nSet new Admin/SSH Password A:\n(min 8chars, 1word, chars+number, no specials)" 10 52 "" --title "Password A" --backtitle "RaspiBlitz - Setup" 3>& 1 1>& 2 2>& 3)
2020-09-15 18:43:08 +02:00
if [ $? -eq 1 ] ; then
if [ ${ emptyAllowed } -eq 0 ] ; then
echo "CANCEL not possible"
sleep 2
else
2021-08-04 00:18:30 +02:00
exit 0
2020-09-15 18:43:08 +02:00
fi
fi
2019-01-14 17:05:12 +01:00
# ask user for new password A (second time)
2020-05-02 15:40:46 +02:00
password2 = $( whiptail --passwordbox "\nRe-Enter Password A:\n(This is new password to login per SSH)" 10 52 "" --title "Password A" --backtitle "RaspiBlitz - Setup" 3>& 1 1>& 2 2>& 3)
2020-09-15 18:43:08 +02:00
if [ $? -eq 1 ] ; then
if [ ${ emptyAllowed } -eq 0 ] ; then
echo "CANCEL not possible"
sleep 2
else
2021-08-04 00:18:30 +02:00
exit 0
2020-09-15 18:43:08 +02:00
fi
fi
2019-01-14 17:05:12 +01:00
# check if passwords match
if [ " ${ password1 } " != " ${ password2 } " ] ; then
2019-01-14 17:42:44 +01:00
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Passwords dont Match\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set a
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:42:44 +01:00
fi
# password zero
if [ ${# password1 } -eq 0 ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Password cannot be empty\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set a
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:05:12 +01:00
fi
# check that password does not contain bad characters
2019-01-14 17:44:56 +01:00
clearedResult = $( echo " ${ password1 } " | tr -dc '[:alnum:]-.' | tr -d ' ' )
if [ ${# clearedResult } != ${# password1 } ] || [ ${# clearedResult } -eq 0 ] ; then
2019-01-14 17:55:12 +01:00
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Contains bad characters (spaces, special chars)\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set a
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:05:12 +01:00
fi
2019-01-14 17:42:44 +01:00
# password longer than 8
if [ ${# password1 } -lt 8 ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Password length under 8\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set a
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:42:44 +01:00
fi
2021-08-27 03:59:21 -04:00
# use entered password now as parameter
2019-01-14 17:42:44 +01:00
newPassword = " ${ password1 } "
2019-01-14 17:05:12 +01:00
2019-01-14 17:12:01 +01:00
fi
2022-05-05 10:59:50 +02:00
# store password hash
mkpasswd -m sha-512 " ${ newPassword } " -S " ${ hashedPasswordSalt : 0 : 16 } " > ${ hashedPasswordStoragePath } /a.hash
chown admin:admin ${ hashedPasswordStoragePath } /a.hash
chmod 660 ${ hashedPasswordStoragePath } /a.hash
2019-01-14 17:12:01 +01:00
# change user passwords and then change hostname
2019-01-14 17:42:44 +01:00
echo " pi: $newPassword " | sudo chpasswd
echo " root: $newPassword " | sudo chpasswd
echo " bitcoin: $newPassword " | sudo chpasswd
echo " admin: $newPassword " | sudo chpasswd
sleep 1
echo ""
echo "OK - password A changed for user pi, root, admin & bitcoin"
2019-01-14 15:47:47 +01:00
2019-01-14 17:42:44 +01:00
############################
2019-01-14 15:47:47 +01:00
# PASSWORD B
elif [ " ${ abcd } " = "b" ] ; then
2022-05-05 10:59:50 +02:00
newPassword = $3
2021-04-17 01:09:06 +02:00
2019-01-14 17:55:12 +01:00
# if no password given by parameter - ask by dialog
if [ ${# newPassword } -eq 0 ] ; then
2020-05-02 15:46:50 +02:00
clear
2019-01-14 17:55:12 +01:00
2020-07-03 12:22:30 +02:00
# ask user for new password B (first time)
2021-04-18 18:04:59 +02:00
password1 = $( whiptail --passwordbox "\nPlease enter your new Password B:\n(min 8chars, 1word, chars+number, no specials)" 10 52 "" --title "Password B" --backtitle "RaspiBlitz - Setup" 3>& 1 1>& 2 2>& 3)
2020-09-15 18:43:08 +02:00
if [ $? -eq 1 ] ; then
2021-04-18 18:04:59 +02:00
if [ " ${ emptyAllowed } " = = "0" ] ; then
2020-09-15 18:43:08 +02:00
echo "CANCEL not possible"
sleep 2
else
2021-08-04 00:18:30 +02:00
exit 0
2020-09-15 18:43:08 +02:00
fi
fi
2019-01-14 17:55:12 +01:00
2020-07-03 12:22:30 +02:00
# ask user for new password B (second time)
password2 = $( whiptail --passwordbox "\nRe-Enter Password B:\n" 10 52 "" --title "Password B" --backtitle "RaspiBlitz - Setup" 3>& 1 1>& 2 2>& 3)
2020-09-15 18:43:08 +02:00
if [ $? -eq 1 ] ; then
2021-04-18 18:04:59 +02:00
if [ " ${ emptyAllowed } " = = "0" ] ; then
2020-09-15 18:43:08 +02:00
echo "CANCEL not possible"
sleep 2
else
2021-08-04 00:18:30 +02:00
exit 0
2020-09-15 18:43:08 +02:00
fi
fi
2019-01-14 17:55:12 +01:00
# check if passwords match
if [ " ${ password1 } " != " ${ password2 } " ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Passwords dont Match\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set b
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:55:12 +01:00
fi
# password zero
if [ ${# password1 } -eq 0 ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Password cannot be empty\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set b
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:55:12 +01:00
fi
# check that password does not contain bad characters
clearedResult = $( echo " ${ password1 } " | tr -dc '[:alnum:]-.' | tr -d ' ' )
if [ ${# clearedResult } != ${# password1 } ] || [ ${# clearedResult } -eq 0 ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Contains bad characters (spaces, special chars)\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set b
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:55:12 +01:00
fi
# password longer than 8
if [ ${# password1 } -lt 8 ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Password length under 8\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set b
2021-08-04 00:18:30 +02:00
exit 0
2019-01-14 17:55:12 +01:00
fi
2021-08-27 03:59:21 -04:00
# use entered password now as parameter
2019-01-14 17:55:12 +01:00
newPassword = " ${ password1 } "
fi
2022-05-05 10:59:50 +02:00
# store password hash
mkpasswd -m sha-512 " ${ newPassword } " -S " ${ hashedPasswordSalt : 0 : 16 } " > ${ hashedPasswordStoragePath } /b.hash
chown admin:admin ${ hashedPasswordStoragePath } /b.hash
chmod 660 ${ hashedPasswordStoragePath } /b.hash
2019-01-14 17:55:12 +01:00
# change in assets (just in case this is used on setup)
sed -i " s/^rpcpassword=.*/rpcpassword= ${ newPassword } /g " /home/admin/assets/${ network } .conf 2>/dev/null
# change in real configs
sed -i " s/^rpcpassword=.*/rpcpassword= ${ newPassword } /g " /mnt/hdd/${ network } /${ network } .conf 2>/dev/null
sed -i " s/^rpcpassword=.*/rpcpassword= ${ newPassword } /g " /home/admin/.${ network } /${ network } .conf 2>/dev/null
2020-05-22 23:01:14 +01:00
2022-01-17 16:51:39 +01:00
# NOTE: now other bonus apps configs that need passwordB need to be adapted manually
# bonus apps that use a "prestart" will adapt themselves on service restart after reboot
2020-05-22 23:01:14 +01:00
# blitzweb
if ! [ -f /etc/nginx/.htpasswd ] ; then
echo " ${ newPassword } " | sudo htpasswd -ci /etc/nginx/.htpasswd admin
else
echo " ${ newPassword } " | sudo htpasswd -i /etc/nginx/.htpasswd admin
fi
2020-01-20 11:39:08 +00:00
# electrs
2020-02-17 17:19:59 +01:00
if [ " ${ ElectRS } " = = "on" ] ; then
2020-03-24 10:45:51 +00:00
echo "# changing the RPC password for ELECTRS"
2020-02-17 15:23:56 +01:00
RPC_USER = $( cat /mnt/hdd/bitcoin/bitcoin.conf | grep rpcuser | cut -c 9-)
2022-01-02 20:45:43 +00:00
sudo sed -i " s/^auth = \" $RPC_USER .*\"/auth = \" $RPC_USER : ${ newPassword } \"/g " /home/electrs/.electrs/config.toml
2020-02-17 15:23:56 +01:00
fi
2020-01-21 04:21:35 +00:00
# BTCPayServer
2020-02-17 17:19:59 +01:00
if [ " ${ BTCPayServer } " = = "on" ] ; then
2020-03-24 10:45:51 +00:00
echo "# changing the RPC password for BTCPAYSERVER"
2020-08-13 17:02:55 +02:00
sudo sed -i " s/^btc.rpc.password=.*/btc.rpc.password= ${ newPassword } /g " /home/btcpay/.nbxplorer/Main/settings.config
2020-02-17 15:23:56 +01:00
fi
2019-01-14 17:55:12 +01:00
2020-03-24 10:45:51 +00:00
# JoinMarket
if [ " ${ joinmarket } " = = "on" ] ; then
echo "# changing the RPC password for JOINMARKET"
2020-08-13 17:02:55 +02:00
sudo sed -i " s/^rpc_password =.*/rpc_password = ${ newPassword } /g " /home/joinmarket/.joinmarket/joinmarket.cfg
2020-03-24 10:45:51 +00:00
echo "# changing the password for the 'joinmarket' user"
echo " joinmarket: ${ newPassword } " | sudo chpasswd
fi
2020-06-27 12:38:23 +01:00
# ThunderHub
2020-08-13 17:02:55 +02:00
if [ " ${ thunderhub } " = = "on" ] ; then
2020-06-27 12:38:23 +01:00
echo "# changing the password for ThunderHub"
2021-04-18 18:04:59 +02:00
sudo sed -i " s/^masterPassword:.*/masterPassword: ' ${ newPassword } '/g " /mnt/hdd/app-data/thunderhub/thubConfig.yaml
fi
# LIT
if [ " ${ lit } " = = "on" ] ; then
echo "# changing the password for LIT"
sudo sed -i " s/^uipassword=.*/uipassword= ${ newPassword } /g " /mnt/hdd/app-data/.lit/lit.conf
sudo sed -i " s/^faraday.bitcoin.password=.*/faraday.bitcoin.password= ${ newPassword } /g " /mnt/hdd/app-data/.lit/lit.conf
2020-06-27 12:38:23 +01:00
fi
2020-02-17 15:28:44 +01:00
echo "# OK -> RPC Password B changed"
2022-01-17 17:04:18 +01:00
echo "# Reboot is needed (will be triggered if interactive menu was called)"
sleep 3
2019-01-14 15:47:47 +01:00
2019-01-14 17:42:44 +01:00
############################
2019-01-14 15:47:47 +01:00
# PASSWORD C
elif [ " ${ abcd } " = "c" ] ; then
2022-05-05 10:59:50 +02:00
oldPassword = $3
newPassword = $4
2021-04-17 01:09:06 +02:00
if [ " ${ oldPassword } " = = "" ] ; then
# ask user for old password c
clear
oldPassword = $( whiptail --passwordbox "\nEnter old Password C:\n" 10 52 "" --title "Old Password C" --backtitle "RaspiBlitz - Passwords" 3>& 1 1>& 2 2>& 3)
if [ $? -eq 1 ] || [ " ${ oldPassword } " = = "" ] ; then
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set c
2021-04-17 01:09:06 +02:00
fi
echo "OK ... processing"
2019-01-14 16:30:46 +01:00
fi
2021-04-17 01:09:06 +02:00
if [ " ${ newPassword } " = = "" ] ; then
clear
2019-01-14 16:05:39 +01:00
2021-04-17 01:09:06 +02:00
# ask user for new password c
newPassword = $( whiptail --passwordbox "\nEnter new Password C:\n" 10 52 "" --title "New Password C" --backtitle "RaspiBlitz - Passwords" 3>& 1 1>& 2 2>& 3)
if [ $? -eq 1 ] || [ " ${ newPassword } " = = "" ] ; then
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set c ${ oldPassword }
2021-04-17 01:09:06 +02:00
exit 0
fi
# check new password does not contain bad characters
clearedResult = $( echo " ${ newPassword } " | tr -dc '[:alnum:]-.' | tr -d ' ' )
if [ ${# clearedResult } != ${# newPassword } ] || [ ${# clearedResult } -eq 0 ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Contains bad characters (spaces, special chars)" 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.password.sh set c ${ oldPassword }
2021-04-17 01:09:06 +02:00
exit 0
fi
# check new password longer than 8
if [ ${# newPassword } -lt 8 ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Password length under 8" 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.password.sh set c ${ oldPassword }
2021-08-04 00:18:30 +02:00
exit 0
2021-04-17 01:09:06 +02:00
fi
2019-02-14 13:42:14 +01:00
2021-04-17 01:09:06 +02:00
# ask user to retype new password c
newPassword2 = $( whiptail --passwordbox "\nEnter again new Password C:\n" 10 52 "" --title "New Password C (repeat)" --backtitle "RaspiBlitz - Passwords" 3>& 1 1>& 2 2>& 3)
if [ $? -eq 1 ] || [ " ${ newPassword } " = = "" ] ; then
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set c ${ oldPassword }
2021-04-17 01:09:06 +02:00
exit 0
fi
echo "OK ... processing"
# check if passwords match
if [ " ${ newPassword } " != " ${ newPassword2 } " ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox "FAIL -> Passwords dont Match" 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set c ${ oldPassword }
2021-04-17 01:09:06 +02:00
exit 0
fi
echo "OK ... processing"
fi
#echo "oldPassword: ${oldPassword}"
#echo "newPassword: ${newPassword}"
2019-01-14 16:05:39 +01:00
2019-01-14 16:36:36 +01:00
echo "# Make sure Auto-Unlocks off"
2019-01-14 16:05:39 +01:00
sudo /home/admin/config.scripts/lnd.autounlock.sh off
2019-01-14 15:47:47 +01:00
2021-04-17 01:09:06 +02:00
echo "LND needs to be restarted to lock wallet first .. (please wait)"
sudo systemctl restart lnd
sleep 2
err = ""
2021-11-30 11:58:06 +00:00
if ! pip list | grep grpc; then sudo -H python3 -m pip install grpcio = = 1.38.1; fi
2021-09-12 22:55:29 +02:00
source <( sudo /home/admin/config.scripts/lnd.initwallet.py change-password mainnet $oldPassword $newPassword )
2021-04-17 01:09:06 +02:00
if [ " ${ err } " != "" ] ; then
dialog --backtitle "RaspiBlitz - Setup" --msgbox " FAIL -> Was not able to change password\n\n ${ err } \n ${ errMore } " 10 52
clear
echo "# FAIL: Was not able to change password"
2021-08-04 00:18:30 +02:00
exit 0
2021-04-17 01:09:06 +02:00
fi
2022-05-05 10:59:50 +02:00
# store password hash
mkpasswd -m sha-512 " ${ newPassword } " -S " ${ hashedPasswordSalt : 0 : 16 } " > ${ hashedPasswordStoragePath } /c.hash
chown admin:admin ${ hashedPasswordStoragePath } /c.hash
chmod 660 ${ hashedPasswordStoragePath } /c.hash
2019-01-14 16:36:36 +01:00
# final user output
echo ""
echo "OK"
2019-04-12 23:16:38 +01:00
############################
# PASSWORD X
2019-04-12 23:26:38 +01:00
elif [ " ${ abcd } " = "x" ] ; then
2019-04-12 23:16:38 +01:00
2021-04-17 01:09:06 +02:00
emptyAllowed = 0
2022-05-05 10:59:50 +02:00
if [ " $5 " = = "empty-allowed" ] ; then
2021-04-17 01:09:06 +02:00
emptyAllowed = 1
fi
2019-04-12 23:16:38 +01:00
# second parameter is the flexible text
2022-05-05 10:59:50 +02:00
text = $3
resultFile = $4
shred -u " $4 " 2>/dev/null
2019-04-12 23:16:38 +01:00
# ask user for new password (first time)
2020-05-02 16:01:20 +02:00
password1 = $( whiptail --passwordbox " \n ${ text } :\n(min 8chars, 1word, chars+number, no specials) " 10 52 "" --backtitle "RaspiBlitz" 3>& 1 1>& 2 2>& 3)
2019-04-12 23:16:38 +01:00
# ask user for new password A (second time)
2020-06-29 21:41:44 +02:00
password2 = ""
if [ ${# password1 } -gt 0 ] ; then
password2 = $( whiptail --passwordbox "\nRe-Enter the Password:\n(to test if typed in correctly)" 10 52 "" --backtitle "RaspiBlitz" 3>& 1 1>& 2 2>& 3)
fi
2019-04-12 23:16:38 +01:00
# check if passwords match
if [ " ${ password1 } " != " ${ password2 } " ] ; then
2020-05-02 16:01:20 +02:00
dialog --backtitle "RaspiBlitz" --msgbox "FAIL -> Passwords dont Match\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set x " $3 " " $4 " " $5 "
2021-08-04 00:18:30 +02:00
exit 0
2019-04-12 23:16:38 +01:00
fi
2020-09-15 18:43:08 +02:00
if [ ${ emptyAllowed } -eq 0 ] ; then
2020-06-29 21:38:20 +02:00
# password zero
if [ ${# password1 } -eq 0 ] ; then
dialog --backtitle "RaspiBlitz" --msgbox "FAIL -> Password cannot be empty\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set x " $3 " " $4 " " $5 "
2021-08-04 00:18:30 +02:00
exit 0
2020-06-29 21:38:20 +02:00
fi
# check that password does not contain bad characters
clearedResult = $( echo " ${ password1 } " | tr -dc '[:alnum:]-.' | tr -d ' ' )
if [ ${# clearedResult } != ${# password1 } ] || [ ${# clearedResult } -eq 0 ] ; then
2020-06-29 21:44:51 +02:00
dialog --backtitle "RaspiBlitz" --msgbox "FAIL -> Contains bad characters (spaces, special chars)\nPlease try again ..." 6 62
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.password.sh set x " $3 " " $4 " " $5 "
2021-08-04 00:18:30 +02:00
exit 0
2020-06-29 21:38:20 +02:00
fi
# password longer than 8
if [ ${# password1 } -lt 8 ] ; then
dialog --backtitle "RaspiBlitz" --msgbox "FAIL -> Password length under 8\nPlease try again ..." 6 52
2022-05-05 10:59:50 +02:00
sudo /home/admin/config.scripts/blitz.passwords.sh set x " $3 " " $4 " " $5 "
2021-08-04 00:18:30 +02:00
exit 0
2020-06-29 21:38:20 +02:00
fi
2019-04-12 23:16:38 +01:00
fi
# store result is file
2022-01-17 20:32:19 +00:00
echo " ${ password1 } " > " ${ resultFile } "
2021-09-20 14:44:56 +01:00
2021-09-26 10:30:09 +01:00
elif [ " ${ abcd } " = "cl" ] ; then
/home/admin/config.scripts/cl.hsmtool.sh change-password mainnet
# do not reboot for cl password
2021-09-20 14:44:56 +01:00
reboot = 0
2019-01-14 15:47:47 +01:00
# everything else
else
echo " FAIL: there is no password ' ${ abcd } ' (reminder: use lower case) "
2021-08-04 00:18:30 +02:00
exit 0
2020-07-03 12:22:30 +02:00
fi
2021-04-18 18:04:59 +02:00
# when started with menu ... reboot when done
if [ " ${ reboot } " = = "1" ] ; then
echo "Now rebooting to activate changes ..."
2021-08-04 00:18:30 +02:00
sudo /home/admin/config.scripts/blitz.shutdown.sh reboot
2021-04-18 18:04:59 +02:00
else
echo "..."
fi