#!/usr/bin/env bash
# based on pull request from vnnkl
# load network
network = ` cat .network`
echo ""
echo "*** Switch between Testnet/Mainnet ***"
# allow only on bitcoin network
if [ " ${ network } " = "bitcoin" ] ; then
echo "Bitcoin network can be switched between testnet/mainnet ..."
else
echo "FAIL - Only Bitcoin Network can be switched between man/tast at the moment."
exit 1
fi
NETWORK_CONFIG = " /home/bitcoin/. ${ network } / ${ network } .conf "
NETWORK_TEMPLATE = " /home/admin/assets/ ${ network } .conf "
LND_CONFIG = "/home/bitcoin/.lnd/lnd.conf"
LND_TEMPLATE = " /home/admin/assets/lnd. ${ network } .conf "
echo " NETWORK_CONFIG( ${ NETWORK_CONFIG } ) "
echo " LND_CONFIG( ${ LND_CONFIG } ) "
echo " NETWORK_TEMPLATE( ${ NETWORK_TEMPLATE } ) "
echo " LND_TEMPLATE( ${ LND_TEMPLATE } ) "
# function to detect main/testnet
function isMainnet( ) {
grep " ^#testnet=1 $" -q $NETWORK_CONFIG && return 1
return 0
}
function switchToMainnet {
echo "switching to mainnet"
sed -i "s/^testnet=1/#testnet=1/g" $NETWORK_CONFIG
sed -i "s/^testnet=1/#testnet=1/g" $NETWORK_TEMPLATE
sed -i "s/^#mainnet=1/mainnet=1/g" $NETWORK_CONFIG
sed -i "s/^#mainnet=1/mainnet=1/g" $NETWORK_TEMPLATE
sed -i " s/^ ${ network } .testnet=1/# ${ network } .testnet=1/g " $LND_CONFIG
sed -i " s/^# ${ network } .mainnet=1/ ${ network } .mainnet=1/g " $LND_CONFIG
sed -i " s/^ ${ network } .testnet=1/# ${ network } .testnet=1/g " $LND_TEMPLATE
sed -i " s/^# ${ network } .mainnet=1/ ${ network } .mainnet=1/g " $LND_TEMPLATE
echo "OK switched to mainnet"
}
function switchToTestnet {
echo "switching to testnet"
sed -i "s/^#testnet=1/testnet=1/g" $NETWORK_CONFIG
sed -i "s/^#testnet=1/testnet=1/g" $NETWORK_TEMPLATE
sed -i "s/^mainnet=1/#mainnet=1/g" $NETWORK_CONFIG
sed -i "s/^mainnet=1/#mainnet=1/g" $NETWORK_TEMPLATE
sed -i " s/^# ${ network } .testnet=1/ ${ network } .testnet=1/g " $LND_CONFIG
sed -i " s/^ ${ network } .mainnet=1/# ${ network } .mainnet=1/g " $LND_CONFIG
sed -i " s/^# ${ network } .testnet=1/ ${ network } .testnet=1/g " $LND_TEMPLATE
sed -i " s/^ ${ network } .mainnet=1/# ${ network } .mainnet=1/g " $LND_TEMPLATE
echo "OK switched to testnet"
}
# LND Service
lndInstalled = $( systemctl status lnd.service | grep loaded -c)
if [ ${ lndInstalled } -gt 0 ] ; then
echo "check for open channels"
openChannels = $( sudo -u bitcoin /usr/local/bin/lncli --chain= ${ network } listchannels 2>/dev/null | grep chan_id -c)
if [ ${ openChannels } -gt 0 ] ; then
echo ""
echo "!!!!!!!!!!!!!!!!!!!"
echo " FAIL - You have still open channels and could loose funds !! - close those first with 'lncli --chain= ${ network } closeallchannels' or main menu option. "
echo "!!!!!!!!!!!!!!!!!!!"
exit 1
else
echo "no open channels found"
fi
echo "stopping lnd client"
systemctl stop lnd
sleep 4
else
echo "LND not running"
fi
# NETWORK Service
networkInstalled = $( systemctl status ${ network } d.service | grep loaded -c)
if [ ${ networkInstalled } -gt 0 ] ; then
echo "stopping bitcoind client"
systemctl stop bitcoind
sleep 4
else
echo " Network ${ network } not running "
fi
# TURN THE SWITCH
isMainnet
if [ $? -eq 1 ] ; then
echo "switching from mainnet to testnet"
switchToTestnet
else
echo "switching from testnet to mainnet"
switchToMainnet
fi
echo "copying over config to admin user"
cp $NETWORK_CONFIG /home/admin/.${ network } /
chown admin:admin /home/admin/.${ network } /${ network } .conf
cp $LND_CONFIG /home/admin/.lnd/
chown admin:admin /home/admin/.lnd/lnd.conf
# restarting network
if [ ${ networkInstalled } -gt 0 ] ; then
# start network
systemctl start bitcoind
echo " started ${ network } d back up, giving it a 120 SECONDS to prepare "
sleep 120
# set setup info again
echo "60" > /home/admin/.setup
# run again the complete LND init procedure
./70initLND.sh
else
echo "No starting of network, because it was not running before"
fi