mirror of
https://github.com/akuker/RASCSI.git
synced 2025-02-18 01:31:02 +00:00
Easyinstall fixups (#305)
* Fix minor errors in easyinstall.sh and start.sh * Make easyinstall directory portable * Make RASCSI-web directory portable in easyinstall.sh * Remove directory check from easyinstall.sh * Fix failed merge * Fix copy of web files * Fix VIRTUAL_DRIVER_PATH * Revert to fixed checkout dir * Simplify rascsi-web.service installation * Fix bugs * Better iptables-persistent check * Revert line commented out for testing * Fix unintentional indentation * Add check for the existance of a remote branch * Add echo message when detecing local branch * Fallback name and email for git stash command * Add quotation marks * Add set -x for testing * Avoid script to exit out when sudoIsReady check fails * Tweak conditional check * Pass argument with -S * Options for testing * Testing * Testing * Reset stdin for suspicious actions * Reset stdin for suspicious actions * Testing * Testing * Stop testing Co-authored-by: Jonathan karras <karrots@users.noreply.github.com>
This commit is contained in:
parent
e58f96318a
commit
34f5bc99b7
@ -46,12 +46,13 @@ logo="""
|
|||||||
echo -e $logo
|
echo -e $logo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BASE="$HOME/RASCSI"
|
||||||
VIRTUAL_DRIVER_PATH="$HOME/images"
|
VIRTUAL_DRIVER_PATH="$HOME/images"
|
||||||
CFG_PATH="$HOME/.config/rascsi"
|
CFG_PATH="$HOME/.config/rascsi"
|
||||||
BASE="$HOME/RASCSI"
|
WEBINSTDIR="$BASE/src/web"
|
||||||
HFS_FORMAT=/usr/bin/hformat
|
HFS_FORMAT=/usr/bin/hformat
|
||||||
HFDISK_BIN=/usr/bin/hfdisk
|
HFDISK_BIN=/usr/bin/hfdisk
|
||||||
LIDO_DRIVER=~/RASCSI/lido-driver.img
|
LIDO_DRIVER=$BASE/lido-driver.img
|
||||||
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
GIT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||||
GIT_REMOTE=${GIT_REMOTE:-origin}
|
GIT_REMOTE=${GIT_REMOTE:-origin}
|
||||||
|
|
||||||
@ -73,7 +74,7 @@ function initialChecks() {
|
|||||||
|
|
||||||
# install all dependency packages for RaSCSI Service
|
# install all dependency packages for RaSCSI Service
|
||||||
function installPackages() {
|
function installPackages() {
|
||||||
sudo apt-get update && sudo apt install git libspdlog-dev libpcap-dev genisoimage python3 python3-venv nginx libpcap-dev protobuf-compiler bridge-utils python3-dev libev-dev libevdev2 -y
|
sudo apt-get update && sudo apt-get install git libspdlog-dev libpcap-dev genisoimage python3 python3-venv nginx libpcap-dev protobuf-compiler bridge-utils python3-dev libev-dev libevdev2 -y </dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
# compile and install RaSCSI Service
|
# compile and install RaSCSI Service
|
||||||
@ -88,15 +89,11 @@ function installRaScsi() {
|
|||||||
SYSTEMD_BACKUP=false
|
SYSTEMD_BACKUP=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
cd ~/RASCSI/src/raspberrypi || exit 1
|
cd "$BASE/src/raspberrypi" || exit 1
|
||||||
|
|
||||||
make clean
|
( make clean && make all CONNECT_TYPE="${CONNECT_TYPE-FULLSPEC}" && sudo make install CONNECT_TYPE="${CONNECT_TYPE-FULLSPEC}" ) </dev/null
|
||||||
make all CONNECT_TYPE="${CONNECT_TYPE-FULLSPEC}"
|
|
||||||
sudo make install CONNECT_TYPE="${CONNECT_TYPE-FULLSPEC}"
|
|
||||||
|
|
||||||
sudoIsReady=$(sudo grep -c "rascsi" /etc/sudoers)
|
if [[ `sudo grep -c "rascsi" /etc/sudoers` -eq 0 ]]; then
|
||||||
|
|
||||||
if [ "$sudoIsReady" = "0" ]; then
|
|
||||||
sudo bash -c 'echo "
|
sudo bash -c 'echo "
|
||||||
# Allow the web server to restart the rascsi service
|
# Allow the web server to restart the rascsi service
|
||||||
www-data ALL=NOPASSWD: /bin/systemctl restart rascsi.service
|
www-data ALL=NOPASSWD: /bin/systemctl restart rascsi.service
|
||||||
@ -104,6 +101,8 @@ www-data ALL=NOPASSWD: /bin/systemctl stop rascsi.service
|
|||||||
# Allow the web server to reboot the raspberry pi
|
# Allow the web server to reboot the raspberry pi
|
||||||
www-data ALL=NOPASSWD: /sbin/shutdown, /sbin/reboot
|
www-data ALL=NOPASSWD: /sbin/shutdown, /sbin/reboot
|
||||||
" >> /etc/sudoers'
|
" >> /etc/sudoers'
|
||||||
|
else
|
||||||
|
echo "The sudoers file is already modified for rascsi-web."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
@ -114,24 +113,22 @@ www-data ALL=NOPASSWD: /sbin/shutdown, /sbin/reboot
|
|||||||
|
|
||||||
# install everything required to run an HTTP server (Nginx + Python Flask App)
|
# install everything required to run an HTTP server (Nginx + Python Flask App)
|
||||||
function installRaScsiWebInterface() {
|
function installRaScsiWebInterface() {
|
||||||
|
if [ -f "$WEBINSTDIR/rascsi_interface_pb2.py" ]; then
|
||||||
if [ -f ~/RASCSI/src/web/rascsi_interface_pb2.py ]; then
|
rm "$WEBINSTDIR/rascsi_interface_pb2.py"
|
||||||
rm ~/RASCSI/src/web/rascsi_interface_pb2.py
|
|
||||||
echo "Deleting old Python protobuf library rascsi_interface_pb2.py"
|
echo "Deleting old Python protobuf library rascsi_interface_pb2.py"
|
||||||
fi
|
fi
|
||||||
echo "Compiling the Python protobuf library rascsi_interface_pb2.py..."
|
echo "Compiling the Python protobuf library rascsi_interface_pb2.py..."
|
||||||
protoc -I="$BASE/src/raspberrypi/" --python_out="$BASE/src/web/" rascsi_interface.proto
|
protoc -I="$BASE/src/raspberrypi/" --python_out="$WEBINSTDIR" rascsi_interface.proto
|
||||||
|
|
||||||
|
sudo cp -f "$BASE/src/web/service-infra/nginx-default.conf" /etc/nginx/sites-available/default
|
||||||
sudo cp -f ~/RASCSI/src/web/service-infra/nginx-default.conf /etc/nginx/sites-available/default
|
sudo cp -f "$BASE/src/web/service-infra/502.html" /var/www/html/502.html
|
||||||
sudo cp -f ~/RASCSI/src/web/service-infra/502.html /var/www/html/502.html
|
|
||||||
|
|
||||||
sudo usermod -a -G pi www-data
|
sudo usermod -a -G pi www-data
|
||||||
|
|
||||||
sudo systemctl reload nginx
|
sudo systemctl reload nginx
|
||||||
|
|
||||||
echo "Installing the rascsi-web.service configuration..."
|
echo "Installing the rascsi-web.service configuration..."
|
||||||
sudo cp ~/RASCSI/src/web/service-infra/rascsi-web.service /etc/systemd/system/rascsi-web.service
|
sudo cp -f "$BASE/src/web/service-infra/rascsi-web.service" /etc/systemd/system/rascsi-web.service
|
||||||
|
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
sudo systemctl enable rascsi-web
|
sudo systemctl enable rascsi-web
|
||||||
@ -167,16 +164,20 @@ function stopOldWebInterface() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function updateRaScsiGit() {
|
function updateRaScsiGit() {
|
||||||
echo "Updating checked out branch $GIT_REMOTE/$GIT_BRANCH"
|
cd "$BASE" || exit 1
|
||||||
cd ~/RASCSI || exit 1
|
|
||||||
stashed=0
|
stashed=0
|
||||||
if [[ $(git diff --stat) != '' ]]; then
|
if [[ $(git diff --stat) != '' ]]; then
|
||||||
echo 'There are local changes, we will stash and reapply them.'
|
echo "There are local changes to the RaSCSI code; we will stash and reapply them."
|
||||||
git stash
|
git -c user.name="${GIT_COMMITTER_NAME-rascsi}" -c user.email="${GIT_COMMITTER_EMAIL-rascsi@rascsi.com}" stash
|
||||||
stashed=1
|
stashed=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
git pull --ff-only
|
if [[ `git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"` != "" ]]; then
|
||||||
|
echo "Updating checked out git branch $GIT_REMOTE/$GIT_BRANCH"
|
||||||
|
git pull --ff-only
|
||||||
|
else
|
||||||
|
echo "Detected a local git working branch; skipping the remote update step."
|
||||||
|
fi
|
||||||
|
|
||||||
if [ $stashed -eq 1 ]; then
|
if [ $stashed -eq 1 ]; then
|
||||||
echo "Reapplying local changes..."
|
echo "Reapplying local changes..."
|
||||||
@ -215,7 +216,7 @@ function formatDrive() {
|
|||||||
|
|
||||||
if [ ! -x $HFS_FORMAT ]; then
|
if [ ! -x $HFS_FORMAT ]; then
|
||||||
# Install hfsutils to have hformat to format HFS
|
# Install hfsutils to have hformat to format HFS
|
||||||
sudo apt-get install hfsutils
|
sudo apt-get install hfsutils --assume-yes </dev/null
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -x $HFDISK_BIN ]; then
|
if [ ! -x $HFDISK_BIN ]; then
|
||||||
@ -248,13 +249,13 @@ function formatDrive() {
|
|||||||
partitionOk=$?
|
partitionOk=$?
|
||||||
|
|
||||||
if [ $partitionOk -eq 0 ]; then
|
if [ $partitionOk -eq 0 ]; then
|
||||||
if [ ! -f $LIDO_DRIVER ];then
|
if [ ! -f "$LIDO_DRIVER" ];then
|
||||||
echo "Lido driver couldn't be found. Make sure RaSCSI is up-to-date with git pull"
|
echo "Lido driver couldn't be found. Make sure RaSCSI is up-to-date with git pull"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Burn Lido driver to the disk
|
# Burn Lido driver to the disk
|
||||||
dd if=$LIDO_DRIVER of="$diskPath" seek=64 count=32 bs=512 conv=notrunc
|
dd if="$LIDO_DRIVER" of="$diskPath" seek=64 count=32 bs=512 conv=notrunc
|
||||||
|
|
||||||
driverInstalled=$?
|
driverInstalled=$?
|
||||||
if [ $driverInstalled -eq 0 ]; then
|
if [ $driverInstalled -eq 0 ]; then
|
||||||
@ -317,9 +318,9 @@ function setupWiredNetworking() {
|
|||||||
|
|
||||||
if [ "$REPLY" == "N" ] || [ "$REPLY" == "n" ]; then
|
if [ "$REPLY" == "N" ] || [ "$REPLY" == "n" ]; then
|
||||||
echo "Available wired interfaces on this system:"
|
echo "Available wired interfaces on this system:"
|
||||||
ip -o addr show scope link | awk '{split($0, a); print $2}' | grep eth
|
echo `ip -o addr show scope link | awk '{split($0, a); print $2}' | grep eth`
|
||||||
echo "Please type the wired interface you want to use and press Enter:"
|
echo "Please type the wired interface you want to use and press Enter:"
|
||||||
read -r SELECTED
|
read SELECTED
|
||||||
LAN_INTERFACE=$SELECTED
|
LAN_INTERFACE=$SELECTED
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -329,7 +330,7 @@ function setupWiredNetworking() {
|
|||||||
read REPLY
|
read REPLY
|
||||||
sudo sed -i /^denyinterfaces/d /etc/dhcpcd.conf
|
sudo sed -i /^denyinterfaces/d /etc/dhcpcd.conf
|
||||||
fi
|
fi
|
||||||
sudo -c 'echo "denyinterfaces $LAN_INTERFACE" >> /etc/dhcpcd.conf'
|
sudo bash -c 'echo "denyinterfaces '$LAN_INTERFACE'" >> /etc/dhcpcd.conf'
|
||||||
echo "Modified /etc/dhcpcd.conf"
|
echo "Modified /etc/dhcpcd.conf"
|
||||||
|
|
||||||
# default config file is made for eth0, this will set the right net interface
|
# default config file is made for eth0, this will set the right net interface
|
||||||
@ -370,7 +371,7 @@ function setupWirelessNetworking() {
|
|||||||
|
|
||||||
if [ "$REPLY" == "N" ] || [ "$REPLY" == "n" ]; then
|
if [ "$REPLY" == "N" ] || [ "$REPLY" == "n" ]; then
|
||||||
echo "Available wireless interfaces on this system:"
|
echo "Available wireless interfaces on this system:"
|
||||||
ip -o addr show scope link | awk '{split($0, a); print $2}' | grep wlan
|
echo `ip -o addr show scope link | awk '{split($0, a); print $2}' | grep wlan`
|
||||||
echo "Please type the wireless interface you want to use and press Enter:"
|
echo "Please type the wireless interface you want to use and press Enter:"
|
||||||
read -r WLAN_INTERFACE
|
read -r WLAN_INTERFACE
|
||||||
echo "Base IP address (ex. 10.10.20):"
|
echo "Base IP address (ex. 10.10.20):"
|
||||||
@ -401,11 +402,11 @@ function setupWirelessNetworking() {
|
|||||||
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
|
# Check if iptables-persistent is installed
|
||||||
IPTABLES_PERSISTENT=$(dpkg -s iptables-persistent | grep Status | grep -c "install ok")
|
if [ `apt-cache policy iptables-persistent | grep Installed | grep -c "(none)"` -eq 0 ]; then
|
||||||
if [ "$IPTABLES_PERSISTENT" -eq 0 ]; then
|
echo "iptables-persistent is already installed"
|
||||||
sudo apt-get install iptables-persistent --assume-yes
|
|
||||||
else
|
|
||||||
sudo iptables-save --file /etc/iptables/rules.v4
|
sudo iptables-save --file /etc/iptables/rules.v4
|
||||||
|
else
|
||||||
|
sudo apt-get install iptables-persistent --assume-yes </dev/null
|
||||||
fi
|
fi
|
||||||
echo "Modified /etc/iptables/rules.v4"
|
echo "Modified /etc/iptables/rules.v4"
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user