Shinobi/INSTALL/shinobi

164 lines
5.3 KiB
Bash

#!/bin/bash
if [ ! -e "/etc/shinobisystems/path.txt" ]; then
installationDirectory="/home/Shinobi"
else
installationDirectory=$(cat /etc/shinobisystems/cctv.txt)
fi
cd "$installationDirectory" || exit
currentBuild=$(git show --oneline -s)
gitOrigin=$(git remote show origin)
splitBuildString=($currentBuild)
currentCommitNumber=${splitBuildString[0]}
if [[ $gitOrigin == *'ShinobiCE'* ]]; then
repo="CE"
else
repo="Pro"
fi
if [[ $@ == *'help'* ]] || [ ! "$1" ]; then
echo "========================================================="
echo "==!! Shinobi : The Open Source CCTV and NVR Solution !!=="
echo "========================================================="
if [ ! "$1" ]; then
echo "You are missing function parameters."
echo "Example : shinobi [command] .."
echo "Example : shinobi flush restart logs"
else
echo "Hello there! if you need support come on over"
echo "to the Shinobi Community Chat! :)"
echo "https://discordapp.com/invite/mdhmvuH/"
fi
echo "========================================================="
echo "Your available options for COMMAND are as follows"
echo "========================================================="
echo "| start :"
echo "|--> Start camera.js and cron.js under PM2 (Process Manager)"
echo "-"
echo "| restart :"
echo "|--> Restart all processes running under the PM2 daemon."
echo "-"
echo "| stop, exit :"
echo "|--> Stop all processes running under the PM2 daemon."
echo "-"
echo "| version :"
echo "|--> get version of your current build by git."
echo "-"
echo "| logs :"
echo "|--> Get PM2 log stream with last 100 lines."
echo "-"
echo "| update :"
echo "|--> Update via Git."
echo "-"
echo "| getMaster :"
echo "|--> Switch to the Master Branch (For Pro Repo only)."
echo "-"
echo "| getDev :"
echo "|--> Switch to the Development Branch (For Pro Repo only)."
echo "-"
echo "| clear, flush :"
echo "|--> Clear all PM2 logs."
echo "-"
echo "| bootupEnable :"
echo "|--> Start Shinobi on OS reboot."
echo "-"
echo "| bootupDisable :"
echo "|--> Disable starting Shinobi on OS reboot."
echo "-"
echo "| kill :"
echo "|--> Stop the entire PM2 daemon."
fi
if [[ $@ == *'clear'* ]] || [[ $@ == *'flush'* ]]; then
pm2 flush
fi
if [[ $@ == *'restart'* ]]; then
proccessAlive=$(pm2 list | grep camera)
if [ "$proccessAlive" ]; then
pm2 restart "$installationDirectory"/camera.js
pm2 restart "$installationDirectory"/cron.js
else
echo "Shinobi process is not running."
fi
else
if [[ $@ == *'start'* ]] || [[ $@ == *'now'* ]]; then
proccessAlive=$(pm2 list | grep camera | grep online)
if [ "$proccessAlive" ]]; then
echo "Shinobi process is already running."
else
if [ -e "$installationDirectory/INSTALL/installed.txt" ]; then
echo "Starting Shinobi"
pm2 start "$installationDirectory"/camera.js
pm2 start "$installationDirectory"/cron.js
fi
if [ ! -e "$installationDirectory/INSTALL/installed.txt" ]; then
chmod +x "$installationDirectory"/INSTALL/now.sh&&INSTALL/now.sh
fi
fi
fi
fi
if [[ $@ == *'stop'* ]] || [[ $@ == *'exit'* ]]; then
proccessAlive=$(pm2 list | grep camera)
if [ "$proccessAlive" ]; then
pm2 stop "$installationDirectory"/camera.js
pm2 stop "$installationDirectory"/cron.js
else
echo "Shinobi process is not running."
fi
fi
if [[ $@ == *'version'* ]]; then
echo "Build ID : $currentCommitNumber"
if [[ $repo == "Pro" ]]; then
echo "Repository : Shinobi Pro"
else
echo "Repository : Shinobi CE"
fi
echo "$currentBuild"
fi
if [[ $@ == *'bootupEnable'* ]] || [[ $@ == *'bootupenable'* ]]; then
pm2 startup
pm2 save
fi
if [[ $@ == *'bootupDisable'* ]] || [[ $@ == *'bootupdisable'* ]]; then
pm2 unstartup
pm2 save
fi
if [[ $@ == *'getDev'* ]] || [[ $@ == *'getdev'* ]]; then
if [[ $repo == "Pro" ]]; then
git checkout dev
echo "Shinobi - Restart Shinobi to make the changes take affect."
else
echo "Shinobi - Cannot use \"getDev\" with Shinobi CE"
fi
fi
if [[ $@ == *'getMaster'* ]] || [[ $@ == *'getmaster'* ]]; then
if [[ $repo == "Pro" ]]; then
git checkout master
echo "Shinobi - Restart Shinobi to make the changes take affect."
else
echo "Shinobi - Cannot use \"getMaster\" with Shinobi CE"
fi
fi
if [[ $@ == *'update'* ]]; then
echo "============="
echo "Shinobi - Are you sure you want to update? This will restart Shinobi."
echo "(y)es or (N)o"
read -r updateshinobi
if [ "$updateshinobi" = "y" ] || [ "$updateshinobi" = "Y" ]; then
echo "Beginning Update Process..."
pm2 stop "$installationDirectory"/camera.js
pm2 stop "$installationDirectory"/cron.js
npm install --unsafe-perm
npm audit fix --force
git reset --hard
git pull
pm2 start "$installationDirectory"/camera.js
pm2 start "$installationDirectory"/cron.js
else
echo "Cancelled Update Process."
fi
fi
if [[ $@ == *'kill'* ]]; then
pm2 kill
fi
if [[ $@ == *'logs'* ]]; then
pm2 logs --lines 100
fi