Fix conflict when merging upstream master

This commit is contained in:
Emmanuel Papin 2014-12-13 19:54:54 +01:00
commit d961831355
319 changed files with 2737 additions and 17123 deletions

View File

@ -44,7 +44,7 @@ include (CheckTypeSize)
include (CheckStructHasMember)
# Configuration options
mark_as_advanced(FORCE ZM_EXTRA_LIBS ZM_MYSQL_ENGINE ZM_NO_MMAP CMAKE_INSTALL_FULL_BINDIR ZM_PERL_SUBPREFIX ZM_PERL_USE_PATH ZM_TARGET_DISTRO)
mark_as_advanced(FORCE ZM_EXTRA_LIBS ZM_MYSQL_ENGINE ZM_NO_MMAP CMAKE_INSTALL_FULL_BINDIR ZM_PERL_SUBPREFIX ZM_PERL_USE_PATH ZM_TARGET_DISTRO ZM_CONFIG_DIR)
set(ZM_RUNDIR "/var/run/zm" CACHE PATH "Location of transient process files, default: /var/run/zm")
set(ZM_SOCKDIR "/var/run/zm" CACHE PATH "Location of Unix domain socket files, default /var/run/zm")
set(ZM_TMPDIR "/var/tmp/zm" CACHE PATH "Location of temporary files, default: /tmp/zm")
@ -59,6 +59,7 @@ set(ZM_DB_PASS "zmpass" CACHE STRING "Password of ZoneMinder database user, defa
set(ZM_WEB_USER "" CACHE STRING "The user apache or the local web server runs on. Leave empty for automatic detection. If that fails, you can use this variable to force")
set(ZM_WEB_GROUP "" CACHE STRING "The group apache or the local web server runs on, Leave empty to be the same as the web user")
# Advanced
set(ZM_CONFIG_DIR "/${CMAKE_INSTALL_SYSCONFDIR}" CACHE PATH "Location of ZoneMinder configuration, default system config directory")
set(ZM_EXTRA_LIBS "" CACHE STRING "A list of optional libraries, separated by semicolons, e.g. ssl;theora")
set(ZM_MYSQL_ENGINE "InnoDB" CACHE STRING "MySQL engine to use with database, default: InnoDB")
set(ZM_NO_MMAP "OFF" CACHE BOOL "Set to ON to not use mmap shared memory. Shouldn't be enabled unless you experience problems with the shared memory. default: OFF")
@ -490,6 +491,7 @@ endif(NOT POLKIT_FOUND)
# Some variables that zm expects
set(ZM_PID "${ZM_RUNDIR}/zm.pid")
set(ZM_CONFIG "${ZM_CONFIG_DIR}/zm.conf")
set(ZM_CONFIG "/${CMAKE_INSTALL_SYSCONFDIR}/zm.conf")
set(VERSION "${zoneminder_VERSION}")
set(PKGDATADIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/zoneminder")
@ -539,7 +541,7 @@ else(zmconfgen_result EQUAL 0)
endif(zmconfgen_result EQUAL 0)
# Install zm.conf
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zm.conf" DESTINATION "/${CMAKE_INSTALL_SYSCONFDIR}")
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zm.conf" DESTINATION "${ZM_CONFIG_DIR}")
# Uninstall target
configure_file(

View File

@ -5,8 +5,9 @@ ACLOCAL_AMFLAGS = -I m4
# And these to the user and group of your webserver
webuser = @WEB_USER@
webgroup = @WEB_GROUP@
zmconfigdir = @ZM_CONFIG_DIR@
sysconf_DATA = \
zmconfig_DATA = \
zm.conf
SUBDIRS = \
@ -22,7 +23,7 @@ EXTRA_DIST = \
# Yes, you are correct. This is a HACK!
install-data-hook:
( cd $(DESTDIR)$(sysconfdir); chown $(webuser):$(webgroup) $(sysconf_DATA); chmod 600 $(sysconf_DATA) )
( cd $(DESTDIR)$(zmconfigdir); chown $(webuser):$(webgroup) $(zmconfig_DATA); chmod 600 $(zmconfig_DATA) )
( if ! test -e $(DESTDIR)$(ZM_RUNDIR); then mkdir -p $(DESTDIR)$(ZM_RUNDIR); fi; if test "$(DESTDIR)$(ZM_RUNDIR)" != "/var/run"; then chown $(webuser):$(webgroup) $(DESTDIR)$(ZM_RUNDIR); chmod u+w $(DESTDIR)$(ZM_RUNDIR); fi )
( if ! test -e $(DESTDIR)$(ZM_SOCKDIR); then mkdir -p $(DESTDIR)$(ZM_SOCKDIR); fi; if test "$(DESTDIR)$(ZM_SOCKDIR)" != "/var/run"; then chown $(webuser):$(webgroup) $(DESTDIR)$(ZM_SOCKDIR); chmod u+w $(DESTDIR)$(ZM_SOCKDIR); fi )
( if ! test -e $(DESTDIR)$(ZM_TMPDIR); then mkdir -m 700 -p $(DESTDIR)$(ZM_TMPDIR); fi; if test "$(DESTDIR)$(ZM_TMPDIR)" != "/tmp" && test "$(DESTDIR)$(ZM_TMPDIR)" != "/var/tmp"; then chown $(webuser):$(webgroup) $(DESTDIR)$(ZM_TMPDIR); chmod u+w $(DESTDIR)$(ZM_TMPDIR); fi )

View File

@ -49,6 +49,7 @@ AC_ARG_VAR(ZM_RUNDIR,[Location of transient process files, default /var/run/zm])
AC_ARG_VAR(ZM_SOCKDIR,[Location of Unix domain socket files, default /var/run/zm])
AC_ARG_VAR(ZM_TMPDIR,[Location of temporary files, default /var/tmp/zm])
AC_ARG_VAR(ZM_LOGDIR,[Location of generated log files, default /var/log/zm])
AC_ARG_VAR(ZM_CONFIG_DIR,[Location of ZoneMinder configuration, default system config directory])
if test "$ZM_DB_TYPE" == ""; then
AC_SUBST(ZM_DB_TYPE,[mysql])
@ -83,6 +84,10 @@ fi
if test "$ZM_LOGDIR" == ""; then
AC_SUBST(ZM_LOGDIR,[/var/log/zm])
fi
AC_DEFINE_DIR([SYSCONFDIR],[sysconfdir],[Expanded configuration directory])
if test "$ZM_CONFIG_DIR" == ""; then
AC_SUBST(ZM_CONFIG_DIR,[$SYSCONFDIR])
fi
LIB_ARCH=lib
AC_ARG_WITH(libarch,
@ -534,8 +539,9 @@ AC_DEFINE_DIR([LIBDIR],[libdir],[Expanded library directory])
AC_DEFINE_DIR([DATADIR],[datadir],[Expanded data directory])
AC_SUBST(PKGDATADIR,"$DATADIR/$PACKAGE")
AC_SUBST(ZM_PID,"$ZM_RUNDIR/zm.pid")
AC_DEFINE_DIR([SYSCONFDIR],[sysconfdir],[Expanded configuration directory])
AC_SUBST(ZM_CONFIG,"$SYSCONFDIR/zm.conf")
#AC_DEFINE_DIR([SYSCONFDIR],[sysconfdir],[Expanded configuration directory])
#AC_SUBST(ZM_CONFIG,"$SYSCONFDIR/zm.conf")
AC_SUBST(ZM_CONFIG,"$ZM_CONFIG_DIR/zm.conf")
# Slight hack for non-standard perl install paths
if test "$prefix" != "NONE"; then
@ -552,7 +558,7 @@ AC_SUBST(PERL_MM_PARMS)
AC_SUBST(EXTRA_PERL_LIB)
AC_CONFIG_FILES([Makefile zm.conf zmconfgen.pl db/Makefile db/zm_create.sql misc/Makefile misc/apache.conf misc/logrotate.conf misc/syslog.conf misc/com.zoneminder.systemctl.policy misc/com.zoneminder.systemctl.rules misc/plugins.conf scripts/Makefile scripts/zm scripts/zmaudit.pl scripts/zmcontrol.pl scripts/zmdc.pl scripts/zmfilter.pl scripts/zmpkg.pl scripts/zmtrack.pl scripts/zmcamtool.pl scripts/zmsystemctl.pl scripts/zmtrigger.pl scripts/zmupdate.pl scripts/zmvideo.pl scripts/zmwatch.pl scripts/zmx10.pl scripts/zmdbbackup scripts/zmdbrestore scripts/zmeventdump scripts/zmlogrotate.conf scripts/ZoneMinder/lib/ZoneMinder/Base.pm scripts/ZoneMinder/lib/ZoneMinder/Config.pm scripts/ZoneMinder/lib/ZoneMinder/Memory.pm scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm src/Makefile src/zm_config.h src/libzmplugins.pc web/Makefile web/ajax/Makefile web/css/Makefile web/graphics/Makefile web/includes/Makefile web/includes/config.php web/js/Makefile web/lang/Makefile web/skins/Makefile web/skins/classic/Makefile web/skins/classic/ajax/Makefile web/skins/classic/css/Makefile web/skins/classic/graphics/Makefile web/skins/classic/includes/Makefile web/skins/classic/js/Makefile web/skins/classic/lang/Makefile web/skins/classic/views/Makefile web/skins/classic/views/css/Makefile web/skins/classic/views/js/Makefile web/skins/mobile/Makefile web/skins/mobile/ajax/Makefile web/skins/mobile/css/Makefile web/skins/mobile/graphics/Makefile web/skins/mobile/includes/Makefile web/skins/mobile/lang/Makefile web/skins/mobile/views/Makefile web/skins/mobile/views/css/Makefile web/tools/Makefile web/tools/mootools/Makefile web/views/Makefile web/skins/xml/Makefile web/skins/xml/views/Makefile web/skins/xml/includes/Makefile web/skins/flat/Makefile web/skins/flat/ajax/Makefile web/skins/flat/css/Makefile web/skins/flat/graphics/Makefile web/skins/flat/includes/Makefile web/skins/flat/js/Makefile web/skins/flat/lang/Makefile web/skins/flat/views/Makefile web/skins/flat/views/css/Makefile web/skins/flat/views/js/Makefile])
AC_CONFIG_FILES([Makefile zm.conf zmconfgen.pl db/Makefile db/zm_create.sql misc/Makefile misc/apache.conf misc/logrotate.conf misc/syslog.conf misc/com.zoneminder.systemctl.policy misc/com.zoneminder.systemctl.rules scripts/Makefile scripts/zm scripts/zmaudit.pl scripts/zmcontrol.pl scripts/zmdc.pl scripts/zmfilter.pl scripts/zmpkg.pl scripts/zmtrack.pl scripts/zmcamtool.pl scripts/zmsystemctl.pl scripts/zmtrigger.pl scripts/zmupdate.pl scripts/zmvideo.pl scripts/zmwatch.pl scripts/zmx10.pl scripts/zmdbbackup scripts/zmdbrestore scripts/zmeventdump scripts/zmlogrotate.conf scripts/ZoneMinder/lib/ZoneMinder/Base.pm scripts/ZoneMinder/lib/ZoneMinder/Config.pm scripts/ZoneMinder/lib/ZoneMinder/Memory.pm scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm src/Makefile src/zm_config.h web/Makefile web/ajax/Makefile web/css/Makefile web/graphics/Makefile web/includes/Makefile web/includes/config.php web/js/Makefile web/lang/Makefile web/skins/Makefile web/skins/classic/Makefile web/skins/classic/ajax/Makefile web/skins/classic/css/Makefile web/skins/classic/css/classic/Makefile web/skins/classic/css/classic/views/Makefile web/skins/classic/css/flat/Makefile web/skins/classic/css/flat/views/Makefile web/skins/classic/graphics/Makefile web/skins/classic/includes/Makefile web/skins/classic/js/Makefile web/skins/classic/lang/Makefile web/skins/classic/views/Makefile web/skins/classic/views/js/Makefile web/skins/mobile/Makefile web/skins/mobile/ajax/Makefile web/skins/mobile/css/Makefile web/skins/mobile/graphics/Makefile web/skins/mobile/includes/Makefile web/skins/mobile/lang/Makefile web/skins/mobile/views/Makefile web/skins/mobile/views/css/Makefile web/tools/Makefile web/tools/mootools/Makefile web/views/Makefile web/skins/xml/Makefile web/skins/xml/views/Makefile web/skins/xml/includes/Makefile])
# Create the definitions for compilation and defaults for the database
AC_CONFIG_COMMANDS([src/zm_config_defines.h],[perl ./zmconfgen.pl])

View File

@ -320,7 +320,7 @@ CREATE TABLE `Monitors` (
`Enabled` tinyint(3) unsigned NOT NULL default '1',
`LinkedMonitors` varchar(255) NOT NULL default '',
`Triggers` set('X10') NOT NULL default '',
`Device` varchar(64) NOT NULL default '',
`Device` tinytext NOT NULL default '',
`Channel` tinyint(3) unsigned NOT NULL default '0',
`Format` int(10) unsigned NOT NULL default '0',
`V4LMultiBuffer` tinyint(1) unsigned,

1
db/zm_update-1.28.1.sql Normal file
View File

@ -0,0 +1 @@
ALTER TABLE Monitors MODIFY Device tinytext;

View File

@ -0,0 +1,51 @@
zoneminder for Debian
---------------------
There is one manual step to get the web interface working.
You need to link /etc/zm/apache.conf to /etc/apache2/conf.d/zoneminder.conf,
then reload the apache config (i.e. /etc/init.d/apache2 reload)
Changing the location for images and events
-------------------------------------------
Zoneminder, in its upstream form, stores data in /usr/share/zoneminder/. This
package modifies that by changing /usr/share/zoneminder/images and
/usr/share/zoneminder/events to symlinks to directories under
/var/cache/zoneminder.
There are numerous places these could be put and ways to do it. But, at the
moment, if you change this, an upgrade will fail with a warning about these
locations having changed (the reason for this was that previously, an upgrade
would silently revert the changes and cause event loss - refer
bug #608793).
If you do want to change the location, here are a couple of suggestions.
These lines would mount /dev/sdX1 to /video_storage, and then 'link' /video_storage
to the locations that ZoneMinder expects them to be at.
/dev/sdX1 /video_storage ext4 defaults 0 2
/video_storage/zoneminder/images /var/cache/zoneminder/images none bind 0 2
/video_storage/zoneminder/events /var/cache/zoneminder/events none bind 0 2
or if you have a separate partition for each:
/dev/sdX1 /var/cache/zoneminder/images ext4 defaults 0 2
/dev/sdX2 /var/cache/zoneminder/events ext4 defaults 0 2
-- Peter Howard <pjh@northern-ridge.com.au>, Sun, 16 Jan 2010 01:35:51 +1100
Access to /dev/video*
---------------------
For cameras which require access to /dev/video*, zoneminder may need the
www-data user added to the video group in order to see those cameras:
adduser www-data video
Note that all web applications running on the zoneminder server will then have
access to all video devices on the system.
-- Vagrant Cascadian <vagrant@debian.org> Sun, 27 Mar 2011 13:06:56 -0700

View File

@ -0,0 +1,12 @@
This package uses quilt to manage all modifications to the upstream source.
Changes are stored in the source package as diffs in debian/patches and applied
during the build.
See /usr/share/doc/quilt/README.source for a detailed explanation.
This package uses the version 3.0 of the debian source package; An upstream
tarball is required to build it. This tarball can be generated automagically by
downloading the sources from the github repository with the following command:
fakeroot debian/rules get-orig-source

View File

@ -0,0 +1,9 @@
Alias /zm /usr/share/zoneminder
<Directory /usr/share/zoneminder>
php_flag register_globals off
Options Indexes FollowSymLinks
<IfModule mod_dir.c>
DirectoryIndex index.php
</IfModule>
</Directory>

33
distros/debian8/changelog Normal file
View File

@ -0,0 +1,33 @@
zoneminder (1.28.0-0.2) testing; urgency=medium
* Non-maintainer upload.
* Upstream release for debian jessie
* Package dependencies updated
* debhelper version upgraded
* Standards-Version upgraded
* Use debhelper commands instead of standard commands
* Install man pages in /usr/share/man (patch added)
* Switch to quilt
* Switch to systemd
* Some lintian fixes
-- Emmanuel Papin <manupap01@gmail.com> Wed, 26 Nov 2014 00:26:01 +0100
zoneminder (1.28.0-0.1) stable; urgency=medium
* Release
-- Isaac Connor <iconnor@connortechnology.com> Fri, 17 Oct 2014 09:27:22 -0400
zoneminder (1.27.99+1-testing-SNAPSHOT2014072901) testing; urgency=medium
* improve error messages
* Make zmupdate re-run the most recent patch so that people running the daily builds get their db updates
-- Isaac Connor <iconnor@connortechnology.com> Tue, 29 Jul 2014 14:50:20 -0400
zoneminder (1.27.0+1-testing-v4ltomonitor-1) testing; urgency=high
* Snapshot release -
-- Isaac Connor <iconnor@connortechnology.com> Wed, 09 Jul 2014 21:35:29 -0400

1
distros/debian8/compat Normal file
View File

@ -0,0 +1 @@
9

40
distros/debian8/control Normal file
View File

@ -0,0 +1,40 @@
Source: zoneminder
Section: net
Priority: optional
Maintainer: Isaac Connor <iconnor@connortechnology.com>
Build-Depends: debhelper (>= 9), dh-systemd (>= 1.5), autoconf, automake, quilt, libphp-serialization-perl, libgnutls28-dev, libmysqlclient-dev | libmariadbclient-dev, libdbd-mysql-perl, libdate-manip-perl, libwww-perl, libjpeg8-dev|libjpeg9-dev|libjpeg62-turbo-dev, libpcre3-dev, libavcodec-dev, libavformat-dev (>= 3:0.svn20090204), libswscale-dev (>= 3:0.svn20090204), libavutil-dev, libv4l-dev (>= 0.8.3), libbz2-dev, libtool, libsys-mmap-perl, ffmpeg | libav-tools, libnetpbm10-dev, libavdevice-dev, libdevice-serialport-perl, libarchive-zip-perl, libmime-lite-perl, dh-autoreconf, libvlccore-dev, libvlc-dev, libcurl4-gnutls-dev | libcurl4-nss-dev | libcurl4-openssl-dev, libgcrypt11-dev|libgcrypt20-dev, libpolkit-gobject-1-dev
Standards-Version: 3.9.6
Package: zoneminder
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, apache2, libapache2-mod-php5 | libapache2-mod-fcgid, php5, php5-mysql|php5-mysqlnd, libphp-serialization-perl, libdate-manip-perl, libmime-lite-perl, libmime-tools-perl, mariadb-client|mysql-client, libwww-perl, libarchive-tar-perl, libarchive-zip-perl, libdevice-serialport-perl, libpcre3, ffmpeg | libav-tools, rsyslog | system-log-daemon, libmodule-load-perl, libsys-mmap-perl, libjson-any-perl, netpbm, libavdevice55, libjpeg8|libjpeg9|libjpeg62-turbo, zip, libnet-sftp-foreign-perl, libio-pty-perl, libexpect-perl, libvlccore8, libvlc5, libcurl4-gnutls-dev | libcurl4-nss-dev | libcurl4-openssl-dev, liburi-encode-perl, libgcrypt11|libgcrypt20, libpolkit-gobject-1-0, policykit-1
Recommends: mysql-server|mariadb-server
Description: Video camera security and surveillance solution
ZoneMinder is intended for use in single or multi-camera video security
applications, including commercial or home CCTV, theft prevention and child
or family member or home monitoring and other care scenarios. It
supports capture, analysis, recording, and monitoring of video data coming
from one or more video or network cameras attached to a Linux system.
ZoneMinder also support web and semi-automatic control of Pan/Tilt/Zoom
cameras using a variety of protocols. It is suitable for use as a home
video security system and for commercial or professional video security
and surveillance. It can also be integrated into a home automation system
via X.10 or other protocols.
Package: zoneminder-dbg
Priority: extra
Section: debug
Architecture: any
Depends: zoneminder (= ${binary:Version}), ${misc:Depends}
Description: Debugging symbols for zoneminder.
ZoneMinder is a video camera security and surveillance solution.
ZoneMinder is intended for use in single or multi-camera video security
applications, including commercial or home CCTV, theft prevention and child
or family member or home monitoring and other care scenarios. It
supports capture, analysis, recording, and monitoring of video data coming
from one or more video or network cameras attached to a Linux system.
ZoneMinder also support web and semi-automatic control of Pan/Tilt/Zoom
cameras using a variety of protocols. It is suitable for use as a home
video security system and for commercial or professional video security
and surveillance. It can also be integrated into a home automation system
via X.10 or other protocols.

22
distros/debian8/copyright Normal file
View File

@ -0,0 +1,22 @@
Copyright:
Copyright 2002 Philip Coombes <philip.coombes@zoneminder.com>
License:
This package is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public
License along with this package; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
On Debian GNU/Linux systems, the text of the GPL can be found in
/usr/share/common-licenses/GPL.

1
distros/debian8/docs Normal file
View File

@ -0,0 +1 @@
README.md

View File

@ -0,0 +1,15 @@
--- a/configure.ac
+++ b/configure.ac
@@ -437,10 +437,10 @@
PERL_SITE_LIB=`perl -V:installsitelib | sed -e "s/.*='\(.*\)';/\1/"`
PERL_LIB_PATH=`echo $PERL_SITE_LIB | sed -e "s|^$PERL_SITE_PREFIX||"`
EXTRA_PERL_LIB="use lib '$prefix$PERL_LIB_PATH'; # Include custom perl install path"
- PERL_MM_PARMS="PREFIX=$prefix"
+ PERL_MM_PARMS="\"PREFIX=$prefix INSTALLDIRS=vendor\""
else
EXTRA_PERL_LIB="# Include from system perl paths only"
- PERL_MM_PARMS=
+ PERL_MM_PARMS="\"INSTALLDIRS=vendor\""
fi
AC_SUBST(PERL_MM_PARMS)
AC_SUBST(EXTRA_PERL_LIB)

View File

@ -0,0 +1 @@
01_vendor-perl.diff

147
distros/debian8/rules Executable file
View File

@ -0,0 +1,147 @@
#!/usr/bin/make -f
# -*- makefile -*-
# Sample debian/rules that uses debhelper.
# This file was originally written by Joey Hess and Craig Small.
# As a special exception, when this file is copied by dh-make into a
# dh-make output file, you may use that output file without restriction.
# This special exception was added by Craig Small in version 0.37 of dh-make.
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
# These are used for cross-compiling and for saving the configure script
# from having to guess our platform (since we know it already)
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
CFLAGS = -Wall
CPPFLAGS = -D__STDC_CONSTANT_MACROS
CXXFLAGS = -DHAVE_LIBCRYPTO
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
DEBOPT = --enable-debug
CFLAGS += -g
CXXFLAGS += -g
else
DEBOPT =
endif
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
# These are used to get the most recent version of the original sources from github
UURL = $(shell git config --get remote.origin.url)
BRANCH = $(shell git rev-parse --abbrev-ref HEAD)
HEAD = $(shell git rev-parse HEAD)
PKD = $(abspath $(dir $(MAKEFILE_LIST)))
PKG = $(word 2,$(shell dpkg-parsechangelog -l$(PKD)/changelog | grep ^Source))
VER ?= $(shell dpkg-parsechangelog -l$(PKD)/changelog | perl -ne 'print $$1 if m{^Version:\s+(?:\d+:)?(\d.*)(?:\-\d+.*)};')
DTYPE =
TARBALL = ../$(PKG)_$(VER)$(DTYPE).orig.tar.xz
%:
dh $@ --with quilt,autoreconf,systemd
override_dh_auto_configure:
CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" dh_auto_configure -- \
--host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
--sysconfdir=/etc/zm --prefix=/usr --mandir=\$${prefix}/share/man \
--infodir=\$${prefix}/share/info --with-mysql=/usr \
--with-mariadb=/usr --with-webdir=/usr/share/zoneminder \
--with-ffmpeg=/usr --with-cgidir=/usr/lib/cgi-bin \
--with-webuser=www-data --with-webgroup=www-data \
--enable-crashtrace=no --enable-mmap=yes $(DEBOPT)
override_dh_clean:
# Add here commands to clean up after the build process.
[ ! -f Makefile ] || $(MAKE) distclean
dh_clean src/zm_config_defines.h
#
# Delete remaining auto-generated Makefile if Makefile.in exists
find $(CURDIR)/ -type f -name "Makefile" | while read file; do \
[ -f $$file.in ] && rm -f $$file; \
done || true
#
# Delete remaining auto-generated Makefile.in if Makefile.am exists
find $(CURDIR)/ -type f -name "Makefile.in" | while read filein; do \
fileam=`echo $$filein | sed 's/\(.*\)\.in/\1\.am/'`; \
[ -f $$fileam ] && rm -f $$filein; \
done || true
override_dh_install:
#
# NOTE: This is a short-term kludge; hopefully changes in the next
# upstream version will render this unnecessary.
rm -rf debian/zoneminder/usr/share/zoneminder/events
rm -rf debian/zoneminder/usr/share/zoneminder/images
rm -rf debian/zoneminder/usr/share/zoneminder/temp
dh_link var/cache/zoneminder/events usr/share/zoneminder/events
dh_link var/cache/zoneminder/images usr/share/zoneminder/images
dh_link var/cache/zoneminder/temp usr/share/zoneminder/temp
#
# This is a slightly lesser kludge; moving the cgi stuff to
# /usr/share/zoneminder/cgi-bin breaks one set of behavior,
# having it just in /usr/lib/cgi-bin breaks another bit of
# behavior.
#
dh_link usr/lib/cgi-bin usr/share/zoneminder/cgi-bin
dh_install --fail-missing
override_dh_fixperms:
dh_fixperms
chown root:root debian/zoneminder/etc/zm/zm.conf
override_dh_auto_test:
# do not run tests...
override_dh_systemd_start:
dh_systemd_start --restart-after-upgrade
.PHONY: override_dh_strip
override_dh_strip:
dh_strip --dbg-package=zoneminder-dbg
# Inspired by https://wiki.debian.org/onlyjob/get-orig-source
.PHONY: get-orig-source
get-orig-source: $(TARBALL) $(info I: $(PKG)_$(VER)$(DTYPE))
@
$(TARBALL):
$(if $(wildcard $(PKG)-$(VER)),$(error folder '$(PKG)-$(VER)' exists, aborting...))
@echo "# Cloning origin repository..."; \
if ! git clone $(UURL) $(PKG)-$(VER); then \
$(RM) -r $(PKG)-$(VER); \
echo "failed to clone repository, aborting..."; \
false; \
fi
@if [ $(BRANCH) != "master" ]; then \
cd $(PKG)-$(VER); \
echo "# Not on master branch, fetching origin branch '$(BRANCH)'..."; \
git fetch origin $(BRANCH):$(BRANCH) || false; \
echo "# Switching to branch '$(BRANCH)'..."; \
git checkout $(BRANCH) || false; \
fi
@echo "# Checking local source..."
@if [ $$(cd $(PKG)-$(VER) && git rev-parse HEAD) = $(HEAD) ]; then \
echo "even with origin, ok"; \
true; \
else \
echo "not even with origin, aborting..."; \
false; \
fi
@echo "# Setting times..."
@cd $(PKG)-$(VER) \
&& for F in $$(git ls-tree -r --name-only HEAD | sed -e "s/\s/\*/g"); do \
touch --no-dereference -d "$$(git log -1 --format="%ai" -- $$F)" "$$F"; \
done
@echo "# Cleaning-up..."
cd $(PKG)-$(VER) && $(RM) -r .git
@echo "# Packing file '$(TARBALL)'..."
@find -L "$(PKG)-$(VER)" -xdev -type f -print | sort \
| XZ_OPT="-6v" tar -caf "$(TARBALL)" -T- --owner=root --group=root --mode=a+rX \
&& $(RM) -r "$(PKG)-$(VER)"

View File

@ -0,0 +1 @@
3.0 (quilt)

View File

@ -0,0 +1,2 @@
unapply-patches
abort-on-upstream-changes

View File

@ -0,0 +1 @@
extend-diff-ignore = "(^|/)(config\.sub|config\.guess|Makefile|aclocal.m4|compile|config.h.in|configure|depcomp|install-sh|missing)$"

3
distros/debian8/watch Normal file
View File

@ -0,0 +1,3 @@
version=3
http://www.zoneminder.com/downloads.html \
.*/ZoneMinder-(.*).tar.gz

View File

@ -0,0 +1,6 @@
var/log/zm
var/lib/zm
var/cache/zoneminder/events
var/cache/zoneminder/images
var/cache/zoneminder/temp
usr/share/zoneminder/db

View File

@ -0,0 +1,36 @@
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: zoneminder
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Do nothing more than fixing a lintian error
# Description: This script is provided by the Zoneminder package
# Zomeminder init configuration has been switched to systemd
# This dummy script can be safely deleted; It does nothing
# more than fixing a lintian error when testing the package
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
;;
stop)
;;
status)
;;
restart|reload)
;;
force-reload)
;;
*)
echo "Usage: ${0:-} {start|stop|status|restart|reload|force-reload}" >&2
exit 1
;;
esac
exit 0

View File

@ -0,0 +1,22 @@
usr/bin
usr/lib/cgi-bin
usr/share/man
usr/share/perl5/ZoneMinder
usr/share/perl5/ZoneMinder.pm
usr/share/polkit-1/actions
usr/share/polkit-1/rules.d
usr/share/zoneminder/ajax
usr/share/zoneminder/css
usr/share/zoneminder/db
usr/share/zoneminder/graphics
usr/share/zoneminder/includes
usr/share/zoneminder/index.php
usr/share/zoneminder/js
usr/share/zoneminder/lang
usr/share/zoneminder/skins
usr/share/zoneminder/tools
usr/share/zoneminder/views
etc/zm
db/zm_create.sql usr/share/zoneminder/db
db/zm_update-*.sql usr/share/zoneminder/db
debian/apache.conf etc/zm

View File

@ -0,0 +1,4 @@
var/cache/zoneminder/events usr/share/zoneminder/events
var/cache/zoneminder/images usr/share/zoneminder/images
var/cache/zoneminder/temp usr/share/zoneminder/temp
usr/lib/cgi-bin usr/share/zoneminder/cgi-bin

View File

@ -0,0 +1,68 @@
#! /bin/sh
set -e
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
}
if [ "$1" = "configure" ]; then
if [ -e "/etc/init.d/mysql" ]; then
#
# Get mysql started if it isn't
#
if ! $(/etc/init.d/mysql status >/dev/null 2>&1); then
invoke-rc.d mysql start
fi
if $(/etc/init.d/mysql status >/dev/null 2>&1); then
mysqladmin --defaults-file=/etc/mysql/debian.cnf -f reload
# test if database if already present...
if ! $(echo quit | mysql --defaults-file=/etc/mysql/debian.cnf zm > /dev/null 2> /dev/null) ; then
cat /usr/share/zoneminder/db/zm_create.sql | mysql --defaults-file=/etc/mysql/debian.cnf
echo 'grant lock tables, alter,select,insert,update,delete on zm.* to 'zmuser'@localhost identified by "zmpass";' | mysql --defaults-file=/etc/mysql/debian.cnf mysql
fi
deb-systemd-invoke stop zoneminder.service || true
zmupdate.pl --nointeractive
else
echo 'NOTE: mysql not running, please start mysql and run dpkg-reconfigure zoneminder when it is running.'
fi
else
echo 'mysql not found, assuming remote server.'
fi
chown www-data:www-data /var/log/zm
chown www-data:www-data /var/lib/zm/
if [ -z "$2" ]; then
chown www-data:www-data -R /var/cache/zoneminder
fi
fi
# Ensure zoneminder is stopped...
deb-systemd-invoke stop zoneminder.service || exit $?
if [ "$1" = "configure" ]; then
if [ -z "$2" ]; then
chown www-data:www-data /var/log/zm
chown www-data:www-data /var/lib/zm/
chown www-data:www-data -R /var/cache/zoneminder
else
chown www-data:www-data /var/log/zm
zmupdate.pl
fi
apache_install $1
a2enmod cgi >/dev/null 2>&1
if [ -f /etc/init.d/apache2 ] ; then
invoke-rc.d apache2 reload 3>/dev/null || true
fi
fi
#DEBHELPER#

View File

@ -0,0 +1,32 @@
#! /bin/sh
set -e
apache_remove() {
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 disconf zoneminder
elif [ "$COMMON_STATE" = "installed" ] || [ "$COMMON_STATE" = "unpacked" ] ; then
rm -f /etc/apache2/conf.d/zoneminder.conf
fi
rm -f /etc/apache2/conf-available/zoneminder.conf
}
if [ "$1" = "remove" ] || [ "$1" = "purge" ]; then
apache_remove $1
if [ -f /etc/init.d/apache2 ] ; then
invoke-rc.d apache2 reload 3>/dev/null || true
fi
fi
if [ "$1" = "purge" ]; then
if [ -e "/etc/init.d/mysql" ]; then
echo 'delete from user where User="zmuser";' | mysql --defaults-file=/etc/mysql/debian.cnf mysql
echo 'delete from db where User="zmuser";' | mysql --defaults-file=/etc/mysql/debian.cnf mysql
mysqladmin --defaults-file=/etc/mysql/debian.cnf -f drop zm
else
echo 'mysql not found, assuming remote server.'
fi
fi
#DEBHELPER#

View File

@ -0,0 +1,32 @@
#!/bin/sh
set -e
abort=false
if [ -L /usr/share/zoneminder/events ]; then
l=$(readlink /usr/share/zoneminder/events)
if [ "$l" != "/var/cache/zoneminder/events" ]; then
abort=true
fi
fi
if [ -L /usr/share/zoneminder/images ]; then
l=$(readlink /usr/share/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
/usr/share/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
#DEBHELPER#
exit 0

View File

@ -0,0 +1,18 @@
# ZoneMinder systemd unit file
# This file is intended to work with debian distributions
[Unit]
Description=ZoneMinder CCTV recording and security system
After=network.target mysql.service apache2.service
Requires=mysql.service apache2.service
[Service]
User=www-data
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=/var/run/zm/zm.pid
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1 @@
d /var/run/zm 0755 www-data www-data

View File

@ -20,8 +20,6 @@
# This module contains the implementation of the Trendnet TV-IP672PI IP camera control
# protocol. Also works or TV-IP862IC
#
#
#
# For Zoneminder 1.26+
#
# Under control capability:
@ -69,9 +67,10 @@ our @ISA = qw(ZoneMinder::Control);
#
# Finally, the username is the username you'd like to authenticate as.
#
our $REALM = "TV-IP862IC";
our $USERNAME = "admin";
our $REALM = 'TV-IP862IC';
our $USERNAME = 'admin';
our $PASSWORD = '';
our $ADDRESS = '';
# ==========================================================================
#
@ -82,8 +81,6 @@ our $USERNAME = "admin";
use ZoneMinder::Logger qw(:all);
use ZoneMinder::Config qw(:all);
use Time::HiRes qw( usleep );
sub new
{
my $class = shift;
@ -112,13 +109,29 @@ sub AUTOLOAD
sub open
{
my $self = shift;
$self->loadMonitor();
my ( $protocol, $username, $password, $address ) = $self->{Monitor}->{ControlAddress} =~ /^(https?:\/\/)?([^:]+):([^\/@]+)@(.*)$/;
if ( $username ) {
$USERNAME = $username;
$PASSWORD = $password;
$ADDRESS = $address;
} else {
Error( "Failed to parse auth from address");
$ADDRESS = $self->{Monitor}->{ControlAddress};
}
if ( ! $ADDRESS =~ /:/ ) {
Error( "You generally need to also specify the port. I will append :80" );
$ADDRESS .= ':80';
}
use LWP::UserAgent;
$self->{ua} = LWP::UserAgent->new;
$self->{ua}->agent( "ZoneMinder Control Agent/".$ZoneMinder::Base::ZM_VERSION );
$self->{state} = 'open';
# credentials: ("ip:port" (no prefix!), realm (string), username (string), password (string)
Debug ( "sendCmd credentials control address:'".$ADDRESS."' realm:'" . $REALM . "' username:'" . $USERNAME . "' password:'".$PASSWORD."'");
$self->{ua}->credentials($ADDRESS,$REALM,$USERNAME,$PASSWORD);
}
sub close
@ -146,18 +159,10 @@ sub sendCmd
my $result = undef;
Debug ( $cmd, "Tx" );
my $url = "http://".$ADDRESS."/cgi/ptdc.cgi?command=".$cmd;
my $req = HTTP::Request->new( GET=>$url );
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new( GET=>"http://".$self->{Monitor}->{ControlAddress}."/cgi/ptdc.cgi?command=".$cmd );
# credentials: ("ip:port" (no prefix!), realm (string), username (string), password (string)
$self->{ua}->credentials($self->{Monitor}->{ControlAddress},$REALM,$USERNAME,$self->{Monitor}->{ControlDevice});
Debug ( "sendCmd credentials control address:'".$self->{Monitor}->{ControlAddress}."' realm:'" . $REALM . "' username:'" . $USERNAME . "' password:'".$self->{Monitor}->{ControlDevice}."'");
Debug ("sendCmd command: " . $cmd);
Debug ("sendCmd command: " . $url );
my $res = $self->{ua}->request($req);
@ -165,10 +170,13 @@ sub sendCmd
$result = !undef;
} else {
if ( $res->status_line() eq '401 Unauthorized' ) {
Error( "Error check failed, trying again: USERNAME: $USERNAME realm: $REALM password: " . $self->{Monitor}->{ControlDevice} );
Error( "Error check failed, trying again: USERNAME: $USERNAME realm: $REALM password: " . $PASSWORD );
Error("Content was " . $res->content() );
my $res = $self->{ua}->request($req);
if ( $res->is_success ) {
$result = !undef;
} else {
Error("Content was " . $res->content() );
}
}
if ( ! $result ) {
@ -194,7 +202,6 @@ sub sendCmdPost
my $result = undef;
if ($url eq undef)
{
Error ("url passed to sendCmdPost is undefined.");
@ -203,16 +210,11 @@ sub sendCmdPost
Debug ("sendCmdPost url: " . $url . " cmd: " . $cmd);
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new(POST => "http://".$self->{Monitor}->{ControlAddress}.$url);
my $req = HTTP::Request->new(POST => "http://".$ADDRESS.$url);
$req->content_type('application/x-www-form-urlencoded');
$req->content($cmd);
$self->{ua}->credentials($self->{Monitor}->{ControlAddress},$REALM,$USERNAME,$self->{Monitor}->{ControlDevice});
Debug ( "sendCmdPost credentials control address:'".$self->{Monitor}->{ControlAddress}."' realm:'" . $REALM . "' username:'" . $USERNAME . "'
password:'".$self->{Monitor}->{ControlDevice}."'");
Debug ( "sendCmdPost credentials control address:'".$ADDRESS."' realm:'" . $REALM . "' username:'" . $USERNAME . "' password:'".$PASSWORD."'");
my $res = $self->{ua}->request($req);
@ -222,12 +224,11 @@ password:'".$self->{Monitor}->{ControlDevice}."'");
}
else
{
Error( "Error check failed: USERNAME: $USERNAME realm: $REALM password: " . $self->{Monitor}->{ControlDevice} );
Error( "Error check failed: '".$res->status_line()."' cmd:'".$cmd."'" );
Error( "sendCmdPost Error check failed: '".$res->status_line()."' cmd:'".$cmd."'" );
if ( $res->status_line() eq '401 Unauthorized' ) {
Error( "Error check failed: USERNAME: $USERNAME realm: $REALM password: " . $self->{Monitor}->{ControlDevice} );
Error( "sendCmdPost Error check failed: USERNAME: $USERNAME realm: $REALM password: " . $PASSWORD );
} else {
Error( "Error check failed: USERNAME: $USERNAME realm: $REALM password: " . $self->{Monitor}->{ControlDevice} );
Error( "sendCmdPost Error check failed: USERNAME: $USERNAME realm: $REALM password: " . $PASSWORD );
} # endif
}

View File

@ -397,6 +397,7 @@ int RtspThread::run()
uint32_t rtpClock = 0;
std::string trackUrl = mUrl;
std::string controlUrl;
_AVCODECID codecId;
@ -412,7 +413,7 @@ int RtspThread::run()
#endif
{
// Check if control Url is absolute or relative
std::string controlUrl = mediaDesc->getControlUrl();
controlUrl = mediaDesc->getControlUrl();
if (std::equal(trackUrl.begin(), trackUrl.end(), controlUrl.begin()))
{
trackUrl = controlUrl;
@ -556,27 +557,51 @@ int RtspThread::run()
{
if ( ( lines[i].size() > 9 ) && ( lines[i].substr( 0, 9 ) == "RTP-Info:" ) )
rtpInfo = trimSpaces( lines[i].substr( 9 ) );
// Check for a timeout again. Some rtsp devices don't send a timeout until after the PLAY command is sent
if ( ( lines[i].size() > 8 ) && ( lines[i].substr( 0, 8 ) == "Session:" ) && ( timeout == 0 ) )
{
StringVector sessionLine = split( lines[i].substr(9), ";" );
if ( sessionLine.size() == 2 )
sscanf( trimSpaces( sessionLine[1] ).c_str(), "timeout=%d", &timeout );
if ( timeout > 0 )
Debug( 2, "Got timeout %d secs from PLAY command response", timeout );
}
}
if ( rtpInfo.empty() )
Fatal( "Unable to get RTP Info identifier from response '%s'", response.c_str() );
Debug( 2, "Got RTP Info %s", rtpInfo.c_str() );
int seq = 0;
unsigned long rtpTime = 0;
parts = split( rtpInfo.c_str(), ";" );
for ( size_t i = 0; i < parts.size(); i++ )
StringVector streams;
if ( rtpInfo.empty() )
{
if ( startsWith( parts[i], "seq=" ) )
Debug( 1, "RTP Info Empty. Starting values for Sequence and Rtptime shall be zero.");
}
else
{
Debug( 2, "Got RTP Info %s", rtpInfo.c_str() );
// More than one stream can be included in the RTP Info
streams = split( rtpInfo.c_str(), "," );
for ( size_t i = 0; i < streams.size(); i++ )
{
StringVector subparts = split( parts[i], "=" );
seq = strtol( subparts[1].c_str(), NULL, 10 );
}
else if ( startsWith( parts[i], "rtptime=" ) )
{
StringVector subparts = split( parts[i], "=" );
rtpTime = strtol( subparts[1].c_str(), NULL, 10 );
// We want the stream that matches the trackUrl we are using
if ( streams[i].find(controlUrl.c_str()) != std::string::npos )
{
// Parse the sequence and rtptime values
parts = split( streams[i].c_str(), ";" );
for ( size_t j = 0; j < parts.size(); j++ )
{
if ( startsWith( parts[j], "seq=" ) )
{
StringVector subparts = split( parts[j], "=" );
seq = strtol( subparts[1].c_str(), NULL, 10 );
}
else if ( startsWith( parts[j], "rtptime=" ) )
{
StringVector subparts = split( parts[j], "=" );
rtpTime = strtol( subparts[1].c_str(), NULL, 10 );
}
}
break;
}
}
}

View File

@ -58,7 +58,8 @@ SessionDescriptor::DynamicPayloadDesc SessionDescriptor::smDynamicPayloads[] = {
{ "MP4V-ES", AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_MPEG4 },
{ "mpeg4-generic", AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AAC },
{ "H264", AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264 },
{ "AMR", AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AMR_NB }
{ "AMR", AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AMR_NB },
{ "vnd.onvif.metadata", AVMEDIA_TYPE_DATA, AV_CODEC_ID_NONE }
};
#else
SessionDescriptor::StaticPayloadDesc SessionDescriptor::smStaticPayloads[] = {
@ -95,7 +96,8 @@ SessionDescriptor::DynamicPayloadDesc SessionDescriptor::smDynamicPayloads[] = {
{ "MP4V-ES", CODEC_TYPE_VIDEO, CODEC_ID_MPEG4 },
{ "mpeg4-generic", CODEC_TYPE_AUDIO, CODEC_ID_AAC },
{ "H264", CODEC_TYPE_VIDEO, CODEC_ID_H264 },
{ "AMR", CODEC_TYPE_AUDIO, CODEC_ID_AMR_NB }
{ "AMR", CODEC_TYPE_AUDIO, CODEC_ID_AMR_NB },
{ "vnd.onvif.metadata", CODEC_TYPE_DATA, CODEC_ID_NONE }
};
#endif
@ -326,7 +328,7 @@ SessionDescriptor::SessionDescriptor( const std::string &url, const std::string
if ( tokens.size() < 4 )
throw Exception( "Can't parse SDP media description '"+line+"'" );
std::string mediaType = tokens[0];
if ( mediaType != "audio" && mediaType != "video" )
if ( mediaType != "audio" && mediaType != "video" && mediaType != "application" )
throw Exception( "Unsupported media type '"+mediaType+"' in SDP media attribute '"+line+"'" );
StringVector portTokens = split( tokens[1], "/" );
int mediaPort = atoi(portTokens[0].c_str());
@ -383,11 +385,15 @@ AVFormatContext *SessionDescriptor::generateFormatContext() const
stream->codec->codec_type = AVMEDIA_TYPE_VIDEO;
else if ( mediaDesc->getType() == "audio" )
stream->codec->codec_type = AVMEDIA_TYPE_AUDIO;
else if ( mediaDesc->getType() == "application" )
stream->codec->codec_type = AVMEDIA_TYPE_DATA;
#else
if ( mediaDesc->getType() == "video" )
stream->codec->codec_type = CODEC_TYPE_VIDEO;
else if ( mediaDesc->getType() == "audio" )
stream->codec->codec_type = CODEC_TYPE_AUDIO;
else if ( mediaDesc->getType() == "application" )
stream->codec->codec_type = CODEC_TYPE_DATA;
#endif
if ( mediaDesc->getPayloadType() < PAYLOAD_TYPE_DYNAMIC )

View File

@ -32,7 +32,11 @@ void Usage()
fprintf( stderr, "zmc -d <device_path> or -r <proto> -H <host> -P <port> -p <path> or -f <file_path> or -m <monitor_id>\n" );
fprintf( stderr, "Options:\n" );
#if defined(BSD)
fprintf( stderr, " -d, --device <device_path> : For local cameras, device to access. E.g /dev/bktr0 etc\n" );
#else
fprintf( stderr, " -d, --device <device_path> : For local cameras, device to access. E.g /dev/video0 etc\n" );
#endif
fprintf( stderr, " -r <proto> -H <host> -P <port> -p <path> : For remote cameras\n" );
fprintf( stderr, " -f, --file <file_path> : For local images, jpg file to access.\n" );
fprintf( stderr, " -m, --monitor <monitor_id> : For sources associated with a single monitor\n" );

View File

@ -141,6 +141,12 @@ bool ValidateAccess( User *user, int mon_id, int function )
int main( int argc, char *argv[] )
{
if ( access(ZM_CONFIG, R_OK) != 0 )
{
fprintf( stderr, "Can't open %s: %s\n", ZM_CONFIG, strerror(errno) );
exit( -1 );
}
self = argv[0];
srand( getpid() * time( 0 ) );

View File

@ -247,20 +247,20 @@ function outputVideoStream( $id, $src, $width, $height, $format, $title="" )
if ( isWindows() )
{
?>
<object id="<?= $id ?>" width="<?= validNum($width) ?>" height="<?= validNum($height) ?>"
<object id="<?php echo $id ?>" width="<?php echo validNum($width) ?>" height="<?php echo validNum($height) ?>"
classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,0,02,902"
standby="Loading Microsoft Windows Media Player components..."
type="<?= $mimeType ?>">
<param name="FileName" value="<?= $src ?>"/>
type="<?php echo $mimeType ?>">
<param name="FileName" value="<?php echo $src ?>"/>
<param name="autoStart" value="1"/>
<param name="showControls" value="0"/>
<embed type="<?= $mimeType ?>"
<embed type="<?php echo $mimeType ?>"
pluginspage="http://www.microsoft.com/Windows/MediaPlayer/"
src="<?= $src ?>"
name="<?= validHtmlStr($title) ?>"
width="<?= validNum($width) ?>"
height="<?= validInt($height) ?>"
src="<?php echo $src ?>"
name="<?php echo validHtmlStr($title) ?>"
width="<?php echo validNum($width) ?>"
height="<?php echo validInt($height) ?>"
autostart="1"
showcontrols="0">
</embed>
@ -273,19 +273,19 @@ showcontrols="0">
case "video/quicktime" :
{
?>
<object id="<?= $id ?>" width="<?= $width ?>" height="<?= $height ?>"
<object id="<?php echo $id ?>" width="<?php echo $width ?>" height="<?php echo $height ?>"
classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
codebase="http://www.apple.com/qtactivex/qtplugin.cab"
type="<?= $mimeType ?>">
<param name="src" value="<?= $src ?>"/>
type="<?php echo $mimeType ?>">
<param name="src" value="<?php echo $src ?>"/>
<param name="autoplay" VALUE="true"/>
<param name="controller" VALUE="false"/>
<embed type="<?= $mimeType ?>"
src="<?= $src ?>"
<embed type="<?php echo $mimeType ?>"
src="<?php echo $src ?>"
pluginspage="http://www.apple.com/quicktime/download/"
name="<?= validHtmlStr($title) ?>"
width="<?= validInt($width) ?>"
height="<?= validInt($height) ?>"
name="<?php echo validHtmlStr($title) ?>"
width="<?php echo validInt($width) ?>"
height="<?php echo validInt($height) ?>"
autoplay="true"
controller="true">
</embed>
@ -297,19 +297,19 @@ controller="true">
case "application/x-shockwave-flash" :
{
?>
<object id="<?= $id ?>" width="<?= $width ?>" height="<?= $height ?>"
<object id="<?php echo $id ?>" width="<?php echo $width ?>" height="<?php echo $height ?>"
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
type="<?= $mimeType ?>">
<param name="movie" value="<?= $src ?>"/>
type="<?php echo $mimeType ?>">
<param name="movie" value="<?php echo $src ?>"/>
<param name="quality" value="high"/>
<param name="bgcolor" value="#ffffff"/>
<embed type="<?= $mimeType ?>"
<embed type="<?php echo $mimeType ?>"
pluginspage="http://www.macromedia.com/go/getflashplayer"
src="<?= $src ?>"
name="<?= validHtmlStr($title) ?>"
width="<?= validInt($width) ?>"
height="<?= validInt($height) ?>"
src="<?php echo $src ?>"
name="<?php echo validHtmlStr($title) ?>"
width="<?php echo validInt($width) ?>"
height="<?php echo validInt($height) ?>"
quality="high"
bgcolor="#ffffff">
</embed>
@ -323,11 +323,11 @@ bgcolor="#ffffff">
if ( !$objectTag )
{
?>
<embed<?= isset($mimeType)?(' type="'.$mimeType.'"'):"" ?>
src="<?= $src ?>"
name="<?= validHtmlStr($title) ?>"
width="<?= validInt($width) ?>"
height="<?= validInt($height) ?>"
<embed<?php echo isset($mimeType)?(' type="'.$mimeType.'"'):"" ?>
src="<?php echo $src ?>"
name="<?php echo validHtmlStr($title) ?>"
width="<?php echo validInt($width) ?>"
height="<?php echo validInt($height) ?>"
autostart="1"
autoplay="1"
showcontrols="0"
@ -341,11 +341,11 @@ function outputImageStream( $id, $src, $width, $height, $title="" )
{
if ( canStreamIframe() ) {
?>
<iframe id="<?= $id ?>" src="<?= $src ?>" alt="<?= validHtmlStr($title) ?>" width="<?= $width ?>" height="<?= $height ?>"/>
<iframe id="<?php echo $id ?>" src="<?php echo $src ?>" alt="<?php echo validHtmlStr($title) ?>" width="<?php echo $width ?>" height="<?php echo $height ?>"/>
<?php
} else {
?>
<img id="<?= $id ?>" src="<?= $src ?>" alt="<?= validHtmlStr($title) ?>" width="<?= $width ?>" height="<?= $height ?>"/>
<img id="<?php echo $id ?>" src="<?php echo $src ?>" alt="<?php echo validHtmlStr($title) ?>" width="<?php echo $width ?>" height="<?php echo $height ?>"/>
<?php
}
}
@ -353,9 +353,9 @@ function outputImageStream( $id, $src, $width, $height, $title="" )
function outputControlStream( $src, $width, $height, $monitor, $scale, $target )
{
?>
<form name="ctrlForm" method="post" action="<?= $_SERVER['PHP_SELF'] ?>" target="<?= $target ?>">
<form name="ctrlForm" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" target="<?php echo $target ?>">
<input type="hidden" name="view" value="blank">
<input type="hidden" name="mid" value="<?= $monitor['Id'] ?>">
<input type="hidden" name="mid" value="<?php echo $monitor['Id'] ?>">
<input type="hidden" name="action" value="control">
<?php
if ( $monitor['CanMoveMap'] )
@ -377,8 +377,8 @@ function outputControlStream( $src, $width, $height, $monitor, $scale, $target )
<?php
}
?>
<input type="hidden" name="scale" value="<?= $scale ?>">
<input type="image" src="<?= $src ?>" width="<?= $width ?>" height="<?= $height ?>">
<input type="hidden" name="scale" value="<?php echo $scale ?>">
<input type="image" src="<?php echo $src ?>" width="<?php echo $width ?>" height="<?php echo $height ?>">
</form>
<?php
}
@ -386,14 +386,14 @@ function outputControlStream( $src, $width, $height, $monitor, $scale, $target )
function outputHelperStream( $id, $src, $width, $height, $title="" )
{
?>
<applet id="<?= $id ?>" code="com.charliemouse.cambozola.Viewer"
archive="<?= ZM_PATH_CAMBOZOLA ?>"
<applet id="<?php echo $id ?>" code="com.charliemouse.cambozola.Viewer"
archive="<?php echo ZM_PATH_CAMBOZOLA ?>"
align="middle"
width="<?= $width ?>"
height="<?= $height ?>"
title="<?= $title ?>">
width="<?php echo $width ?>"
height="<?php echo $height ?>"
title="<?php echo $title ?>">
<param name="accessories" value="none"/>
<param name="url" value="<?= $src ?>"/>
<param name="url" value="<?php echo $src ?>"/>
</applet>
<?php
}
@ -401,16 +401,16 @@ title="<?= $title ?>">
function outputImageStill( $id, $src, $width, $height, $title="" )
{
?>
<img id="<?= $id ?>" src="<?= $src ?>" alt="<?= $title ?>" width="<?= $width ?>" height="<?= $height ?>"/>
<img id="<?php echo $id ?>" src="<?php echo $src ?>" alt="<?php echo $title ?>" width="<?php echo $width ?>" height="<?php echo $height ?>"/>
<?php
}
function outputControlStill( $src, $width, $height, $monitor, $scale, $target )
{
?>
<form name="ctrlForm" method="post" action="<?= $_SERVER['PHP_SELF'] ?>" target="<?= $target ?>">
<form name="ctrlForm" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>" target="<?php echo $target ?>">
<input type="hidden" name="view" value="blank">
<input type="hidden" name="mid" value="<?= $monitor['Id'] ?>">
<input type="hidden" name="mid" value="<?php echo $monitor['Id'] ?>">
<input type="hidden" name="action" value="control">
<?php
if ( $monitor['CanMoveMap'] )
@ -432,8 +432,8 @@ function outputControlStill( $src, $width, $height, $monitor, $scale, $target )
<?php
}
?>
<input type="hidden" name="scale" value="<?= $scale ?>">
<input type="image" src="<?= $src ?>" width="<?= $width ?>" height="<?= $height ?>">
<input type="hidden" name="scale" value="<?php echo $scale ?>">
<input type="image" src="<?php echo $src ?>" width="<?php echo $width ?>" height="<?php echo $height ?>">
</form>
<?php
}
@ -639,12 +639,12 @@ function buildSelect( $name, $contents, $behaviours=false )
}
}
?>
<select name="<?= $name ?>" id="<?= $name ?>"<?= $behaviourText ?>>
<select name="<?php echo $name ?>" id="<?php echo $name ?>"<?php echo $behaviourText ?>>
<?php
foreach ( $contents as $contentValue => $contentText )
{
?>
<option value="<?= $contentValue ?>"<?php if ( $value == $contentValue ) { ?> selected="selected"<?php } ?>><?= validHtmlStr($contentText) ?></option>
<option value="<?php echo $contentValue ?>"<?php if ( $value == $contentValue ) { ?> selected="selected"<?php } ?>><?php echo validHtmlStr($contentText) ?></option>
<?php
}
?>
@ -1645,7 +1645,7 @@ function sidField()
{
list( $sessname, $sessid ) = explode( "=", SID );
?>
<input type="hidden" name="<?= $sessname ?>" value="<?= $sessid ?>"/>
<input type="hidden" name="<?php echo $sessname ?>" value="<?php echo $sessid ?>"/>
<?php
}
}

View File

@ -63,6 +63,13 @@ elseif ( isset($_COOKIE['zmSkin']) )
else
$skin = "classic";
if ( isset($_GET['css']) )
$css = $_GET['css'];
elseif ( isset($_COOKIE['zmCSS']) )
$css = $_COOKIE['zmCSS'];
else
$css = "classic";
define( "ZM_BASE_PATH", dirname( $_SERVER['REQUEST_URI'] ) );
define( "ZM_SKIN_PATH", "skins/$skin" );
@ -82,6 +89,11 @@ if ( !isset($_SESSION['skin']) || isset($_REQUEST['skin']) )
setcookie( "zmSkin", $skin, time()+3600*24*30*12*10 );
}
if ( !isset($_SESSION['css']) || isset($_REQUEST['css']) ) {
$_SESSION['css'] = $css;
setcookie( "zmCSS", $css, time()+3600*24*30*12*10 );
}
require_once( 'includes/config.php' );
require_once( 'includes/logger.php' );

View File

@ -614,6 +614,7 @@ $SLANG = array(
'SignalCheckColour' => 'Signal Check Colour',
'Size' => 'Size',
'SkinDescription' => 'Change the default skin for this computer',
'CSSDescription' => 'Change the default css for this computer',
'Sleep' => 'Sleep',
'SortAsc' => 'Asc',
'SortBy' => 'Sort by',

View File

@ -15,8 +15,13 @@
//Suite 330, Boston, MA 02111-1307, USA. //
// ZoneMinder estonian Translation by Seston seston@gmail.com
// Kes viitsiks aidata tõlkida abitekste ja üldse kõike seda.Üksi on kuidagi igav ettevõtmine.
// Notes for Translators
// Who would care assistance to help to translate texts, and all this at all. Alone is somehow boring business....
//Kes viitsiks aidata tõlkida abitekste ja üldse kõike seda.Üksi on kuidagi igav ettevõtmine....
// ZoneMinder Estonian Translation by Hannes hanzese@gmail.com
// I bother because zoneminder is cool..... Mina viitsin, sest ZoneMinder on lahe.....
//Notes for Translators
// 0. Get some credit, put your name in the line above (optional)
// 1. When composing the language tokens in your language you should try and keep to roughly the
// same length text if possible. Abbreviate where necessary as spacing is quite close in a number of places.
@ -46,7 +51,7 @@
// do this by default, uncomment this if required.
//
// Example
header( "Content-Type: text/html; charset=UTF-8" );
header( "Content-Type: text/html; charset=utf-8' );
// You may need to change your locale here if your default one is incorrect for the
// language described in this file, or if you have multiple languages supported.
@ -67,72 +72,71 @@ header( "Content-Type: text/html; charset=UTF-8" );
// Simple String Replacements
$SLANG = array(
'24BitColour' => '24 bit colour',
'32BitColour' => '32 bit colour', // Added - 2011-06-15
'8BitGrey' => '8 bit greyscale',
'24BitColour' => '24 bit värvid',
'32BitColour' => '32 bit värvid', // Added - 2011-06-15
'8BitGrey' => '8 bit mustvalge',
'Action' => 'Action',
'Actual' => 'Actual',
'AddNewControl' => 'Add New Control',
'Actual' => 'Aktuaalne',
'AddNewControl' => 'Lisa uus Kontroll',
'AddNewMonitor' => 'Lisa uus Monitor',
'AddNewUser' => 'Lisa uus kasutaja',
'AddNewZone' => 'Lisa uus tsoon',
'AddNewUser' => 'Lisa uus Kasutaja',
'AddNewZone' => 'Lisa uus Tsoon',
'Alarm' => 'Alarm',
'AlarmBrFrames' => 'Alarmi<br/>kaadrid',
'AlarmFrame' => 'Alarmi kaader',
'AlarmFrameCount' => 'Alarm Frame Count',
'AlarmLimits' => 'Alarm Limits',
'AlarmMaximumFPS' => 'Alarm Maximum FPS',
'AlarmFrameCount' => 'Alarmi kaadri hulk',
'AlarmLimits' => 'Alarmi limiidid',
'AlarmMaximumFPS' => 'Alarmi Maksimaalne FPS',
'AlarmPx' => 'Alarm Px',
'AlarmRGBUnset' => 'You must set an alarm RGB colour',
'AlarmScore' => 'Alarme Score',
'AlarmRGBUnset' => 'Sa pead panema alarmi RGB värvi',
'Alert' => 'Hoiatus',
'All' => 'All',
'Apply' => 'Apply',
'ApplyingStateChange' => 'Applying State Change',
'ArchArchived' => 'Archived Only',
'ArchUnarchived' => 'Unarchived Only',
'Archive' => 'Archive',
'ArchArchived' => 'Arhiveeritud Ainult',
'ArchUnarchived' => 'Arhiveerimatta Ainult',
'Archive' => 'Arhiiv',
'Archived' => 'Arhiveeritud',
'Area' => 'Ala',
'AreaUnits' => 'Ala (px/%)',
'AttrAlarmFrames' => 'Alarmi kaadrid',
'AttrArchiveStatus' => 'Archive Status',
'AttrAvgScore' => 'Avg. Score',
'AttrCause' => 'Cause',
'AttrArchiveStatus' => 'Arhiivi Staatus',
'AttrAvgScore' => 'Keskm. Skoor',
'AttrCause' => 'Põhjus',
'AttrDate' => 'Kp.',
'AttrDateTime' => 'Kp/Kellaaeg',
'AttrDiskBlocks' => 'Disk Blocks',
'AttrDiskPercent' => 'Disk Percent',
'AttrDiskBlocks' => 'Ketta Blokk',
'AttrDiskPercent' => 'Ketta Protsent',
'AttrDuration' => 'Kestvus',
'AttrFrames' => 'Kaadrid',
'AttrId' => 'Id',
'AttrMaxScore' => 'Max. Score',
'AttrMonitorId' => 'Monitor Id',
'AttrMaxScore' => 'Maks. Skoor',
'AttrMonitorId' => 'Monitori Id',
'AttrMonitorName' => 'Monitori Nimi',
'AttrName' => 'Nimi',
'AttrNotes' => 'Notes',
'AttrSystemLoad' => 'System Load',
'AttrNotes' => 'Märkmed',
'AttrSystemLoad' => 'Süsteemi Koormus',
'AttrTime' => 'Kellaaeg',
'AttrTotalScore' => 'Total Score',
'AttrTotalScore' => 'Skoor Kokku',
'AttrWeekday' => 'Tööpäevad',
'Auto' => 'Auto',
'AutoStopTimeout' => 'Auto Stop Timeout',
'AutoStopTimeout' => 'Auto Stop Ajalimiit',
'Available' => 'Saadaval',
'AvgBrScore' => 'Avg.<br/>Score',
'AvgBrScore' => 'Keskm.<br/>Skoor',
'Background' => 'Taust',
'BackgroundFilter' => 'Käivita filter taustal',
'BadAlarmFrameCount' => 'Alarm frame count must be an integer of one or more',
'BadAlarmMaxFPS' => 'Alarm Maximum FPS must be a positive integer or floating point value',
'BadChannel' => 'Channel must be set to an integer of zero or more',
'BadColours' => 'Target colour must be set to a valid value', // Added - 2011-06-15
'BadDevice' => 'Device must be set to a valid value',
'BadFPSReportInterval' => 'FPS report interval buffer count must be an integer of 0 or more',
'BadFormat' => 'Format must be set to a valid value',
'BadFrameSkip' => 'Frame skip count must be an integer of zero or more',
'BadMotionFrameSkip' => 'Motion Frame skip count must be an integer of zero or more',
'BadHeight' => 'Height must be set to a valid value',
'BadHost' => 'Host must be set to a valid ip address or hostname, do not include http://',
'BadImageBufferCount' => 'Image buffer size must be an integer of 10 or more',
'BadAlarmFrameCount' => 'Alarmi kaadri hulga ühik peab olema integer. Kas üks või rohkem',
'BadAlarmMaxFPS' => 'Alarmi maksimaalne FPS peab olema positiivne integer või floating point väärtus',
'BadChannel' => 'Kanal peab olema integer, null või rohkem',
'BadColours' => 'Sihtmärgi värv peab olema pandud õige väärtus', // Added - 2011-06-15
'BadDevice' => 'Seadmel peab olema õige väärtus',
'BadFPSReportInterval' => 'FPS raporteerimise intervall puhvri hulk peab olema integer, null või rohkem',
'BadFormat' => 'Formaadiks peab olema pandud õige väärtus',
'BadFrameSkip' => 'Kaadri vahelejätmise hulk peab olema integer, null või rohkem',
'BadMotionFrameSkip' => 'Liikumise kaadri vahelejätmise hulk peab olema integer, null või rohkem',
'BadHeight' => 'Kõrguseks peab olema valitud õige väärtus',
'BadHost' => 'Host ipeab olema õige. Ip aadress või hostinimi, ei tohi sisaldada http://',
'BadImageBufferCount' => 'Pildi puhvri suurus peab olema integer, 10 või rohkem',
'BadLabelX' => 'Label X co-ordinate must be set to an integer of zero or more',
'BadLabelY' => 'Label Y co-ordinate must be set to an integer of zero or more',
'BadMaxFPS' => 'Maximum FPS must be a positive integer or floating point value',
@ -150,12 +154,12 @@ $SLANG = array(
'BadWebColour' => 'Web colour must be a valid web colour string',
'BadWidth' => 'Width must be set to a valid value',
'Bandwidth' => 'Ribalaius',
'BandwidthHead' => 'Bandwidth', // This is the end of the bandwidth status on the top of the console, different in many language due to phrasing
'BandwidthHead' => 'Ribalaius', // This is the end of the bandwidth status on the top of the console, different in many language due to phrasing
'BlobPx' => 'Blob Px',
'BlobSizes' => 'Blob Sizes',
'Blobs' => 'Blobs',
'Brightness' => 'Heledus',
'Buffers' => 'Buffer',
'Buffers' => 'Puhver',
'CanAutoFocus' => 'Can Auto Focus',
'CanAutoGain' => 'Can Auto Gain',
'CanAutoIris' => 'Can Auto Iris',
@ -209,10 +213,10 @@ $SLANG = array(
'ChoosePreset' => 'Choose Preset',
'Clear' => 'Clear', // Added - 2011-06-16
'Close' => 'Sule',
'Colour' => 'Colour',
'Command' => 'Command',
'Component' => 'Component', // Added - 2011-06-16
'Config' => 'Config',
'Colour' => 'Värv',
'Command' => 'Käsk',
'Component' => 'Komponent', // Added - 2011-06-16
'Config' => 'Seadistus',
'ConfiguredFor' => 'Seadistatud',
'ConfirmDeleteEvents' => 'Oled sa kindel kustamaks valitud sündmused?',
'ConfirmPassword' => 'Kinnita salasõna',
@ -231,74 +235,74 @@ $SLANG = array(
'Controllable' => 'Controllable',
'Cycle' => 'Cycle',
'CycleWatch' => 'Cycle Watch',
'DateTime' => 'Date/Time', // Added - 2011-06-16
'DateTime' => 'Kuupäev/Aeg', // Added - 2011-06-16
'Day' => 'Päevas',
'Debug' => 'Debug',
'DefaultRate' => 'Default Rate',
'DefaultScale' => 'Default Scale',
'DefaultView' => 'Default View',
'DefaultRate' => 'Default Kiirus',
'DefaultScale' => 'Default Suurus',
'DefaultView' => 'Default Vaade',
'Delete' => 'Kustuta',
'DeleteAndNext' => 'Delete &amp; Next',
'DeleteAndPrev' => 'Delete &amp; Prev',
'DeleteAndNext' => 'Kustuta &amp; Järgmine',
'DeleteAndPrev' => 'Kustuta &amp; Eelmine',
'DeleteSavedFilter' => 'Kustuta salvestatud filter',
'Description' => 'Kirjeldus',
'DetectedCameras' => 'Tuvastatud kaamerad',
'Device' => 'Device',
'DeviceChannel' => 'Device Channel',
'DeviceFormat' => 'Device Format',
'DeviceNumber' => 'Device Number',
'DevicePath' => 'Device Path',
'Devices' => 'Devices',
'Dimensions' => 'Dimensions',
'Device' => 'Seade',
'DeviceChannel' => 'Seadme Kanal,
'DeviceFormat' => 'Seadme Formaat',
'DeviceNumber' => 'Seadme Number',
'DevicePath' => 'Seadme Path',
'Devices' => 'Seadmed',
'Dimensions' => 'Mõõdud',
'DisableAlarms' => 'Keela alarmid',
'Disk' => 'Disk',
'Display' => 'Display', // Added - 2011-03-02
'Displaying' => 'Displaying', // Added - 2011-06-16
'Donate' => 'Please Donate',
'DonateAlready' => 'No, I\'ve already donated',
'DonateEnticement' => 'You\'ve been running ZoneMinder for a while now and hopefully are finding it a useful addition to your home or workplace security. Although ZoneMinder is, and will remain, free and open source, it costs money to develop and support. If you would like to help support future development and new features then please consider donating. Donating is, of course, optional but very much appreciated and you can donate as much or as little as you like.<br/><br/>If you would like to donate please select the option below or go to http://www.zoneminder.com/donate.html in your browser.<br/><br/>Thank you for using ZoneMinder and don\'t forget to visit the forums on ZoneMinder.com for support or suggestions about how to make your ZoneMinder experience even better.',
'DonateRemindDay' => 'Not yet, remind again in 1 day',
'DonateRemindHour' => 'Not yet, remind again in 1 hour',
'DonateRemindMonth' => 'Not yet, remind again in 1 month',
'DonateRemindNever' => 'No, I don\'t want to donate, never remind',
'DonateRemindWeek' => 'Not yet, remind again in 1 week',
'DonateYes' => 'Yes, I\'d like to donate now',
'Disk' => 'Ketas',
'Display' => 'Ekraan', // Added - 2011-03-02
'Displaying' => 'Väljapanek', // Added - 2011-06-16
'Donate' => 'Palun Anneta',
'DonateAlready' => 'EI, Ma olen juba annetanud',
'DonateEnticement' => 'Sa oled juba kasutanud ZoneMinderit juba mõnda aega. Nüüd kus sa oled leidnud, et see on kasulik lisa sinu kodule või sinu töökohale. Kuigi ZoneMinder on, jääb alatiseks, vabaks ja avatud lähtekoodiks, siiski selle arendamiseks kulub aega ja raha. Kui sa soovid meid aidata, siis toeta meid tuleviku arendusteks ja uute lisade loomiseks. Palun mõelge annetuse peale. Donating is, of course, optional but very much appreciated and you can donate as much or as little as you like.<br/><br/>If you would like to donate please select the option below or go to http://www.zoneminder.com/donate.html in your browser.<br/><br/>Thank you for using ZoneMinder and don\'t forget to visit the forums on ZoneMinder.com for support or suggestions about how to make your ZoneMinder experience even better.',
'DonateRemindDay' => 'Ei veel, tuleta meelde ühe päeva pärast',
'DonateRemindHour' => 'Ei veel, tuleta meelde ühe tunni pärast',
'DonateRemindMonth' => 'Ei veel, tuleta meelde ühe kuu pärast',
'DonateRemindNever' => 'EI, Ma ei taha annetada, Vahet pole',
'DonateRemindWeek' => 'EI veel, tuleta meelde nädala pärast,
'DonateYes' => 'Jah, Ma soovin annetada',
'Download' => 'Lae alla',
'DuplicateMonitorName' => 'Duplicate Monitor Name',
'DuplicateMonitorName' => 'Dubleeri Monitori Nimi',
'Duration' => 'Kestvus',
'Edit' => 'Edit',
'Edit' => 'Muuda',
'Email' => 'Email',
'EnableAlarms' => 'Luba Alarmid',
'Enabled' => 'Lubatud',
'EnterNewFilterName' => 'Sisest uue filtri nimi',
'Error' => 'Viga',
'ErrorBrackets' => 'Error, please check you have an equal number of opening and closing brackets',
'ErrorValidValue' => 'Error, please check that all terms have a valid value',
'ErrorBrackets' => 'Viga, please check you have an equal number of opening and closing brackets',
'ErrorValidValue' => 'Viga, please check that all terms have a valid value',
'Etc' => 'etc',
'Event' => 'Syndmus',
'Event' => 'Sündmus',
'EventFilter' => 'Sündmuste filter',
'EventId' => 'Sündmuse Id',
'EventName' => 'Sündmuse nimi',
'EventPrefix' => 'Event Prefix',
'EventPrefix' => 'Sündmuse Prefix',
'Events' => 'Sündmuseid',
'Exclude' => 'Exclude',
'Exclude' => 'Jäta välja',
'Execute' => 'Käivita',
'Export' => 'Export',
'ExportDetails' => 'Export Event Details',
'ExportFailed' => 'Export Failed',
'ExportFormat' => 'Export File Format',
'Export' => 'Eksport,
'ExportDetails' => 'Ekspordi Sündmuste Detailid',
'ExportFailed' => 'Eksportimine Ebaõnnestus',
'ExportFormat' => 'Ekspordi Faili Formaat',
'ExportFormatTar' => 'Tar',
'ExportFormatZip' => 'Zip',
'ExportFrames' => 'Export Frame Details',
'ExportImageFiles' => 'Export Image Files',
'ExportLog' => 'Export Log', // Added - 2011-06-17
'ExportMiscFiles' => 'Export Other Files (if present)',
'ExportOptions' => 'Export Options',
'ExportSucceeded' => 'Export Succeeded',
'ExportVideoFiles' => 'Export Video Files (if present)',
'Exporting' => 'Exporting',
'ExportFrames' => 'Ekspordi Kaadri Detailid',
'ExportImageFiles' => 'Ekspordi Pildi Failid',
'ExportLog' => 'Ekspordi Logi', // Added - 2011-06-17
'ExportMiscFiles' => 'Ekspordi Teisi Faile (kui neid on)',
'ExportOptions' => 'Ekspordi Valikud',
'ExportSucceeded' => 'Eksportimine Õnnestus',
'ExportVideoFiles' => 'Export Video Files (kui neid on)',
'Exporting' => 'Eksportimine',
'FPS' => 'fps',
'FPSReportInterval' => 'FPS Report Interval',
'FPSReportInterval' => 'FPS Raporteerimise Intervall,
'FTP' => 'FTP',
'Far' => 'Far',
'FastForward' => 'Fast Forward',
@ -329,7 +333,7 @@ $SLANG = array(
'Format' => 'Format',
'Frame' => 'Kaader',
'FrameId' => 'Frame Id',
'FrameRate' => 'Frame Rate',
'FrameRate' => 'Kaadri Sagedus',
'FrameSkip' => 'Frame Skip',
'MotionFrameSkip' => 'Motion Frame Skip',
'Frames' => 'Kaadrid',
@ -361,7 +365,7 @@ $SLANG = array(
'Hue' => 'Hue',
'Id' => 'Id',
'Idle' => 'Idle',
'Ignore' => 'Ignore',
'Ignore' => 'Ignoreeri',
'Image' => 'Pilt',
'ImageBufferSize' => 'Image Buffer Size (frames)',
'Images' => 'Pildid',
@ -384,18 +388,18 @@ $SLANG = array(
'List' => 'List',
'Load' => 'Koormus',
'Local' => 'Local',
'Log' => 'Log', // Added - 2011-06-16
'Log' => 'Logi', // Added - 2011-06-16
'LoggedInAs' => 'Sisse logitud',
'Logging' => 'Logging', // Added - 2011-06-16
'Logging' => 'Logimine', // Added - 2011-06-16
'LoggingIn' => 'Login sisse',
'Login' => 'Login',
'Logout' => 'Logi välja',
'Logs' => 'Logs', // Added - 2011-06-17
'Logs' => 'Logid', // Added - 2011-06-17
'Low' => 'Madal',
'LowBW' => 'Low&nbsp;B/W',
'Main' => 'Main',
'Main' => 'Pea',
'Man' => 'Man',
'Manual' => 'Manual',
'Manual' => 'Juhend',
'Mark' => 'Märgi',
'Max' => 'Max',
'MaxBandwidth' => 'Max Ribalaius',
@ -468,53 +472,53 @@ $SLANG = array(
'Monitors' => 'Monitors',
'Montage' => 'Montage',
'Month' => 'Kuus',
'More' => 'More', // Added - 2011-06-16
'Move' => 'Move',
'More' => 'Veel', // Added - 2011-06-16
'Move' => 'Liiguta',
'MtgDefault' => 'Default', // Added 2013.08.15.
'Mtg2widgrd' => '2-wide grid', // Added 2013.08.15.
'Mtg3widgrd' => '3-wide grid', // Added 2013.08.15.
'Mtg4widgrd' => '4-wide grid', // Added 2013.08.15.
'Mtg3widgrx' => '3-wide grid, scaled, enlarge on alarm', // Added 2013.08.15.
'MustBeGe' => 'must be greater than or equal to',
'MustBeLe' => 'must be less than or equal to',
'MustConfirmPassword' => 'You must confirm the password',
'MustSupplyPassword' => 'You must supply a password',
'MustSupplyUsername' => 'You must supply a username',
'Mtg2widgrd' => '2-pildi ruudustik', // Added 2013.08.15.
'Mtg3widgrd' => '3-pildi ruudustik', // Added 2013.08.15.
'Mtg4widgrd' => '4-pildi ruudustik', // Added 2013.08.15.
'Mtg3widgrx' => '3-pildi ruudustik, skaleeritud, suurenda kui on alarm', // Added 2013.08.15.
'MustBeGe' => 'peab olema suurem kui või võrdne ',
'MustBeLe' => 'peab olema väiksem kui või võrdne',
'MustConfirmPassword' => 'Sa pead kinnitama parooli',
'MustSupplyPassword' => 'Sa pead panema parooli',
'MustSupplyUsername' => 'Sa pead panema kasutaja nime',
'Name' => 'Sündmus',
'Near' => 'Near',
'Network' => 'Network',
'New' => 'New',
'NewGroup' => 'New Group',
'NewLabel' => 'New Label',
'NewPassword' => 'New Password',
'NewState' => 'New State',
'NewUser' => 'New User',
'Next' => 'Next',
'No' => 'No',
'NoDetectedCameras' => 'No Detected Cameras',
'NoFramesRecorded' => 'There are no frames recorded for this event',
'NoGroup' => 'No Group',
'NoSavedFilters' => 'NoSavedFilters',
'NoStatisticsRecorded' => 'There are no statistics recorded for this event/frame',
'Near' => 'Lähedal',
'Network' => 'rk',
'New' => 'Uus',
'NewGroup' => 'Uus Krupp',
'NewLabel' => 'Uus Nimi',
'NewPassword' => 'Uus Parool',
'NewState' => 'Uus Olek',
'NewUser' => 'Uus Kasutaja',
'Next' => 'Järgmine',
'No' => 'Ei',
'NoDetectedCameras' => 'Ei leidnud kaameraid',
'NoFramesRecorded' => 'Ei ole kaadreid salvetatud selles sündmuses',
'NoGroup' => 'Ei krupp',
'NoSavedFilters' => 'EiSalvestatudFiltreid',
'NoStatisticsRecorded' => 'Ei ole statistikat salvestatud selle sündmuse/kaadri kohta',
'None' => 'None',
'NoneAvailable' => 'None available',
'Normal' => 'Normal',
'Notes' => 'Notes',
'Normal' => 'Normaalne',
'Notes' => 'Märkmed',
'NumPresets' => 'Num Presets',
'Off' => 'Off',
'On' => 'On',
'OpEq' => 'equal to',
'OpGt' => 'greater than',
'OpGtEq' => 'greater than or equal to',
'Off' => 'Väljas',
'On' => 'Sees',
'OpEq' => 'Võrdne',
'OpGt' => 'Suurem kui',
'OpGtEq' => 'suurem kui või võrdne',
'OpIn' => 'in set',
'OpLt' => 'less than',
'OpLtEq' => 'less than or equal to',
'OpMatches' => 'matches',
'OpNe' => 'not equal to',
'OpLt' => 'vähem kui',
'OpLtEq' => 'vähem kui või võrdne',
'OpMatches' => 'klapib',
'OpNe' => 'ei võrdne',
'OpNotIn' => 'not in set',
'OpNotMatches' => 'does not match',
'Open' => 'Open',
'OptionHelp' => 'Option Help',
'OpNotMatches' => 'ei klapi',
'Open' => 'Ava',
'OptionHelp' => 'Valik Aita',
'OptionRestartWarning' => 'These changes may not come into effect fully\nwhile the system is running. When you have\nfinished making your changes please ensure that\nyou restart ZoneMinder.',
'Options' => 'Seaded',
'OrEnterNewName' => 'või sisesta uus nimi',
@ -532,28 +536,27 @@ $SLANG = array(
'PasswordsDifferent' => 'The new and confirm passwords are different',
'Paths' => 'Paths',
'Pause' => 'Pause',
'Phone' => 'Phone',
'Phone' => 'Telefon',
'PhoneBW' => 'Phone&nbsp;B/W',
'Pid' => 'PID', // Added - 2011-06-16
'PixelDiff' => 'Pixel Diff',
'Pixels' => 'pixels',
'Pixels' => 'pikslid',
'Play' => 'Play',
'PlayAll' => 'Play All',
'PleaseWait' => 'Please Wait',
'Plugin' => 'Plugin',
'Plugins' => 'Plugins',
'Point' => 'Point',
'PlayAll' => 'Play Kõike',
'PleaseWait' => 'Palun Oota',
'Plugins' => 'Pluginad',
'Point' => 'Punkt',
'PostEventImageBuffer' => 'Post Event Image Count',
'PreEventImageBuffer' => 'Pre Event Image Count',
'PreserveAspect' => 'Preserve Aspect Ratio',
'Preset' => 'Preset',
'Presets' => 'Presets',
'Preset' => 'Eelseatud',
'Presets' => 'Eelseaded',
'Prev' => 'Prev',
'Probe' => 'Probe',
'Protocol' => 'Protocol',
'Rate' => 'Rate',
'Real' => 'Real',
'Record' => 'Record',
'Real' => 'Reaaalne',
'Record' => 'Salvesta',
'RefImageBlendPct' => 'Reference Image Blend %ge',
'Refresh' => 'Värskenda',
'ReInitNatDet' => 'Reinit. Native Detection',
@ -573,72 +576,72 @@ $SLANG = array(
'RequireNatDet' => 'Require Native Detection',
'Reset' => 'Reset',
'ResetEventCounts' => 'Reset Event Counts',
'Restart' => 'Restart',
'Restart' => 'Taaskäivita',
'Restarting' => 'Restarting',
'RestrictedCameraIds' => 'Restricted Camera Ids',
'RestrictedMonitors' => 'Restricted Monitors',
'ReturnDelay' => 'Return Delay',
'ReturnLocation' => 'Return Location',
'Rewind' => 'Rewind',
'RotateLeft' => 'Rotate Left',
'RotateRight' => 'Rotate Right',
'RotateLeft' => 'Pööra vasakule',
'RotateRight' => 'Pööra paremale',
'RunLocalUpdate' => 'Please run zmupdate.pl to update', // Added - 2011-05-25
'RunMode' => 'Run Mode',
'RunState' => 'Run State',
'RunMode' => 'Käimis resiim',
'RunState' => 'Käimis olek',
'Running' => 'Töötab',
'Save' => 'Save',
'SaveAs' => 'Save as',
'SaveFilter' => 'Save Filter',
'Scale' => 'Scale',
'Score' => 'Score',
'Save' => 'Salvesta',
'SaveAs' => 'Salvesta kui',
'SaveFilter' => 'Salvesta Filter',
'Scale' => 'Skaala',
'Score' => 'Skoor',
'Secs' => 'Secs',
'Sectionlength' => 'Section length',
'Select' => 'Select',
'SelectFormat' => 'Select Format', // Added - 2011-06-17
'SelectLog' => 'Select Log', // Added - 2011-06-17
'SelectMonitors' => 'Select Monitors',
'Select' => 'Selekteeri',
'SelectFormat' => 'Selekteeri Formaat', // Added - 2011-06-17
'SelectLog' => 'Selekteeri logi', // Added - 2011-06-17
'SelectMonitors' => 'Selekteeri Monitorid',
'SelfIntersecting' => 'Polygon edges must not intersect',
'Set' => 'Set',
'SetNewBandwidth' => 'Set New Bandwidth',
'Set' => 'Säti',
'SetNewBandwidth' => 'Vali uus riba laius',
'SetPreset' => 'Set Preset',
'Settings' => 'Settings',
'ShowFilterWindow' => 'Show Filter Window',
'ShowTimeline' => 'Show Timeline',
'SignalCheckColour' => 'Signal Check Colour',
'Size' => 'Size',
'SkinDescription' => 'Change the default skin for this computer', // Added - 2011-03-02
'Sleep' => 'Sleep',
'SortAsc' => 'Asc',
'SortBy' => 'Sort by',
'SortDesc' => 'Desc',
'Settings' => 'Sätted',
'ShowFilterWindow' => 'Näita Filtri Akent',
'ShowTimeline' => 'Näita Timeline',
'SignalCheckColour' => 'Signaali Kontroll Värv',
'Size' => 'Suurus',
'SkinDescription' => 'Vaheta veebilehe välimus selles arvutis', // Added - 2011-03-02
'Sleep' => 'Maga',
'SortAsc' => 'Kasvav',
'SortBy' => 'Sorteeri',
'SortDesc' => 'Kahanev',
'Source' => 'Allikas',
'SourceColours' => 'Source Colours',
'SourcePath' => 'Source Path',
'SourceType' => 'Source Type',
'Speed' => 'Speed',
'SpeedHigh' => 'High Speed',
'SpeedLow' => 'Low Speed',
'SpeedMedium' => 'Medium Speed',
'SpeedTurbo' => 'Turbo Speed',
'SourceColours' => 'Allika Värvid',
'SourcePath' => 'Allika Path',
'SourceType' => 'Allika tüüp',
'Speed' => 'Kiirus',
'SpeedHigh' => 'Kiire Kiirus',
'SpeedLow' => 'Madal Kiirus',
'SpeedMedium' => 'Keskmine Kiirus',
'SpeedTurbo' => 'Turbo Kiirus',
'Start' => 'Start',
'State' => 'State',
'Stats' => 'Stats',
'Status' => 'Status',
'Step' => 'Step',
'StepBack' => 'Step Back',
'StepForward' => 'Step Forward',
'StepLarge' => 'Large Step',
'StepMedium' => 'Medium Step',
'StepNone' => 'No Step',
'StepSmall' => 'Small Step',
'State' => 'Olek',
'Stats' => 'Statistika',
'Status' => 'Staatus',
'Step' => 'Samm',
'StepBack' => 'Samm tagasi',
'StepForward' => 'Samm edasi',
'StepLarge' => 'Suur Samm',
'StepMedium' => 'Keskmine Samm',
'StepNone' => 'Ei Samm',
'StepSmall' => 'Väike Samm',
'Stills' => 'Stills',
'Stop' => 'Stop',
'Stopped' => 'Stopped',
'Stream' => 'Stream',
'StreamReplayBuffer' => 'Stream Replay Image Buffer',
'Stopped' => 'Stopitud',
'Stream' => 'Striim',
'StreamReplayBuffer' => 'Striimi Replay Pildi Puhver',
'Submit' => 'Submit',
'System' => 'System',
'SystemLog' => 'System Log', // Added - 2011-06-16
'System' => 'Süsteem',
'SystemLog' => 'Süsteemi Logi', // Added - 2011-06-16
'Tele' => 'Tele',
'Thumbnail' => 'Thumbnail',
'Tilt' => 'Tilt',
@ -646,7 +649,7 @@ $SLANG = array(
'TimeDelta' => 'Time Delta',
'TimeStamp' => 'Time Stamp',
'Timeline' => 'Timeline',
'TimelineTip1' => 'Pass your mouse over the graph to view a snapshot image and event details.', // Added 2013.08.15.
'TimelineTip1' => 'Liiguta hiir üle graafiku et näha pildi ja sündmuse detaile.', // Added 2013.08.15.
'TimelineTip2' => 'Click on the coloured sections of the graph, or the image, to view the event.', // Added 2013.08.15.
'TimelineTip3' => 'Click on the background to zoom in to a smaller time period based around your click.', // Added 2013.08.15.
'TimelineTip4' => 'Use the controls below to zoom out or navigate back and forward through the time range.', // Added 2013.08.15.
@ -654,56 +657,55 @@ $SLANG = array(
'TimestampLabelFormat' => 'Timestamp Label Format',
'TimestampLabelX' => 'Timestamp Label X',
'TimestampLabelY' => 'Timestamp Label Y',
'Today' => 'Today',
'Tools' => 'Tools',
'Total' => 'Total', // Added - 2011-06-16
'TotalBrScore' => 'Total<br/>Score',
'TrackDelay' => 'Track Delay',
'TrackMotion' => 'Track Motion',
'Triggers' => 'Triggers',
'Today' => 'Täna',
'Tools' => 'Tööriistad',
'Total' => 'Summa', // Added - 2011-06-16
'TotalBrScore' => 'Summa<br/>Skoor',
'TrackDelay' => 'Jälgimise Viide',
'TrackMotion' => 'Jälgi Liikumist',
'Triggers' => 'Trigerid',
'TurboPanSpeed' => 'Turbo Pan Speed',
'TurboTiltSpeed' => 'Turbo Tilt Speed',
'Type' => 'Type',
'Unarchive' => 'Unarchive',
'Undefined' => 'Undefined',
'Units' => 'Units',
'Unknown' => 'Unknown',
'Update' => 'Update',
'UpdateAvailable' => 'An update to ZoneMinder is available.',
'UpdateNotNecessary' => 'No update is necessary.',
'Updated' => 'Updated', // Added - 2011-06-16
'Upload' => 'Upload', // Added - 2011-08-23
'UsedPlugins' => 'Used Plugins',
'UseFilter' => 'Use Filter',
'Type' => 'Tüüp',
'Unarchive' => 'Eemalda Arhiivist',
'Undefined' => 'Defineerimatta',
'Units' => 'Ühikud',
'Unknown' => 'Tundmatu',
'Update' => 'Uuenda',
'UpdateAvailable' => 'Uuendus ZoneMinder-ile saadaval.',
'UpdateNotNecessary' => 'Uuendus ei ole vajalik.',
'Updated' => 'Uuendatud', // Added - 2011-06-16
'Upload' => 'Üles laadimine', // Added - 2011-08-23
'UseFilter' => 'Kasuta Filtrit',
'UseFilterExprsPost' => '&nbsp;filter&nbsp;expressions', // This is used at the end of the phrase 'use N filter expressions'
'UseFilterExprsPre' => 'Use&nbsp;', // This is used at the beginning of the phrase 'use N filter expressions'
'User' => 'User',
'Username' => 'Username',
'Users' => 'Users',
'Value' => 'Value',
'Version' => 'Version',
'VersionIgnore' => 'Ignore this version',
'VersionRemindDay' => 'Remind again in 1 day',
'VersionRemindHour' => 'Remind again in 1 hour',
'VersionRemindNever' => 'Don\'t remind about new versions',
'VersionRemindWeek' => 'Remind again in 1 week',
'User' => 'Kasutaja',
'Username' => 'Kasutajanimi',
'Users' => 'Kasutajad',
'Value' => 'Väärtus',
'Version' => 'Versioon',
'VersionIgnore' => 'Ignoreeri See Versioon',
'VersionRemindDay' => 'Meenuta uuesti päeva pärast',
'VersionRemindHour' => 'Meenuta uuesti tunni pärast',
'VersionRemindNever' => 'Ära Meenuta Uuest Versioonist',
'VersionRemindWeek' => 'Meenuta uuesti nädalapärast',
'Video' => 'Video',
'VideoFormat' => 'Video Format',
'VideoGenFailed' => 'Video Generation Failed!',
'VideoFormat' => 'Video Formaat',
'VideoGenFailed' => 'Video Genereerimine Ebaõnnestus!!!',
'VideoGenFiles' => 'Existing Video Files',
'VideoGenNoFiles' => 'No Video Files Found',
'VideoGenParms' => 'Video Generation Parameters',
'VideoGenSucceeded' => 'Video Generation Succeeded!',
'VideoSize' => 'Video Size',
'View' => 'View',
'VideoGenNoFiles' => 'Ei Leitud Video Faile',
'VideoGenParms' => 'Video Genereerimise Parameetrid',
'VideoGenSucceeded' => 'Video Genereerimine Õnnestus!!!',
'VideoSize' => 'Video Suurus',
'View' => 'Vaata',
'ViewAll' => 'View All',
'ViewEvent' => 'View Event',
'ViewEvent' => 'Vaata Sündmust',
'ViewPaged' => 'View Paged',
'Wake' => 'Wake',
'WarmupFrames' => 'Warmup Frames',
'Watch' => 'Watch',
'Web' => 'Web',
'WebColour' => 'Web Colour',
'Watch' => 'Vaata',
'Web' => 'Veeb',
'WebColour' => 'Veebi värv',
'Week' => 'Nädalas',
'White' => 'White',
'WhiteBalance' => 'White Balance',
@ -713,12 +715,12 @@ $SLANG = array(
'X10ActivationString' => 'X10 Activation String',
'X10InputAlarmString' => 'X10 Input Alarm String',
'X10OutputAlarmString' => 'X10 Output Alarm String',
'Y' => 'Y',
'Yes' => 'Yes',
'YouNoPerms' => 'You do not have permissions to access this resource.',
'Y' => 'J',
'Yes' => 'Jah',
'YouNoPerms' => 'Sul ei ole õigusi kasutada seda ressurssi.',
'Zone' => 'Tsoon',
'ZoneAlarmColour' => 'Alarm Colour (Red/Green/Blue)',
'ZoneArea' => 'Zone Area',
'ZoneAlarmColour' => 'Alarmi Värv (Red"Punane"/Green"Roheline"/Blue"Sinine")',
'ZoneArea' => 'Tsooni Ala',
'ZoneFilterSize' => 'Filter Width/Height (pixels)',
'ZoneMinMaxAlarmArea' => 'Min/Max Alarmed Area',
'ZoneMinMaxBlobArea' => 'Min/Max Blob Area',
@ -729,9 +731,9 @@ $SLANG = array(
'ZoneOverloadFrames' => 'Overload Frame Ignore Count',
'ZoneExtendAlarmFrames' => 'Extend Alarm Frame Count',
'Zones' => 'Tsoone',
'Zoom' => 'Zoom',
'ZoomIn' => 'Zoom In',
'ZoomOut' => 'Zoom Out',
'Zoom' => 'Suurenda',
'ZoomIn' => 'Suurenda lähemale',
'ZoomOut' => 'Suurenda kaugemale',
);
// Complex replacements with formatting and/or placements, must be passed through sprintf

View File

@ -2,6 +2,5 @@ AUTOMAKE_OPTIONS = gnu
SUBDIRS = \
classic \
flat \
mobile \
xml

View File

@ -2,7 +2,5 @@ AUTOMAKE_OPTIONS = gnu
webdir = @WEB_PREFIX@/skins/classic/css
dist_web_DATA = \
skin.css \
control.css \
export.css
SUBDIRS = flat \
classic

View File

@ -0,0 +1,10 @@
AUTOMAKE_OPTIONS = gnu
webdir = @WEB_PREFIX@/skins/classic/css/classic
SUBDIRS = views
dist_web_DATA = \
skin.css \
control.css \
export.css

View File

@ -91,39 +91,39 @@
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .upLeftBtn {
background: url("../graphics/arrow-ul.gif") no-repeat 0 0;
background: url("../../graphics/arrow-ul.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .upBtn {
background: url("../graphics/arrow-u.gif") no-repeat 0 0;
background: url("../../graphics/arrow-u.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .upRightBtn {
background: url("../graphics/arrow-ur.gif") no-repeat 0 0;
background: url("../../graphics/arrow-ur.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .leftBtn {
background: url("../graphics/arrow-l.gif") no-repeat 0 0;
background: url("../../graphics/arrow-l.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .centerBtn {
background: url("../graphics/center.gif") no-repeat 0 0;
background: url("../../graphics/center.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .rightBtn {
background: url("../graphics/arrow-r.gif") no-repeat 0 0;
background: url("../../graphics/arrow-r.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .downLeftBtn {
background: url("../graphics/arrow-dl.gif") no-repeat 0 0;
background: url("../../graphics/arrow-dl.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .downBtn {
background: url("../graphics/arrow-d.gif") no-repeat 0 0;
background: url("../../graphics/arrow-d.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .downRightBtn {
background: url("../graphics/arrow-dr.gif") no-repeat 0 0;
background: url("../../graphics/arrow-dr.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .powerControls {

View File

@ -1,6 +1,6 @@
AUTOMAKE_OPTIONS = gnu
webdir = @WEB_PREFIX@/skins/flat/views/css
webdir = @WEB_PREFIX@/skins/classic/css/classic/views
dist_web_DATA = \
console.css \

View File

@ -0,0 +1 @@
@import url(../control.css);

View File

@ -0,0 +1,77 @@
.chartSize {
width: <?php echo $chart['width'] ?>px;
height: <?php echo $chart['height'] ?>px;
}
.graphSize {
width: <?php echo $chart['graph']['width'] ?>px;
height: <?php echo $chart['graph']['height'] ?>px;
}
.graphHeight {
height: <?php echo $chart['graph']['height'] ?>px;
}
.graphWidth {
width: <?php echo $chart['graph']['width'] ?>px;
}
.imageSize {
width: <?php echo $chart['image']['width'] ?>px;
height: <?php echo $chart['image']['height'] ?>px;
}
.imageHeight {
height: <?php echo $chart['image']['height'] ?>px;
}
.activitySize {
width: <?php echo $chart['graph']['width'] ?>px;
height: <?php echo $chart['graph']['activityHeight'] ?>px;
}
.eventsSize {
width: <?php echo $chart['graph']['width'] ?>px;
height: <?php echo $chart['graph']['eventBarHeight'] ?>px;
}
.eventsHeight {
height: <?php echo $chart['graph']['eventBarHeight'] ?>px;
}
<?php
if ( $mode == "overlay" )
{
foreach ( array_keys($monitorIds) as $monitorId )
{
?>
#chartPanel .eventsPos<?php echo $monitorId ?> {
top: <?php echo $chart['eventBars'][$monitorId]['top'] ?>px;
}
<?php
}
}
elseif ( $mode == "split" )
{
foreach ( array_keys($monitorIds) as $monitorId )
{
?>
#chartPanel .activityPos<?php echo $monitorId ?> {
top: <?php echo $char['activityBars'][$monitorId]['top'] ?>px;
}
#chartPanel .eventsPos<?php echo $monitorId ?> {
top: <?php echo $char['eventBars'][$monitorId]['top'] ?>px;
}
<?php
}
}
foreach( array_keys($monEventSlots) as $monitorId )
{
?>
.monitorColour<?php echo $monitorId ?> {
background-color: <?php echo $monitors[$monitorId]['WebColour'] ?>;
}
<?php
}
?>

View File

@ -1,4 +1,4 @@
@import url(../../css/control.css);
@import url(../control.css);
#menuBar {
margin: 6px auto 4px;

View File

@ -1,6 +1,8 @@
AUTOMAKE_OPTIONS = gnu
webdir = @WEB_PREFIX@/skins/flat/css
webdir = @WEB_PREFIX@/skins/classic/css/flat
SUBDIRS = views
dist_web_DATA = \
skin.css \

View File

@ -91,39 +91,39 @@
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .upLeftBtn {
background: url("../graphics/arrow-ul.gif") no-repeat 0 0;
background: url("../../graphics/arrow-ul.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .upBtn {
background: url("../graphics/arrow-u.gif") no-repeat 0 0;
background: url("../../graphics/arrow-u.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .upRightBtn {
background: url("../graphics/arrow-ur.gif") no-repeat 0 0;
background: url("../../graphics/arrow-ur.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .leftBtn {
background: url("../graphics/arrow-l.gif") no-repeat 0 0;
background: url("../../graphics/arrow-l.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .centerBtn {
background: url("../graphics/center.gif") no-repeat 0 0;
background: url("../../graphics/center.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .rightBtn {
background: url("../graphics/arrow-r.gif") no-repeat 0 0;
background: url("../../graphics/arrow-r.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .downLeftBtn {
background: url("../graphics/arrow-dl.gif") no-repeat 0 0;
background: url("../../graphics/arrow-dl.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .downBtn {
background: url("../graphics/arrow-d.gif") no-repeat 0 0;
background: url("../../graphics/arrow-d.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .downRightBtn {
background: url("../graphics/arrow-dr.gif") no-repeat 0 0;
background: url("../../graphics/arrow-dr.gif") no-repeat 0 0;
}
.ptzControls .controlsPanel .pantiltPanel .powerControls {

View File

@ -1,6 +1,6 @@
AUTOMAKE_OPTIONS = gnu
webdir = @WEB_PREFIX@/skins/classic/views/css
webdir = @WEB_PREFIX@/skins/classic/css/flat/views
dist_web_DATA = \
console.css \

View File

@ -0,0 +1 @@
@import url(../css/control.css);

Some files were not shown because too many files have changed in this diff Show More