From 5694cbed137779ae6a9a9c91057582c87550566c Mon Sep 17 00:00:00 2001
From: nahuhh <nahuhh@protonmail.com>
Date: Sun, 25 Feb 2024 08:28:40 -0500
Subject: [PATCH] Support for Fedora and Arch

---
 bsx/addcoin.sh   |  2 +-
 bsx/enabletor.sh | 40 ++++++++++++++++++++++++++++++++++++----
 bsx/setup.sh     | 11 ++++++-----
 install.sh       | 34 ++++++++++++++++++++++++++++++++--
 scriptinstall.sh |  8 ++++----
 scriptupdate.sh  |  8 ++++----
 6 files changed, 83 insertions(+), 20 deletions(-)

diff --git a/bsx/addcoin.sh b/bsx/addcoin.sh
index 15b4020..d373bc3 100755
--- a/bsx/addcoin.sh
+++ b/bsx/addcoin.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 ## Prompt for user input
-echo -e "\n\nThe following coins can be added (case sensitive)\nbitcoin\ndash\nfiro\nlitecoin\nparticl\npivx\n"
+echo -e "\n\nThe following coins can be added (case sensitive)\nbitcoin\ndash\nfiro\nlitecoin\npivx\n"
 read -p 'Full name of coin to add [example: litecoin] ' addcoin
 ## Confirm
 echo -e "\nAdd $addcoin to your BasicSwap install, correct? Press any key to continue. CTRL-C to exit"
diff --git a/bsx/enabletor.sh b/bsx/enabletor.sh
index bde226b..d7088e8 100755
--- a/bsx/enabletor.sh
+++ b/bsx/enabletor.sh
@@ -1,13 +1,45 @@
 #!/bin/bash
 
+# Colors
+red="echo -e -n \e[31;1m"
+green="echo -e -n \e[32;1m"
+nocolor="echo -e -n \e[0m"
+
+# Detect Operating system
+INSTALL=""
+UPDATE=""
+INIT_TOR="sudo systemctl restart tor"
+detect_os_arch() {
+    if type -P apt > /dev/null; then
+        # Debian / Ubuntu / Mint
+        INSTALL="sudo apt install -y"
+        UPDATE="sudo apt update"
+        $green"\nDetected Debian\n";$nocolor
+    elif type -P dnf > /dev/null; then
+        # Fedora
+        INSTALL="sudo dnf install -y"
+        UPDATE="sudo dnf check-update"
+        $green"\nDetected Fedora\n";$nocolor
+    elif type -P pacman > /dev/null; then
+        # Arch Linux
+        INSTALL="sudo pacman -S"
+        UPDATE="sudo pacman -Syu"
+        $green"\nDetected Arch Linux\n";$nocolor
+    else
+        $red"Failed to detect OS. Unsupported or unknown distribution.\nInstall Failed.";$nocolor
+        exit
+    fi
+}
+detect_os_arch
+
 # Check for Tor installation
-torinstall=$(apt-cache policy tor | grep "Installed:" | grep -E -o "[0-9]\w+")
-if [[ "$torinstall" ]]; then
+if type -P tor > /dev/null; then
 	echo -e "\nTor is already installed :)"
 else
 	# Install and configure tor
 	echo "Installing Tor..."
-	sudo apt install tor -y
+	$UPDATE
+	$INSTALL tor
 fi
 
 # Create HashesControlPassword
@@ -25,7 +57,7 @@ else
 fi
 
 # Restart tor to apply
-sudo systemctl restart tor
+$INIT_TOR
 echo "Waiting for Tor... 5sec" && sleep 5
 
 # lol are we there yet?
diff --git a/bsx/setup.sh b/bsx/setup.sh
index 8f0dd94..3acac1c 100755
--- a/bsx/setup.sh
+++ b/bsx/setup.sh
@@ -5,15 +5,16 @@ red="echo -e -n \e[31;1m"
 green="echo -e -n \e[32;1m"
 nocolor="echo -e -n \e[0m"
 
+## UBUNTU 22.04 FIX upgrade protobuf inside of venv
+python -m pip install --upgrade "protobuf<=3.20.1"
+
 ## Download & Install coincurve stuff
 cd $SWAP_DATADIR
 wget -O coincurve-anonswap.zip https://github.com/tecnovert/coincurve/archive/refs/tags/anonswap_v0.2.zip
 unzip -d coincurve-anonswap coincurve-anonswap.zip
-mv ./coincurve-anonswap/*/{.,}* ./coincurve-anonswap || true
+mv -f ./coincurve-anonswap/*/{.,}* ./coincurve-anonswap || true
 cd $SWAP_DATADIR/coincurve-anonswap
-pip3 install .
-## UBUNTU 22.04 FIX upgrade protobuf inside of venv
-python3 -m pip install --upgrade "protobuf<=3.20.1"
+$SWAP_DATADIR/venv/bin/pip install .
 
 ## Clone basicswap git
 cd $SWAP_DATADIR
@@ -21,7 +22,7 @@ git clone https://github.com/tecnovert/basicswap.git
 cd $SWAP_DATADIR/basicswap
 ## Install basicswap
 protoc -I=basicswap --python_out=basicswap basicswap/messages.proto
-pip3 install .
+$SWAP_DATADIR/venv/bin/pip install .
 
 ## Decide a source for Monero's restore height
 if [[ "$xmrrestoreheight" ]]; then
diff --git a/install.sh b/install.sh
index 9c3f764..2fbad8a 100755
--- a/install.sh
+++ b/install.sh
@@ -16,6 +16,36 @@ printf "%${span}s\n" "$title"
 printf "%${COLUMNS}s" " " | tr " " "*"
 $nocolor
 
+# Detect Operating system
+INSTALL=""
+UPDATE=""
+DEPENDENCY=""
+detect_os_arch() {
+    if type -P apt > /dev/null; then
+        # Debian / Ubuntu / Mint
+        INSTALL="sudo apt install"
+        UPDATE="sudo apt update"
+        DEPENDENCY="python-is-python3 python3-pip python3-venv gnupg pkg-config protobuf-compiler"
+	$green"\nDetected Debian\n";$nocolor
+    elif type -P dnf > /dev/null; then
+        # Fedora
+        INSTALL="sudo dnf install"
+        UPDATE="sudo dnf check-update"
+        DEPENDENCY="python3-virtualenv python3-pip gnupg2 pkgconf protobuf-compiler"
+	$green"\nDetected Fedora\n";$nocolor
+    elif type -P pacman > /dev/null; then
+        # Arch Linux
+        INSTALL="sudo pacman -S"
+        UPDATE="sudo pacman -Syu"
+        DEPENDENCY="python-pipenv gnupg protobuf pkgconf base-devel"
+	$green"\nDetected Arch Linux\n";$nocolor
+    else
+        $red"Failed to detect OS. Unsupported or unknown distribution.\nInstall Failed.";$nocolor
+	exit
+    fi
+}
+detect_os_arch
+
 ## Particl restore Seed
 echo -e "\n\n[1] New Install (default)\n[2] Restore from Particl Seed\n"
 until [[ "$restore" =~ ^[12]$ ]]; do
@@ -85,8 +115,8 @@ done
 echo -e "\n\nInstalling dependencies"
 read -p 'Press Enter to continue, or CTRL-C to exit.'
 ## Update & Install dependencies
-sudo apt update # python-is-python3 for ubuntu
-sudo apt install -y git wget python-is-python3 python3-venv python3-pip gnupg unzip protobuf-compiler automake libtool pkg-config curl jq
+$UPDATE
+$INSTALL $DEPENDENCY git wget unzip automake libtool curl jq
 # Move scripts to /usr/local/bin
 sudo rm -r /usr/local/bin/bsx* /usr/local/bin/basicswap-bash
 sudo mv -f -t /usr/local/bin/ basicswap-bash bsx*
diff --git a/scriptinstall.sh b/scriptinstall.sh
index 3ab7993..04d1e9e 100755
--- a/scriptinstall.sh
+++ b/scriptinstall.sh
@@ -1,10 +1,10 @@
 #/bin/bash
 # Download Scripts
-wget -O basicswap-bash.tar.gz https://github.com/nahuhh/basicswap-bash/releases/latest/download/basicswap-bash.tar.gz
-tar xvf basicswap-bash.tar.gz
-cd basicswap-bash
+curl -O basicswap-beta.tar.gz https://github.com/nahuhh/basicswap-bash/releases/download/beta/basicswap-beta.tar.gz
+tar xvf basicswap-beta.tar.gz
+cd basicswap-beta
 # Install BasicSwapDEX
 ./install.sh
 # Cleanup
 cd ..
-rm -rf basicswap-bash
+rm -rf basicswap-beta
diff --git a/scriptupdate.sh b/scriptupdate.sh
index 8293495..f1765d6 100755
--- a/scriptupdate.sh
+++ b/scriptupdate.sh
@@ -1,11 +1,11 @@
 #/bin/bash
 # Download updated scripts
-wget -O basicswap-bash.tar.gz https://github.com/nahuhh/basicswap-bash/releases/latest/download/basicswap-bash.tar.gz
-tar xvf basicswap-bash.tar.gz
-cd basicswap-bash
+curl -O https://github.com/nahuhh/basicswap-bash/releases/download/beta/basicswap-beta.tar.gz
+tar xvf basicswap-beta.tar.gz
+cd basicswap-beta
 # Move scripts
 sudo rm -rf /usr/local/bin/bsx
 sudo mv -f basic* bsx* /usr/local/bin/
 # Cleanup install
 cd ..
-rm -rf basicswap-bash
+rm -rf basicswap-beta