diff --git a/easyinstall.sh b/easyinstall.sh index 66e4a537..79a161c7 100755 --- a/easyinstall.sh +++ b/easyinstall.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash # BSD 3-Clause License # Author @sonique6784 @@ -46,8 +46,9 @@ logo=""" echo -e $logo } -VIRTUAL_DRIVER_PATH=/home/pi/images +VIRTUAL_DRIVER_PATH="$HOME/images" CFG_PATH="$HOME/.config/rascsi" +BASE="$HOME/RASCSI" HFS_FORMAT=/usr/bin/hformat HFDISK_BIN=/usr/bin/hfdisk LIDO_DRIVER=~/RASCSI/lido-driver.img @@ -63,8 +64,8 @@ function initialChecks() { exit 1 fi - if [ ! -d ~/RASCSI ]; then - echo "You must checkout RASCSI repo into /home/pi/RASCSI" + if [ ! -d "$BASE" ]; then + echo "You must checkout RASCSI repo into $BASE" echo "$ git clone git@github.com:akuker/RASCSI.git" exit 2 fi @@ -87,14 +88,15 @@ function installRaScsi() { SYSTEMD_BACKUP=false fi - cd ~/RASCSI/src/raspberrypi + cd ~/RASCSI/src/raspberrypi || exit 1 + make clean - make all CONNECT_TYPE=${CONNECT_TYPE-FULLSPEC} - sudo make install CONNECT_TYPE=${CONNECT_TYPE-FULLSPEC} + make all CONNECT_TYPE="${CONNECT_TYPE-FULLSPEC}" + sudo make install CONNECT_TYPE="${CONNECT_TYPE-FULLSPEC}" sudoIsReady=$(sudo grep -c "rascsi" /etc/sudoers) - if [ $sudoIsReady = "0" ]; then + if [ "$sudoIsReady" = "0" ]; then sudo bash -c 'echo " # Allow the web server to restart the rascsi service www-data ALL=NOPASSWD: /bin/systemctl restart rascsi.service @@ -112,12 +114,14 @@ www-data ALL=NOPASSWD: /sbin/shutdown, /sbin/reboot # install everything required to run an HTTP server (Nginx + Python Flask App) function installRaScsiWebInterface() { + if [ -f ~/RASCSI/src/web/rascsi_interface_pb2.py ]; then rm ~/RASCSI/src/web/rascsi_interface_pb2.py echo "Deleting old Python protobuf library rascsi_interface_pb2.py" fi echo "Compiling the Python protobuf library rascsi_interface_pb2.py..." - protoc -I=/home/pi/RASCSI/src/raspberrypi/ --python_out=/home/pi/RASCSI/src/web/ rascsi_interface.proto + protoc -I="$BASE/src/raspberrypi/" --python_out="$BASE/src/web/" rascsi_interface.proto + sudo cp -f ~/RASCSI/src/web/service-infra/nginx-default.conf /etc/nginx/sites-available/default sudo cp -f ~/RASCSI/src/web/service-infra/502.html /var/www/html/502.html @@ -135,20 +139,20 @@ function installRaScsiWebInterface() { } function createImagesDir() { - if [ -d $VIRTUAL_DRIVER_PATH ]; then + if [ -d "$VIRTUAL_DRIVER_PATH" ]; then echo "The $VIRTUAL_DRIVER_PATH directory already exists." else echo "The $VIRTUAL_DRIVER_PATH directory does not exist; creating..." - mkdir -p $VIRTUAL_DRIVER_PATH - chmod -R 775 $VIRTUAL_DRIVER_PATH + mkdir -p "$VIRTUAL_DRIVER_PATH" + chmod -R 775 "$VIRTUAL_DRIVER_PATH" fi - if [ -d $CFG_PATH ]; then + if [ -d "$CFG_PATH" ]; then echo "The $CFG_PATH directory already exists." else echo "The $CFG_PATH directory does not exist; creating..." - mkdir -p $CFG_PATH - chmod -R 775 $CFG_PATH + mkdir -p "$CFG_PATH" + chmod -R 775 "$CFG_PATH" fi } @@ -164,7 +168,7 @@ function stopOldWebInterface() { function updateRaScsiGit() { echo "Updating checked out branch $GIT_REMOTE/$GIT_BRANCH" - cd ~/RASCSI + cd ~/RASCSI || exit 1 stashed=0 if [[ $(git diff --stat) != '' ]]; then echo 'There are local changes, we will stash and reapply them.' @@ -217,7 +221,7 @@ function formatDrive() { if [ ! -x $HFDISK_BIN ]; then # Clone, compile and install 'hfdisk', partition tool git clone git://www.codesrc.com/git/hfdisk.git - cd hfdisk + cd hfdisk || exit 1 make sudo cp hfdisk /usr/bin/hfdisk @@ -283,12 +287,12 @@ function createDrive() { driveSize=$1 driveName=$2 - mkdir -p $VIRTUAL_DRIVER_PATH + mkdir -p "$VIRTUAL_DRIVER_PATH" drivePath="${VIRTUAL_DRIVER_PATH}/${driveSize}MB.hds" - if [ ! -f $drivePath ]; then + if [ ! -f "$drivePath" ]; then echo "Creating a ${driveSize}MB Drive" - truncate --size ${driveSize}m $drivePath + truncate --size "${driveSize}m" "$drivePath" echo "Formatting drive with HFS" formatDrive "$drivePath" "$driveName" @@ -319,17 +323,17 @@ function setupWiredNetworking() { LAN_INTERFACE=$SELECTED fi - if [ $(grep -c "^denyinterfaces" /etc/dhcpcd.conf) -ge 1 ]; then + if [ "$(grep -c "^denyinterfaces" /etc/dhcpcd.conf)" -ge 1 ]; then echo "WARNING: Network forwarding may already have been configured. Proceeding will overwrite the configuration." echo "Press enter to continue or CTRL-C to exit" read REPLY sudo sed -i /^denyinterfaces/d /etc/dhcpcd.conf fi - sudo echo "denyinterfaces $LAN_INTERFACE" >> /etc/dhcpcd.conf + sudo -c 'echo "denyinterfaces $LAN_INTERFACE" >> /etc/dhcpcd.conf' echo "Modified /etc/dhcpcd.conf" # default config file is made for eth0, this will set the right net interface - sudo bash -c 'sed s/eth0/'"$LAN_INTERFACE"'/g /home/pi/RASCSI/src/raspberrypi/os_integration/rascsi_bridge > /etc/network/interfaces.d/rascsi_bridge' + sudo bash -c 'sed s/eth0/'"$LAN_INTERFACE"'/g '"$BASE"'/src/raspberrypi/os_integration/rascsi_bridge > /etc/network/interfaces.d/rascsi_bridge' echo "Modified /etc/network/interfaces.d/rascsi_bridge" echo "Configuration completed!" @@ -378,7 +382,7 @@ function setupWirelessNetworking() { fi - if [ $(grep -c "^net.ipv4.ip_forward=1" /etc/sysctl.conf) -ge 1 ]; then + if [ "$(grep -c "^net.ipv4.ip_forward=1" /etc/sysctl.conf)" -ge 1 ]; then echo "WARNING: Network forwarding may already have been configured. Proceeding will overwrite the configuration." echo "Press enter to continue or CTRL-C to exit" read REPLY @@ -394,11 +398,11 @@ function setupWirelessNetworking() { sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -P FORWARD ACCEPT - sudo iptables -t nat -A POSTROUTING -o $WLAN_INTERFACE -s $ROUTING_ADDRESS -j MASQUERADE + sudo iptables -t nat -A POSTROUTING -o "$WLAN_INTERFACE" -s "$ROUTING_ADDRESS" -j MASQUERADE # Check if iptables-persistent is installed IPTABLES_PERSISTENT=$(dpkg -s iptables-persistent | grep Status | grep -c "install ok") - if [ $IPTABLES_PERSISTENT -eq 0 ]; then + if [ "$IPTABLES_PERSISTENT" -eq 0 ]; then sudo apt-get install iptables-persistent --assume-yes else sudo iptables-save --file /etc/iptables/rules.v4 @@ -543,8 +547,8 @@ function showMenu() { # parse arguments while [ "$1" != "" ]; do - PARAM=`echo $1 | awk -F= '{print $1}'` - VALUE=`echo $1 | awk -F= '{print $2}'` + PARAM=$(echo "$1" | awk -F= '{print $1}') + VALUE=$(echo "$1" | awk -F= '{print $2}') case $PARAM in -c | --connect_type) CONNECT_TYPE=$VALUE diff --git a/src/web/start.sh b/src/web/start.sh index de50c04a..6e65909d 100755 --- a/src/web/start.sh +++ b/src/web/start.sh @@ -2,7 +2,7 @@ set -e # set -x # Uncomment to Debug -cd $(dirname $0) +cd "$(dirname "$0")" # verify packages installed ERROR=0 if ! command -v genisoimage &> /dev/null ; then