mirror of
https://github.com/akuker/RASCSI.git
synced 2024-12-09 04:49:34 +00:00
209 lines
4.7 KiB
Bash
209 lines
4.7 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# BSD 3-Clause License
|
||
|
# Author @sonique6784
|
||
|
# Copyright (c) 2020, sonique6784
|
||
|
|
||
|
|
||
|
VIRTUAL_DRIVER_PATH=/home/pi/images
|
||
|
|
||
|
|
||
|
function initialChecks() {
|
||
|
currentUser=$(whoami)
|
||
|
if [ "pi" != $currentUser ]; then
|
||
|
echo "You must use 'pi' user (current: $currentUser)"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
if [ ! -d ~/RASCSI ]; then
|
||
|
echo "You must checkout RASCSI repo into /user/pi/RASCSI"
|
||
|
exit 2
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
# install all dependency packages for RaSCSI Service
|
||
|
# compile and install RaSCSI Service
|
||
|
function installRaScsi() {
|
||
|
sudo apt-get update && sudo apt-get install --yes git libspdlog-dev
|
||
|
|
||
|
cd ~/RASCSI/src/raspberrypi
|
||
|
make all CONNECT_TYPE=FULLSPEC
|
||
|
sudo make install CONNECT_TYPE=FULLSPEC
|
||
|
|
||
|
sudoIsReady=$(sudo grep -c "rascsi" /etc/sudoers)
|
||
|
|
||
|
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
|
||
|
www-data ALL=NOPASSWD: /bin/systemctl stop rascsi.service
|
||
|
# Allow the web server to reboot the raspberry pi
|
||
|
www-data ALL=NOPASSWD: /sbin/shutdown, /sbin/reboot
|
||
|
" >> /etc/sudoers'
|
||
|
fi
|
||
|
|
||
|
sudo systemctl restart rsyslog
|
||
|
sudo systemctl enable rascsi # optional - start rascsi at boot
|
||
|
sudo systemctl start rascsi
|
||
|
|
||
|
}
|
||
|
|
||
|
# install everything required to run an HTTP server (Apache+PHP)
|
||
|
# configure PHP
|
||
|
# install
|
||
|
function installRaScsiWebInterface() {
|
||
|
|
||
|
sudo apt install apache2 php libapache2-mod-php -y
|
||
|
|
||
|
sudo cp ~/RASCSI/src/php/* /var/www/html
|
||
|
|
||
|
|
||
|
PHP_CONFIG_FILE=/etc/php/7.3/apache2/php.ini
|
||
|
|
||
|
#Comment out any current configuration
|
||
|
sudo sed -i.bak 's/^post_max_size/#post_max_size/g' $PHP_CONFIG_FILE
|
||
|
sudo sed -i.bak 's/^upload_max_filesize/#upload_max_filesize/g' $PHP_CONFIG_FILE
|
||
|
|
||
|
sudo bash -c 'PHP_CONFIG_FILE=/etc/php/7.3/apache2/php.ini && echo "
|
||
|
# RaSCSI high upload limits
|
||
|
upload_max_filesize = 1200M
|
||
|
post_max_size = 1200M
|
||
|
|
||
|
" >> $PHP_CONFIG_FILE'
|
||
|
|
||
|
mkdir -p $VIRTUAL_DRIVER_PATH
|
||
|
chmod -R 775 $VIRTUAL_DRIVER_PATH
|
||
|
groups www-data
|
||
|
sudo usermod -a -G pi www-data
|
||
|
groups www-data
|
||
|
|
||
|
sudo /etc/init.d/apache2 restart
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function updateRaScsi() {
|
||
|
sudo systemctl stop rascsi
|
||
|
|
||
|
cd ~/RASCSI
|
||
|
|
||
|
make clean
|
||
|
make all CONNECT_TYPE=FULLSPEC
|
||
|
sudo make install CONNECT_TYPE=FULLSPEC
|
||
|
sudo systemctl start rascsi
|
||
|
}
|
||
|
|
||
|
function updateRaScsiWebInterface() {
|
||
|
sudo /etc/init.d/apache2 stop
|
||
|
cd ~/RASCSI
|
||
|
git fetch --all
|
||
|
cd ~/RASCSI/src/raspberrypi
|
||
|
sudo cp ~/RASCSI/src/php/* /var/www/html
|
||
|
|
||
|
sudo /etc/init.d/apache2 start
|
||
|
}
|
||
|
|
||
|
function showRaScsiStatus() {
|
||
|
sudo systemctl status rascsi
|
||
|
}
|
||
|
|
||
|
function createDrive600MB() {
|
||
|
createDrive 600
|
||
|
}
|
||
|
|
||
|
function createDriveCustom() {
|
||
|
driveSize=-1
|
||
|
until [ $driveSize -ge "10" ] && [ $driveSize -le "4000" ]; do
|
||
|
echo "What drive size would you like (in MB) (10-4000)"
|
||
|
read driveSize
|
||
|
done
|
||
|
|
||
|
createDrive $driveSize
|
||
|
}
|
||
|
|
||
|
function createDrive() {
|
||
|
driveSize=$1
|
||
|
mkdir -p $VIRTUAL_DRIVER_PATH
|
||
|
drivePath="${VIRTUAL_DRIVER_PATH}/${driveSize}MB.hda"
|
||
|
echo $drivePath
|
||
|
if [ ! -f $drivePath ]; then
|
||
|
echo "Creating a ${driveSize}MB Drive"
|
||
|
dd if=/dev/zero of=$drivePath bs=1M count=$driveSize
|
||
|
else
|
||
|
echo "Error: drive already exists"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
initialChecks
|
||
|
|
||
|
|
||
|
echo "Welcome to Easy Install for RaSCSI"
|
||
|
echo ""
|
||
|
echo "Choose among the following options:"
|
||
|
echo "INSTALL"
|
||
|
echo " 0) install RaSCSI Service + web interface + 600MB Drive (recommended)"
|
||
|
echo " 1) install RaSCSI Service (initial)"
|
||
|
echo " 2) install RaSCSI Web interface"
|
||
|
echo "UPDATE"
|
||
|
echo " 3) update RaSCSI Service + web interface (recommended)"
|
||
|
echo " 4) update RaSCSI Service"
|
||
|
echo " 5) update RaSCSI Web interface"
|
||
|
echo "CREATE EMPTY DRIVE"
|
||
|
echo " 6) 600MB drive (recommended)"
|
||
|
echo " 7) custom drive size (up to 4000MB)"
|
||
|
|
||
|
|
||
|
choice=-1
|
||
|
|
||
|
until [ $choice -ge "0" ] && [ $choice -le "7" ]; do
|
||
|
echo "Enter your choice (0-7) or CTRL-C to exit"
|
||
|
read choice
|
||
|
done
|
||
|
|
||
|
|
||
|
case $choice in
|
||
|
0)
|
||
|
echo "Installing RaSCSI Service + Web interface"
|
||
|
installRaScsi
|
||
|
installRaScsiWebInterface
|
||
|
createDrive600MB
|
||
|
showRaScsiStatus
|
||
|
;;
|
||
|
1)
|
||
|
echo "Installing RaSCSI Service"
|
||
|
installRaScsi
|
||
|
showRaScsiStatus
|
||
|
;;
|
||
|
2)
|
||
|
echo "Installing RaSCSI Web interface"
|
||
|
installRaScsiWebInterface
|
||
|
;;
|
||
|
3)
|
||
|
echo "Updating RaSCSI Service + Web interface"
|
||
|
updateRaScsi
|
||
|
updateRaScsiWebInterface
|
||
|
showRaScsiStatus
|
||
|
;;
|
||
|
4)
|
||
|
echo "Updating RaSCSI Service"
|
||
|
updateRaScsi
|
||
|
showRaScsiStatus
|
||
|
;;
|
||
|
5)
|
||
|
echo "Updating RaSCSI Web interface"
|
||
|
updateRaScsiWebInterface
|
||
|
;;
|
||
|
6)
|
||
|
echo "Creating a 600MB drive"
|
||
|
createDrive600MB
|
||
|
;;
|
||
|
7)
|
||
|
echo "Creating a custom drive"
|
||
|
createDriveCustom
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
|