#! /bin/sh # postinst maintainer script for zoneminder set -ex # Source the debconf stuff . /usr/share/debconf/confmodule CONFIGFILE=/etc/zm/zm.conf apache_install() { mkdir -p /etc/apache2/conf-available ln -sf ../../zm/apache.conf /etc/apache2/conf-available/zoneminder.conf COMMON_STATE=$(dpkg-query -f '${Status}' -W 'apache2.2-common' 2>/dev/null | awk '{print $3}' || true) if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then . /usr/share/apache2/apache2-maintscript-helper apache2_invoke enconf zoneminder elif [ "$COMMON_STATE" = "installed" ] || [ "$COMMON_STATE" = "unpacked" ] ; then [ -d /etc/apache2/conf.d/ ] && [ ! -L /etc/apache2/conf.d/zoneminder.conf ] && ln -s ../conf-available/zoneminder.conf /etc/apache2/conf.d/zoneminder.conf fi # Enable CGI script module in apache (not enabled by default on jessie) a2enmod cgi >/dev/null 2>&1 # Reload the web server deb-systemd-invoke reload apache2.service || true } mysql_update() { # Source the dbconfig stuff . /usr/share/dbconfig-common/internal/mysql # Update the password of the hard-coded default 'admin' account test -z $ADMIN_PASSWORD || dbc_mysql_exec_command "UPDATE Users SET Password = password('$ADMIN_PASSWORD') WHERE Username = 'admin';" || true # Update the database version dbc_mysql_exec_command "UPDATE Config SET Value = '$DB_VERSION' WHERE Name = 'ZM_DYN_DB_VERSION';" || true } # Exit if user didn't want to use debconf db_get zoneminder/debconf_install if [ "$RET" = "false" ]; then # Reset the answer otherwise we are stuck here if the user choose to not use # debconf at first install (the question is not asked when reconfiguring) db_reset zoneminder/debconf_install exit 0 fi # Source the config file if exists [ ! -e $CONFIGFILE ] && exit 0 . $CONFIGFILE if [ -f /usr/share/dbconfig-common/dpkg/postinst ]; then # Set the first version in which dbconfig-common was introduced in the package dbc_first_version="1.28.0" # Set the database type dbc_dbtypes="$ZM_DB_TYPE" # Source the dbconfig-common stuff . /usr/share/dbconfig-common/dpkg/postinst fi if [ "$1" = "configure" ] || [ "$1" = "reconfigure" ]; then # Create the underlying database and populate it # dbconfig will take care of applying any updates which are newer than the # previously installed version dbc_go zoneminder $@ # Get the password of ZoneMinder user 'admin' from debconf db_get zoneminder/admin_password ADMIN_PASSWORD=$RET db_reset zoneminder/admin_password || true # Get the lastest database version from dbconfig upgrade folder DB_VERSION=$(ls -rv /usr/share/dbconfig-common/data/zoneminder/upgrade/$dbc_dbtypes | head -1) # Update the default admin account and database version mysql_update # Retrieve data from dbconfig (inputs from user) . /etc/dbconfig-common/zoneminder.conf # ZoneMinder config file handling # Inspired by: http://manpages.debian.org/cgi-bin/man.cgi?query=debconf-devel&sektion=7 # Backup the config file cp -a -f $CONFIGFILE ${CONFIGFILE}.postinst.bak # Redeclare variables if missing in config file test -z $dbc_dbserver || grep -Eq "^ *ZM_DB_HOST=" $CONFIGFILE \ || echo "ZM_DB_HOST=" >> ${CONFIGFILE}.postinst.bak test -z $dbc_dbname || grep -Eq "^ *ZM_DB_NAME=" $CONFIGFILE \ || echo "ZM_DB_NAME=" >> ${CONFIGFILE}.postinst.bak test -z $dbc_dbuser || grep -Eq "^ *ZM_DB_USER=" $CONFIGFILE \ || echo "ZM_DB_USER=" >> ${CONFIGFILE}.postinst.bak test -z $dbc_dbpass || grep -Eq "^ *ZM_DB_PASS=" $CONFIGFILE \ || echo "ZM_DB_PASS=" >> ${CONFIGFILE}.postinst.bak # Prevent ZM_DB_HOST to be empty if user selected the 'unix socket' method if test -z $dbc_dbserver; then dbc_dbserver_override="localhost" else dbc_dbserver_override=$dbc_dbserver fi # Update variables in config file sed -i "s/^ *ZM_DB_HOST=.*/ZM_DB_HOST=$dbc_dbserver_override/" \ ${CONFIGFILE}.postinst.bak test -z $dbc_dbname || sed -i "s/^ *ZM_DB_NAME=.*/ZM_DB_NAME=$dbc_dbname/" \ ${CONFIGFILE}.postinst.bak test -z $dbc_dbuser || sed -i "s/^ *ZM_DB_USER=.*/ZM_DB_USER=$dbc_dbuser/" \ ${CONFIGFILE}.postinst.bak test -z $dbc_dbpass || sed -i "s/^ *ZM_DB_PASS=.*/ZM_DB_PASS=$dbc_dbpass/" \ ${CONFIGFILE}.postinst.bak # Clean-up backup file mv -f ${CONFIGFILE}.postinst.bak $CONFIGFILE # Set some file permissions chown $ZM_WEB_USER:$ZM_WEB_GROUP /var/log/zm chown $ZM_WEB_USER:$ZM_WEB_GROUP /var/lib/zm if [ -z "$2" ]; then chown $ZM_WEB_USER:$ZM_WEB_GROUP -R /var/cache/zoneminder fi # As requested by the Debian Webapps Policy Manual ยง3.2.1 chown root:$ZM_WEB_GROUP /etc/zm/zm.conf chmod 640 /etc/zm/zm.conf # Configure the web server db_get zoneminder/webserver webservers="$RET" for webserver in $webservers; do webserver=${webserver%,} # Currently we only support apache2 if [ "$webserver" = "apache2" ] ; then apache_install $1 fi done fi if [ "$1" = "configure" ]; then # Ensure zoneminder is stopped deb-systemd-invoke stop zoneminder.service || exit $? # If mysql server exists and is running if [ -e "/usr/sbin/mysqld" ] && deb-systemd-invoke start mysql.service; then # Run the ZoneMinder update tool zmupdate.pl else # Otherwise exit without error (mysql server may not be available on # this machine) exit 0; fi fi #DEBHELPER# exit 0