* Modified install.sh * Added libs/ustreamer.sh * Added libs/v4l2rtspserver.sh * Modified uninstall.sh * Modified webcamd REFACTOR: Split run_rtsp to libs/v4l2rtspserver.sh * Modified webcamd accordingly REFACTOR: Split run_ustreamer to libs/ustreamer.sh * Updated webcamd accordingly Signed-off-by: Stephan Wendel <me@stephanwe.de>
167 lines
4.6 KiB
Bash
Executable File
167 lines
4.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Crow's Nest
|
|
# A multiple Cam and Stream Service for mainsailOS
|
|
# Written by Stephan Wendel aka KwadFan
|
|
# Copyright 2021
|
|
# https://github.com/mainsail-crew/crowsnest
|
|
# GPL V3
|
|
# Version 1.1
|
|
########
|
|
|
|
# shellcheck enable=requires-variable-braces
|
|
|
|
## Exit on Error
|
|
set -e
|
|
|
|
## Debug
|
|
# set -x
|
|
|
|
# Global Vars
|
|
TITLE="crowsnest - A Webcam Daemon for Raspberry Pi OS"
|
|
|
|
### Functions
|
|
|
|
### Messages
|
|
### Welcome Message
|
|
function welcome_msg {
|
|
echo -e "${TITLE}\n"
|
|
echo -e "\tSome Parts of the Uninstaller requires 'root' privileges."
|
|
echo -e "\tYou will be prompted for your 'sudo' password, if needed.\n"
|
|
}
|
|
|
|
function goodbye_msg {
|
|
echo -e "Please remove manually the 'crowsnest' folder in ${HOME}"
|
|
echo -e "Remove [update manager webcamd] section from moonraker.conf!"
|
|
echo -e "After that is done, please reboot!\nGoodBye...\n"
|
|
}
|
|
|
|
### General
|
|
## These two functions are reused from custompios common.sh
|
|
## Credits to guysoft!
|
|
## https://github.com/guysoft/CustomPiOS
|
|
|
|
function install_cleanup_trap() {
|
|
# kills all child processes of the current process on SIGINT or SIGTERM
|
|
trap 'cleanup' SIGINT SIGTERM
|
|
}
|
|
|
|
function cleanup() {
|
|
# make sure that all child processed die when we die
|
|
echo -e "Killed by user ...\r\nGoodBye ...\r"
|
|
# shellcheck disable=2046
|
|
[ -n "$(jobs -pr)" ] && kill $(jobs -pr) && sleep 5 && kill -9 $(jobs -pr)
|
|
}
|
|
##
|
|
|
|
function err_exit {
|
|
if [ "${1}" != "0" ]; then
|
|
echo -e "ERROR: Error ${1} occured on line ${2}"
|
|
echo -e "ERROR: Stopping $(basename "$0")."
|
|
echo -e "Goodbye..."
|
|
fi
|
|
# shellcheck disable=2046
|
|
[ -n "$(jobs -pr)" ] && kill $(jobs -pr) && sleep 5 && kill -9 $(jobs -pr)
|
|
exit 1
|
|
}
|
|
|
|
### Init ERR Trap
|
|
trap 'err_exit $? $LINENO' ERR
|
|
|
|
|
|
### Uninstall crowsnest
|
|
function ask_uninstall {
|
|
local remove
|
|
if [ -x "/usr/local/bin/webcamd" ] && [ -d "${HOME}/crowsnest" ]; then
|
|
read -rp "Do you REALLY want to remove existing 'crowsnest'? (YES/NO) " remove
|
|
if [ "${remove}" = "YES" ]; then
|
|
sudo echo -e "\nPlease enter your password!"
|
|
uninstall_crowsnest
|
|
uninstall_ustreamer
|
|
uninstall_v4l2rtsp
|
|
uninstall_rtspsimple
|
|
remove_raspicam_fix
|
|
goodbye_msg
|
|
else
|
|
echo -e "\nYou answered '${remove}'! Uninstall will be aborted..."
|
|
echo -e "GoodBye...\n"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo -e "\n'crowsnest' seems not installed."
|
|
echo -e "Exiting. GoodBye ..."
|
|
fi
|
|
}
|
|
|
|
function uninstall_crowsnest {
|
|
local servicefile bin_path
|
|
servicefile="/etc/systemd/system/webcamd.service"
|
|
bin_path="/usr/local/bin/webcamd"
|
|
echo -en "\nStopping webcamd.service ...\r"
|
|
sudo systemctl stop webcamd.service &> /dev/null
|
|
echo -e "Stopping webcamd.service ... \t[OK]\r"
|
|
echo -en "Uninstalling webcamd.service...\r"
|
|
if [ -f "${servicefile}" ]; then
|
|
sudo rm -f "${servicefile}"
|
|
fi
|
|
if [ -x "${bin_path}" ]; then
|
|
sudo rm -f "${bin_path}"
|
|
fi
|
|
echo -e "Uninstalling webcamd.service...[OK]\r"
|
|
}
|
|
|
|
function uninstall_ustreamer {
|
|
local bin_path bin_dump_path ustreamer_dir
|
|
bin_path="/usr/local/bin/ustreamer"
|
|
bin_dump_path="/usr/local/bin/ustreamer-dump"
|
|
ustreamer_dir="${HOME}/ustreamer"
|
|
if [ -d "${ustreamer_dir}" ]; then
|
|
echo -en "Uninstalling ustreamer ...\r"
|
|
if [ -x "${bin_path}" ] && [ -x "${bin_dump_path}" ]; then
|
|
sudo rm -f "${bin_path}" "${bin_dump_path}"
|
|
fi
|
|
sudo rm -rf "${ustreamer_dir}"
|
|
echo -e "Uninstalling ustreamer ... [OK]\r"
|
|
fi
|
|
}
|
|
|
|
function uninstall_rtspsimple {
|
|
local bin_path rtspsimple_dir
|
|
bin_path="/usr/local/bin/rtsp-simple-server"
|
|
rtspsimple_dir="${HOME}/rtsp-simple-server"
|
|
if [ -d "${rtspsimple_dir}" ]; then
|
|
echo -en "Uninstalling 'rtsp-simple-server' ...\r"
|
|
if [ -x "${bin_path}" ]; then
|
|
sudo rm -f "${bin_path}"
|
|
fi
|
|
sudo rm -rf "${rtspsimple_dir}"
|
|
echo -e "Uninstalling 'rtsp-simple-server' ... [OK]\r"
|
|
fi
|
|
}
|
|
|
|
function uninstall_v4l2rtsp {
|
|
local bin_path v4l2rtsp_dir
|
|
bin_path="/usr/local/bin/v4l2rtspserver"
|
|
v4l2rtsp_dir="${HOME}/v4l2rtspserver"
|
|
if [ -d "${v4l2rtsp_dir}" ]; then
|
|
echo -en "Uninstalling 'v4l2rtspserver' ...\r"
|
|
if [ -x "${bin_path}" ]; then
|
|
sudo rm -f "${bin_path}"
|
|
fi
|
|
sudo rm -rf "${v4l2rtsp_dir}"
|
|
echo -e "Uninstalling 'v4l2rtspserver' ... [OK]\r"
|
|
fi
|
|
}
|
|
|
|
function remove_raspicam_fix {
|
|
echo -en "Removing Raspicam Fix ...\r"
|
|
sudo sed -i '/bcm2835/d' /etc/modules
|
|
echo -e "Removing Raspicam Fix ... [OK]"
|
|
}
|
|
|
|
#### MAIN
|
|
install_cleanup_trap
|
|
welcome_msg
|
|
ask_uninstall
|
|
|
|
exit 0
|