From e328140bc2ea4051d42b1e7879a987d773b47d74 Mon Sep 17 00:00:00 2001 From: secondl1ght <85003930+secondl1ght@users.noreply.github.com> Date: Tue, 17 May 2022 14:31:17 -0600 Subject: [PATCH] Add Alby (#3031) --- README.md | 1 + home.admin/99connectMenu.sh | 17 ++++++++++++++ home.admin/config.scripts/bonus.lndconnect.sh | 22 ++++++++++++------ pictures/app_alby.png | Bin 0 -> 12767 bytes 4 files changed, 33 insertions(+), 7 deletions(-) create mode 100644 pictures/app_alby.png diff --git a/README.md b/README.md index 46cde3c8c..ef022030f 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,7 @@ You can connect the following Wallet-Apps to your RaspiBlitz: * **Fully Noded** (iOS) [details](https://apps.apple.com/us/app/fully-noded/id1436425586) * **SendMany** (Android) [details](https://github.com/fusion44/sendmany/blob/master/README.md) * **Sphinx Chat App** (Android & iOS) [details](https://sphinx.chat) +* **Alby** (Desktop) [details](https://getalby.com) Also many more features like Touchscreen, Channels Autopilot, Backup, DynDNS, SSH-Tunneling, UPS Support, ... diff --git a/home.admin/99connectMenu.sh b/home.admin/99connectMenu.sh index e6b8c0a60..f2e227dc3 100644 --- a/home.admin/99connectMenu.sh +++ b/home.admin/99connectMenu.sh @@ -26,6 +26,7 @@ fi OPTIONS+=(${network}RPC "Connect Specter Desktop or JoinMarket") OPTIONS+=(BISQ "Connect Bisq to this node") if [ "${lightning}" == "lnd" ] || [ "${lnd}" == "on" ]; then + OPTIONS+=(ALBY "Connect Alby to this node") OPTIONS+=(EXPORT "Get Macaroons and TLS.cert") OPTIONS+=(RESET "Recreate LND Macaroons & tls.cert") OPTIONS+=(SYNC "Sync Macaroons & tls.cert with Apps/Users") @@ -68,6 +69,22 @@ case $CHOICE in sudo /home/admin/config.scripts/lnd.export.sh exit 0;; + ALBY) + websiteLink="https://getalby.com" + sudo /home/admin/config.scripts/blitz.display.sh image /home/admin/raspiblitz/pictures/app_alby.png + whiptail --title "Install Alby on your web browser" \ + --yes-button "Continue" \ + --no-button "Website" \ + --yesno "Visit the website and install the browser extension then click --> Continue." 12 65 + if [ $? -eq 1 ]; then + whiptail --title " Website Link " --msgbox "\ +To install app open the following link:\n +${websiteLink}\n" 11 70 + fi + /home/admin/config.scripts/bonus.lndconnect.sh alby tor + exit 0; + ;; + BISQ) OPTIONS=() if [ $(grep -c "peerbloomfilters=1" < /mnt/hdd/bitcoin/bitcoin.conf) -eq 0 ]||\ diff --git a/home.admin/config.scripts/bonus.lndconnect.sh b/home.admin/config.scripts/bonus.lndconnect.sh index c848924f0..9dd32e6c8 100755 --- a/home.admin/config.scripts/bonus.lndconnect.sh +++ b/home.admin/config.scripts/bonus.lndconnect.sh @@ -4,7 +4,7 @@ if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then echo "# config script to connect mobile apps with lnd connect" echo "# will autodetect dyndns, sshtunnel or TOR" - echo "# bonus.lndconnect.sh [zap-ios|zap-android|zeus-ios|zeus-android|shango-ios|shango-android|sendmany-android|fullynoded-lnd] [?ip|tor]" + echo "# bonus.lndconnect.sh [zap-ios|zap-android|zeus-ios|zeus-android|shango-ios|shango-android|sendmany-android|fullynoded-lnd|alby] [?ip|tor]" exit 1 fi @@ -46,7 +46,7 @@ if [ ${#error} -eq 0 ]; then ip2torGRPC_PORT="${port}" fi -#### ADAPT PARAMETERS BASED TARGETWALLET +#### ADAPT PARAMETERS BASED TARGETWALLET # defaults host="" @@ -71,8 +71,8 @@ if [ "${targetWallet}" = "zap-ios" ]; then forceTOR=0 host="${ip2torGRPC_IP}" port="${ip2torGRPC_PORT}" - fi - + fi + elif [ "${targetWallet}" = "zap-android" ]; then connectInfo="- start the Zap Wallet --> SETUP WALLET\n or choose new Wallet in app menu\n- scan the QR code \n- confirm host address" # ZAP uses gRPC ports @@ -83,7 +83,7 @@ elif [ "${targetWallet}" = "zap-android" ]; then forceTOR=1 host="${ip2torGRPC_IP}" port="${ip2torGRPC_PORT}" - fi + fi elif [ "${targetWallet}" = "zeus-ios" ]; then @@ -101,6 +101,14 @@ elif [ "${targetWallet}" = "zeus-android" ]; then host=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) connectInfo="- start the Zeus Wallet --> lndconnect\n- scan the QR code \n- activate 'Tor' option \n- activate 'Certification Verification' option\n- save Node Config" +elif [ "${targetWallet}" = "alby" ]; then + + port="8080" + usingIP2TOR="LND-REST-API" + forceTOR=1 + host=$(sudo cat /mnt/hdd/tor/lndrest8080/hostname) + connectInfo="- open Alby --> enter password \n- select RaspiBlitz from connectors \n- enter lndconnect URL \n- Continue \n- Alby companion app required for Tor" + elif [ "${targetWallet}" = "sendmany-android" ]; then connector="lndconnect" @@ -120,7 +128,7 @@ elif [ "${targetWallet}" = "sendmany-android" ]; then forceTOR=0 host="${ip2torGRPC_IP}" port="${ip2torGRPC_PORT}" - fi + fi elif [ "${targetWallet}" = "fullynoded-lnd" ]; then @@ -169,7 +177,7 @@ if [ ${forceTOR} -eq 1 ]; then fi echo "# TOR --> host ${host} port ${port}" fi - + # tunnel thru SSH-Reverse-Tunnel if activated for that port if [ ${#sshtunnel} -gt 0 ]; then isForwarded=$(echo ${sshtunnel} | grep -c "${port}<") diff --git a/pictures/app_alby.png b/pictures/app_alby.png new file mode 100644 index 0000000000000000000000000000000000000000..8a9b5ef322797bdd70ea54a04331e7387a793aa2 GIT binary patch literal 12767 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 m!C$*5|JRo%Kk!|R*H`rdlBdP3DNXPO@