From 07d7a1a45afc6ead30b28dc39b18d1c2c9a1892d Mon Sep 17 00:00:00 2001
From: Bob Mottram <bob@robotics.uk.to>
Date: Sat, 28 May 2016 09:52:15 +0100
Subject: [PATCH] checkout if commit defined

---
 src/freedombone-mesh | 460 ++++++++++++++++++++++---------------------
 1 file changed, 231 insertions(+), 229 deletions(-)

diff --git a/src/freedombone-mesh b/src/freedombone-mesh
index 643c9eb97..1c908d946 100755
--- a/src/freedombone-mesh
+++ b/src/freedombone-mesh
@@ -37,9 +37,9 @@ CONFIG_FILE=$HOME/${PROJECT_NAME}.cfg
 
 MUMBLE_PATH=/usr/bin/mumble
 if [ -f /usr/local/bin/${PROJECT_NAME} ]; then
-	TOXIC_FILE=$(cat /usr/local/bin/${PROJECT_NAME} | grep "TOXIC_FILE=" | head -n 1 | awk -F '=' '{print $2}')
+    TOXIC_FILE=$(cat /usr/local/bin/${PROJECT_NAME} | grep "TOXIC_FILE=" | head -n 1 | awk -F '=' '{print $2}')
 else
-	TOXIC_FILE=$(cat /usr/bin/${PROJECT_NAME} | grep "TOXIC_FILE=" | head -n 1 | awk -F '=' '{print $2}')
+    TOXIC_FILE=$(cat /usr/bin/${PROJECT_NAME} | grep "TOXIC_FILE=" | head -n 1 | awk -F '=' '{print $2}')
 fi
 DHTNODES=/usr/share/toxic/DHTnodes
 
@@ -50,13 +50,13 @@ TOXCORE_REPO='git://github.com/irungentoo/toxcore.git'
 TOXCORE_COMMIT=
 # obtain tox values from main install
 if grep -q "TOX_PORT=" $CONFIG_FILE; then
-	TOX_PORT=$(cat $CONFIG_FILE | grep "TOX_PORT=" | nead -n 1 | awk -F '=' '{print $2}')
+    TOX_PORT=$(cat $CONFIG_FILE | grep "TOX_PORT=" | nead -n 1 | awk -F '=' '{print $2}')
 fi
 if grep -q "TOXCORE_REPO=" $CONFIG_FILE; then
-	TOXCORE_REPO=$(cat $CONFIG_FILE | grep "TOXCORE_REPO=" | head -n 1 | awk -F '"' '{print $2}')
+    TOXCORE_REPO=$(cat $CONFIG_FILE | grep "TOXCORE_REPO=" | head -n 1 | awk -F '"' '{print $2}')
 fi
 if grep -q "TOXCORE_COMMIT=" $CONFIG_FILE; then
-	TOXCORE_COMMIT=$(cat $CONFIG_FILE | grep "TOXCORE_COMMIT=" | head -n 1 | awk -F "'" '{print $2}')
+    TOXCORE_COMMIT=$(cat $CONFIG_FILE | grep "TOXCORE_COMMIT=" | head -n 1 | awk -F "'" '{print $2}')
 fi
 TOXID_REPO='https://github.com/bashrc/toxid'
 TOX_BOOTSTRAP_ID_FILE=/var/lib/tox-bootstrapd/pubkey.txt
@@ -69,226 +69,228 @@ QTOX_INI="/home/$USER/.config/tox/qtox.ini"
 SERVER_INSTALLATION="no"
 
 function install_toxcore {
-	if [ -f /etc/tox-bootstrapd.conf ]; then
-		return
-	fi
-
-	sudo apt-get -y install build-essential libtool autotools-dev
-	sudo apt-get -y install automake checkinstall check git yasm
-	sudo apt-get -y install libsodium13 libsodium-dev libcap2-bin
-	sudo apt-get -y install libconfig9 libconfig-dev
-
-	if [ ! -d ~/develop ]; then
-		mkdir ~/develop
-	fi
-	cd ~/develop
-	git clone $TOXCORE_REPO ~/develop/toxcore
-	cd ~/develop/toxcore
-	git checkout $TOXCORE_COMMIT -b $TOXCORE_COMMIT
-	autoreconf -i
-	./configure --enable-daemon
-	if [ ! "$?" = "0" ]; then
-		exit 78467
-	fi
-	make
-	if [ ! "$?" = "0" ]; then
-		exit 84562
-	fi
-	sudo make install
-	sudo cp /usr/local/lib/libtoxcore* /usr/lib/
-
-	if [ ! -f /usr/local/bin/tox-bootstrapd ]; then
-		echo $"File not found /usr/local/bin/tox-bootstrapd"
-		exit 73862
-	fi
-
-	sudo useradd --home-dir /var/lib/tox-bootstrapd --create-home --system --shell /sbin/nologin --comment "Account to run Tox's DHT bootstrap daemon" --user-group tox-bootstrapd
-	sudo chmod 700 /var/lib/tox-bootstrapd
-	if [ ! -f ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf ]; then
-		echo $"File not found $INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf"
-		exit 476835
-	fi
-
-	# create configuration file
-	echo "port = $TOX_PORT" > /tmp/tox-bootstrapd.conf
-	echo 'keys_file_path = "/var/lib/tox-bootstrapd/keys"' >> /tmp/tox-bootstrapd.conf
-	echo 'pid_file_path = "/var/run/tox-bootstrapd/tox-bootstrapd.pid"' >> /tmp/tox-bootstrapd.conf
-	echo 'enable_ipv6 = true' >> /tmp/tox-bootstrapd.conf
-	echo 'enable_ipv4_fallback = true' >> /tmp/tox-bootstrapd.conf
-	echo 'enable_lan_discovery = true' >> /tmp/tox-bootstrapd.conf
-	echo 'enable_tcp_relay = true' >> /tmp/tox-bootstrapd.conf
-	echo "tcp_relay_ports = [443, 3389, $TOX_PORT]" >> /tmp/tox-bootstrapd.conf
-	echo 'enable_motd = true' >> /tmp/tox-bootstrapd.conf
-	echo 'motd = "tox-bootstrapd"' >> /tmp/tox-bootstrapd.conf
-	sudo cp /tmp/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
-	rm /tmp/tox-bootstrapd.conf
-
-	if [ -f /bin/systemctl ]; then
-		if [ ! -f ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service ]; then
-			echo $"File not found ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service"
-			exit 7359
-		fi
-		sudo cp ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service /etc/systemd/system/
-
-		sudo systemctl daemon-reload
-		sudo systemctl enable tox-bootstrapd.service
-		sudo systemctl start tox-bootstrapd.service
-		if [ ! "$?" = "0" ]; then
-			sudo systemctl status tox-bootstrapd.service
-			exit 5846
-		fi
-
-		sudo systemctl restart tox-bootstrapd.service
-	else
-		sudo cp ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.sh /etc/init.d/tox-bootstrapd
-		sudo chmod 755 /etc/init.d/tox-bootstrapd
-		sudo update-rc.d tox-bootstrapd defaults
-		sudo service tox-bootstrapd start
-	fi
-
-	TOX_PUBLIC_KEY=$(cat /var/log/syslog | grep tox | grep "Public Key" | awk -F ' ' '{print $8}' | tail -1)
-	if [ ${#TOX_PUBLIC_KEY} -lt 30 ]; then
-		echo $'Could not obtain the tox node public key'
-		exit 6529
-	fi
-
-	# save the public key for later reference
-	echo "$TOX_PUBLIC_KEY" > /tmp/boostrapid
-	sudo mv /tmp/boostrapid $TOX_BOOTSTRAP_ID_FILE
+    if [ -f /etc/tox-bootstrapd.conf ]; then
+        return
+    fi
+
+    sudo apt-get -y install build-essential libtool autotools-dev
+    sudo apt-get -y install automake checkinstall check git yasm
+    sudo apt-get -y install libsodium13 libsodium-dev libcap2-bin
+    sudo apt-get -y install libconfig9 libconfig-dev
+
+    if [ ! -d ~/develop ]; then
+        mkdir ~/develop
+    fi
+    cd ~/develop
+    git clone $TOXCORE_REPO ~/develop/toxcore
+    cd ~/develop/toxcore
+    if [ $TOXCORE_COMMIT ]; then
+        git checkout $TOXCORE_COMMIT -b $TOXCORE_COMMIT
+    fi
+    autoreconf -i
+    ./configure --enable-daemon
+    if [ ! "$?" = "0" ]; then
+        exit 78467
+    fi
+    make
+    if [ ! "$?" = "0" ]; then
+        exit 84562
+    fi
+    sudo make install
+    sudo cp /usr/local/lib/libtoxcore* /usr/lib/
+
+    if [ ! -f /usr/local/bin/tox-bootstrapd ]; then
+        echo $"File not found /usr/local/bin/tox-bootstrapd"
+        exit 73862
+    fi
+
+    sudo useradd --home-dir /var/lib/tox-bootstrapd --create-home --system --shell /sbin/nologin --comment "Account to run Tox's DHT bootstrap daemon" --user-group tox-bootstrapd
+    sudo chmod 700 /var/lib/tox-bootstrapd
+    if [ ! -f ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf ]; then
+        echo $"File not found $INSTALL_DIR/toxcore/other/bootstrap_daemon/tox-bootstrapd.conf"
+        exit 476835
+    fi
+
+    # create configuration file
+    echo "port = $TOX_PORT" > /tmp/tox-bootstrapd.conf
+    echo 'keys_file_path = "/var/lib/tox-bootstrapd/keys"' >> /tmp/tox-bootstrapd.conf
+    echo 'pid_file_path = "/var/run/tox-bootstrapd/tox-bootstrapd.pid"' >> /tmp/tox-bootstrapd.conf
+    echo 'enable_ipv6 = true' >> /tmp/tox-bootstrapd.conf
+    echo 'enable_ipv4_fallback = true' >> /tmp/tox-bootstrapd.conf
+    echo 'enable_lan_discovery = true' >> /tmp/tox-bootstrapd.conf
+    echo 'enable_tcp_relay = true' >> /tmp/tox-bootstrapd.conf
+    echo "tcp_relay_ports = [443, 3389, $TOX_PORT]" >> /tmp/tox-bootstrapd.conf
+    echo 'enable_motd = true' >> /tmp/tox-bootstrapd.conf
+    echo 'motd = "tox-bootstrapd"' >> /tmp/tox-bootstrapd.conf
+    sudo cp /tmp/tox-bootstrapd.conf /etc/tox-bootstrapd.conf
+    rm /tmp/tox-bootstrapd.conf
+
+    if [ -f /bin/systemctl ]; then
+        if [ ! -f ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service ]; then
+            echo $"File not found ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service"
+            exit 7359
+        fi
+        sudo cp ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.service /etc/systemd/system/
+
+        sudo systemctl daemon-reload
+        sudo systemctl enable tox-bootstrapd.service
+        sudo systemctl start tox-bootstrapd.service
+        if [ ! "$?" = "0" ]; then
+            sudo systemctl status tox-bootstrapd.service
+            exit 5846
+        fi
+
+        sudo systemctl restart tox-bootstrapd.service
+    else
+        sudo cp ~/develop/toxcore/other/bootstrap_daemon/tox-bootstrapd.sh /etc/init.d/tox-bootstrapd
+        sudo chmod 755 /etc/init.d/tox-bootstrapd
+        sudo update-rc.d tox-bootstrapd defaults
+        sudo service tox-bootstrapd start
+    fi
+
+    TOX_PUBLIC_KEY=$(cat /var/log/syslog | grep tox | grep "Public Key" | awk -F ' ' '{print $8}' | tail -1)
+    if [ ${#TOX_PUBLIC_KEY} -lt 30 ]; then
+        echo $'Could not obtain the tox node public key'
+        exit 6529
+    fi
+
+    # save the public key for later reference
+    echo "$TOX_PUBLIC_KEY" > /tmp/boostrapid
+    sudo mv /tmp/boostrapid $TOX_BOOTSTRAP_ID_FILE
 }
 
 function install_toxid {
-	if [ -f /usr/local/bin/toxid ]; then
-		return
-	fi
-	cd ~/develop
-	git clone $TOXID_REPO ~/develop/toxid
-	cd ~/develop/toxid
-	make
-	sudo make install
-
-	if [ ! -f /usr/local/bin/toxid ]; then
-		echo $"Couldn't install toxid"
-		exit 6389
-	fi
-
-	if ! grep -Fxq "toxavahi" /etc/crontab; then
-		cp /etc/crontab /tmp/crontab
-		echo "* *       * * *   root    toxavahi > /dev/null" >> /tmp/crontab
-		sudo cp /tmp/crontab /etc/crontab
-		rm /tmp/crontab
-	fi
+    if [ -f /usr/local/bin/toxid ]; then
+        return
+    fi
+    cd ~/develop
+    git clone $TOXID_REPO ~/develop/toxid
+    cd ~/develop/toxid
+    make
+    sudo make install
+
+    if [ ! -f /usr/local/bin/toxid ]; then
+        echo $"Couldn't install toxid"
+        exit 6389
+    fi
+
+    if ! grep -Fxq "toxavahi" /etc/crontab; then
+        cp /etc/crontab /tmp/crontab
+        echo "* *       * * *   root    toxavahi > /dev/null" >> /tmp/crontab
+        sudo cp /tmp/crontab /etc/crontab
+        rm /tmp/crontab
+    fi
 }
 
 function run_tox {
-	echo $QTOX_INI
-	if [[ -f $TOXIC_FILE || -f $QTOX_INI ]]; then
-		if [[ $SERVER_INSTALLATION == "no" ]]; then
-			# update bootstrap nodes
-			if [ -f $DHTNODES ]; then
-				if [ ! -f $DHTNODES.internet ]; then
-					sudo cp $DHTNODES $DHTNODES.internet
-				fi
-			fi
-			lstox -f dht > /tmp/dht
-			sudo cp /tmp/dht $DHTNODES
-		fi
-
-		# get a list of peers
-		PEER_TOX_ID_LIST=$(lstox | grep $AVAHI_DOMAIN | sort -u)
-		if [ ! "$PEER_TOX_ID_LIST" ]; then
-			echo $'No peers found'
-			exit 0
-		fi
-		PEER_TOX_ID_LIST_COUNT=$(echo "$PEER_TOX_ID_LIST" | wc -l)
-		PEER_TOX_ID=''
-		if [ $PEER_TOX_ID_LIST_COUNT -lt "2" ]; then
-			# single peer
-			PEER_TOX_ID=$(echo "$PEER_TOX_ID_LIST" | awk -F ' ' '{print $3}')
-		else
-			# choose a user from a list
-			echo ''
-			echo $"Select a user on $AVAHI_DOMAIN:"
-			ctr=0
-			while IFS='' read -r line || [[ -n "$line" ]]; do
-				toxusername=$(echo $line | awk -F ' ' '{print $2}')
-				echo "    $ctr. $toxusername"
-				ctr=$((ctr + 1))
-			done < "$PEER_TOX_ID_LIST"
-			read user_index
-			PEER_TOX_ID=$(echo "$PEER_TOX_ID_LIST" | tail -n+${user_index} | head -n1 | awk -F ' ' '{print $3}')
-		fi
-
-		# if this is a valid ID
-		if [ ${#PEER_TOX_ID} -gt 30 ]; then
-			# start client and make a friend request
-			if [ -f $QTOX_INI ]; then
-				echo $'Launch qTox'
-				qtox &
-			else
-
-				echo "n
+    echo $QTOX_INI
+    if [[ -f $TOXIC_FILE || -f $QTOX_INI ]]; then
+        if [[ $SERVER_INSTALLATION == "no" ]]; then
+            # update bootstrap nodes
+            if [ -f $DHTNODES ]; then
+                if [ ! -f $DHTNODES.internet ]; then
+                    sudo cp $DHTNODES $DHTNODES.internet
+                fi
+            fi
+            lstox -f dht > /tmp/dht
+            sudo cp /tmp/dht $DHTNODES
+        fi
+
+        # get a list of peers
+        PEER_TOX_ID_LIST=$(lstox | grep $AVAHI_DOMAIN | sort -u)
+        if [ ! "$PEER_TOX_ID_LIST" ]; then
+            echo $'No peers found'
+            exit 0
+        fi
+        PEER_TOX_ID_LIST_COUNT=$(echo "$PEER_TOX_ID_LIST" | wc -l)
+        PEER_TOX_ID=''
+        if [ $PEER_TOX_ID_LIST_COUNT -lt "2" ]; then
+            # single peer
+            PEER_TOX_ID=$(echo "$PEER_TOX_ID_LIST" | awk -F ' ' '{print $3}')
+        else
+            # choose a user from a list
+            echo ''
+            echo $"Select a user on $AVAHI_DOMAIN:"
+            ctr=0
+            while IFS='' read -r line || [[ -n "$line" ]]; do
+                toxusername=$(echo $line | awk -F ' ' '{print $2}')
+                echo "    $ctr. $toxusername"
+                ctr=$((ctr + 1))
+            done < "$PEER_TOX_ID_LIST"
+            read user_index
+            PEER_TOX_ID=$(echo "$PEER_TOX_ID_LIST" | tail -n+${user_index} | head -n1 | awk -F ' ' '{print $3}')
+        fi
+
+        # if this is a valid ID
+        if [ ${#PEER_TOX_ID} -gt 30 ]; then
+            # start client and make a friend request
+            if [ -f $QTOX_INI ]; then
+                echo $'Launch qTox'
+                qtox &
+            else
+
+                echo "n
 /nick $USER
 /add $PEER_TOX_ID
 /exit
 " | $TOXIC_FILE -d
-				# Running twice is a hack to get around buggyness in the client
-				$TOXIC_FILE -d
-			fi
-			exit 0
-		else
-			# ID was invalid
-			echo $PEER_TOX_ID
-			echo $"Tox ID for $AVAHI_DOMAIN was not found"
-			exit 6
-		fi
-	fi
+                # Running twice is a hack to get around buggyness in the client
+                $TOXIC_FILE -d
+            fi
+            exit 0
+        else
+            # ID was invalid
+            echo $PEER_TOX_ID
+            echo $"Tox ID for $AVAHI_DOMAIN was not found"
+            exit 6
+        fi
+    fi
 }
 
 if [ -f /var/lib/batman ]; then
-	SERVER_INSTALLATION="yes"
+    SERVER_INSTALLATION="yes"
 fi
 
 if [[ $SERVER_INSTALLATION == "no" ]]; then
-	if [ ! -f /usr/bin/batman ]; then
-		${PROJECT_NAME}-client
-	fi
+    if [ ! -f /usr/bin/batman ]; then
+        ${PROJECT_NAME}-client
+    fi
 fi
 
 # alternative toxic paths
 if [ -f /usr/local/bin/toxic ]; then
-	TOXIC_FILE=/usr/local/bin/toxic
+    TOXIC_FILE=/usr/local/bin/toxic
 fi
 if [ -f /usr/local/share/toxic/DHTnodes ]; then
-	DHTNODES=/usr/local/share/toxic/DHTnodes
+    DHTNODES=/usr/local/share/toxic/DHTnodes
 fi
 
 if [[ $SERVER_INSTALLATION == "no" ]]; then
-	if [ ! -f /tmp/meshtype ]; then
-		install_toxcore
-		install_toxid
-		sudo batman start
-		if [ ! "$?" = "0" ]; then
-			exit 2
-		fi
-	fi
+    if [ ! -f /tmp/meshtype ]; then
+        install_toxcore
+        install_toxid
+        sudo batman start
+        if [ ! "$?" = "0" ]; then
+            exit 2
+        fi
+    fi
 fi
 
 avahi-browse -atl | awk -F ' ' '{print $4}' | sort -u > $PEERS_FILE
 
 if [ ! -f $PEERS_FILE ]; then
-	echo $'No peers were found'
-	exit 0
+    echo $'No peers were found'
+    exit 0
 fi
 
 ctr=0
 while IFS='' read -r line || [[ -n "$line" ]]; do
-	ctr=$((ctr + 1))
+    ctr=$((ctr + 1))
 done < "$PEERS_FILE"
 
 if [ ${ctr} -lt "1" ]; then
-	echo $'No peers were found'
-	exit 0
+    echo $'No peers were found'
+    exit 0
 fi
 
 clear
@@ -303,8 +305,8 @@ echo ''
 echo $'Please choose a peer to connect to:'
 idx=1
 while IFS='' read -r line || [[ -n "$line" ]]; do
-	echo "    $idx. $line"
-	idx=$((idx + 1))
+    echo "    $idx. $line"
+    idx=$((idx + 1))
 done < "$PEERS_FILE"
 
 peer_index=0
@@ -312,42 +314,42 @@ read peer_index
 
 # if no selection made
 if [ ! $peer_index ]; then
-	echo $'Nothing was selected'
-	echo ''
-	exit 0
+    echo $'Nothing was selected'
+    echo ''
+    exit 0
 fi
 
 # get the avahi domain name
 AVAHI_DOMAIN=
 idx=1
 while IFS='' read -r line || [[ -n "$line" ]]; do
-	if [ ${idx} -eq "$peer_index" ]; then
-		AVAHI_DOMAIN=${line}.local
-	fi
-	idx=$((idx + 1))
+    if [ ${idx} -eq "$peer_index" ]; then
+        AVAHI_DOMAIN=${line}.local
+    fi
+    idx=$((idx + 1))
 done < "$PEERS_FILE"
 
 if [ ! $AVAHI_DOMAIN ]; then
-	echo $'No domain name'
-	exit 3
+    echo $'No domain name'
+    exit 3
 fi
 
 # if only mumble is installed
 if [ ! -f $TOXIC_FILE ]; then
-	if [ -f $MUMBLE_PATH ]; then
-		$MUMBLE_PATH &
-		exit 0
-	fi
-	echo $'You need mumble/toxic/qTox installed on your system'
-	if [[ $SERVER_INSTALLATION == "no" ]]; then
-		sudo batman stop
-	fi
-	exit 4
+    if [ -f $MUMBLE_PATH ]; then
+        $MUMBLE_PATH &
+        exit 0
+    fi
+    echo $'You need mumble/toxic/qTox installed on your system'
+    if [[ $SERVER_INSTALLATION == "no" ]]; then
+        sudo batman stop
+    fi
+    exit 4
 fi
 
 # if only tox is installed
 if [ ! -f $MUMBLE_PATH ]; then
-	run_tox
+    run_tox
 fi
 
 echo ''
@@ -360,32 +362,32 @@ read peer_index
 
 # if no selection made
 if [ ! $peer_index ]; then
-	echo $'Nothing was selected'
-	echo ''
-	exit 0
+    echo $'Nothing was selected'
+    echo ''
+    exit 0
 fi
 
 if [[ $peer_index == 1 ]]; then
-	if [ -f $MUMBLE_PATH ]; then
-		echo ''
-		echo $'To setup for the first time click "Add New", then set:'
-		echo $"    Label:    $AVAHI_DOMAIN"
-		echo $"    Address:  $AVAHI_DOMAIN"
-		echo $'    Port:     64738'
-		echo $"    Username: $USER"
-		echo ''
-		echo $'Press Enter to continue.'
-		echo ''
-		read peer_index
-		$MUMBLE_PATH &
-	else
-		echo $'Mumble may not be installed on this system'
-		exit 5
-	fi
+    if [ -f $MUMBLE_PATH ]; then
+        echo ''
+        echo $'To setup for the first time click "Add New", then set:'
+        echo $"    Label:    $AVAHI_DOMAIN"
+        echo $"    Address:  $AVAHI_DOMAIN"
+        echo $'    Port:     64738'
+        echo $"    Username: $USER"
+        echo ''
+        echo $'Press Enter to continue.'
+        echo ''
+        read peer_index
+        $MUMBLE_PATH &
+    else
+        echo $'Mumble may not be installed on this system'
+        exit 5
+    fi
 fi
 
 if [[ $peer_index == 2 ]]; then
-	run_tox
+    run_tox
 fi
 
 exit 0
-- 
GitLab