diff options
Diffstat (limited to 'zoneminder.install')
-rw-r--r-- | zoneminder.install | 79 |
1 files changed, 52 insertions, 27 deletions
diff --git a/zoneminder.install b/zoneminder.install index 0f294577ea0a..d3537908e703 100644 --- a/zoneminder.install +++ b/zoneminder.install @@ -1,8 +1,7 @@ post_install() { echo - systemctl daemon-reload - + systemctl daemon-reload ### Nginx & Apache ### @@ -71,7 +70,6 @@ post_install() { echo fi - ### fcgiwrap ### if [[ "$(pacman -Qs fcgiwrap)" = *"local/fcgiwrap"* ]] @@ -92,7 +90,6 @@ post_install() { } fi - ### PHP-FPM ### # Set local timezone in /etc/php/conf.d/zoneminder.ini @@ -104,7 +101,6 @@ post_install() { systemctl start php-fpm fi - ### MariaDB ### # If MariaDB is installed @@ -135,22 +131,21 @@ post_install() { echo echo "* Enter the password one more time..." echo - mysql -uroot -p -e "grant select,insert,update,delete,create,alter,index,lock tables on zm.* to 'zmuser'@localhost identified by 'zmpass';" + mysql -uroot -p -e "grant select,insert,update,delete,create,drop,alter,index,lock tables,alter routine,create routine,trigger,execute on zm.* to 'zmuser'@localhost identified by 'zmpass';" echo else # If a database root password is not set mysql -uroot < /usr/share/zoneminder/db/zm_create.sql - mysql -uroot -e "grant select,insert,update,delete,create,alter,index,lock tables on zm.* to 'zmuser'@localhost identified by 'zmpass';" + mysql -uroot -e "grant select,insert,update,delete,create,drop,alter,index,lock tables,alter routine,create routine,trigger,execute on zm.* to 'zmuser'@localhost identified by 'zmpass';" fi fi fi - ### ZoneMinder ### systemctl is-active --quiet zoneminder && systemctl stop zoneminder systemd-tmpfiles --create - systemctl start zoneminder && + systemctl start --quiet zoneminder && { echo "---------------" echo @@ -158,35 +153,65 @@ post_install() { if [[ "$(systemctl is-active nginx)" = active ]] || [[ "$(systemctl is-active httpd)" = active ]] then echo "ZoneMinder is listening at http://localhost:8095" + echo else echo "WARNING: ZoneMinder is running, but no web server has been configured." + echo fi echo } } post_upgrade() { - post_install - - echo "---------------" - echo - echo "The ZoneMinder updater will now run." + # Parse zm.conf and any custom configuration files + . /etc/zoneminder/zm.conf + for CONF in /etc/zoneminder/conf.d/*.conf; do + . $CONF + done + + # Check if we're running a local database server + if [ "$ZM_DB_HOST" = "localhost" ]; then + systemctl daemon-reload - # Make sure ZoneMinder is *not* running before we attempt to use the updater - systemctl is-active --quiet zoneminder && systemctl stop zoneminder - - # Make sure MariaDB *is* running before we attempt to use the updater - # NOTE: We probably don't want this in a Multi Server setup because MariaDB will not be running locally, - # but since it will simply generate a harmless error and the updater will still run, for now I'm leaving it as is - systemctl is-active --quiet mariadb || systemctl start mariadb - - # Run the updater - /usr/bin/zmupdate.pl + # Make sure MariaDB is running before we attempt to use the updater + systemctl is-active --quiet mariadb || systemctl start mariadb + + # Make sure ZoneMinder is *not* running before we attempt to use the updater + systemctl is-active --quiet zoneminder && systemctl stop zoneminder + + echo + echo "---------------" + + # Temporary solution to apply new privileges on preexisting user & database + # Check for database root password + if [[ "$(mysql -uroot -e "select * from mysql.user;" 2>&1)" = *"Access denied"* ]] + then + # If a database root password is set + echo + echo "* Secure MariaDB installation found, please enter the database root password." + echo + mysql -uroot -p -e "grant select,insert,update,delete,create,drop,alter,index,lock tables,alter routine,create routine,trigger,execute on zm.* to 'zmuser'@localhost identified by 'zmpass';" + else + # If a database root password is not set + mysql -uroot -e "grant select,insert,update,delete,create,drop,alter,index,lock tables,alter routine,create routine,trigger,execute on zm.* to 'zmuser'@localhost identified by 'zmpass';" + fi + + # Run the updater + /usr/bin/zmupdate.pl --nointeractive + /usr/bin/zmupdate.pl --nointeractive --freshen > /dev/null 2>&1 + + # Update PTZ control presets + /usr/bin/zmcamtool.pl --import > /dev/null 2>&1 - systemctl start zoneminder + systemctl start zoneminder + else + echo + echo "---------------" + echo + echo "Multiserver setup detected, database update skipped." + fi - echo "Update complete." - echo + post_install } post_remove() { |