diff options
author | Troy Will | 2015-07-26 21:40:12 -0700 |
---|---|---|
committer | Troy Will | 2015-07-26 21:40:12 -0700 |
commit | 9547e68d54527f371913d8ad1f070c17beec1dd4 (patch) | |
tree | 7a6d50ed75a8ff95940eed7f66c60e84bae1f6e7 | |
download | aur-9547e68d54527f371913d8ad1f070c17beec1dd4.tar.gz |
Initial commit
-rw-r--r-- | .SRCINFO | 52 | ||||
-rw-r--r-- | PKGBUILD | 126 | ||||
-rw-r--r-- | httpd-zoneminder.conf | 20 | ||||
-rw-r--r-- | zoneminder.install | 126 | ||||
-rw-r--r-- | zoneminder.service | 17 |
5 files changed, 341 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..88628d9da120 --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,52 @@ +pkgbase = zoneminder-git + pkgdesc = Capture, analyse, record and monitor video security cameras + pkgver = 1.28.1 + pkgrel = 2 + url = https://github.com/ZoneMinder/ZoneMinder/releases + install = zoneminder.install + arch = i686 + arch = x86_64 + arch = mips64el + arch = arm + arch = armv7h + license = GPL + makedepends = cmake + makedepends = make + makedepends = gcc + makedepends = netpbm + depends = mariadb + depends = perl-dbd-mysql + depends = perl-dbi + depends = apache + depends = php + depends = php-apache + depends = php-gd + depends = php-mcrypt + depends = perl-php-serialization + depends = perl-libwww + depends = perl-net-sftp-foreign + depends = ffmpeg + depends = vlc + depends = perl-sys-mmap + depends = gnutls + depends = polkit + depends = perl-expect + depends = perl-archive-zip + depends = perl-date-manip + depends = perl-mime-lite + depends = perl-mime-tools + optdepends = netpbm + optdepends = cambozola + optdepends = perl-time-modules + optdepends = perl-x10 + optdepends = perl-astro-suntime + backup = etc/zm.conf + source = git://github.com/zoneminder/zoneminder.git + source = httpd-zoneminder.conf + source = zoneminder.service + sha256sums = SKIP + sha256sums = c2ca71ec57e53da040de61ff212ac063574e5ddfb4c333b70be060d5ec26c62c + sha256sums = 7eb2f26246e240e23502da44854d5ed14485aa11bc448ad73e9b57fee13f00a3 + +pkgname = zoneminder-git + diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..ffb5129073ee --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,126 @@ +# Maintainer: Troy Will <troydwill at gmail dot com> +# Contributor: Charles Spence IV <cspence@unomaha.edu> +# Contributor: /dev/rs0 </dev/rs0@secretco.de.com> +# Contributor: Jacek Burghardt <jacek@hebe.us> +# Contributor: Vojtech Aschenbrenner <v@asch.cz> +# Contributor: Jason Gardner <buhrietoe@gmail.com> +# Contributor: Ross melin <rdmelin@gmail.com> +# Contributor (Parabola): Márcio Silva <coadde@lavabit.com> +# Contributor (Parabola): André Silva <emulatorman@lavabit.com> +# Orginally based on a Debian Squeeze package +_pkgname=zoneminder +pkgname=zoneminder-git +pkgver=1.28.1 +pkgrel=2 +pkgdesc='Capture, analyse, record and monitor video security cameras' +arch=( i686 x86_64 mips64el arm armv7h ) +backup=( etc/zm.conf ) +url="https://github.com/ZoneMinder/ZoneMinder/releases" +license=( GPL ) +depends=( + mariadb perl-dbd-mysql perl-dbi + apache php php-apache php-gd php-mcrypt perl-php-serialization + perl-libwww perl-net-sftp-foreign + ffmpeg vlc perl-sys-mmap + gnutls polkit + perl-expect perl-archive-zip perl-date-manip + perl-mime-lite perl-mime-tools +) +makedepends=( + cmake make gcc netpbm +) +optdepends=( + netpbm + cambozola + perl-time-modules + perl-x10 + perl-astro-suntime +) +install=$_pkgname.install + +source=( + git://github.com/$_pkgname/$_pkgname.git + httpd-zoneminder.conf + zoneminder.service +) +# Because the source is not static, skip Git checksum: +sha256sums=('SKIP' + 'c2ca71ec57e53da040de61ff212ac063574e5ddfb4c333b70be060d5ec26c62c' + '7eb2f26246e240e23502da44854d5ed14485aa11bc448ad73e9b57fee13f00a3') + +pkgver() { + cd "$_pkgname" + printf "%s.r%s.%s.%s" "$pkgver" "$(git rev-list --count HEAD)" "$pkgrel" "$(git rev-parse --short HEAD)" +} + +build() { + cd $srcdir/$_pkgname + + # ZM_PERL_SUBPREFIX=/lib/perl5 flag added to force Perl modules + # to /usr/lib/perl5/ on non i686 architectures + + cmake -DCMAKE_INSTALL_PREFIX=/usr \ + -DZM_PERL_SUBPREFIX=/lib/perl5 \ + -DZM_WEBDIR=/srv/http/zoneminder \ + -DZM_CGIDIR=/srv/http/cgi-bin \ + -DZM_WEB_USER=http \ + -DZM_CONTENTDIR=/var/cache/zoneminder \ + -DZM_LOGDIR=/var/log/zoneminder \ + -DZM_RUNDIR=/srv/zoneminder \ + -DZM_TMPDIR=/srv/zoneminder/tmp \ + -DZM_SOCKDIR=/srv/zoneminder/socks . + + make V=0 +} + +package() { + + cd $srcdir/$_pkgname + + DESTDIR=$pkgdir make install + + # Change Polkit directory permissions to Arch Linux policy + chmod -v 700 $pkgdir/usr/share/polkit-1/rules.d/ + chown -v polkitd $pkgdir/usr/share/polkit-1/rules.d/ + + # BEGIN CREATE_ZONEMINDER_DIRECTORIES + mkdir -pv $pkgdir/var/{cache/zoneminder,log/zoneminder} + chown -Rv http.http $pkgdir/var/{cache/zoneminder,log/zoneminder} + + mkdir -pv $pkgdir/srv/zoneminder/socks + chown -v http.http $pkgdir/srv/zoneminder/socks + + mkdir -pv $pkgdir/srv/zoneminder/tmp + chown -v http.http $pkgdir/srv/zoneminder/tmp + + chown -v http.http $pkgdir/etc/zm.conf + chmod 0700 $pkgdir/etc/zm.conf + # END CREATE_ZONEMINDER_DIRECTORIES + + # Make content directories in /var/cache/zoneminder and to link them in /srv/http/zoneminder + for i in events images temp; do + mkdir $pkgdir/var/cache/$_pkgname/$i + chown -v http.http $pkgdir/var/cache/$_pkgname/$i + ln -s /var/cache/$_pkgname/$i $pkgdir/srv/http/$_pkgname/$i + chown -v --no-dereference http.http $pkgdir/srv/http/$_pkgname/$i + done + + # Create a link to the Zoneminder cgi binaries + ln -sv /srv/http/cgi-bin $pkgdir/srv/http/$_pkgname + + chown -h http.http $pkgdir/srv/http/{cgi-bin,$_pkgname,$_pkgname/cgi-bin} + + # Link Cambozola + # ln -s /usr/share/cambozola/cambozola.jar $pkgdir/srv/http/$_pkgname + + # Install configuration files + mkdir -p $pkgdir/etc/httpd/conf/extra + install -D -m 644 $srcdir/httpd-$_pkgname.conf $pkgdir/etc/httpd/conf/extra + + mkdir -p $pkgdir/usr/lib/systemd/system + install -D -m 644 $srcdir/$_pkgname.service $pkgdir/usr/lib/systemd/system + + install -D -m 644 COPYING $pkgdir/usr/share/license/$_pkgname + install -D -m 644 db/zm*.sql $pkgdir/usr/share/$_pkgname/db + +} diff --git a/httpd-zoneminder.conf b/httpd-zoneminder.conf new file mode 100644 index 000000000000..7e6c8e375084 --- /dev/null +++ b/httpd-zoneminder.conf @@ -0,0 +1,20 @@ +# /etc/httpd/conf/extra/httpd-zoneminder.conf +# Config for zoneminder web app + +Alias /zm "/srv/http/zoneminder" +<Directory "/srv/http/zoneminder"> + Options -Indexes +MultiViews +FollowSymLinks + AllowOverride None + Order allow,deny + Allow from all + # Provide PHP access to important directories + php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/zm.conf:/srv/http/zoneminder/:/var/cache/zoneminder/:/srv/zoneminder/socks/:/var/log/zoneminder/" +</Directory> + +ScriptAlias /cgi-bin "/srv/http/cgi-bin" +<Directory "/srv/http/cgi-bin"> + AllowOverride None + Options +ExecCGI +FollowSymLinks + Order allow,deny + Allow from all +</Directory> diff --git a/zoneminder.install b/zoneminder.install new file mode 100644 index 000000000000..e890c604834b --- /dev/null +++ b/zoneminder.install @@ -0,0 +1,126 @@ +post_install() { + # edit /etc/php.ini for Zoneminder + sed -e ' + # Enable these libraries by removing the leading comment character + \|^;extension=ftp.so$| s|^;||; + \|^;extension=gd.so$| s|^;||; + \|^;extension=gettext.so$| s|^;||; + \|^;extension=mcrypt.so$| s|^;||; + \|^;extension=openssl.so$| s|^;||; + \|^;extension=pdo_mysql.so$| s|^;||; + \|^;extension=sockets.so$| s|^;||; + \|^;extension=zip.so$| s|^;||; + ' /etc/php/php.ini > /etc/php/php.ini.zoneminder + + # edit /etc/httpd/conf/httpd.conf for Zoneminder + sed -e ' + # Use mod_mpm_prefork instead of mod_mpm_event.so (FS#39218). + s|^LoadModule mpm_event_module modules/mod_mpm_event.so$|#&\nLoadModule mpm_prefork_module modules/mod_mpm_prefork.so|; + + # Zoneminder needs Apache configured to permit CGI execution + \|^\t#LoadModule cgi_module modules/mod_cgi.so$| s|\t#|\t|; + + # libphp5 + \|^LoadModule php5_module modules/libphp5.so$|d; + s|^#*LoadModule rewrite_module modules/mod_rewrite.so$|&\nLoadModule php5_module modules/libphp5.so|; + \|^Include /etc/httpd/conf/extra/php5_module.conf|d; + s|^Include conf/extra/httpd-default.conf$|&\nInclude /etc/httpd/conf/extra/php5_module.conf|; + + # Include httpd-zoneminder.conf + \|^Include /etc/httpd/conf/extra/httpd-zoneminder.conf$|d; + s|^# Server-pool management (MPM specific)$|\nInclude /etc/httpd/conf/extra/httpd-zoneminder.conf\n&|; + ' /etc/httpd/conf/httpd.conf > /etc/httpd/conf/httpd.conf.zoneminder + + cat << EOF + + Zoneminder database setup: + -------------------------- + Zoneminder operation requires a database named 'zm' which is defined in /usr/share/zoneminder/db/zm_create.sql + + Create the Zoneminder database (with a password): + "mysqladmin --defaults-file=/etc/mysql/my.cnf -p -f reload" + "cat /usr/share/zoneminder/db/zm_create.sql | mysql --defaults-file=/etc/mysql/my.cnf -p" + "echo 'grant lock tables, alter,select,insert,update,delete on zm.* to 'zmuser'@localhost identified by "zmpass";' | mysql --defaults-file=/etc/mysql/my.cnf -p mysql" + (or without a password): + "mysqladmin --defaults-file=/etc/mysql/my.cnf -f reload" + "cat /usr/share/zoneminder/db/zm_create.sql | mysql --defaults-file=/etc/mysql/my.cnf" + "echo 'grant lock tables, alter,select,insert,update,delete on zm.* to 'zmuser'@localhost identified by "zmpass";' | mysql --defaults-file=/etc/mysql/my.cnf mysql" + + PHP configuration + ----------------- + * Check and make sure these are uncommented in /etc/php/php.ini: + extension=ftp.so + extension=gd.so + extension=gettext.so + extension=mcrypt.so + extension=openssl.so + extension=pdo_mysql.so + extension=sockets.so + extension=zip.so + * Add /etc/zm.conf, /srv/http/zoneminder, /var/cache/zoneminder, and /srv/zoneminder/socks to open_basedir in the zoneminder vhosts configuration file in apache: + php_admin_value open_basedir "/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/zm.conf:/srv/http/zoneminder/:/var/cache/zoneminder/:/srv/zoneminder/socks/:/var/log/zoneminder/" + * Set your timezone in php.ini: + date.timezone = <your_country>/<your_city> + + Apache configuration + -------------------- + Edit /etc/httpd/conf/httpd.conf and add the line: + "LoadModule php5_module modules/libphp5.so" + and: + "Include /etc/httpd/conf/extra/php5_module.conf" + "Include /etc/httpd/conf/extra/httpd-zoneminder.conf" +EOF +} + +post_upgrade() { + post_install + /usr/bin/zmupdate.pl -f >/dev/null +} + +post_remove() { + if [[ -d /tmp/zoneminder ]]; then + rm -vr /tmp/zoneminder + fi + # sed -i -e ' + # /^open_basedir/ s/:\/srv\/http\/zoneminder//; + # /^open_basedir/ s/:\/srv\/http\/zoneminder\///; + # ' /etc/php/php.ini || read + # sed -i -e ' + # /^# ZoneMinder/d; + # /Include \/etc\/httpd\/conf\/extra\/httpd-zoneminder.conf/d; + # ' /etc/httpd/conf/httpd.conf || read + + cat << EOF +Note: +==> To clean Zoneminder mysql database, run as root (with password): +==> "echo 'delete from user where User="zmuser";' | mysql --defaults-file=/etc/mysql/my.cnf -p mysql" +==> "echo 'delete from db where User="zmuser";' | mysql --defaults-file=/etc/mysql/my.cnf -p mysql" +==> "mysqladmin --defaults-file=/etc/mysql/my.cnf -p -f drop zm" +==> (or without password): +==> "echo 'delete from user where User="zmuser";' | mysql --defaults-file=/etc/mysql/my.cnf mysql" +==> "echo 'delete from db where User="zmuser";' | mysql --defaults-file=/etc/mysql/my.cnf mysql" +==> "mysqladmin --defaults-file=/etc/mysql/my.cnf -f drop zm" + +==> Disable http with php if it isn't needed with others servers, +==> comment or remove that lines in /etc/httpd/conf/httpd.conf: +==> "LoadModule php5_module modules/libphp5.so" +==> "Include /etc/httpd/conf/extra/php5_module.conf" + +==> Remove line in /etc/httpd/conf/httpd.conf: +==> "Include /etc/httpd/conf/extra/httpd-zoneminder.conf" + +==> Disable php with mysql if it isn't needed with others servers, +==> comment that lines in /etc/php/php.ini: +==> "extension=mysql.so" +==> "extension=gd.so" +==> "extension=gettext.so" +==> "extension=mcrypt.so" +==> "extension=mysqli.so" +==> "extension=sockets.so" +==> "date.timezone = <my_country>/<my_city>" + +==> Remove log files and "zoneminder" directory in "/var/log/zoneminder". + +==> Backup and remove "events", "images" and "temp" dirs in "/var/cache/zoneminder". +EOF +} diff --git a/zoneminder.service b/zoneminder.service new file mode 100644 index 000000000000..4ba745844503 --- /dev/null +++ b/zoneminder.service @@ -0,0 +1,17 @@ +# ZoneMinder systemd unit file for Arch Linux + +[Unit] +Description=ZoneMinder CCTV recording and security system +After=network.target mysqld.service httpd.service +Requires=mysqld.service httpd.service + +[Service] +User=http +Type=forking +ExecStart=/usr/bin/zmpkg.pl start +ExecReload=/usr/bin/zmpkg.pl restart +ExecStop=/usr/bin/zmpkg.pl stop +PIDFile="/srv/zoneminder/zm.pid" + +[Install] +WantedBy=multi-user.target |