raspiblitz/home.admin/config.scripts/bonus.tallycoin-connect.sh

226 lines
7.6 KiB
Bash
Raw Normal View History

2021-12-21 15:45:01 +01:00
#!/bin/bash
# https://github.com/djbooth007/tallycoin_connect
USERNAME=tallycoin
APP_DATA_DIR=/mnt/hdd/app-data/tallycoin-connect
HOME_DIR=/home/$USERNAME
CONFIG_FILE=$APP_DATA_DIR/tallycoin_api.key
RASPIBLITZ_INFO=/home/admin/raspiblitz.info
SERVICE_FILE=/etc/systemd/system/tallycoin-connect.service
v1.9.0rc3 Merge (#3742) * cln: use default normal feerate to withdraw all * Bugfix: bad subsititution (#3668) Fix for error: /home/admin/config.scripts/bonus.go.sh: line 31: ${goOSversion{}: bad substitution * whiptail one line * fix syntax * lnproxy: fix api access through nginx (#3671) * lnproxy: fix api access through nginx * fix tor config and fit the menu * add to the menu and provision * merge #3682 * cln update to v23.02, backup-plugin update, add poetry (#3684) * cln backup-plugin update, add poetry * fix mkdir error, remove commented code, fmt #3677 * poetry and path fixes * add terminal feedback, format #3676 * detect the full name of the plugin * install pyln-client tqdm with pip * git-verify: add --keyid-format LONG to recognise if the signing key is not the main key * cln update to v23.02 * cln-grpc: add protobuf-compiler dep * rtl update to v0.13.6 and formatting * C-lightningREST update to v0.10.1 * CLN FAQ update (#3666) * improve the detection of existing cln aliases * add the emergencyrecover instructions to CLN FAQ * update help entries * Update Tallycoin to version 1.8.0 (#3693) * add tallycoin update info to CHANGES * Fix typo in README.md (#3699) excepted -> accepted * #3694 add LCD info * #3664 att timeout 30s to ln monitor calls (#3665) * fix setting LND_REST_ENDPOINT (#3689) * btcpay update v1.8.2, postgres database fix (#3697) * btcpay update v1.8.0, postgres database fix * btcpayserver update to v1.8.2 * update lnbits to 0.10.2 and use poetry instead of venv (#3703) * fix apt update Key error for influx repo (#3711) Co-authored-by: Patrick Scheich <patrick.scheich@syscovery.de> * fix missing timeout value for nc cmnd (#3712) Co-authored-by: Patrick Scheich <patrick.scheich@syscovery.de> * #3706 Update CLN v23.02.2 (#3716) * used patched/rolledback 23.02.2 release * check rusty sig * fix typo * fix default lightning setting * #3683 Update LIT to 0.8.6 (#3717) * update LIT to 0.8.6 * activate lnd rpcmiddleware * CHANGES.md * #3667 change all up/download from sftp tp scp (#3718) * #3722 add no hostkeys available detection (#3723) * #1186 FinTS/HBCI interface (#3704) * #1186 FinTS install script first draft * only start app when blitz is ready * improve menu * improve dit lnbits config * preserve edit * improve edit * improve edit * fix insertion * dont use fingerprint * now use main repo * add port * show local ip * fix typo * show port SSL * Update bonus.lndg.sh (#3725) * Update bonus.lndg.sh Changes version to v1.6.0. Fixes update menu bug. Cleans up code a bit (removes tabs and changes to spaces to match raspiblitz formats). * Update bonus.lndg.sh Cleaned up code, added requirements.txt install to updates (needed for this update, may be needed in future). * #3725 update lndg version in CHANGES * #3692 update lnd to v0.16.0-beta (#3732) * update SD CARD base image info * Clenaup CHANGES info * RTL install fix (#3739) * c-lightning-REST update to 0.10.2, fmt * rtl: npm insatll with --legacy-peer-deps * purge c-lightning-REST as well with RTL * jam update to v0.1.5 (#3736) * 3733 CLN GRPC > JRPC (#3741) * change exit code * change to cln_jrpc * deactivate the cln_grpc settings * set v1.9.0rc3 version --------- Co-authored-by: openoms <oms@tuta.io> Co-authored-by: Metallicc <72348+metallicc@users.noreply.github.com> Co-authored-by: openoms <43343391+openoms@users.noreply.github.com> Co-authored-by: DJ Booth <djbooth007@gmail.com> Co-authored-by: Yuck Fou <115867254+YuckFouBTC@users.noreply.github.com> Co-authored-by: dni ⚡ <office@dnilabs.com> Co-authored-by: PatrickScheich <50054697+PatrickScheich@users.noreply.github.com> Co-authored-by: Patrick Scheich <patrick.scheich@syscovery.de> Co-authored-by: allyourbankarebelongtous <100060902+allyourbankarebelongtous@users.noreply.github.com>
2023-04-08 23:10:01 +02:00
TC_VERSION=1.8.0
2021-12-21 15:45:01 +01:00
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "config script to switch tallycoin_connect on or off"
echo "bonus.tallycoin-connect.sh [on|off|menu]"
exit 1
fi
# check and load raspiblitz config to know which network is running
source $RASPIBLITZ_INFO
2022-01-26 02:34:28 +01:00
source /mnt/hdd/raspiblitz.conf
2021-12-21 15:45:01 +01:00
# show info menu
if [ "$1" = "menu" ]; then
# get network info
localip=$(hostname -I | awk '{print $1}')
toraddress=$(sudo cat /mnt/hdd/tor/tallycoin-connect/hostname 2>/dev/null)
fingerprint=$(openssl x509 -in /mnt/hdd/app-data/nginx/tls.cert -fingerprint -noout | cut -d"=" -f2)
if [ "${runBehindTor}" = "on" ] && [ ${#toraddress} -gt 0 ]; then
# Info with TOR
2022-02-13 12:23:34 +00:00
sudo /home/admin/config.scripts/blitz.display.sh qr "${toraddress}"
2021-12-21 15:45:01 +01:00
whiptail --title " Tallycoin Connect " --msgbox "Open in your local web browser:
http://${localip}:8123\n
https://${localip}:8124 with Fingerprint:
${fingerprint}\n
Use your Password B to login.\n
Hidden Service address for TOR Browser (see LCD for QR):\n${toraddress}
2021-12-21 15:55:55 +01:00
" 16 72
2022-02-13 12:23:34 +00:00
sudo /home/admin/config.scripts/blitz.display.sh hide
2021-12-21 15:45:01 +01:00
else
# Info without TOR
whiptail --title " Tallycoin Connect " --msgbox "Open in your local web browser & accept self-signed cert:
http://${localip}:8123\n
https://${localip}:8124 with Fingerprint:
${fingerprint}\n
Use your Password B to login.\n
Activate TOR to access the web interface from outside your local network.
2021-12-21 15:55:55 +01:00
" 15 72
2021-12-21 15:45:01 +01:00
fi
echo "please wait ..."
exit 0
fi
# switch on
if [ "$1" = "1" ] || [ "$1" = "on" ]; then
isInstalled=$(sudo ls $HOME_DIR 2>/dev/null | grep -c 'tallycoin_connect')
if [ ${isInstalled} -eq 0 ]; then
echo "*** INSTALL TALLYCOIN CONNECT ***"
# install nodeJS
/home/admin/config.scripts/bonus.nodejs.sh on
# add user
sudo adduser --disabled-password --gecos "" $USERNAME
# install tallycoin_connect
cd $HOME_DIR
sudo -u $USERNAME wget https://github.com/djbooth007/tallycoin_connect/archive/refs/tags/v$TC_VERSION.tar.gz
sudo -u $USERNAME tar -xzf v$TC_VERSION.tar.gz
sudo -u $USERNAME mv tallycoin_connect{-$TC_VERSION,}
sudo -u $USERNAME rm v$TC_VERSION.tar.gz
cd tallycoin_connect
2021-12-23 14:53:56 +01:00
sudo -u $USERNAME cat .dockerignore | sudo -u $USERNAME xargs sudo -u $USERNAME rm -rf
2021-12-21 15:45:01 +01:00
sudo -u $USERNAME rm .dockerignore
sudo -u $USERNAME npm install
if ! [ $? -eq 0 ]; then
echo "FAIL - npm install did not run correctly, aborting"
exit 1
fi
# setup config
sudo mkdir -p $APP_DATA_DIR
sudo chown $USERNAME:$USERNAME $APP_DATA_DIR
if [[ ! -f "$CONFIG_FILE" ]]; then
configFile=/home/admin/tallycoin_api.key
touch $configFile
sudo chmod 600 $configFile || exit 1
passwordB=$(sudo cat /mnt/hdd/${network}/${network}.conf | grep rpcpassword | cut -c 13-)
passwd=$(printf $passwordB | sha256sum | tr -d ' -')
tlsCert=$(base64 /mnt/hdd/app-data/lnd/tls.cert | tr -d '=' | tr '/+' '_-' | tr -d '\n')
macaroon=$(base64 /mnt/hdd/app-data/lnd/data/chain/${network}/${chain}net/admin.macaroon | tr -d '=' | tr '/+' '_-' | tr -d '\n')
echo "{\"tls_cert\":\"$tlsCert\",\"macaroon\":\"$macaroon\",\"tallycoin_passwd\":\"$passwd\"}" > $configFile
sudo mv $configFile $CONFIG_FILE
sudo chown $USERNAME:$USERNAME $CONFIG_FILE
fi
##################
# NGINX
##################
# setup nginx symlinks
if ! [ -f /etc/nginx/sites-available/tallycoin_connect_ssl.conf ]; then
sudo cp -f /home/admin/assets/nginx/sites-available/tallycoin_connect_ssl.conf /etc/nginx/sites-available/tallycoin_connect_ssl.conf
fi
if ! [ -f /etc/nginx/sites-available/tallycoin_connect_tor.conf ]; then
sudo cp /home/admin/assets/nginx/sites-available/tallycoin_connect_tor.conf /etc/nginx/sites-available/tallycoin_connect_tor.conf
fi
if ! [ -f /etc/nginx/sites-available/tallycoin_connect_tor_ssl.conf ]; then
sudo cp /home/admin/assets/nginx/sites-available/tallycoin_connect_tor_ssl.conf /etc/nginx/sites-available/tallycoin_connect_tor_ssl.conf
fi
sudo ln -sf /etc/nginx/sites-available/tallycoin_connect_ssl.conf /etc/nginx/sites-enabled/
sudo ln -sf /etc/nginx/sites-available/tallycoin_connect_tor.conf /etc/nginx/sites-enabled/
sudo ln -sf /etc/nginx/sites-available/tallycoin_connect_tor_ssl.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
# open the firewall
echo "*** Updating Firewall ***"
sudo ufw allow from any to any port 8123 comment 'allow Tallycoin Connect HTTP'
sudo ufw allow from any to any port 8124 comment 'allow Tallycoin Connect HTTPS'
echo ""
##################
# SYSTEMD SERVICE
##################
echo "# Install Tallycoin Connect systemd for ${network} on ${chain}"
echo "
# Systemd unit for Tallycoin Connect
[Unit]
Description=Tallycoin Connect daemon
Wants=lnd.service
After=lnd.service
[Service]
WorkingDirectory=$HOME_DIR/tallycoin_connect
Environment=\"CONFIG_FILE=$CONFIG_FILE\"
ExecStart=/usr/bin/npm start
User=tallycoin
Restart=always
TimeoutSec=120
RestartSec=30
StandardOutput=null
StandardError=journal
# Hardening measures
PrivateTmp=true
ProtectSystem=full
NoNewPrivileges=true
PrivateDevices=true
[Install]
WantedBy=multi-user.target
" | sudo tee $SERVICE_FILE
sudo systemctl enable tallycoin-connect
# setting value in raspiblitz config
2022-01-26 02:34:28 +01:00
/home/admin/config.scripts/blitz.conf.sh set tallycoinConnect "on"
2021-12-21 15:45:01 +01:00
# Hidden Service for tallycoin-connect if Tor is active
if [ "${runBehindTor}" = "on" ]; then
# make sure to keep in sync with tor.onion-service.sh script
/home/admin/config.scripts/tor.onion-service.sh tallycoin-connect 80 8125 443 8126
2021-12-21 15:45:01 +01:00
fi
source $RASPIBLITZ_INFO
if [ "${state}" == "ready" ]; then
echo "# OK - the tallycoin-connect.service is enabled, system is ready so starting service"
sudo systemctl start tallycoin-connect
else
echo "# OK - the tallycoin-connect.service is enabled, to start manually use: 'sudo systemctl start tallycoin-connect'"
fi
else
echo "*** TALLYCOIN CONNECT ALREADY INSTALLED ***"
fi
exit 0
fi
# switch off
if [ "$1" = "0" ] || [ "$1" = "off" ]; then
isInstalled=$(sudo ls $HOME_DIR 2>/dev/null | grep -c 'tallycoin_connect')
if [ ${isInstalled} -eq 1 ]; then
echo "*** UNINSTALL TALLYCOIN CONNECT ***"
# remove systemd service
sudo systemctl stop tallycoin-connect
sudo systemctl disable tallycoin-connect
sudo rm -f $SERVICE_FILE
# close ports on firewall
sudo ufw delete allow from any to any port 8123 comment 'allow Tallycoin Connect HTTP'
sudo ufw delete allow from any to any port 8124 comment 'allow Tallycoin Connect HTTPS'
# remove nginx symlinks
sudo rm -f /etc/nginx/sites-enabled/tallycoin_connect_*
sudo nginx -t
sudo systemctl reload nginx
# Hidden Service if Tor is active
if [ "${runBehindTor}" = "on" ]; then
2022-02-10 22:29:10 +01:00
/home/admin/config.scripts/tor.onion-service.sh off tallycoin-connect
2021-12-21 15:45:01 +01:00
fi
# remove config
sudo rm -rf $APP_DATA_DIR
# delete user and home directory
sudo userdel -rf $USERNAME
# setting value in raspi blitz config
2022-01-26 02:34:28 +01:00
/home/admin/config.scripts/blitz.conf.sh set tallycoinConnect "off"
2021-12-21 15:45:01 +01:00
echo "OK TALLYCOIN CONNECT removed."
else
echo "*** TALLYCOIN CONNECT NOT INSTALLED ***"
fi
exit 0
fi
echo "FAIL - Unknown Parameter $1"
exit 1