#!/bin/bash _temp="./download/dialog.$$" _error="./.error.out" echo "please wait ..." # load raspiblitz config data (with backup from old config) source /mnt/hdd/raspiblitz.conf 2>/dev/null if [ ${#network} -eq 0 ]; then network=`cat .network`; fi if [ ${#chain} -eq 0 ]; then chain=$(${network}-cli -datadir=/home/bitcoin/.${network} getblockchaininfo | jq -r '.chain') fi # check if user has money in lightning channels - info about close all openChannels=$(lncli --chain=${network} listchannels 2>/dev/null | jq '.[] | length') if [ ${#openChannels} -eq 0 ]; then clear echo "*** IMPORTANT **********************************" echo "It looks like LND is not responding." echo "Still starting up, is locked or is not running?" echo "Try later, try reboot or check ./XXdebugLogs.sh" echo "************************************************" exit 1 fi if [ ${openChannels} -gt 0 ]; then dialog --title 'Info' --msgbox 'You still have funds in open Lightning Channels.\nUse CLOSEALL first if you want to cashout all funds.\nNOTICE: Just confirmed on-chain funds can be moved.' 7 58 echo "please wait ..." fi # check if money is waiting to get confirmed unconfirmed=$(lncli --chain=${network} walletbalance | grep '"unconfirmed_balance"' | cut -d '"' -f4) if [ ${unconfirmed} -gt 0 ]; then dialog --title 'Info' --msgbox "Still waiting confirmation for ${unconfirmed} sat.\nNOTICE: Just confirmed on-chain funds can be moved." 6 58 echo "please wait ..." fi # get available amount in on-chain wallet maxAmount=$(lncli --chain=${network} walletbalance | grep '"confirmed_balance"' | cut -d '"' -f4) if [ ${maxAmount} -eq 0 ]; then dialog --title 'Info' --msgbox "You have 0 moveable funds available.\nNOTICE: Just confirmed on-chain funds can be moved." 6 58 exit 1 fi # let user enter the amount l1="Enter the amount of funds you want to send/remove:" l2="You have max available: ${maxAmount} sat" l3="If you enter nothing, all funds available will be send." dialog --title "Remove Funds from RaspiBlitz" \ --inputbox "$l1\n$l2\n$l3" 10 60 2>$_temp if test $? -eq 0 then echo "ok pressed" else echo "cancel pressed" exit 1 fi amount=$(cat $_temp | xargs) shred $_temp if [ ${#amount} -eq 0 ]; then amount=${maxAmount} fi # TODO: check if amount is in valid range # let user enter the address l1="Enter the on-chain address to send funds to:" l2="You will send: ${amount} sat to that address" dialog --title "Where to send funds?" \ --inputbox "$l1\n$l2" 8 65 2>$_temp if test $? -eq 0 then echo "ok pressed" else echo "cancel pressed" exit 1 fi address=$(cat $_temp | xargs) shred $_temp if [ ${#address} -eq 0 ]; then echo "FAIL - not a valid address (${address})" exit 1 fi # TODO: check address is valid for network and chain # TODO: check if fees are getting done right so that transaction will get processed command="lncli --chain=${network} sendcoins --addr ${address} --amt ${amount} --conf_target 3" clear echo "******************************" echo "Send on-chain Funds" echo "******************************" echo "" echo "COMMAND LINE: " echo $command echo "" echo "RESULT:" # execute command if [ ${#command} -gt 0 ]; then result=$($command) fi # on no result if [ ${#result} -eq 0 ]; then echo "Sorry something went wrong - thats unusual." echo "" exit 1 fi # when result is available echo "$result" # TODO: check if all cashed out (0 funds + 0 channels) -> let user knwo its safe to update/reset RaspiBlitz echo "OK. That worked :)" echo ""