summaryrefslogtreecommitdiff
path: root/pcr/zoneminder
diff options
context:
space:
mode:
Diffstat (limited to 'pcr/zoneminder')
-rw-r--r--pcr/zoneminder1
-rw-r--r--pcr/zoneminder/PKGBUILD120
-rw-r--r--pcr/zoneminder/httpd-zoneminder.conf20
-rw-r--r--pcr/zoneminder/sysctl-zoneminder.conf3
-rw-r--r--pcr/zoneminder/zoneminder.install179
-rw-r--r--pcr/zoneminder/zoneminder.service18
6 files changed, 340 insertions, 1 deletions
diff --git a/pcr/zoneminder b/pcr/zoneminder
deleted file mode 100644
index 4eb47d013..000000000
--- a/pcr/zoneminder
+++ /dev/null
@@ -1 +0,0 @@
-moved to [ssh://git@projects.parabola.nu/~git/pcr.git/pcr] git repo
diff --git a/pcr/zoneminder/PKGBUILD b/pcr/zoneminder/PKGBUILD
new file mode 100644
index 000000000..5b4335a0a
--- /dev/null
+++ b/pcr/zoneminder/PKGBUILD
@@ -0,0 +1,120 @@
+# Contributor (Arch): Troy Will <troydwill@gmail.com>
+# Contributor (Arch): /dev/rs0 </dev/rs0@secretco.de.com>
+# Contributor (Arch): Jacek Burghardt <jacek@hebe.us>
+# Contributor (Arch): Vojtech Aschenbrenner <v@asch.cz>
+# Contributor (Arch): Jason Gardner <buhrietoe@gmail.com>
+# Contributor (Arch): Ross melin <rdmelin@gmail.com>
+# Maintainer: Márcio Silva <coadde@parabola.nu>
+# Contributor: André Silva <emulatorman@parabola.nu>
+# Orginally based on a Debian Squeeze package
+
+pkgname=zoneminder
+pkgver=1.28.0
+pkgrel=1
+pkgdesc='Capture, analyse, record and monitor video security cameras'
+arch=('i686' 'x86_64' 'mips64el' 'arm')
+backup=('etc/zm.conf')
+url="https://github.com/ZoneMinder/ZoneMinder/releases"
+license=('GPL2')
+depends=('apache' 'cambozola' 'ffmpeg' 'gnutls' 'mariadb' 'perl-archive-zip' 'perl-date-manip' 'perl-dbd-mysql' 'perl-dbi'
+ 'perl-expect' 'perl-libwww' 'perl-mime-lite' 'perl-mime-tools' 'perl-php-serialization' 'perl-net-sftp-foreign'
+ 'perl-sys-mmap' 'perl-time-modules' 'php' 'php-apache' 'php-gd' 'php-mcrypt')
+makedepends=('netpbm' 'cmake')
+optdepends=('netpbm')
+options=(!libtool)
+install=$pkgname.install
+source=(https://github.com/ZoneMinder/ZoneMinder/archive/v$pkgver.tar.gz
+ httpd-$pkgname.conf
+ $pkgname.service
+ sysctl-$pkgname.conf)
+sha512sums=('3e18993b0539729491052c97d8c94227ccc089eb40277c2f07682f30049033303c7cfe9734fdac6d33ae67df29c76eb72bf7fbb5dae8227e8831fa603b61c375'
+ '4ce0d8eba9d006d258f5b8a83920fc17f1f602b96518d37b7a47cd9b6eb84ef2587641a6ba839a469c3f0e33b46475866187279ae3f8be0d4054b074ee5d6b08'
+ 'cfb0eb87a989236c72741a496ddc6a73aa2696e5beaaca4836d3c231ddb24c7ef5e9f65e7afa49674f2115cbfa4a07c75486e1947ce294c816ddbb875f3b99cf'
+ '7330c179f1e2db815a675560d3d84648be02f7d0292f8cbe21d6033577fe688ed71ad23b5b8c9dc309395b45ebb554f9499e7a4b57091959b69679011fa59044')
+
+prepare() {
+ cd $srcdir/ZoneMinder-$pkgver
+
+ # Patch for disable ZM_CHECK_FOR_UPDATES
+ sed -i '\|ZM_CHECK_FOR_UPDATES|,+1 s|yes|no|;
+ ' scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
+
+ # Patch for support html5 video and flv
+ sed -i '\|ZM_MPEG_LIVE_FORMAT|,+1 s|swf|ogg|;
+ \|ZM_MPEG_REPLAY_FORMAT|,+1 s|swf|ogg|;
+ \|ZM_FFMPEG_FORMATS|,+1 s|mpg mpeg wmv asf avi[*] mov swf 3gp[*][*]|mpg mpeg wmv asf avi* mov flv swf 3gp** webm ogg matroska mp4 h264|;
+ ' scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
+
+ # Patch for change ZM name to ZoneMinder
+ sed -i '\|ZM_WEB_TITLE_PREFIX|,+1 s|"ZM"|"ZoneMinder"|;
+ ' scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
+
+ # Patch for remove HACK in Makefile.am
+ sed -i '\|This is a HACK|d;
+ \|^install-data-hook:$|,+5 d;
+ s| install-data-hook||;
+ \|^uninstall-hook:$|,+5 d;
+ s| uninstall-hook||;
+ ' Makefile.am
+}
+
+build() {
+ cd $srcdir/ZoneMinder-$pkgver
+
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DZM_TARGET_DISTRO=arch \
+ -DZM_CGIDIR=/srv/http/cgi-bin \
+ -DZM_CONTENTDIR=/var/cache/$pkgname \
+ -DZM_LOGDIR=/var/log/$pkgname \
+ -DZM_RUNDIR=/run/$pkgname \
+ -DZM_SOCKDIR=/run/$pkgname \
+ -DZM_TMPDIR=/var/tmp \
+ -DZM_WEB_USER=http \
+ -DZM_WEB_GROUP=http \
+ -DZM_WEBDIR=/srv/http/$pkgname
+
+ make V=0
+}
+
+package() {
+ cd $srcdir/ZoneMinder-$pkgver
+
+ make DESTDIR=$pkgdir install
+
+ # BEGIN CREATE_ZONEMINDER_DIRECTORIES
+ #mkdir -pv $pkgdir/{etc/{httpd/conf/extra,sysctl.d},srv/http/cgi-bin,usr/{lib/systemd/system,share/{licenses/$pkgname,$pkgname/db}}}
+ mkdir -pv $pkgdir/run/zm
+ chown -v http.http $pkgdir/run/zm
+ mkdir -pv $pkgdir/var/{cache/$pkgname,log/$pkgname}
+ mkdir -pv $pkgdir/srv/http/$pkgname/socks
+ chown -Rv http.http $pkgdir/{etc/zm.conf,var/{cache/$pkgname,log/$pkgname}}
+ chown -Rv http.http $pkgdir/srv/http/$pkgname/socks
+ chmod -v 0700 $pkgdir/etc/zm.conf
+ # END CREATE_ZONEMINDER_DIRECTORIES
+
+ # Make content directories in /var/cache/$pkgname and link them
+ for i in events images temp; do
+ #mv -v $pkgdir/srv/http/$pkgname/$i $pkgdir/var/cache/$pkgname/$i
+ mkdir -v $pkgdir/var/cache/$pkgname/$i
+ #chown -v http.http $pkgdir/var/cache/$pkgname/$i
+ ln -sv /var/cache/$pkgbase/$i $pkgdir/srv/http/$pkgname/$i
+ chown -hv 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 -hv http.http $pkgdir/srv/http/{cgi-bin,$pkgname,$pkgname/cgi-bin}
+
+ # Link Cambozola
+ ln -vs /usr/share/cambozola/cambozola.jar $pkgdir/srv/http/$pkgname
+
+ # Install configuration files
+ #mkdir -pv $pkgdir/etc/httpd/conf/extra
+ install -vDm 644 $srcdir/httpd-$pkgname.conf $pkgdir/etc/httpd/conf/extra
+ #mkdir -pv $pkgdir/usr/lib/systemd/system
+ install -vDm 644 $srcdir/$pkgname.service $pkgdir/usr/lib/systemd/system
+ install -vDm 644 $srcdir/sysctl-$pkgname.conf $pkgdir/etc/sysctl.d
+ install -vDm 644 COPYING $pkgdir/usr/share/licenses/$pkgname
+ install -vDm 644 db/zm*.sql $pkgdir/usr/share/$pkgname/db
+}
diff --git a/pcr/zoneminder/httpd-zoneminder.conf b/pcr/zoneminder/httpd-zoneminder.conf
new file mode 100644
index 000000000..cdb7722dc
--- /dev/null
+++ b/pcr/zoneminder/httpd-zoneminder.conf
@@ -0,0 +1,20 @@
+# /etc/httpd/conf/extra/httpd-zm.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
+ # The code unfortunately uses short tags in many places
+ php_value short_open_tag On
+</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/pcr/zoneminder/sysctl-zoneminder.conf b/pcr/zoneminder/sysctl-zoneminder.conf
new file mode 100644
index 000000000..ec1407dee
--- /dev/null
+++ b/pcr/zoneminder/sysctl-zoneminder.conf
@@ -0,0 +1,3 @@
+# For Zoneminder Monitor
+#kernel.shmall = 524288000
+#kernel.shmmax = 524288000
diff --git a/pcr/zoneminder/zoneminder.install b/pcr/zoneminder/zoneminder.install
new file mode 100644
index 000000000..1c8789a4a
--- /dev/null
+++ b/pcr/zoneminder/zoneminder.install
@@ -0,0 +1,179 @@
+#!/usr/bin/bash
+pre_install() {
+ set -e
+ abort=false
+ if [ -L /srv/http/zoneminder/events ]; then
+ l=$(readlink /srv/http/zoneminder/events)
+ if [ $l != /var/cache/zoneminder/events ]; then
+ abort=true
+ fi
+ fi
+ if [ -L /srv/http/zoneminder/images ]; then
+ l=$(readlink /srv/http/zoneminder/images)
+ if [ $l != /var/cache/zoneminder/images ]; then
+ abort=true
+ fi
+ fi
+ if [ $abort = true ]; then
+ cat >&2 << EOF
+Aborting installation of zoneminder due to non-default symlinks in
+/srv/http/zoneminder for the images and/or events directory, which could
+result in loss of data. Please move your data in each of these directories to
+/var/cache/zoneminder before installing zoneminder from the package.
+EOF
+ exit 1
+ fi
+ exit 0
+}
+
+post_install() {
+ if [[ -d /var/log/zoneminder ]]; then
+ chmod -v 0755 /var/log/zoneminder
+ chown -v http.http /var/log/zoneminder
+ else
+ mkdir -vm 0755 /var/log/zoneminder
+ chown -v http.http /var/log/zoneminder
+ fi
+ if [[ -d /tmp/zoneminder ]]; then
+ chmod -v 0700 /tmp/zoneminder
+ chown -v http.http /tmp/zoneminder
+ else
+ mkdir -vm 0700 /tmp/zoneminder
+ chown -v http.http /tmp/zoneminder
+ fi
+
+ # edit /etc/php.ini for Zoneminder
+ sed -e '
+ # Enable these libraries by removing the leading comment character
+ \|^;extension=mysql.so$| s|^;||;
+ \|^;extension=mysqli.so$| s|^;||;
+ \|^;extension=pdo_mysql.so$| s|^;||;
+ \|^;extension=gd.so$| s|^;||;
+ \|^;extension=gettext.so$| s|^;||;
+ \|^;extension=mcrypt.so$| s|^;||;
+ \|^;extension=session.so$| s|^;||;
+ \|^;extension=sockets.so$| s|^;||;
+ \|^;extension=openssl.so$| s|^;||;
+ \|^;extension=ftp.so$| s|^;||;
+ \|^;extension=zip.so$| s|^;||;
+
+ # Add zoneminder paths to open_basedir
+ s|^open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/$|&:/etc:/srv/http/zoneminder/|;
+ ' /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 requires cgi
+ \|^#LoadModule cgi_module modules/mod_cgi.so$| s|#||;
+
+ # 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
+Note for mysql:
+==> To run Zoneminder, you must install the database running mysql service (as root):
+==> "systemctl start mysqld.service"
+==> and add Zoneminder database typing (with passsword):
+==> "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 passsword):
+==> "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"
+
+Note for php:
+==> You must uncomment that line in /etc/php/php.ini:
+==> "extension=mysql.so"
+==> check and make sure these are uncommented:
+==> "extension=gd.so"
+==> "extension=gettext.so"
+==> "extension=mcrypt.so"
+==> "extension=mysqli.so"
+==> "extension=session.so"
+==> "extension=sockets.so"
+==> "extension=openssl.so"
+==> "extension=ftp.so"
+==> "extension=zip.so"
+==> check and add to open_basedir "/etc" and
+==> "/srv/http/zoneminder" like so
+==> "open_basedir = /home:/tmp:/usr/share/pear:/etc:/srv/http/zoneminder"
+==> and set your timezone in php.ini:
+==> "date.timezone = <your_country>/<your_city>"
+
+Note for apache:
+==> You must 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=session.so"
+==> "extension=sockets.so"
+==> "date.timezone = <my_country>/<my_city>"
+
+==> Edit /etc/php/php.ini and remove "/etc" and "/srv/http/zoneminder"
+==> in the "open_basedir".
+
+==> Remove log files and "zonemider" directory in "/var/log/zoneminder".
+
+==> Backup and remove "events", "images" and "temp" dirs in "/var/cache/zoneminder".
+EOF
+}
diff --git a/pcr/zoneminder/zoneminder.service b/pcr/zoneminder/zoneminder.service
new file mode 100644
index 000000000..83d992aa7
--- /dev/null
+++ b/pcr/zoneminder/zoneminder.service
@@ -0,0 +1,18 @@
+# ZoneMinder systemd unit file
+# This file is intended to work with all distributions with Systemd
+
+[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=/bin/bash -c '[[ "$(/usr/bin/pgrep zmdc.pl)" > 0 ]] && /usr/bin/zmpkg.pl stop'
+PIDFile="/run/zm/zm.pid"
+
+[Install]
+WantedBy=multi-user.target