From 8e9878d3f7f4021ffee4a1c0b02c3aba6cb261d8 Mon Sep 17 00:00:00 2001 From: Robert Tidey Date: Sun, 1 Nov 2015 16:25:48 +0000 Subject: [PATCH] Add experimental install scripts --- install.sh | 340 ++++++++++++++++++++++++++++++++++++++++++++++ installreadme.txt | 30 ++++ remove.sh | 110 +++++++++++++++ scr.zip | Bin 11370 -> 0 bytes start.sh | 59 ++++++++ stop.sh | 50 +++++++ update.sh | 86 ++++++++++++ 7 files changed, 675 insertions(+) create mode 100644 install.sh create mode 100644 installreadme.txt create mode 100644 remove.sh delete mode 100644 scr.zip create mode 100644 start.sh create mode 100644 stop.sh create mode 100644 update.sh diff --git a/install.sh b/install.sh new file mode 100644 index 00000000..33953019 --- /dev/null +++ b/install.sh @@ -0,0 +1,340 @@ +#!/bin/bash + +# Copyright (c) 2015, Bob Tidey +# All rights reserved. + +# Redistribution and use, with or without modification, are permitted provided +# that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Neither the name of the copyright holder nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Description +# This script installs a browser-interface to control the RPi Cam. It can be run +# on any Raspberry Pi with a newly installed raspbian and enabled camera-support. +# RPI_Cam_Web_Interface installer by Silvan Melchior +# Edited by jfarcher to work with github +# Edited by slabua to support custom installation folder +# Additions by btidey, miraaz, gigpi +# Rewritten and split up by Bob Tidey + +#Debug enable next 3 lines +exec 5> install.txt +BASH_XTRACEFD="5" +set -x + +cd $(dirname $(readlink -f $0)) + +if [ $(dpkg-query -W -f='${Status}' "dialog" 2>/dev/null | grep -c "ok installed") -eq 0 ]; then + sudo apt-get install -y dialog +fi + +# Terminal colors +color_red="tput setaf 1" +color_green="tput setaf 2" +color_reset="tput sgr0" + +# Version stuff moved out functions as we need it more when one time. +versionfile="./www/config.php" +version=$(cat $versionfile | grep "'APP_VERSION'" | cut -d "'" -f4) +backtitle="Copyright (c) 2015, Bob Tidey. RPi Cam $version" + +# Config options located in ./config.txt. In first run script makes that file for you. +if [ ! -e ./config.txt ]; then + sudo echo "#This is config file for main installer. Put any extra options in here." > ./config.txt + sudo echo "rpicamdir=\"html\"" >> ./config.txt + sudo echo "webserver=\"apache\"" >> ./config.txt + sudo echo "webport=\"80\"" >> ./config.txt + sudo echo "user=\"\"" >> ./config.txt + sudo echo "webpasswd=\"\"" >> ./config.txt + sudo echo "autostart=\"yes\"" >> ./config.txt + sudo echo "" >> ./config.txt + sudo chmod 664 ./config.txt +fi + +source ./config.txt + +#Allow for a quiet install +if [ $# -eq 0 ] || [ "$1" != "q" ]; then + exec 3>&1 + dialog \ + --separate-widget $'\n' \ + --title "Configuration Options" \ + --backtitle "$backtitle" \ + --form "" \ + 0 0 0 \ + "Cam subfolder:" 1 1 "$rpicamdir" 1 32 15 0 \ + "Autostart:(yes/no)" 2 1 "$autostart" 2 32 15 0 \ + "Server:(apache/nginx)" 3 1 "$webserver" 3 32 15 0 \ + "Webport:" 4 1 "$webport" 4 32 15 0 \ + "User:(blank=nologin)" 5 1 "$user" 5 32 15 0 \ + "Password:" 6 1 "$webpasswd" 6 32 15 0 \ + 2>&1 1>&3 | { + read -r rpicamdir + read -r autostart + read -r webserver + read -r webport + read -r user + read -r webpasswd + if [ -n "$webport" ]; then + sudo echo "#This is edited config file for main installer. Put any extra options in here." > ./config.txt + sudo echo "rpicamdir=\"$rpicamdir\"" >> ./config.txt + sudo echo "webserver=\"$webserver\"" >> ./config.txt + sudo echo "webport=\"$webport\"" >> ./config.txt + sudo echo "user=\"$user\"" >> ./config.txt + sudo echo "webpasswd=\"$webpasswd\"" >> ./config.txt + sudo echo "autostart=\"$autostart\"" >> ./config.txt + sudo echo "" >> ./config.txt + fi + } + returncode=$? + exec 3>&- + + if [ ! "$returncode" == "0" ]; then + exit + fi + + source ./config.txt +fi + +if [ ! "${rpicamdir:0:1}" == "" ]; then + rpicamdirEsc="\\/$rpicamdir" + rpicamdir=/$rpicamdir +else + rpicamdirEsc = "" +fi + +fn_stop () +{ # This is function stop + sudo killall raspimjpeg + sudo killall php + sudo killall motion +} + +fn_reboot () +{ # This is function reboot system + dialog --title "You must reboot your system!" --backtitle "$backtitle" --yesno "Do you want to reboot now?" 5 33 + response=$? + case $response in + 0) sudo reboot;; + 1) dialog --title 'Reboot message' --colors --infobox "\Zb\Z1"'Pending system changes that require a reboot!' 4 28 ; sleep 2;; + 255) dialog --title 'Reboot message' --colors --infobox "\Zb\Z1"'Pending system changes that require a reboot!' 4 28 ; sleep 2;; + esac +} + +fn_apache () +{ +aconf="etc/apache2/sites-available/raspicam.conf" +cp $aconf.1 $aconf +if [ -e "\/$aconf" ]; then + sudo rm "\/$aconf" +fi +if [ -e /etc/apache2/conf-available/other-vhosts-access-log.conf ]; then + aotherlog="/etc/apache2/conf-available/other-vhosts-access-log.conf" +else + aotherlog="/etc/apache2/conf.d/other-vhosts-access-log" +fi +tmpfile=$(mktemp) +sudo awk '/NameVirtualHost \*:/{c+=1}{if(c==1){sub("NameVirtualHost \*:.*","NameVirtualHost *:'$webport'",$0)};print}' /etc/apache2/ports.conf > "$tmpfile" && sudo mv "$tmpfile" /etc/apache2/ports.conf +sudo awk '/Listen/{c+=1}{if(c==1){sub("Listen.*","Listen '$webport'",$0)};print}' /etc/apache2/ports.conf > "$tmpfile" && sudo mv "$tmpfile" /etc/apache2/ports.conf +awk '/",$0)};print}' $aconf > "$tmpfile" && sudo mv "$tmpfile" $aconf +sudo sed -i "s//g" $aconf +if [ "$user" == "" ]; then + sudo awk '/AllowOverride/{c+=1}{if(c==2){sub("AllowOverride.*","AllowOverride None",$0)};print}' $aconf > "$tmpfile" && sudo mv "$tmpfile" $aconf +else + sudo awk '/AllowOverride/{c+=1}{if(c==2){sub("AllowOverride.*","AllowOverride All",$0)};print}' $aconf > "$tmpfile" && sudo mv "$tmpfile" $aconf + sudo htpasswd -b -c /usr/local/.htpasswd $user $webpasswd + if [ ! -e /var/www$rpicamdir/.htaccess ]; then + sudo bash -c "cat > /var/www$rpicamdir/.htaccess" << EOF +AuthName "RPi Cam Web Interface Restricted Area" +AuthType Basic +AuthUserFile /usr/local/.htpasswd +AuthGroupFile /dev/null +Require valid-user +EOF + sudo chown -R www-data:www-data /var/www$rpicamdir/.htaccess + fi +fi +sudo mv $aconf /$aconf +sudo sed -i 's/^CustomLog/#CustomLog/g' $aotherlog +sudo service apache2 restart +} + +fn_nginx () +{ +sudo sed -e "s:root /var/www;:root /var/www$rpicamdirEsc;:g" etc/nginx/sites-available/rpicam.1 > etc/nginx/sites-available/rpicam +sudo cp -r etc/nginx/sites-available/rpicam /etc/nginx/sites-available/rpicam +sudo chmod 644 /etc/nginx/sites-available/rpicam + + +if [ ! -e /etc/nginx/sites-enabled/rpicam ]; then + sudo ln -s /etc/nginx/sites-available/rpicam /etc/nginx/sites-enabled/rpicam +fi + +# Update nginx main config file +sudo sed -i "s/worker_processes 4;/worker_processes 2;/g" /etc/nginx/nginx.conf +sudo sed -i "s/worker_connections 768;/worker_connections 128;/g" /etc/nginx/nginx.conf +sudo sed -i "s/gzip on;/gzip off;/g" /etc/nginx/nginx.conf +if ["$NGINX_DISABLE_LOGGING"]; then + sudo sed -i "s:access_log /var/log/nginx/nginx/access.log;:access_log /dev/null;:g" /etc/nginx/nginx.conf +fi + +# Configure php-apc +sudo sh -c "echo \"cgi.fix_pathinfo = 0;\" >> /etc/php5/fpm/php.ini" +sudo cp etc/php5/apc.ini /etc/php5/conf.d/20-apc.ini +sudo chmod 644 /etc/php5/conf.d/20-apc.ini +} + +fn_motion () +{ +sudo sed -i "s/^; netcam_url.*/netcam_url/g" /etc/motion/motion.conf +sudo sed -i "s/^netcam_url.*/netcam_url http:\/\/localhost$rpicamdirEsc\/cam_pic.php/g" /etc/motion/motion.conf +if [ "$user" == "" ]; then + sudo sed -i "s/^netcam_userpass.*/; netcam_userpass value/g" /etc/motion/motion.conf +else + sudo sed -i "s/^; netcam_userpass.*/netcam_userpass/g" /etc/motion/motion.conf + sudo sed -i "s/^netcam_userpass.*/netcam_userpass $user:$webpasswd/g" /etc/motion/motion.conf +fi +sudo sed -i "s/^; on_event_start.*/on_event_start/g" /etc/motion/motion.conf +sudo sed -i "s/^on_event_start.*/on_event_start echo -n \'1\' >\/var\/www\/FIFO1/g" /etc/motion/motion.conf +sudo sed -i "s/^; on_event_end.*/on_event_end/g" /etc/motion/motion.conf +sudo sed -i "s/^on_event_end.*/on_event_end echo -n \'0\' >\/var\/www\/FIFO1/g" /etc/motion/motion.conf +sudo sed -i "s/control_port.*/control_port 6642/g" /etc/motion/motion.conf +sudo sed -i "s/control_html_output.*/control_html_output off/g" /etc/motion/motion.conf +sudo sed -i "s/^output_pictures.*/output_pictures off/g" /etc/motion/motion.conf +sudo sed -i "s/^ffmpeg_output_movies on/ffmpeg_output_movies off/g" /etc/motion/motion.conf +sudo sed -i "s/^ffmpeg_cap_new on/ffmpeg_cap_new off/g" /etc/motion/motion.conf +sudo sed -i "s/^stream_port.*/stream_port 0/g" /etc/motion/motion.conf +sudo sed -i "s/^webcam_port.*/webcam_port 0/g" /etc/motion/motion.conf +sudo sed -i "s/^process_id_file/; process_id_file/g" /etc/motion/motion.conf +sudo sed -i "s/^videodevice/; videodevice/g" /etc/motion/motion.conf +sudo sed -i "s/^event_gap 60/event_gap 3/g" /etc/motion/motion.conf +sudo sed -i "s/www/www$rpicamdirEsc/" /etc/motion/motion.conf +sudo chown motion:www-data /etc/motion/motion.conf +sudo chmod 664 /etc/motion/motion.conf +} + +fn_autostart () +{ +tmpfile=$(mktemp) +sudo sed '/#START/,/#END/d' /etc/rc.local > "$tmpfile" && sudo mv "$tmpfile" /etc/rc.local +# Remove to growing plank lines. +sudo awk '!NF {if (++n <= 1) print; next}; {n=0;print}' /etc/rc.local > "$tmpfile" && sudo mv "$tmpfile" /etc/rc.local +if [ "$autostart" == "yes" ]; then + if ! grep -Fq '#START RASPIMJPEG SECTION' /etc/rc.local; then + sudo sed -i '/exit 0/d' /etc/rc.local + sudo bash -c "cat >> /etc/rc.local" << EOF +#START RASPIMJPEG SECTION +mkdir -p /dev/shm/mjpeg +chown www-data:www-data /dev/shm/mjpeg +chmod 777 /dev/shm/mjpeg +sleep 4;su -c 'raspimjpeg > /dev/null 2>&1 &' www-data +if [ -e /etc/debian_version ]; then + sleep 4;su -c 'php /var/www$rpicamdir/schedule.php > /dev/null 2>&1 &' www-data +else + sleep 4;su -s '/bin/bash' -c 'php /var/www$rpicamdir/schedule.php > /dev/null 2>&1 &' www-data +fi +#END RASPIMJPEG SECTION + +exit 0 +EOF + fi + +fi +sudo chown root:root /etc/rc.local +sudo chmod 755 /etc/rc.local +} + +#Main install) +fn_stop + +sudo mkdir -p /var/www$rpicamdir/media +sudo cp -r www/* /var/www$rpicamdir/ +if [ -e /var/www$rpicamdir/index.html ]; then + sudo rm /var/www$rpicamdir/index.html +fi +sudo chown -R www-data:www-data /var/www$rpicamdir + +if [ "$webserver" == "apache" ]; then + sudo apt-get install -y apache2 php5 php5-cli libapache2-mod-php5 gpac motion zip libav-tools + fn_apache +else + sudo apt-get install -y nginx php5-fpm php5-cli php5-common php-apc gpac motion zip libav-tools + fn_nginx +fi + +#Make sure user www-data has bash shell +sudo sed -i "s/^www-data:x.*/www-data:x:33:33:www-data:\/var\/www:\/bin\/bash/g" /etc/passwd + +if [ ! -e /var/www$rpicamdir/FIFO ]; then + sudo mknod /var/www$rpicamdir/FIFO p +fi +sudo chmod 666 /var/www$rpicamdir/FIFO + +if [ ! -e /var/www$rpicamdir/FIFO1 ]; then + sudo mknod /var/www$rpicamdir/FIFO1 p +fi +sudo chmod 666 /var/www$rpicamdir/FIFO1 +sudo chmod 755 /var/www$rpicamdir/raspizip.sh + +if [ ! -e /var/www$rpicamdir/cam.jpg ]; then + sudo ln -sf /run/shm/mjpeg/cam.jpg /var/www$rpicamdir/cam.jpg +fi + +sudo cp etc/sudoers.d/RPI_Cam_Web_Interface /etc/sudoers.d/ +sudo chmod 440 /etc/sudoers.d/RPI_Cam_Web_Interface + +sudo cp -r bin/raspimjpeg /opt/vc/bin/ +sudo chmod 755 /opt/vc/bin/raspimjpeg +if [ ! -e /usr/bin/raspimjpeg ]; then + sudo ln -s /opt/vc/bin/raspimjpeg /usr/bin/raspimjpeg +fi + +sed -e "s/www/www$rpicamdirEsc/" etc/raspimjpeg/raspimjpeg.1 > etc/raspimjpeg/raspimjpeg +if [ `cat /proc/cmdline |awk -v RS=' ' -F= '/boardrev/ { print $2 }'` == "0x11" ]; then + sed -i 's/^camera_num 0/camera_num 1/g' etc/raspimjpeg/raspimjpeg +fi +if [ -e /etc/raspimjpeg ]; then + $color_green; echo "Your custom raspimjpg backed up at /etc/raspimjpeg.bak"; $color_reset + sudo cp -r /etc/raspimjpeg /etc/raspimjpeg.bak +fi +sudo cp -r etc/raspimjpeg/raspimjpeg /etc/ +sudo chmod 644 /etc/raspimjpeg +if [ ! -e /var/www$rpicamdir/raspimjpeg ]; then + sudo ln -s /etc/raspimjpeg /var/www$rpicamdir/raspimjpeg +fi + +sudo usermod -a -G video www-data +if [ -e /var/www$rpicamdir/uconfig ]; then + sudo chown www-data:www-data /var/www$rpicamdir/uconfig +fi + +fn_motion +fn_autostart + +if [ -e /var/www$rpicamdir/uconfig ]; then + sudo chown www-data:www-data /var/www$rpicamdir/uconfig +fi + +if [ -e /var/www$rpicamdir/schedule.php ]; then + sudo rm /var/www$rpicamdir/schedule.php +fi + +sudo sed -e "s/www/www$rpicamdirEsc/g" www/schedule.php > www/schedule.php.1 +sudo mv www/schedule.php.1 /var/www$rpicamdir/schedule.php +sudo chown www-data:www-data /var/www$rpicamdir/schedule.php + +fn_reboot \ No newline at end of file diff --git a/installreadme.txt b/installreadme.txt new file mode 100644 index 00000000..e722a9b3 --- /dev/null +++ b/installreadme.txt @@ -0,0 +1,30 @@ +The normal way of installing is to run ./RPi_Cam_Web_Interface_Installer.sh +This remains the case. + +There are now some experimental scripts, which have not been fully proven and are still being developed, +but you are welcome to try out. +The main install seems to work for me on Jessie. Not tried on Wheezy yet but in principle it should work. + +The scripts are a re-factoring of the install scripts to simplify the process. + +5 scripts are used instead of combining all together. +This avoids the overhead of a separate selection and makes it easier to run a particular function automatically. +So start and stop can just be run as separate activities. + +The scripts are +install.sh main installation +upgrade.sh check for updates and then run main installation +start.sh starts the software +stop.sh stops the software +remove.sh removes the software + +The main installation always does the same thing to simplify its logic. +It gathers all user parameters first in one combined dialog and then always +applies the parameters as it goes through the process. +A q (quiet) parameter may be used to skip this and give an automatic install based on config.txt +All parameters are always in the config.txt file, a default version is created if one +doesn't exist and is then changed just once after the initial user dialog. +The installation always tries to upgrade the main software components and then functionally goes through +the configuration steps for each area like apache, motion start up. + +Debug is turned on for th emoment so it logs its activity to a file called install.txt \ No newline at end of file diff --git a/remove.sh b/remove.sh new file mode 100644 index 00000000..1c4a86c1 --- /dev/null +++ b/remove.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +# Copyright (c) 2015, Bob Tidey +# All rights reserved. + +# Redistribution and use, with or without modification, are permitted provided +# that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Neither the name of the copyright holder nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Description +# This script removes the browser-interface to control the RPi Cam. It can be run +# on any Raspberry Pi with a newly installed raspbian and enabled camera-support. +# Based on RPI_Cam_WEb_Interface installer by Silvan Melchior +# Edited by jfarcher to work with github +# Edited by slabua to support custom installation folder +# Additions by btidey, miraaz, gigpi +# Split up and refactored by Bob Tidey + +#Debug enable next 3 lines +exec 5> remove.txt +BASH_XTRACEFD="5" +set -x + + +cd $(dirname $(readlink -f $0)) + +# Terminal colors +color_red="tput setaf 1" +color_green="tput setaf 2" +color_reset="tput sgr0" + +source ./config.txt + +fn_stop () +{ # This is function stop + sudo killall raspimjpeg + sudo killall php + sudo killall motion + dialog --title 'Stop message' --infobox 'Stopped.' 4 16 ; sleep 2 +} + +fn_apache_default () +{ +if [ -e /etc/apache2/sites-available/000-default.conf ]; then + adefault="/etc/apache2/sites-available/000-default.conf" + subdir="\/html" +else + adefault="/etc/apache2/sites-available/default" + subdir="" +fi +tmpfile=$(mktemp) +webport="80" +user="" +passwd="" +sudo awk '/NameVirtualHost \*:/{c+=1}{if(c==1){sub("NameVirtualHost \*:.*","NameVirtualHost *:'$webport'",$0)};print}' /etc/apache2/ports.conf > "$tmpfile" && sudo mv "$tmpfile" /etc/apache2/ports.conf +sudo awk '/Listen/{c+=1}{if(c==1){sub("Listen.*","Listen '$webport'",$0)};print}' /etc/apache2/ports.conf > "$tmpfile" && sudo mv "$tmpfile" /etc/apache2/ports.conf +sudo awk '/",$0)};print}' $adefault > "$tmpfile" && sudo mv "$tmpfile" $adefault +sudo sed -i "s/DocumentRoot\ \/var\/www\/.*/DocumentRoot\ \/var\/www$subdir/g" $adefault +sudo awk '/AllowOverride/{c+=1}{if(c==2){sub("AllowOverride.*","AllowOverride None",$0)};print}' /etc/apache2/sites-available/default > "$tmpfile" && sudo mv "$tmpfile" $adefault +sudo service apache2 restart +} + + +fn_stop + +dialog --title "Uninstall packages!" --backtitle "$backtitle" --yesno "Do You want uninstall webserver and php packages also?" 6 35 +response=$? +case $response in + 0) package=('apache2' 'php5' 'libapache2-mod-php5' 'php5-cli' 'zip' 'nginx' 'php5-fpm' 'php5-common' 'php-apc' 'gpac motion' 'libav-tools');; + 1) package=('zip' 'gpac motion' 'libav-tools');; + 255) dialog --title 'Uninstall message' --infobox 'Webserver and php packages not uninstalled.' 4 33 ; sleep 2;; +esac +for i in "${package[@]}" + do + if [ $(dpkg-query -W -f='${Status}' "$i" 2>/dev/null | grep -c "ok installed") -eq 1 ]; then + sudo apt-get remove -y "$i" + fi + done +sudo apt-get autoremove -y + +if [ ! "$rpicamdir" == "" ]; then + sudo rm -r /var/www/$rpicamdir +else + sudo rm -r /var/www/* +fi +sudo rm /etc/sudoers.d/RPI_Cam_Web_Interface +sudo rm /usr/bin/raspimjpeg +sudo rm /etc/raspimjpeg +fn_autostart_disable + +if [ $(dpkg-query -W -f='${Status}' "apache2" 2>/dev/null | grep -c "ok installed") -eq 1 ]; then + fn_apache_default +fi +fn_reboot + diff --git a/scr.zip b/scr.zip deleted file mode 100644 index d9dae94cda98675ca90b6647c92ed3034b406223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11370 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 diff --git a/start.sh b/start.sh new file mode 100644 index 00000000..2269ef56 --- /dev/null +++ b/start.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Copyright (c) 2015, Bob Tidey +# All rights reserved. + +# Redistribution and use, with or without modification, are permitted provided +# that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Neither the name of the copyright holder nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Description +# This script stops a running RPi_Cam interface +# Based on RPI_Cam_Web_Interface installer by Silvan Melchior +# Edited by jfarcher to work with github +# Edited by slabua to support custom installation folder +# Additions by btidey, miraaz, gigpi +# Split up and refactored by Bob Tidey + +#Debug enable next 3 lines +exec 5> start.txt +BASH_XTRACEFD="5" +set -x + +cd $(dirname $(readlink -f $0)) + +source ./config.txt + +fn_stop () +{ # This is function stop + sudo killall raspimjpeg + sudo killall php + sudo killall motion +} + +#start operation +fn_stop +sudo mkdir -p /dev/shm/mjpeg +sudo chown www-data:www-data /dev/shm/mjpeg +sudo chmod 777 /dev/shm/mjpeg +sleep 1;sudo su -c 'raspimjpeg > /dev/null &' www-data +if [ -e /etc/debian_version ]; then + sleep 1;sudo su -c "php /var/www/$rpicamdir/schedule.php > /dev/null &" www-data +else + sleep 1;sudo su -c '/bin/bash' -c "php /var/www/$rpicamdir/schedule.php > /dev/null &" www-data +fi diff --git a/stop.sh b/stop.sh new file mode 100644 index 00000000..037b5f1a --- /dev/null +++ b/stop.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +# Copyright (c) 2015, Bob Tidey +# All rights reserved. + +# Redistribution and use, with or without modification, are permitted provided +# that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Neither the name of the copyright holder nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Description +# This script stops a running RPi_Cam interface +# Based on RPI_Cam_Web_Interface installer by Silvan Melchior +# Edited by jfarcher to work with github +# Edited by slabua to support custom installation folder +# Additions by btidey, miraaz, gigpi +# Split up and refactored by Bob Tidey + +#Debug enable next 3 lines +exec 5> stop.txt +BASH_XTRACEFD="5" +set -x + +cd $(dirname $(readlink -f $0)) + +source ./config.txt + +fn_stop () +{ # This is function stop + sudo killall raspimjpeg + sudo killall php + sudo killall motion +} + +#stop operation +fn_stop diff --git a/update.sh b/update.sh new file mode 100644 index 00000000..aecfab86 --- /dev/null +++ b/update.sh @@ -0,0 +1,86 @@ +#!/bin/bash + +# Copyright (c) 2015, Bob Tidey +# All rights reserved. + +# Redistribution and use, with or without modification, are permitted provided +# that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Neither the name of the copyright holder nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. + +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Description +# This script updates the installer for the browser-interface to control the RPi Cam. It can be run +# on any Raspberry Pi with a newly installed raspbian and enabled camera-support. +# Based on RPI_Cam_WEb_Interface installer by Silvan Melchior +# Edited by jfarcher to work with github +# Edited by slabua to support custom installation folder +# Additions by btidey, miraaz, gigpi +# Split up and refactored by Bob Tidey + +#Debug enable next 3 lines +exec 5> update.txt +BASH_XTRACEFD="5" +set -x + +cd $(dirname $(readlink -f $0)) + +# Terminal colors +color_red="tput setaf 1" +color_green="tput setaf 2" +color_reset="tput sgr0" + +# Config options located in ./config.txt. In first run script makes that file for you. +if [ ! -e ./config.txt ]; then + sudo echo "#This is config file for main installer. Put any extra options in here." > ./config.txt + sudo echo "" >> ./config.txt + sudo chmod 664 ./config.txt +fi + +source ./config.txt + + +fn_abort() +{ + $color_red; echo >&2 ' +*************** +*** ABORTED *** +*************** +' + echo "An error occurred. Exiting..." >&2; $color_reset + exit 1 +} + +update) + trap 'fn_abort' 0 + set -e + remote=$( + git ls-remote -h origin master | + awk '{print $1}' + ) + local=$(git rev-parse HEAD) + printf "Local : %s\nRemote: %s\n" $local $remote + if [[ $local == $remote ]]; then + dialog --title 'Update message' --infobox 'Commits match. Nothing update.' 4 35 ; sleep 2 + else + dialog --title 'Update message' --infobox "Commits don't match. We update." 4 35 ; sleep 2 + git pull origin master + fi + trap : 0 + dialog --title 'Update message' --infobox 'Update finished.' 4 20 ; sleep 2 + # We call updated install script + + ./install.sh