Sophie

Sophie

distrib > Mageia > 3 > i586 > media > core-release-src > by-pkgid > 83036040567a4ea6c0fca07cb4614dc3 > files > 14

zoneminder-1.25.0-23.mga3.src.rpm

#!/bin/bash
# zmsetup
#
# Description:
# This is a basic setup tool for the Mageia installation of ZoneMinder.
# It assumes a default installation of mysql and apache.
# It will check for and if necessary install mysql, start mysql, optionally
# set up a mysql root password and create the ZoneMinder database if 
# required, or update an existing one.
# When all is ready it will start Apache, and ZoneMinder.
#
# Use:-
# After installation of ZoneMinder run this script as root and answer any questions.
# $ su
# # zmsetup
#===================================
#Changelog
# 22/03/2013 Check for and install mariadb
# 21/01/2012 Moved all service commands to systemctl
# 10/10/2011 1.25.0 no perf update to db required 
# 25/09/2011  Bug fix 
#===================================
confirm()
# User query interface.
{
par=("$@")
rval=3
while [[ $rval > 2 ]]; do
    echo -n ${par[0]}" "${par[1]}" "
    ans= ; rval=
    read ans
    if [[ -z $ans ]] || [[ ${#ans} > 1 ]]; then
        rval=3
    else
        case $ans in
            [${par[2]}]*)
                rval=0
                ;;
            [${par[3]}]*)
                rval=1
                ;;
            [${par[4]}]*)
                rval=2
                ;;
            *)
                rval=3
                ;;
        esac
    fi
done
    return $rval
}

check_mysqld()
{
if [[ $(systemctl status mysqld.service|head -n3|grep Loaded:|tr -s ' '|cut -s -d' ' -f3) != loaded ]]; then
if confirm "mysql is not installed, would you like to install it now?" "[y/n]" "Yy" "Nn"; then
urpmi mysql --no-suggests || { echo "Installation failed - please check network and media sources and re-run zmsetup"; exit 0; }

else
echo "You will need to provide a mysql database yourself - aborting zmsetup"
exit 0
fi
fi
if [[ $(systemctl status mysqld.service|head -n3|grep Active:|tr -s ' '|cut -s -d' ' -f3) != active ]]; then
systemctl start mysqld.service
fi

[[ $(systemctl status mysqld.service|head -n3|grep Active:|tr -s ' '|cut -s -d' ' -f3) = active ]] || \
{ echo -e "Aborting zmsetup, see status message :-\n"; systemctl status mysqld.service; exit 0; } 
}

closeall()
{
systemctl stop zoneminder.service > /dev/null 2>&1
systemctl stop httpd.service > /dev/null 2>&1
systemctl stop mysqld.service > /dev/null 2>&1
}

getpass()
{
if mysql -uroot -e 'SELECT 1;' > /dev/null 2>&1 ; then
echo -e "You do not appear to have a mysql root password set.\nYou can complete \
ZoneMinder setup without one, or create one now (recommended)"
set=0
while [[ $set = 0 ]]; do
if confirm "Do you want to create a mysql root password now?" "[y/n]" "Yy" "Nn"; then
    while true; do  
      read -s -p "New password: " passwd
      echo
      [[ ${#passwd} = 0 ]] && continue
      read -s -p  "Repeat password: " passwd2
      echo
      [[ ${#passwd2} = 0 ]] && continue
      [[ "$passwd" = "$passwd2" ]] || \
      { echo "Passwords differ, please start again"; continue; }
      break
    done
      if confirm "Set new password now - confirm - OK?" "[y/n]" "Yy" "Nn"; then
	echo "Please wait - ..."
	mysqladmin password $passwd
	systemctl restart mysqld.service
	set=1
      else
	set=0
      fi
else
      echo "Remember to set a mysql root password before going live!"
      passwd=
      set=1
fi
done
else
while true ; do
read -s -p "Please enter your mysql root password: " passwd
echo
[[ ${#passwd} = 0 ]] && continue
mysql -uroot -p$passwd -e 'SELECT 1;' > /dev/null 2>&1
[[ $? = 0 ]] && break
done
fi

if [[ ${#passwd} = 0 ]]; then
   mysqlpass=
else
   mysqlpass="-p"$passwd
fi
}

chkdb()
{
if mysql -uroot $mysqlpass zm -e 'SELECT 1;' > /dev/null 2>&1 ; then
echo "You already have a ZoneMinder database installed"
zmdb=1
else
zmdb=0
fi

if [[ $zmdb = 1 ]] && confirm "Do you want to re-use it?" "[y/n]" "Yy" "Nn"; then
echo "Updating database structure if necessary ..."
updt=1
else
reuse=0
fi

if ([[ $zmdb = 1 ]] && [[ $reuse = 0 ]]); then
if confirm "Delete existing ZoneMinder database? OK?"  "[y/n]" "Yy" "Nn"; then
mysql -uroot $mysqlpass zm -e 'DROP DATABASE zm;' > /dev/null 2>&1
zmdb=0
else
echo "You must delete the old database before creating a new one - aborting"
exit 1
fi
fi

if [[ $zmdb = 0 ]]; then
echo "Installing a new ZoneMinder database ..."
mysql -uroot $mysqlpass < /usr/share/zoneminder/db/zm_create.sql
fi

[[ $updt = 1 ]] && updtdb
}

updtdb()
{
zmupdate.pl -u root -p $passwd -d /usr/share/zoneminder/db
}

# Script main body starts here ================================
clear
# Check we are root
((UID)) && { echo "Sorry, you must run this as root."; exit 1; }
echo -e "*** Welcome to ZoneMinder Setup ***\nPlease wait a moment..."
# Check that mysql is installed and enabled
check_mysqld
# Stop apache mysql and zoneminder services
closeall
# Start mysql
systemctl start mysqld.service
# Check if a mysql root password is set and optionally set one
getpass
# Check for existing zm database and create new or update existing
chkdb
# Start Apache and Zoneminder
systemctl start httpd.service > /dev/null 2>&1 || { echo "Problem starting Apache"; exit 1; }
systemctl start zoneminder.service || { echo "Problem starting ZoneMinder - look at /var/logs/zm/zm_pkg.log"; exit 1; }
# If we got this far then congratulations are in order!
echo -e "Congratulations - ZoneMinder is now running.\nYou should be able to \
access the ZM Console in your browser using :-\nhttp://$(hostname)/zm"