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) include (CheckStructHasMember)
# Configuration options # 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_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_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") 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_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") 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 # 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_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_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") 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 # Some variables that zm expects
set(ZM_PID "${ZM_RUNDIR}/zm.pid") set(ZM_PID "${ZM_RUNDIR}/zm.pid")
set(ZM_CONFIG "${ZM_CONFIG_DIR}/zm.conf")
set(ZM_CONFIG "/${CMAKE_INSTALL_SYSCONFDIR}/zm.conf") set(ZM_CONFIG "/${CMAKE_INSTALL_SYSCONFDIR}/zm.conf")
set(VERSION "${zoneminder_VERSION}") set(VERSION "${zoneminder_VERSION}")
set(PKGDATADIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/zoneminder") set(PKGDATADIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/zoneminder")
@ -539,7 +541,7 @@ else(zmconfgen_result EQUAL 0)
endif(zmconfgen_result EQUAL 0) endif(zmconfgen_result EQUAL 0)
# Install zm.conf # 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 # Uninstall target
configure_file( configure_file(

View File

@ -5,8 +5,9 @@ ACLOCAL_AMFLAGS = -I m4
# And these to the user and group of your webserver # And these to the user and group of your webserver
webuser = @WEB_USER@ webuser = @WEB_USER@
webgroup = @WEB_GROUP@ webgroup = @WEB_GROUP@
zmconfigdir = @ZM_CONFIG_DIR@
sysconf_DATA = \ zmconfig_DATA = \
zm.conf zm.conf
SUBDIRS = \ SUBDIRS = \
@ -22,7 +23,7 @@ EXTRA_DIST = \
# Yes, you are correct. This is a HACK! # Yes, you are correct. This is a HACK!
install-data-hook: 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_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_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 ) ( 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_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_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_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 if test "$ZM_DB_TYPE" == ""; then
AC_SUBST(ZM_DB_TYPE,[mysql]) AC_SUBST(ZM_DB_TYPE,[mysql])
@ -83,6 +84,10 @@ fi
if test "$ZM_LOGDIR" == ""; then if test "$ZM_LOGDIR" == ""; then
AC_SUBST(ZM_LOGDIR,[/var/log/zm]) AC_SUBST(ZM_LOGDIR,[/var/log/zm])
fi 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 LIB_ARCH=lib
AC_ARG_WITH(libarch, 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_DEFINE_DIR([DATADIR],[datadir],[Expanded data directory])
AC_SUBST(PKGDATADIR,"$DATADIR/$PACKAGE") AC_SUBST(PKGDATADIR,"$DATADIR/$PACKAGE")
AC_SUBST(ZM_PID,"$ZM_RUNDIR/zm.pid") AC_SUBST(ZM_PID,"$ZM_RUNDIR/zm.pid")
AC_DEFINE_DIR([SYSCONFDIR],[sysconfdir],[Expanded configuration directory]) #AC_DEFINE_DIR([SYSCONFDIR],[sysconfdir],[Expanded configuration directory])
AC_SUBST(ZM_CONFIG,"$SYSCONFDIR/zm.conf") #AC_SUBST(ZM_CONFIG,"$SYSCONFDIR/zm.conf")
AC_SUBST(ZM_CONFIG,"$ZM_CONFIG_DIR/zm.conf")
# Slight hack for non-standard perl install paths # Slight hack for non-standard perl install paths
if test "$prefix" != "NONE"; then if test "$prefix" != "NONE"; then
@ -552,7 +558,7 @@ AC_SUBST(PERL_MM_PARMS)
AC_SUBST(EXTRA_PERL_LIB) 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 # Create the definitions for compilation and defaults for the database
AC_CONFIG_COMMANDS([src/zm_config_defines.h],[perl ./zmconfgen.pl]) 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', `Enabled` tinyint(3) unsigned NOT NULL default '1',
`LinkedMonitors` varchar(255) NOT NULL default '', `LinkedMonitors` varchar(255) NOT NULL default '',
`Triggers` set('X10') 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', `Channel` tinyint(3) unsigned NOT NULL default '0',
`Format` int(10) unsigned NOT NULL default '0', `Format` int(10) unsigned NOT NULL default '0',
`V4LMultiBuffer` tinyint(1) unsigned, `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 # This module contains the implementation of the Trendnet TV-IP672PI IP camera control
# protocol. Also works or TV-IP862IC # protocol. Also works or TV-IP862IC
# #
#
#
# For Zoneminder 1.26+ # For Zoneminder 1.26+
# #
# Under control capability: # Under control capability:
@ -69,9 +67,10 @@ our @ISA = qw(ZoneMinder::Control);
# #
# Finally, the username is the username you'd like to authenticate as. # Finally, the username is the username you'd like to authenticate as.
# #
our $REALM = "TV-IP862IC"; our $REALM = 'TV-IP862IC';
our $USERNAME = "admin"; our $USERNAME = 'admin';
our $PASSWORD = '';
our $ADDRESS = '';
# ========================================================================== # ==========================================================================
# #
@ -82,8 +81,6 @@ our $USERNAME = "admin";
use ZoneMinder::Logger qw(:all); use ZoneMinder::Logger qw(:all);
use ZoneMinder::Config qw(:all); use ZoneMinder::Config qw(:all);
use Time::HiRes qw( usleep );
sub new sub new
{ {
my $class = shift; my $class = shift;
@ -112,13 +109,29 @@ sub AUTOLOAD
sub open sub open
{ {
my $self = shift; my $self = shift;
$self->loadMonitor(); $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; use LWP::UserAgent;
$self->{ua} = LWP::UserAgent->new; $self->{ua} = LWP::UserAgent->new;
$self->{ua}->agent( "ZoneMinder Control Agent/".$ZoneMinder::Base::ZM_VERSION ); $self->{ua}->agent( "ZoneMinder Control Agent/".$ZoneMinder::Base::ZM_VERSION );
$self->{state} = 'open'; $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 sub close
@ -146,18 +159,10 @@ sub sendCmd
my $result = undef; 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(); Debug ("sendCmd command: " . $url );
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);
my $res = $self->{ua}->request($req); my $res = $self->{ua}->request($req);
@ -165,10 +170,13 @@ sub sendCmd
$result = !undef; $result = !undef;
} else { } else {
if ( $res->status_line() eq '401 Unauthorized' ) { 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); my $res = $self->{ua}->request($req);
if ( $res->is_success ) { if ( $res->is_success ) {
$result = !undef; $result = !undef;
} else {
Error("Content was " . $res->content() );
} }
} }
if ( ! $result ) { if ( ! $result ) {
@ -194,7 +202,6 @@ sub sendCmdPost
my $result = undef; my $result = undef;
if ($url eq undef) if ($url eq undef)
{ {
Error ("url passed to sendCmdPost is undefined."); Error ("url passed to sendCmdPost is undefined.");
@ -203,16 +210,11 @@ sub sendCmdPost
Debug ("sendCmdPost url: " . $url . " cmd: " . $cmd); Debug ("sendCmdPost url: " . $url . " cmd: " . $cmd);
my $ua = LWP::UserAgent->new(); my $req = HTTP::Request->new(POST => "http://".$ADDRESS.$url);
my $req = HTTP::Request->new(POST => "http://".$self->{Monitor}->{ControlAddress}.$url);
$req->content_type('application/x-www-form-urlencoded'); $req->content_type('application/x-www-form-urlencoded');
$req->content($cmd); $req->content($cmd);
$self->{ua}->credentials($self->{Monitor}->{ControlAddress},$REALM,$USERNAME,$self->{Monitor}->{ControlDevice}); Debug ( "sendCmdPost credentials control address:'".$ADDRESS."' realm:'" . $REALM . "' username:'" . $USERNAME . "' password:'".$PASSWORD."'");
Debug ( "sendCmdPost credentials control address:'".$self->{Monitor}->{ControlAddress}."' realm:'" . $REALM . "' username:'" . $USERNAME . "'
password:'".$self->{Monitor}->{ControlDevice}."'");
my $res = $self->{ua}->request($req); my $res = $self->{ua}->request($req);
@ -222,12 +224,11 @@ password:'".$self->{Monitor}->{ControlDevice}."'");
} }
else else
{ {
Error( "Error check failed: USERNAME: $USERNAME realm: $REALM password: " . $self->{Monitor}->{ControlDevice} ); Error( "sendCmdPost Error check failed: '".$res->status_line()."' cmd:'".$cmd."'" );
Error( "Error check failed: '".$res->status_line()."' cmd:'".$cmd."'" );
if ( $res->status_line() eq '401 Unauthorized' ) { 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 { } 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 } # endif
} }

View File

@ -397,6 +397,7 @@ int RtspThread::run()
uint32_t rtpClock = 0; uint32_t rtpClock = 0;
std::string trackUrl = mUrl; std::string trackUrl = mUrl;
std::string controlUrl;
_AVCODECID codecId; _AVCODECID codecId;
@ -412,7 +413,7 @@ int RtspThread::run()
#endif #endif
{ {
// Check if control Url is absolute or relative // 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())) if (std::equal(trackUrl.begin(), trackUrl.end(), controlUrl.begin()))
{ {
trackUrl = controlUrl; trackUrl = controlUrl;
@ -556,27 +557,51 @@ int RtspThread::run()
{ {
if ( ( lines[i].size() > 9 ) && ( lines[i].substr( 0, 9 ) == "RTP-Info:" ) ) if ( ( lines[i].size() > 9 ) && ( lines[i].substr( 0, 9 ) == "RTP-Info:" ) )
rtpInfo = trimSpaces( lines[i].substr( 9 ) ); 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; int seq = 0;
unsigned long rtpTime = 0; unsigned long rtpTime = 0;
parts = split( rtpInfo.c_str(), ";" ); StringVector streams;
for ( size_t i = 0; i < parts.size(); i++ ) 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], "=" ); // We want the stream that matches the trackUrl we are using
seq = strtol( subparts[1].c_str(), NULL, 10 ); if ( streams[i].find(controlUrl.c_str()) != std::string::npos )
} {
else if ( startsWith( parts[i], "rtptime=" ) ) // Parse the sequence and rtptime values
{ parts = split( streams[i].c_str(), ";" );
StringVector subparts = split( parts[i], "=" ); for ( size_t j = 0; j < parts.size(); j++ )
rtpTime = strtol( subparts[1].c_str(), NULL, 10 ); {
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 }, { "MP4V-ES", AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_MPEG4 },
{ "mpeg4-generic", AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AAC }, { "mpeg4-generic", AVMEDIA_TYPE_AUDIO, AV_CODEC_ID_AAC },
{ "H264", AVMEDIA_TYPE_VIDEO, AV_CODEC_ID_H264 }, { "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 #else
SessionDescriptor::StaticPayloadDesc SessionDescriptor::smStaticPayloads[] = { SessionDescriptor::StaticPayloadDesc SessionDescriptor::smStaticPayloads[] = {
@ -95,7 +96,8 @@ SessionDescriptor::DynamicPayloadDesc SessionDescriptor::smDynamicPayloads[] = {
{ "MP4V-ES", CODEC_TYPE_VIDEO, CODEC_ID_MPEG4 }, { "MP4V-ES", CODEC_TYPE_VIDEO, CODEC_ID_MPEG4 },
{ "mpeg4-generic", CODEC_TYPE_AUDIO, CODEC_ID_AAC }, { "mpeg4-generic", CODEC_TYPE_AUDIO, CODEC_ID_AAC },
{ "H264", CODEC_TYPE_VIDEO, CODEC_ID_H264 }, { "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 #endif
@ -326,7 +328,7 @@ SessionDescriptor::SessionDescriptor( const std::string &url, const std::string
if ( tokens.size() < 4 ) if ( tokens.size() < 4 )
throw Exception( "Can't parse SDP media description '"+line+"'" ); throw Exception( "Can't parse SDP media description '"+line+"'" );
std::string mediaType = tokens[0]; 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+"'" ); throw Exception( "Unsupported media type '"+mediaType+"' in SDP media attribute '"+line+"'" );
StringVector portTokens = split( tokens[1], "/" ); StringVector portTokens = split( tokens[1], "/" );
int mediaPort = atoi(portTokens[0].c_str()); int mediaPort = atoi(portTokens[0].c_str());
@ -383,11 +385,15 @@ AVFormatContext *SessionDescriptor::generateFormatContext() const
stream->codec->codec_type = AVMEDIA_TYPE_VIDEO; stream->codec->codec_type = AVMEDIA_TYPE_VIDEO;
else if ( mediaDesc->getType() == "audio" ) else if ( mediaDesc->getType() == "audio" )
stream->codec->codec_type = AVMEDIA_TYPE_AUDIO; stream->codec->codec_type = AVMEDIA_TYPE_AUDIO;
else if ( mediaDesc->getType() == "application" )
stream->codec->codec_type = AVMEDIA_TYPE_DATA;
#else #else
if ( mediaDesc->getType() == "video" ) if ( mediaDesc->getType() == "video" )
stream->codec->codec_type = CODEC_TYPE_VIDEO; stream->codec->codec_type = CODEC_TYPE_VIDEO;
else if ( mediaDesc->getType() == "audio" ) else if ( mediaDesc->getType() == "audio" )
stream->codec->codec_type = CODEC_TYPE_AUDIO; stream->codec->codec_type = CODEC_TYPE_AUDIO;
else if ( mediaDesc->getType() == "application" )
stream->codec->codec_type = CODEC_TYPE_DATA;
#endif #endif
if ( mediaDesc->getPayloadType() < PAYLOAD_TYPE_DYNAMIC ) 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, "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" ); 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" ); 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, " -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, " -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" ); 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[] ) 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]; self = argv[0];
srand( getpid() * time( 0 ) ); srand( getpid() * time( 0 ) );

View File

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

View File

@ -63,6 +63,13 @@ elseif ( isset($_COOKIE['zmSkin']) )
else else
$skin = "classic"; $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_BASE_PATH", dirname( $_SERVER['REQUEST_URI'] ) );
define( "ZM_SKIN_PATH", "skins/$skin" ); 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 ); 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/config.php' );
require_once( 'includes/logger.php' ); require_once( 'includes/logger.php' );

View File

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

View File

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

View File

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

View File

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

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 { .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 { .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 { .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 { .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 { .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 { .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 { .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 { .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 { .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 { .ptzControls .controlsPanel .pantiltPanel .powerControls {

View File

@ -1,6 +1,6 @@
AUTOMAKE_OPTIONS = gnu AUTOMAKE_OPTIONS = gnu
webdir = @WEB_PREFIX@/skins/flat/views/css webdir = @WEB_PREFIX@/skins/classic/css/classic/views
dist_web_DATA = \ dist_web_DATA = \
console.css \ 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 { #menuBar {
margin: 6px auto 4px; margin: 6px auto 4px;

View File

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

View File

@ -91,39 +91,39 @@
} }
.ptzControls .controlsPanel .pantiltPanel .pantiltControls .upLeftBtn { .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 { .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 { .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 { .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 { .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 { .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 { .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 { .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 { .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 { .ptzControls .controlsPanel .pantiltPanel .powerControls {

View File

@ -1,6 +1,6 @@
AUTOMAKE_OPTIONS = gnu AUTOMAKE_OPTIONS = gnu
webdir = @WEB_PREFIX@/skins/classic/views/css webdir = @WEB_PREFIX@/skins/classic/css/flat/views
dist_web_DATA = \ dist_web_DATA = \
console.css \ 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