pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/security/zoneminder
Module Name: pkgsrc
Committed By: gdt
Date: Sun Dec 1 13:49:48 UTC 2024
Modified Files:
pkgsrc/security/zoneminder: Makefile PLIST distinfo
pkgsrc/security/zoneminder/files: README-pkgsrc.md
pkgsrc/security/zoneminder/patches: patch-CMakeLists.txt
patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in
patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm
patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
patch-scripts_zm_in patch-scripts_zmpkg_pl_in
patch-src_zm__event.cpp patch-src_zm__monitor.cpp
patch-src_zm__rtp__source.cpp patch-src_zm__utils.cpp
patch-src_zm_comms_h patch-src_zm_logger_cpp
patch-src_zm_remote_camera_h patch-src_zm_signal_cpp
patch-src_zmu.cpp
Added Files:
pkgsrc/security/zoneminder/files: httpd-zoneminder.conf
start-watchdog.sh
pkgsrc/security/zoneminder/patches:
patch-dep_RtspServer_src_net_EventLoop.cpp
patch-dep_RtspServer_src_net_Socket.h
patch-dep_RtspServer_src_net_SocketUtil.cpp
patch-dep_RtspServer_src_xop_rtsp.h patch-src_zm__eventstream.cpp
patch-src_zm__packet.h
Removed Files:
pkgsrc/security/zoneminder/patches: patch-cmake_Modules_Pod2Man.cmake
patch-src_zm__rtp__ctrl.h patch-src_zm__thread.h
patch-src_zm__timer.h patch-src_zm__utils.h patch-src_zm_comms_cpp
patch-src_zm_thread_cpp patch-src_zmc_cpp patch-src_zmf.cpp
patch-web_ajax_stream_php
Log Message:
security/zoneminder: Update to 1.36.33
Note that this update brings some unresolved issues requiring manual
attention, but a) that's just how zoneminder is and b) running 1.36
and dealing with the issues seems better than 1.30 with ancient php
and 1.30's issues. The old version is in danger of being removed, so
this is better...
Significant packaging changes:
+ 1.36/1.34:
- Switch to ffmpeg6 from ffmpeg2
- gc many workarounds that are no longer necessary
+ 1.32:
- Change config to etc/zm from etc, and provide etc/zm/conf.d, because
migration from 1.30 writes there.
- Rototill hard the cmake build options, and try to document what
must be set as path configuration.
- Depend on mp4v2.
Upstream NEWS:
Generally, 1.X.0 is a significant release, and 1.X.Y, Y>0, are
bugfixes and minor improvements.
+ 1.36 (The Memory Remains):
Filters
Moved event email options from global config to per Filter
Added user to run filter as, so that users without access to certain monitors can't just use a filter to access them.
Filters now have PreSQL and PostSQL conditions. The first Post SQL condition is ExistsInFileSystem. This can be used to cleanup after a crash instead of using zmaudit.
warnings on Filter edit page when you create a filter than can delete archived events.
Added Auto Unarchive function
UI Updates
bootstrap updated to version 3
removed mootools
events list now uses bootstrap-table to enable a more modern powerful ui
scaled thumbnail on mouseover on events list
thumbnails with scaling on console
frames view updates to include stats information
many popups turned into modals
monitor edit is now a full view instead of popup
Zone edit is now scaled so high res cameras don't take the entire screen or more.
Added Estimated RAM use to Buffers tab in Monitors.
Monitor edit no longer form submits/reloads between tabs it just hides/unhides tabs using bootstrap nav.
Monitors can now have Latitude/Longitude associated and displayed on a map
General
New Monitor type VNC for recording desktops
better use of scaling when streaming to reduce bandwidth/cpu use
dynamic loading of vlc, curl and other libraries that might not be used. Saves ram
ONVIF probe can now select a network to scan
Sessions now stored in database
Event Summary tables reorganized to improve locking performance
Clicking on username in header will now list other logged in users if you have SystemView permission.
ZoneMinder will now try other Storage Areas if it can't create the event in the assigned area.
New Monitor Setting: Decoding Enabled/Disabled
/dev/shm mmap use decoupled from image buffering. You should set ImageBufferCount to 3 or larger.
mp4v2 deprecated and removed.
zma process has been turned into a thread of zmc.
Added second ffmpeg input stream for when audio is coming from another source.
added RTSP re-streaming
hwaccel encoding support for intel vaapi and nvenc
Use onmousedown/onmouseup for PTZ start/stop in PTZ controls. Amcrest is the only Protocol that supports it so far.
+ 1.34 (My Friend Of Misery):
This is largely a fixes & polish release. There are a number of bug fixes and security improvements in here.
Upgrading from 1.32.3 should be relatively painless although if your Logs table is large it may take some time to update it.
Security fixes:
We no longer store passwords using mysql's built-in password encryption.
We now support a modern JWT access token system
Replaced a lot of inline javascript.
There were a number of XSS and SQL injection issues fixed.
CVE-2019-13072
CVE-2019-6777
Other changes:
When adding a new monitor a random colour will be assigned to it instead of red.
We now have a handy resolution dropdown to help prevent typos in the width & height fields
Support for mysql8
Support for php 7.4
Can now delete database log entries for the logs popup
Timezone setting moved from php.ini to Options -> System
ffmpeg hwaccel support for h264 decoding
Improved recording to mp4 with audio
Added ZM_LOG_FFMPEG options which captures ffmpeg debug messages properly which can really help with debugging.
Added ability to use zms to stream mjpeg when the video is stored as h265. Most browsers can't play h265 so this allows you to use passthrough mode with an h265 camera and still watch the
video.
Filters now have a Copy To action which copies the event files to a second storage area
We now display additional event information such as that generated by event server object detection
+ 1.32
- A re-worked web console, compared to the previous 1.30.4 release
- record to mp4 container
- record audio
- support for php 7.x
- Arbitrary website as a non-recordable, interactive monitor.
- Updated Montage Review
- Options-> Paths moved into config files under conf.d folder
- Multiple storage paths are supported. See Options -> Storage
- The old method of bind mounting the event folder is no longer needed nor recommended
- Additional system statistics on the web console
- Raspberry pi OMX hardware h264 decoder support
- Event thumbnails play video on mouseover
- Drag and drop sorting of monitors
- Scalability improvements
Upstream upgrade notes (tweaked for pkgsrc):
- The upgrade scripts will take longer than normal to run,
especially if you have many events.
- Your previous settings on the Options -> Paths tab have been
moved into the file zmcustom.conf which is found under
${PKGSYSCONFDIR}/etc/zm/conf.d
- Consider migrating your events folder from the former bind mount
method to the new method under Options -> Storage
- You should no longer have symbolic links in your webroot
folder. This resolves a long standing security issue.
- The Apache config file has changed. Hand merge it and review
your web setup.
To generate a diff of this commit:
cvs rdiff -u -r1.75 -r1.76 pkgsrc/security/zoneminder/Makefile
cvs rdiff -u -r1.8 -r1.9 pkgsrc/security/zoneminder/PLIST
cvs rdiff -u -r1.20 -r1.21 pkgsrc/security/zoneminder/distinfo
cvs rdiff -u -r1.1 -r1.2 pkgsrc/security/zoneminder/files/README-pkgsrc.md
cvs rdiff -u -r0 -r1.1 pkgsrc/security/zoneminder/files/httpd-zoneminder.conf \
pkgsrc/security/zoneminder/files/start-watchdog.sh
cvs rdiff -u -r1.1 -r1.2 \
pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt \
pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in \
pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in
cvs rdiff -u -r1.1 -r0 \
pkgsrc/security/zoneminder/patches/patch-cmake_Modules_Pod2Man.cmake
cvs rdiff -u -r0 -r1.1 \
pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_EventLoop.cpp \
pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_Socket.h \
pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_SocketUtil.cpp \
pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_xop_rtsp.h \
pkgsrc/security/zoneminder/patches/patch-src_zm__eventstream.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm__packet.h
cvs rdiff -u -r1.3 -r1.4 \
pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm \
pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp
cvs rdiff -u -r1.2 -r1.3 \
pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
cvs rdiff -u -r1.5 -r1.6 \
pkgsrc/security/zoneminder/patches/patch-scripts_zm_in \
pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h
cvs rdiff -u -r1.4 -r1.5 \
pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h \
pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
cvs rdiff -u -r1.2 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__ctrl.h \
pkgsrc/security/zoneminder/patches/patch-web_ajax_stream_php
cvs rdiff -u -r1.6 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__thread.h
cvs rdiff -u -r1.5 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__timer.h
cvs rdiff -u -r1.4 -r0 \
pkgsrc/security/zoneminder/patches/patch-src_zm__utils.h \
pkgsrc/security/zoneminder/patches/patch-src_zm_comms_cpp \
pkgsrc/security/zoneminder/patches/patch-src_zm_thread_cpp \
pkgsrc/security/zoneminder/patches/patch-src_zmc_cpp \
pkgsrc/security/zoneminder/patches/patch-src_zmf.cpp
cvs rdiff -u -r1.7 -r1.8 \
pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/security/zoneminder/Makefile
diff -u pkgsrc/security/zoneminder/Makefile:1.75 pkgsrc/security/zoneminder/Makefile:1.76
--- pkgsrc/security/zoneminder/Makefile:1.75 Thu Nov 14 22:21:36 2024
+++ pkgsrc/security/zoneminder/Makefile Sun Dec 1 13:49:47 2024
@@ -1,9 +1,7 @@
-# $NetBSD: Makefile,v 1.75 2024/11/14 22:21:36 wiz Exp $
+# $NetBSD: Makefile,v 1.76 2024/12/01 13:49:47 gdt Exp $
-#VERSION= 1.36.7
-VERSION= 1.30.5
-PKGREVISION= 14
-# Sometimes the distfile unpacks to ZoneMinder and sometimes zoneminder.
+VERSION= 1.36.33
+# Distfile is ZoneMinder but package and tarball contents are zoneminder.
NAME_DIST= ZoneMinder
NAME_LOWER= zoneminder
@@ -16,8 +14,13 @@ GITHUB_PROJECT= ${NAME_DIST}
GITHUB_TYPE= tag
GITHUB_TAG= ${PKGVERSION_NOREV}
-# Submodules as per ZoneMinder's .gitmodules file
-GITHUB_SUBMODULES= FriendsOfCake crud v3.0.10 web/api/app/Plugin/Crud
+## Submodules (from ZoneMinder's .gitmodules file)
+# We use a specific commit on each branch, to avoid distfile versioning woes
+# and to meet pkgsrc expectations that a fixed version is fixed software.
+# Beware that RtspServer might get updates and should be checked.
+GITHUB_SUBMODULES+= FriendsOfCake crud 14292374ccf1328f2d5db20897bd06f99ba4d938 web/api/app/Plugin/Crud
+GITHUB_SUBMODULES+= ZoneMinder CakePHP-Enum-Behavior ea90c0cd7f6e24333a90885e563b5d30b793db29 web/api/app/Plugin/CakePHP-Enum-Behavior
+GITHUB_SUBMODULES+= ZoneMinder RtspServer 055d81fe1293429e496b19104a9ed3360755a440 dep/RtspServer
MAINTAINER= dsainty%NetBSD.org@localhost
#MAINTAINER+= gdt%NetBSD.org@localhost
@@ -25,306 +28,310 @@ HOMEPAGE= https://www.zoneminder.com/
COMMENT= Video camera security and surveillance solution
LICENSE= gnu-gpl-v2
-# NetBSD tar: Invalid header, starting valid header search.
-EXTRACT_USING= gtar
-
-# ZoneMinder 1.29.0 seems to work fine on at least PHP 5.6 and 7.4.
-# Under PHP 8.0 it is logging at Error level type errors out of skin.js.
-# Under PHP 8.1 it is logging at Panic level that strftime is deprecated.
-PHP_VERSIONS_ACCEPTED= 56 74
-
-PKG_OPTIONS_VAR= PKG_OPTIONS.zoneminder
-PKG_SUPPORTED_OPTIONS= apache
-PKG_SUGGESTED_OPTIONS= apache
+# ZoneMinder without a web server does not really make sense, and if
+# it did, what is omitted is surely not right. For now, require a
+# choice of webserver.
+PKG_OPTIONS_VAR= PKG_OPTIONS.zoneminder
+PKG_OPTIONS_REQUIRED_GROUPS= webserver
+PKG_OPTIONS_GROUP.webserver= apache nginx
+PKG_SUGGESTED_OPTIONS= apache
.include "../../mk/bsd.options.mk"
+## NOTES
+
+# ZoneMinder discourages building from source and does not appear to
+# document the list of dependencies. We take the view that if an
+# installation can be reasonably configured to use a module, that
+# module should be a dependency, absent some reason that it is so
+# heavyweight that it should be an option.
+
+## MAIN BUILD
+
USE_CMAKE= yes
USE_LANGUAGES= c c++
USE_TOOLS+= gmake perl pkg-config
-# zoneminder can depend on a number of perl modules depending on
-# configuration. We take the view that if an installation can be
-# reasonably configured to use a module, that module should be a
-# dependency, absent some reason that it is so heavyweight that it
-# should be an option.
-
-# MIME::Entity is needed from p5-MIME-tools
-# LWP::UserAgent is needed from p5-libwww
-DEPENDS+= p5-Archive-Zip-[0-9]*:../../archivers/p5-Archive-Zip
-DEPENDS+= p5-Date-Manip-[0-9]*:../../devel/p5-Date-Manip
-DEPENDS+= p5-Device-SerialPort-[0-9]*:../../comms/p5-Device-SerialPort
-DEPENDS+= p5-DBD-mysql-[0-9]*:../../databases/p5-DBD-mysql
-DEPENDS+= p5-MIME-Lite-[0-9]*:../../mail/p5-MIME-Lite
-DEPENDS+= p5-MIME-tools-[0-9]*:../../mail/p5-MIME-tools
-DEPENDS+= p5-Net-SFTP-Foreign-[0-9]*:../../net/p5-Net-SFTP-Foreign
-DEPENDS+= p5-PHP-Serialization-[0-9]*:../../devel/p5-PHP-Serialization
-DEPENDS+= p5-Sys-Mmap-[0-9]*:../../devel/p5-Sys-Mmap
-#DEPENDS+= {perl>=5.7.3,p5-Time-HiRes-[0-9]*}:../../time/p5-Time-HiRes
-DEPENDS+= p5-libwww-[0-9]*:../../www/p5-libwww
+# Place man pages following pkgsrc norms, rather than share/man.
+CMAKE_CONFIGURE_ARGS+= -DZM_MANPAGE_DEST_PREFIX=${PREFIX}/${PKGMANDIR}
-# \todo: Decide to drop CONFIGURE_ARGS, validating that each has been
-# turned into cmake, once we are at a zoneminder version that does not
-# support autoconf (which maybe we are at already!).
-CONFIGURE_ARGS+= --sysconfdir=${PKG_SYSCONFDIR}
-CMAKE_CONFIGURE_ARGS+= -DZM_CONFIG_DIR=${PKG_SYSCONFDIR}
+# For now, lean to debugging.
+CMAKE_CONFIGURE_ARGS+= -DCMAKE_VERBOSE_MAKEFILE=true
+CMAKE_CONFIGURE_ARGS+= -DCMAKE_BUILD_TYPE=Debug
+
+## PATHS
+
+# zoneminder has a dizzying array of variables for various paths.
+# Consolidate the settings in an attempt to reduce confusion.
+
+# ZoneMinder prefers a subdirectory of etc. Further, it demands a
+# conf.d subdirectory within its config directory, which would be
+# irregular at top level.
+CMAKE_CONFIGURE_ARGS+= -DZM_CONFIG_DIR=${PKG_SYSCONFDIR}/zm
+OWN_DIRS_PERMS+= ${PKG_SYSCONFDIR}/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+OWN_DIRS_PERMS+= ${PKG_SYSCONFDIR}/zm/conf.d ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+# \todo We prepare a webroot, even without the apache option.
ZM_HTTPD_ROOT= share/zoneminder/htdocs
+CMAKE_CONFIGURE_ARGS+= -DZM_WEBDIR=${PREFIX}/${ZM_HTTPD_ROOT:Q}
PLIST_SUBST+= ZM_HTTPD_ROOT=${ZM_HTTPD_ROOT:Q}
PRINT_PLIST_AWK+= { gsub(/${ZM_HTTPD_ROOT:S|/|\\/|g}/, "$${ZM_HTTPD_ROOT}") }
OWN_DIRS+= ${ZM_HTTPD_ROOT:Q}
+INSTALLATION_DIRS+= share/zoneminder ${ZM_HTTPD_ROOT}
ZM_HTTPD_CGIBIN= libexec/zoneminder/cgi-bin
+CMAKE_CONFIGURE_ARGS+= -DZM_CGIDIR=${PREFIX}/${ZM_HTTPD_CGIBIN:Q}
PLIST_SUBST+= ZM_HTTPD_CGIBIN=${ZM_HTTPD_CGIBIN:Q}
PRINT_PLIST_AWK+= { gsub(/${ZM_HTTPD_CGIBIN:S|/|\\/|g}/, "$${ZM_HTTPD_CGIBIN}") }
BUILD_DEFS+= ZM_HTTPD_CGIBIN
OWN_DIRS+= ${ZM_HTTPD_CGIBIN:Q}
-
-INSTALLATION_DIRS+= share/zoneminder ${ZM_HTTPD_ROOT}
INSTALLATION_DIRS+= libexec/zoneminder ${ZM_HTTPD_CGIBIN}
BUILD_DEFS+= VARBASE
-CONFIGURE_ARGS+= --with-webdir=${PREFIX}/${ZM_HTTPD_ROOT:Q}
-CMAKE_CONFIGURE_ARGS+= -DZM_WEBDIR=${PREFIX}/${ZM_HTTPD_ROOT:Q}
-CONFIGURE_ARGS+= --with-cgidir=${PREFIX}/${ZM_HTTPD_CGIBIN:Q}
-CMAKE_CONFIGURE_ARGS+= -DZM_CGIDIR=${PREFIX}/${ZM_HTTPD_CGIBIN:Q}
-CONFIGURE_ARGS+= --with-mysql=${BUILDLINK_PREFIX.mysql-client}
-CONFIGURE_ARGS+= --localstatedir=${VARBASE}
CMAKE_CONFIGURE_ARGS+= -DZM_RUNDIR=${VARBASE}/run/zm
+# \todo Consider a way to clean up on de-install as anything left
+# should just be removed.
+OWN_DIRS_PERMS+= ${VARBASE}/run/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+
+# NB: Startup script must create /var/run/zm.
CMAKE_CONFIGURE_ARGS+= -DZM_SOCKDIR=${VARBASE}/run/zm
+# Choose /var/tmp for now. \todo Revisit.
CMAKE_CONFIGURE_ARGS+= -DZM_TMPDIR=${VARBASE}/tmp/zm
+OWN_DIRS_PERMS+= ${VARBASE}/tmp/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
CMAKE_CONFIGURE_ARGS+= -DZM_LOGDIR=${VARBASE}/log/zm
+OWN_DIRS_PERMS+= ${VARBASE}/log/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+
+# \todo Define this per-OS; /var/shm is for NetBSD
+ZM_SHM= /var/shm
+CMAKE_CONFIGURE_ARGS+= -DZM_PATH_MAP=${ZM_SHM}
+
+# Cache directory is for js files to be served. For now, use
+# /var/cache/zoneminder. \todo Consider /tmp/zm instead.
+ZM_CACHE= ${VARBASE}/cache/zoneminder
+CMAKE_CONFIGURE_ARGS+= -DZM_CACHEDIR=${ZM_CACHE}
+OWN_DIRS_PERMS+= ${ZM_CACHE} ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+
+# Storage of events; this should persist and is hence in /var/db.
+# \todo Understand how and why /images is used.
+ZM_CONTENT= ${VARBASE}/db/zoneminder
+CMAKE_CONFIGURE_ARGS+= -DZM_CONTENTDIR=${ZM_CONTENT}
+OWN_DIRS_PERMS+= ${ZM_CONTENT} ${REAL_ROOT_USER} ${APACHE_GROUP} 775
+CMAKE_CONFIGURE_ARGS+= -DZM_DIR_EVENTS=${ZM_CONTENT}/events
+OWN_DIRS_PERMS+= ${ZM_CONTENT}/events ${APACHE_USER} ${APACHE_GROUP} 775
+CMAKE_CONFIGURE_ARGS+= -DZM_DIR_IMAGES=${ZM_CONTENT}/images
+OWN_DIRS_PERMS+= ${ZM_CONTENT}/images ${APACHE_USER} ${APACHE_GROUP} 775
-# PolicyKit doesn't actually seem to be necessary. This hack disables
-# configure's hunt for PolicyKit, but has no other apparent ill effects.
-# cmake needs an almost identical hack - though resorting to patching might
-# be safer.
-CONFIGURE_ENV+= POLKIT_CFLAGS=" " POLKIT_LIBS=" "
-CMAKE_CONFIGURE_ARGS+= -DPOLKIT_LIBRARIES=" " -DPOLKIT_INCLUDE_DIR=" "
+## Dependencies other than perl and php.
PTHREAD_AUTO_VARS= yes
.include "../../mk/pthread.buildlink3.mk"
-# This should probably be ffmpeg4 at least. Defer until up-to-date.
-.include "../../multimedia/ffmpeg2/buildlink3.mk"
-CONFIGURE_ARGS+= --with-ffmpeg=${BUILDLINK_PREFIX.ffmpeg2}
-CONFIGURE_ENV+= PATH_FFMPEG=${BUILDLINK_PREFIX.ffmpeg2}/bin/ffmpeg2
-CONFIGURE_ENV+= OPT_FFMPEG=yes
-
+.include "../../multimedia/ffmpeg6/buildlink3.mk"
.if ${OPSYS} == "Darwin"
SOEXT= dylib
.else
SOEXT= so
.endif
-
-.for lib in AVFORMAT AVCODEC AVDEVICE AVUTIL SWSCALE
-CMAKE_CONFIGURE_ARGS+= -D${lib}_INCLUDE_DIR=${BUILDLINK_PREFIX.ffmpeg2}/include/ffmpeg2
-CMAKE_CONFIGURE_ARGS+= -D${lib}_LIBRARIES=${BUILDLINK_PREFIX.ffmpeg2}/lib/ffmpeg2/lib${lib:tl}.${SOEXT}
+.for lib in AVFORMAT AVCODEC AVDEVICE AVUTIL SWSCALE SWRESAMPLE
+CMAKE_CONFIGURE_ARGS+= -D${lib}_INCLUDE_DIR=${BUILDLINK_PREFIX.ffmpeg6}/include/ffmpeg6
+CMAKE_CONFIGURE_ARGS+= -D${lib}_LIBRARIES=${BUILDLINK_PREFIX.ffmpeg6}/lib/ffmpeg6/lib${lib:tl}.${SOEXT}
.endfor
-# The backtrace requires Linux's unportable <execinfo.h> header.
-CONFIGURE_ARGS+= --enable-crashtrace=no
-
-# Need Perl Sys::Mmap module for (default) mmap support.
-CONFIGURE_ARGS+= --enable-mmap=no
-
-# This is somewhat awkward. ffmpeg's libavformat/avformat.h requires
-# constant macros from stdint.h, but these are only defined under C++ if
-# __STDC_CONSTANT_MACROS is requested, so we have to do that on behalf
-# of ffmpeg. Failure to do so causes configure time failures, and
-# build failures complaining about UINT64_C not being defined.
-CFLAGS+= -D__STDC_CONSTANT_MACROS
-
-# Since MySQL uses openssl, use the same library instead of defaulting to
-# gnutls.
-CONFIGURE_ENV+= ZM_SSL_LIB=openssl
+# \todo Revisit this and see if there is a better way.
+# MySQL uses openssl. Force zoneminder not to choose otherwise by
+# finding libraries that are present but not buildlinked.
CMAKE_CONFIGURE_ARGS+= -DGNUTLS_LIBRARIES=""
-
-# Make sure cmake doesn't think libgcrypt is available (We have OpenSSL)
CMAKE_CONFIGURE_ARGS+= -DGCRYPT_LIBRARIES=""
-# Control where run-time state (PID file and sockets) get stored.
-# Default is "/var/run/zm", but we want to conform to VARBASE.
-CONFIGURE_ENV+= ZM_RUNDIR=${VARBASE}/run/zm
-CONFIGURE_ENV+= ZM_SOCKDIR=${VARBASE}/run/zm
-
-#
# Darwin does have sendfile(), but the API differs from ZoneMinder's
# expectation.
-#
-CONFIGURE_ARGS.Darwin+= ac_cv_func_sendfile=no ac_cv_header_sys_sendfile_h=no
+# \todo Convert to cmake.
+# CONFIGURE_ARGS.Darwin+= ac_cv_func_sendfile=no ac_cv_header_sys_sendfile_h=no
-.if !empty(PKG_OPTIONS:Mapache)
-.include "../../mk/apache.mk"
+# \todo Depend on execinfo, because cmake looks for it.
+
+## PERL
+
+PERL5_REQD+= 5.6.0
+
+# zoneminder's build system will build modules, and there is far more
+# than perl, so tell the perl module code not to take over the build.
+PERL5_CONFIGURE= no
+.include "../../lang/perl5/module.mk"
+# Override perl detection so proper perl path is in installed binaries.
+CMAKE_CONFIGURE_ARGS+= -DPERL_EXECUTABLE=${PREFIX}/bin/perl
+
+DEPENDS+= p5-Archive-Zip-[0-9]*:../../archivers/p5-Archive-Zip
+DEPENDS+= p5-Device-SerialPort-[0-9]*:../../comms/p5-Device-SerialPort
+DEPENDS+= p5-DBD-mysql-[0-9]*:../../databases/p5-DBD-mysql
+DEPENDS+= p5-Class-Std-[0-9]*:../../devel/p5-Class-Std
+DEPENDS+= p5-Class-Std-Fast-[0-9]*:../../devel/p5-Class-Std-Fast
+DEPENDS+= p5-Data-Dump-[0-9]*:../../devel/p5-Data-Dump
+DEPENDS+= p5-Data-Entropy-[0-9]*:../../devel/p5-Data-Entropy
+DEPENDS+= p5-Data-Float-[0-9]*:../../devel/p5-Data-Float
+DEPENDS+= p5-Data-UUID-[0-9]*:../../devel/p5-Data-UUID
+DEPENDS+= p5-Date-Manip-[0-9]*:../../devel/p5-Date-Manip
+DEPENDS+= p5-File-Slurp-[0-9]*:../../devel/p5-File-Slurp
+DEPENDS+= p5-PHP-Serialization-[0-9]*:../../devel/p5-PHP-Serialization
+DEPENDS+= p5-Sys-Mmap-[0-9]*:../../devel/p5-Sys-Mmap
+DEPENDS+= p5-MIME-Lite-[0-9]*:../../mail/p5-MIME-Lite
+DEPENDS+= p5-MIME-tools-[0-9]*:../../mail/p5-MIME-tools
+DEPENDS+= p5-IO-Socket-Multicast-[0-9]*:../../net/p5-IO-Socket-Multicast
+DEPENDS+= p5-Net-SFTP-Foreign-[0-9]*:../../net/p5-Net-SFTP-Foreign
+DEPENDS+= p5-SOAP-WSDL-[0-9]*:../../net/p5-SOAP-WSDL
+DEPENDS+= p5-Crypt-Eksblowfish-[0-9]*:../../security/p5-Crypt-Eksblowfish
+DEPENDS+= p5-Sys-MemInfo-[0-9]*:../../sysutils/p5-Sys-MemInfo
+DEPENDS+= p5-XML-Parser-[0-9]*:../../textproc/p5-XML-Parser
+DEPENDS+= p5-Number-Bytes-Human-[0-9]*:../../textproc/p5-Number-Bytes-Human
+DEPENDS+= p5-libwww-[0-9]*:../../www/p5-libwww
+
+# A large subset of perl scripts set PATH explicitly and need to patched.
+# See "PATH FIXUPS" below.
+ZM_PERL_PATH= scripts/zmaudit.pl.in
+ZM_PERL_PATH+= scripts/zmcamtool.pl.in
+ZM_PERL_PATH+= scripts/zmcontrol.pl.in
+ZM_PERL_PATH+= scripts/zmdc.pl.in
+ZM_PERL_PATH+= scripts/zmfilter.pl.in
+ZM_PERL_PATH+= scripts/zmpkg.pl.in
+ZM_PERL_PATH+= scripts/zmstats.pl.in
+ZM_PERL_PATH+= scripts/zmtelemetry.pl.in
+ZM_PERL_PATH+= scripts/zmtrack.pl.in
+ZM_PERL_PATH+= scripts/zmtrigger.pl.in
+ZM_PERL_PATH+= scripts/zmupdate.pl.in
+ZM_PERL_PATH+= scripts/zmvideo.pl.in
+ZM_PERL_PATH+= scripts/zmwatch.pl.in
+ZM_PERL_PATH+= scripts/zmx10.pl.in
+
+## PHP
+
+# 1.36 (NetBSD/amd64) works with 74 81 82
+# 83: PHP Fatal error: Uncaught TypeError: flock(): Argument #1 ($stream) must be of type resource, false given in /usr/pkg/share/zoneminder/htdocs/includes/functions.php:2244
+# In 2022, upstream warned against 82.
+# php-apcu fails with 56, but upstream might support it.
+PHP_VERSIONS_INCOMPATIBLE= 56 83
+
+.include "../../lang/php/phpversion.mk"
+DEPENDS+= ${PHP_PKG_PREFIX}-pdo_mysql-[0-9]*:../../databases/php-pdo_mysql
+DEPENDS+= ${PHP_PKG_PREFIX}-gd-[0-9]*:../../graphics/php-gd
+DEPENDS+= ${PHP_PKG_PREFIX}-sockets-[0-9]*:../../net/php-sockets
+DEPENDS+= ${PHP_PKG_PREFIX}-intl-[0-9]*:../../textproc/php-intl
+DEPENDS+= ${PHP_PKG_PREFIX}-apcu-[0-9]*:../../www/php-apcu
+
+.include "../../lang/php/json.mk"
+
+## WEB
+
+# \todo We need to choose user/group, and somehow make this play well
+# with apache, nginx, and php_fpm. For now, assume that anyone using
+# nginx/fpm will align that to APACHE_*, and treat the larger question
+# as beyond scope.
PKG_USERS_VARS+= APACHE_USER
PKG_GROUPS_VARS+= APACHE_GROUP
BUILD_DEFS+= APACHE_USER APACHE_GROUP
-# This directory contains no useful state, so use MAKE_DIRS instead of
-# OWN_DIRS.
-MAKE_DIRS_PERMS+= ${VARBASE}/run/zm ${REAL_ROOT_USER} ${APACHE_GROUP} 775
-
-CONFIGURE_ARGS+= --with-webuser=${APACHE_USER}
CMAKE_CONFIGURE_ARGS+= -DZM_WEB_USER=${APACHE_USER}
-CONFIGURE_ARGS+= --with-webgroup=${APACHE_GROUP}
CMAKE_CONFIGURE_ARGS+= -DZM_WEB_GROUP=${APACHE_GROUP}
+CMAKE_CONFIGURE_ARGS+= -DZM_PATH_ZMS=zm/cgi-bin/nph-zms
-# If we're using Apache we're going to need PHP, and PHP extensions.
-.include "../../lang/php/phpversion.mk"
+.if !empty(PKG_OPTIONS:Mapache)
+.include "../../mk/apache.mk"
DEPENDS+= ${APACHE_PKG_PREFIX}-${PHP_PKG_PREFIX}-[0-9]*:../../www/ap-php
-DEPENDS+= ${PHP_PKG_PREFIX}-gd-[0-9]*:../../graphics/php-gd
-DEPENDS+= ${PHP_PKG_PREFIX}-pdo_mysql-[0-9]*:../../databases/php-pdo_mysql
-DEPENDS+= ${PHP_PKG_PREFIX}-sockets-[0-9]*:../../net/php-sockets
+.endif
+.if !empty(PKG_OPTIONS:Mnginx)
+# \todo Actually test this option.
+DEPENDS+= nginx-[0-9]*:../../www/nginx
+DEPENDS+= ${PHP_PKG_PREFIX}-fpm-[0-9]*:../../www/php-fpm
.endif
-# \todo Somehow, this permission setup still fails.
-# This directory contains state, so use OWN_DIRS instead of MAKE_DIRS.
-ZM_CACHE= ${VARBASE}/cache/zoneminder
-OWN_DIRS_PERMS+= ${ZM_CACHE} ${REAL_ROOT_USER} ${REAL_ROOT_GROUP} 755
-OWN_DIRS_PERMS+= ${ZM_CACHE}/temp ${REAL_ROOT_USER} ${APACHE_GROUP} 775
-OWN_DIRS_PERMS+= ${ZM_CACHE}/images ${REAL_ROOT_USER} ${APACHE_GROUP} 775
-OWN_DIRS_PERMS+= ${ZM_CACHE}/events ${REAL_ROOT_USER} ${APACHE_GROUP} 775
-CMAKE_CONFIGURE_ARGS+= -DZM_CONTENTDIR=${ZM_CACHE}
-
-# ZoneMinder scripts needing Perl $PATH patching AND interpreter patching
-ZM_REPLACE_PERL+= scripts/zmaudit.pl.in
-ZM_REPLACE_PERL+= scripts/zmcamtool.pl.in
-ZM_REPLACE_PERL+= scripts/zmcontrol.pl.in
-ZM_REPLACE_PERL+= scripts/zmdc.pl.in
-ZM_REPLACE_PERL+= scripts/zmfilter.pl.in
-ZM_REPLACE_PERL+= scripts/zmpkg.pl.in
-ZM_REPLACE_PERL+= scripts/zmtelemetry.pl.in
-ZM_REPLACE_PERL+= scripts/zmtrack.pl.in
-ZM_REPLACE_PERL+= scripts/zmtrigger.pl.in
-ZM_REPLACE_PERL+= scripts/zmupdate.pl.in
-ZM_REPLACE_PERL+= scripts/zmvideo.pl.in
-ZM_REPLACE_PERL+= scripts/zmwatch.pl.in
-ZM_REPLACE_PERL+= scripts/zmx10.pl.in
-
-# ZoneMinder scripts needing interpreter patching
-REPLACE_PERL+= ${ZM_REPLACE_PERL}
-REPLACE_PERL+= onvif/scripts/zmonvif-probe.pl
-REPLACE_PERL+= zmconfgen.pl.in
-
-#
-# The intention of zmsystemctl.pl is to use bin/pkexec to allow the
-# apache user to start and stop the ZoneMinder services on operating
-# systems using systemd and newer versions of Polkit than Pkgsrc
-# currently has.
-#
-# If the base OS doesn't use systemd (E.g. anything not Linux), this
-# file shouldn't be used anyway.
-#
-# In Pkgsrc we ignore the potentially absent pkexec interpreter in
-# this file. If the base OS uses systemd, it probably also has pkexec
-# in its base installation.
-#
-
-CHECK_INTERPRETER_SKIP+= bin/zmsystemctl.pl
-
-SUBST_CLASSES+= systemd-perl
-SUBST_MESSAGE.systemd-perl= Adjusting systemd pkexec perl.
-SUBST_STAGE.systemd-perl= pre-configure
-SUBST_FILES.systemd-perl= scripts/zmsystemctl.pl.in
-SUBST_SED.systemd-perl= -e 's|/usr/bin/perl|${PERL5}|g'
-
-SUBST_CLASSES+= dbpaths-path
-SUBST_MESSAGE.dbpaths-path= Adjusting default paths in configuration.
-SUBST_STAGE.dbpaths-path= pre-configure
-SUBST_FILES.dbpaths-path= db/zm_create.sql.in
-SUBST_SED.dbpaths-path= -e 's|/usr/local/bin/|${PREFIX}/bin/|g'
-SUBST_SED.dbpaths-path+= -e 's|/usr/bin|${PREFIX}/bin|g'
-SUBST_SED.dbpaths-path+= -e 's|/cgi-bin/nph-zms|/zm/cgi-bin/nph-zms|g'
-
-#
-# Required to find the 'mysql' client executable, and may also use 'sudo' if
-# installed.
-#
+## MYSQL
+
+# 1.36 works with mysql56 on NetBSD
+# 1.36 works with mariadb 11.2 on GNU/Linux
+# Likely, all versions in pkgsrc are ok.
+.include "../../mk/mysql.buildlink3.mk"
+
+## PATH FIXUPS
+
+# \todo Verify that this is truly no longer necessary with 1.36.
+# # Patch the db creation script for the cgi bin path.
+# SUBST_CLASSES+= dbpaths-path
+# SUBST_MESSAGE.dbpaths-path= Adjusting default paths in configuration.
+# SUBST_STAGE.dbpaths-path= pre-configure
+# SUBST_FILES.dbpaths-path= db/zm_create.sql.in
+# SUBST_SED.dbpaths-path+= -e 's|/cgi-bin/nph-zms|/zm/cgi-bin/nph-zms|g'
+
+# Remediate idiom in perl scripts to set PATH, by adding ${PREFIX}/bin.
+# \todo Some scripts use zmconf to get a PATH and perhaps a change
+# towards that should be filed upstream.
SUBST_CLASSES+= script-path
SUBST_MESSAGE.script-path= Adjusting paths in scripts.
SUBST_STAGE.script-path= pre-configure
-SUBST_FILES.script-path= ${ZM_REPLACE_PERL}
+SUBST_FILES.script-path= ${ZM_PERL_PATH}
SUBST_SED.script-path= -e "s|^\\([\$$]ENV{PATH} *= *'\\).*';\$$|\\1${PREFIX}/bin:/bin:/usr/bin';|g"
+# Substitute configured path in pkgsrc-provided apache config.
SUBST_CLASSES+= files
SUBST_STAGE.files= pre-configure
-SUBST_FILES.files= zoneminder.conf
+SUBST_FILES.files= httpd-zoneminder.conf
SUBST_SED.files= -e "s|@ZM_HTTPD_ROOT@|${PREFIX}/${ZM_HTTPD_ROOT}|g"
SUBST_SED.files+= -e "s|@ZM_HTTPD_CGIBIN@|${PREFIX}/${ZM_HTTPD_CGIBIN}|g"
-SUBST_MESSAGE.files= Fixing ZoneMinder configuration file for Apache.
+SUBST_MESSAGE.files= Setting paths in Apache configuration file.
+## INIT SCRIPTS
+
+# \todo This script appears Linuxy rather than written for
+# NetBSD/pkgsrc-rcd. Understand, and then adjust or replace.
PLIST_VARS+= rcd
.if ${INIT_SYSTEM} == "rc.d"
PLIST.rcd= yes
+# \todo Hold installation until validated
+#RCD_SCRIPTS+= zoneminder
.endif
PRINT_PLIST_AWK+= { gsub(/^.+\/examples\/rc.d/, "$${PLIST.rcd}&"); }
-.if ${OPSYS} == "NetBSD" && exists(/usr/include/execinfo.h)
-LIBS+= -lexecinfo
-.endif
+## PKGSRC PHASE FIXUPS
+# Pretend our apache config is part of the distribution.
# Avoid conflict with C++20 <version> - intertwined with patch-CMakeLists.txt
post-extract:
- ${CP} ${FILESDIR}/zoneminder.conf ${WRKSRC}/zoneminder.conf
+ ${CP} ${FILESDIR}/httpd-zoneminder.conf ${WRKSRC}/httpd-zoneminder.conf
${MV} ${WRKSRC}/version ${WRKSRC}/version.txt
# Omit patchfiles from PLIST if present. The pre-configure step below
# should prevent this from being necessary.
PRINT_PLIST_AWK+= /.orig$$/ { next; }
-# After patching remove any .orig files because (for patched .pm files) they
-# end up going through the installation process.
+# After patching, remove .orig versions of .pm, because they are
+# wrongly installed due to wildcard rules.
pre-configure:
${FIND} ${WRKSRC} -name "*.pm*.orig" -type f | ${XARGS} ${RM} -f
-#
-# Arrange for module.mk to perform its magic here on top of the non-Perl
-# build tasks.
-#
-# Set ZM_PERL_MM_PARMS in order to inhibit NO_PACKLIST
-#
-PERL5_REQD+= 5.6.0
-#PERL5_CONFIGURE= no
-#PERL5_CONFIGURE_DIRS= ${WRKSRC}/scripts/ZoneMinder
-#PERL5_CONFIGURE_DIRS+= ${WRKSRC}/onvif/proxy
-#PERL5_CONFIGURE_DIRS+= ${WRKSRC}/onvif/modules
-#PERL5_PACKLIST= auto/ZoneMinder/.packlist
-#PERL5_PACKLIST+= auto/ONVIF/.packlist
-#CMAKE_CONFIGURE_ARGS+= -DZM_PERL_MM_PARMS="INSTALLDIRS=vendor"
-#.include "../../lang/perl5/module.mk"
-
-#post-configure: perl5-configure
-
EGDIR= share/examples/${PKGBASE}
DOCDIR= share/doc/${PKGBASE}
INSTALLATION_DIRS+= ${EGDIR} ${EGDIR}/config ${EGDIR}/apache
-CONF_FILES+= ${PREFIX}/${EGDIR}/config/zm.conf ${PKG_SYSCONFDIR}/zm.conf
+CONF_FILES+= ${PREFIX}/${EGDIR}/config/zm.conf ${PKG_SYSCONFDIR}/zm/zm.conf
INSTALLATION_DIRS+= bin share/examples/rc.d share/zoneminder/db
INSTALLATION_DIRS+= ${DOCDIR}
post-install:
- ${INSTALL_DATA} ${WRKSRC}/zoneminder.conf ${DESTDIR}${PREFIX}/${EGDIR}/apache/zoneminder.conf
+ ${INSTALL_DATA} ${WRKSRC}/httpd-zoneminder.conf ${DESTDIR}${PREFIX}/${EGDIR}/apache/httpd-zoneminder.conf
${INSTALL_DATA} ${WRKSRC}/zm.conf ${DESTDIR}${PREFIX}/${EGDIR}/config/zm.conf
.if ${INIT_SYSTEM} == "rc.d"
${INSTALL_SCRIPT} ${WRKSRC}/scripts/zm ${DESTDIR}${PREFIX}/share/examples/rc.d/zoneminder
.endif
${INSTALL_DATA} ${WRKSRC}/db/*.sql ${DESTDIR}${PREFIX}/share/zoneminder/db/
- rmdir ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/events || ${TRUE}
- rmdir ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/images || ${TRUE}
- ${LN} -s ${ZM_CACHE}/temp ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/temp
- ${LN} -s ${ZM_CACHE}/events ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/events
- ${LN} -s ${ZM_CACHE}/images ${DESTDIR}${PREFIX}/${ZM_HTTPD_ROOT:Q}/images
${INSTALL_DATA} files/README-pkgsrc.md ${DESTDIR}${PREFIX}/${DOCDIR}
.include "../../mk/dlopen.buildlink3.mk"
.include "../../mk/jpeg.buildlink3.mk"
-.include "../../mk/mysql.buildlink3.mk"
.include "../../mk/pthread.buildlink3.mk"
.include "../../archivers/bzip2/buildlink3.mk"
+# \todo Consider graphics/libv4l.
.include "../../devel/glib2/buildlink3.mk"
.include "../../devel/pcre/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
+.include "../../multimedia/mp4v2/buildlink3.mk"
.include "../../security/openssl/buildlink3.mk"
.include "../../www/curl/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/security/zoneminder/PLIST
diff -u pkgsrc/security/zoneminder/PLIST:1.8 pkgsrc/security/zoneminder/PLIST:1.9
--- pkgsrc/security/zoneminder/PLIST:1.8 Tue Sep 27 01:22:09 2022
+++ pkgsrc/security/zoneminder/PLIST Sun Dec 1 13:49:47 2024
@@ -1,15 +1,16 @@
-@comment $NetBSD: PLIST,v 1.8 2022/09/27 01:22:09 gdt Exp $
-bin/zma
+@comment $NetBSD: PLIST,v 1.9 2024/12/01 13:49:47 gdt Exp $
+bin/zm_rtsp_server
bin/zmaudit.pl
bin/zmc
bin/zmcamtool.pl
bin/zmcontrol.pl
bin/zmdc.pl
-bin/zmf
bin/zmfilter.pl
bin/zmonvif-probe.pl
+bin/zmonvif-trigger.pl
bin/zmpkg.pl
-bin/zmsystemctl.pl
+bin/zmrecover.pl
+bin/zmstats.pl
bin/zmtelemetry.pl
bin/zmtrack.pl
bin/zmtrigger.pl
@@ -2838,6 +2839,66 @@ ${PERL5_SUB_INSTALLVENDORLIB}/WSDiscover
${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery10/Types/ServiceNameType.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery10/Types/SigType.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery10/Types/UriListType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Attributes/Id.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Attributes/IsReferenceParameter.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Action.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/AppSequence.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Bye.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/EndpointReference.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/FaultTo.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/From.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Hello.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/MessageID.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Metadata.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/MetadataVersion.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Probe.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/ProbeMatches.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/ProblemAction.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/ProblemHeaderQName.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/ProblemIRI.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/ReferenceParameters.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/RelatesTo.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/ReplyTo.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Resolve.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/ResolveMatches.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/RetryAfter.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Scopes.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Security.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Sig.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/SupportedMatchingRules.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/To.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/Types.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Elements/XAddrs.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Interfaces/WSDiscovery/WSDiscoveryPort.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Typemaps/WSDiscovery.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/AppSequenceType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/AttributedQNameType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/AttributedURIType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/AttributedUnsignedLongType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ByeType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/EndpointReferenceType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/FaultCodeOpenType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/FaultCodeType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/FaultCodesOpenEnumType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/FaultCodesType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/HelloType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/MetadataType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ProbeMatchType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ProbeMatchesType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ProbeType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ProblemActionType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/QNameListType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ReferenceParametersType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/RelatesToType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/RelationshipType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/RelationshipTypeOpenEnum.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ResolveMatchType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ResolveMatchesType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ResolveType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/ScopesType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/SecurityType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/SigType.pm
+${PERL5_SUB_INSTALLVENDORLIB}/WSDiscovery11/Types/UriListType.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Attributes/IsReferenceParameter.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Attributes/base.pm
${PERL5_SUB_INSTALLVENDORLIB}/WSNotification/Attributes/id.pm
@@ -2977,27 +3038,40 @@ ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/ConfigData.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/3S.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Amcrest_HTTP.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/AxisV2.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/DCS3415.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/DCS5020L.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Dahua.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/DericamP2.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8608W_Y2k.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8620_Y2k.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8908W.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI8918W.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI9821W_Y2k.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FI9831W.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FOSCAMR2C.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Floureon.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/FoscamCGI.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/HikVision.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/IPCAMIOS.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/IPCC7210W.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Keekoon.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/LoftekSentinel.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/M8640.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/MaginonIPC.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Ncs370.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Netcat.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PSIA.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PanasonicIP.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PelcoD.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/PelcoP.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Reolink.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/SPP1802SWPTZ.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/SkyIPCam7xx.pm
-${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/TVIP862.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Sony.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Toshiba_IK_WB11A.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Trendnet.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Visca.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Vivotek_ePTZ.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/Wanscam.pm
@@ -3006,13 +3080,20 @@ ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Control/onvif.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Database.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Event.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Event_Summary.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Filter.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Frame.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/General.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Logger.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory/Mapped.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Memory/Shared.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Monitor.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Monitor_Status.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/ONVIF.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Object.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Server.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Storage.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel/File.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel/Handle.pm
@@ -3022,6 +3103,8 @@ ${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Channel/Unix.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Connection.pm
${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Trigger/Connection/Example.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/User.pm
+${PERL5_SUB_INSTALLVENDORLIB}/ZoneMinder/Zone.pm
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::Analytics::Attributes::actor.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::Analytics::Attributes::contentType.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ONVIF::Analytics::Attributes::encodingStyle.3
@@ -5835,6 +5918,66 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDisc
${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery10::Types::ServiceNameType.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery10::Types::SigType.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery10::Types::UriListType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Attributes::Id.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Attributes::IsReferenceParameter.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Action.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::AppSequence.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Bye.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::EndpointReference.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::FaultTo.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::From.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Hello.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::MessageID.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Metadata.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::MetadataVersion.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Probe.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::ProbeMatches.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::ProblemAction.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::ProblemHeaderQName.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::ProblemIRI.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::ReferenceParameters.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::RelatesTo.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::ReplyTo.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Resolve.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::ResolveMatches.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::RetryAfter.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Scopes.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Security.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Sig.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::SupportedMatchingRules.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::To.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::Types.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Elements::XAddrs.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Interfaces::WSDiscovery::WSDiscoveryPort.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Typemaps::WSDiscovery.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::AppSequenceType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::AttributedQNameType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::AttributedURIType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::AttributedUnsignedLongType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ByeType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::EndpointReferenceType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::FaultCodeOpenType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::FaultCodeType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::FaultCodesOpenEnumType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::FaultCodesType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::HelloType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::MetadataType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ProbeMatchType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ProbeMatchesType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ProbeType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ProblemActionType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::QNameListType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ReferenceParametersType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::RelatesToType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::RelationshipType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::RelationshipTypeOpenEnum.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ResolveMatchType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ResolveMatchesType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ResolveType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::ScopesType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::SecurityType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::SigType.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSDiscovery11::Types::UriListType.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSNotification::Attributes::IsReferenceParameter.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSNotification::Attributes::base.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/WSNotification::Attributes::id.3
@@ -5973,23 +6116,32 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::ConfigData.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::3S.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Amcrest_HTTP.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::AxisV2.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::DCS3415.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::DCS5020L.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Dahua.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8608W_Y2k.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8620_Y2k.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8908W.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI8918W.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI9821W_Y2k.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FI9831W.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::FOSCAMR2C.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Floureon.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::IPCC7210W.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::M8640.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::MaginonIPC.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Ncs370.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PSIA.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PanasonicIP.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PelcoD.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::PelcoP.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::SPP1802SWPTZ.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::SkyIPCam7xx.3
-${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::TVIP862.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Sony.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Toshiba_IK_WB11A.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Trendnet.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Visca.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Vivotek_ePTZ.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::Wanscam.3
@@ -5997,11 +6149,18 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Control::mjpgStreamer.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Database.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Event.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Event_Summary.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Filter.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Frame.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::General.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Logger.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Memory.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Monitor.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Monitor_Status.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::ONVIF.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Object.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Server.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Storage.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel::File.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel::Handle.3
@@ -6011,31 +6170,37 @@ ${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMi
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Channel::Unix.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Connection.3
${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Trigger::Connection::Example.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::User.3
+${PERL5_SUB_INSTALLVENDORMAN3DIR}/ZoneMinder::Zone.3
${ZM_HTTPD_CGIBIN}/nph-zms
${ZM_HTTPD_CGIBIN}/zms
-man/man8/zoneminder-zma.8
-man/man8/zoneminder-zmaudit.pl.8
-man/man8/zoneminder-zmc.8
-man/man8/zoneminder-zmcamtool.pl.8
-man/man8/zoneminder-zmcontrol.pl.8
-man/man8/zoneminder-zmdc.pl.8
-man/man8/zoneminder-zmf.8
-man/man8/zoneminder-zmfilter.pl.8
-man/man8/zoneminder-zmpkg.pl.8
-man/man8/zoneminder-zmsystemctl.pl.8
-man/man8/zoneminder-zmtelemetry.pl.8
-man/man8/zoneminder-zmtrack.pl.8
-man/man8/zoneminder-zmtrigger.pl.8
-man/man8/zoneminder-zmu.8
-man/man8/zoneminder-zmupdate.pl.8
-man/man8/zoneminder-zmvideo.pl.8
-man/man8/zoneminder-zmwatch.pl.8
-man/man8/zoneminder-zmx10.pl.8
+man/man8/zmaudit.pl.8
+man/man8/zmc.8
+man/man8/zmcamtool.pl.8
+man/man8/zmcontrol.pl.8
+man/man8/zmdc.pl.8
+man/man8/zmfilter.pl.8
+man/man8/zmonvif-probe.pl.8
+man/man8/zmonvif-trigger.pl.8
+man/man8/zmpkg.pl.8
+man/man8/zmrecover.pl.8
+man/man8/zmstats.pl.8
+man/man8/zmsystemctl.pl.8
+man/man8/zmtelemetry.pl.8
+man/man8/zmtrack.pl.8
+man/man8/zmtrigger.pl.8
+man/man8/zmu.8
+man/man8/zmupdate.pl.8
+man/man8/zmvideo.pl.8
+man/man8/zmwatch.pl.8
+man/man8/zmx10.pl.8
+share/applications/zoneminder.desktop
share/doc/zoneminder/README-pkgsrc.md
${PLIST.rcd}share/examples/rc.d/zoneminder
-share/examples/zoneminder/apache/zoneminder.conf
+share/examples/zoneminder/apache/httpd-zoneminder.conf
share/examples/zoneminder/config/zm.conf
share/zoneminder/db/test.monitor.sql
+share/zoneminder/db/triggers.sql
share/zoneminder/db/zm_create.sql
share/zoneminder/db/zm_update-0.0.1.sql
share/zoneminder/db/zm_update-0.9.10.sql
@@ -6083,7 +6248,6 @@ share/zoneminder/db/zm_update-1.26.2.sql
share/zoneminder/db/zm_update-1.26.3.sql
share/zoneminder/db/zm_update-1.26.5.sql
share/zoneminder/db/zm_update-1.27.0.sql
-share/zoneminder/db/zm_update-1.27.99.0.sql
share/zoneminder/db/zm_update-1.28.0.sql
share/zoneminder/db/zm_update-1.28.1.sql
share/zoneminder/db/zm_update-1.28.100.sql
@@ -6099,26 +6263,165 @@ share/zoneminder/db/zm_update-1.28.109.s
share/zoneminder/db/zm_update-1.28.110.sql
share/zoneminder/db/zm_update-1.28.99.sql
share/zoneminder/db/zm_update-1.29.0.sql
-share/zoneminder/db/zm_update-1.29.1.sql
share/zoneminder/db/zm_update-1.30.0.sql
share/zoneminder/db/zm_update-1.30.1.sql
share/zoneminder/db/zm_update-1.30.2.sql
share/zoneminder/db/zm_update-1.30.3.sql
share/zoneminder/db/zm_update-1.30.4.sql
+share/zoneminder/db/zm_update-1.31.0.sql
+share/zoneminder/db/zm_update-1.31.1.sql
+share/zoneminder/db/zm_update-1.31.10.sql
+share/zoneminder/db/zm_update-1.31.11.sql
+share/zoneminder/db/zm_update-1.31.12.sql
+share/zoneminder/db/zm_update-1.31.13.sql
+share/zoneminder/db/zm_update-1.31.14.sql
+share/zoneminder/db/zm_update-1.31.15.sql
+share/zoneminder/db/zm_update-1.31.16.sql
+share/zoneminder/db/zm_update-1.31.17.sql
+share/zoneminder/db/zm_update-1.31.18.sql
+share/zoneminder/db/zm_update-1.31.19.sql
+share/zoneminder/db/zm_update-1.31.2.sql
+share/zoneminder/db/zm_update-1.31.20.sql
+share/zoneminder/db/zm_update-1.31.21.sql
+share/zoneminder/db/zm_update-1.31.22.sql
+share/zoneminder/db/zm_update-1.31.23.sql
+share/zoneminder/db/zm_update-1.31.24.sql
+share/zoneminder/db/zm_update-1.31.25.sql
+share/zoneminder/db/zm_update-1.31.26.sql
+share/zoneminder/db/zm_update-1.31.27.sql
+share/zoneminder/db/zm_update-1.31.28.sql
+share/zoneminder/db/zm_update-1.31.29.sql
+share/zoneminder/db/zm_update-1.31.3.sql
+share/zoneminder/db/zm_update-1.31.30.sql
+share/zoneminder/db/zm_update-1.31.31.sql
+share/zoneminder/db/zm_update-1.31.32.sql
+share/zoneminder/db/zm_update-1.31.33.sql
+share/zoneminder/db/zm_update-1.31.34.sql
+share/zoneminder/db/zm_update-1.31.35.sql
+share/zoneminder/db/zm_update-1.31.36.sql
+share/zoneminder/db/zm_update-1.31.37.sql
+share/zoneminder/db/zm_update-1.31.38.sql
+share/zoneminder/db/zm_update-1.31.39.sql
+share/zoneminder/db/zm_update-1.31.4.sql
+share/zoneminder/db/zm_update-1.31.40.sql
+share/zoneminder/db/zm_update-1.31.41.sql
+share/zoneminder/db/zm_update-1.31.42.sql
+share/zoneminder/db/zm_update-1.31.43.sql
+share/zoneminder/db/zm_update-1.31.44.sql
+share/zoneminder/db/zm_update-1.31.45.sql
+share/zoneminder/db/zm_update-1.31.46.sql
+share/zoneminder/db/zm_update-1.31.47.sql
+share/zoneminder/db/zm_update-1.31.5.sql
+share/zoneminder/db/zm_update-1.31.6.sql
+share/zoneminder/db/zm_update-1.31.7.sql
+share/zoneminder/db/zm_update-1.31.8.sql
+share/zoneminder/db/zm_update-1.31.9.sql
+share/zoneminder/db/zm_update-1.32.0.sql
+share/zoneminder/db/zm_update-1.32.1.sql
+share/zoneminder/db/zm_update-1.32.2.sql
+share/zoneminder/db/zm_update-1.32.3.sql
+share/zoneminder/db/zm_update-1.33.0.sql
+share/zoneminder/db/zm_update-1.33.1.sql
+share/zoneminder/db/zm_update-1.33.10.sql
+share/zoneminder/db/zm_update-1.33.11.sql
+share/zoneminder/db/zm_update-1.33.12.sql
+share/zoneminder/db/zm_update-1.33.13.sql
+share/zoneminder/db/zm_update-1.33.14.sql
+share/zoneminder/db/zm_update-1.33.15.sql
+share/zoneminder/db/zm_update-1.33.16.sql
+share/zoneminder/db/zm_update-1.33.2.sql
+share/zoneminder/db/zm_update-1.33.3.sql
+share/zoneminder/db/zm_update-1.33.4.sql
+share/zoneminder/db/zm_update-1.33.5.sql
+share/zoneminder/db/zm_update-1.33.6.sql
+share/zoneminder/db/zm_update-1.33.7.sql
+share/zoneminder/db/zm_update-1.33.8.sql
+share/zoneminder/db/zm_update-1.33.9.sql
+share/zoneminder/db/zm_update-1.34.0.sql
+share/zoneminder/db/zm_update-1.34.1.sql
+share/zoneminder/db/zm_update-1.34.2.sql
+share/zoneminder/db/zm_update-1.34.20.sql
+share/zoneminder/db/zm_update-1.34.3.sql
+share/zoneminder/db/zm_update-1.34.4.sql
+share/zoneminder/db/zm_update-1.34.5.sql
+share/zoneminder/db/zm_update-1.34.6.sql
+share/zoneminder/db/zm_update-1.34.7.sql
+share/zoneminder/db/zm_update-1.35.0.sql
+share/zoneminder/db/zm_update-1.35.1.sql
+share/zoneminder/db/zm_update-1.35.10.sql
+share/zoneminder/db/zm_update-1.35.11.sql
+share/zoneminder/db/zm_update-1.35.12.sql
+share/zoneminder/db/zm_update-1.35.13.sql
+share/zoneminder/db/zm_update-1.35.14.sql
+share/zoneminder/db/zm_update-1.35.15.sql
+share/zoneminder/db/zm_update-1.35.16.sql
+share/zoneminder/db/zm_update-1.35.17.sql
+share/zoneminder/db/zm_update-1.35.18.sql
+share/zoneminder/db/zm_update-1.35.19.sql
+share/zoneminder/db/zm_update-1.35.2.sql
+share/zoneminder/db/zm_update-1.35.20.sql
+share/zoneminder/db/zm_update-1.35.21.sql
+share/zoneminder/db/zm_update-1.35.22.sql
+share/zoneminder/db/zm_update-1.35.23.sql
+share/zoneminder/db/zm_update-1.35.24.sql
+share/zoneminder/db/zm_update-1.35.25.sql
+share/zoneminder/db/zm_update-1.35.26.sql
+share/zoneminder/db/zm_update-1.35.27.sql
+share/zoneminder/db/zm_update-1.35.28.sql
+share/zoneminder/db/zm_update-1.35.3.sql
+share/zoneminder/db/zm_update-1.35.4.sql
+share/zoneminder/db/zm_update-1.35.5.sql
+share/zoneminder/db/zm_update-1.35.6.sql
+share/zoneminder/db/zm_update-1.35.7.sql
+share/zoneminder/db/zm_update-1.35.8.sql
+share/zoneminder/db/zm_update-1.35.9.sql
+share/zoneminder/db/zm_update-1.36.16.sql
+share/zoneminder/db/zm_update-1.36.18.sql
+share/zoneminder/db/zm_update-1.36.6.sql
+share/zoneminder/db/zm_update-1.36.9.sql
+share/zoneminder/fonts/default.zmfnt
+${ZM_HTTPD_ROOT}/ajax/add_monitors.php
${ZM_HTTPD_ROOT}/ajax/alarm.php
+${ZM_HTTPD_ROOT}/ajax/console.php
${ZM_HTTPD_ROOT}/ajax/control.php
+${ZM_HTTPD_ROOT}/ajax/controlcaps.php
+${ZM_HTTPD_ROOT}/ajax/device.php
+${ZM_HTTPD_ROOT}/ajax/devices.php
${ZM_HTTPD_ROOT}/ajax/event.php
+${ZM_HTTPD_ROOT}/ajax/events.php
+${ZM_HTTPD_ROOT}/ajax/frames.php
${ZM_HTTPD_ROOT}/ajax/log.php
+${ZM_HTTPD_ROOT}/ajax/modal.php
+${ZM_HTTPD_ROOT}/ajax/modals/controlpreset.php
+${ZM_HTTPD_ROOT}/ajax/modals/delconfirm.php
+${ZM_HTTPD_ROOT}/ajax/modals/device.php
+${ZM_HTTPD_ROOT}/ajax/modals/donate.php
+${ZM_HTTPD_ROOT}/ajax/modals/download.php
+${ZM_HTTPD_ROOT}/ajax/modals/enoperm.php
+${ZM_HTTPD_ROOT}/ajax/modals/eventdetail.php
+${ZM_HTTPD_ROOT}/ajax/modals/eventrename.php
+${ZM_HTTPD_ROOT}/ajax/modals/filterdebug.php
+${ZM_HTTPD_ROOT}/ajax/modals/function.php
+${ZM_HTTPD_ROOT}/ajax/modals/group.php
+${ZM_HTTPD_ROOT}/ajax/modals/log_export.php
+${ZM_HTTPD_ROOT}/ajax/modals/logout.php
+${ZM_HTTPD_ROOT}/ajax/modals/objdetect.php
+${ZM_HTTPD_ROOT}/ajax/modals/optionhelp.php
+${ZM_HTTPD_ROOT}/ajax/modals/server.php
+${ZM_HTTPD_ROOT}/ajax/modals/settings.php
+${ZM_HTTPD_ROOT}/ajax/modals/shutdown.php
+${ZM_HTTPD_ROOT}/ajax/modals/state.php
+${ZM_HTTPD_ROOT}/ajax/modals/storage.php
+${ZM_HTTPD_ROOT}/ajax/shutdown.php
+${ZM_HTTPD_ROOT}/ajax/snapshots.php
+${ZM_HTTPD_ROOT}/ajax/stats.php
${ZM_HTTPD_ROOT}/ajax/status.php
${ZM_HTTPD_ROOT}/ajax/stream.php
+${ZM_HTTPD_ROOT}/ajax/watch.php
${ZM_HTTPD_ROOT}/ajax/zone.php
${ZM_HTTPD_ROOT}/api/.editorconfig
-${ZM_HTTPD_ROOT}/api/.gitattributes
-${ZM_HTTPD_ROOT}/api/.gitignore
-${ZM_HTTPD_ROOT}/api/.htaccess
${ZM_HTTPD_ROOT}/api/CONTRIBUTING.md
${ZM_HTTPD_ROOT}/api/README.md
-${ZM_HTTPD_ROOT}/api/app/.htaccess
${ZM_HTTPD_ROOT}/api/app/Config/Schema/db_acl.php
${ZM_HTTPD_ROOT}/api/app/Config/Schema/db_acl.sql
${ZM_HTTPD_ROOT}/api/app/Config/Schema/i18n.php
@@ -6147,27 +6450,37 @@ ${ZM_HTTPD_ROOT}/api/app/Controller/Conf
${ZM_HTTPD_ROOT}/api/app/Controller/ControlsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/EventsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/FramesController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/GroupsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/HostController.php
${ZM_HTTPD_ROOT}/api/app/Controller/LogsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/MonitorsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/PagesController.php
${ZM_HTTPD_ROOT}/api/app/Controller/ServersController.php
${ZM_HTTPD_ROOT}/api/app/Controller/StatesController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/StorageController.php
+${ZM_HTTPD_ROOT}/api/app/Controller/UsersController.php
${ZM_HTTPD_ROOT}/api/app/Controller/ZonePresetsController.php
${ZM_HTTPD_ROOT}/api/app/Controller/ZonesController.php
${ZM_HTTPD_ROOT}/api/app/Model/AppModel.php
${ZM_HTTPD_ROOT}/api/app/Model/Config.php
${ZM_HTTPD_ROOT}/api/app/Model/Control.php
${ZM_HTTPD_ROOT}/api/app/Model/Event.php
+${ZM_HTTPD_ROOT}/api/app/Model/Event_Summary.php
${ZM_HTTPD_ROOT}/api/app/Model/Frame.php
+${ZM_HTTPD_ROOT}/api/app/Model/Group.php
${ZM_HTTPD_ROOT}/api/app/Model/Host.php
${ZM_HTTPD_ROOT}/api/app/Model/Log.php
${ZM_HTTPD_ROOT}/api/app/Model/Monitor.php
+${ZM_HTTPD_ROOT}/api/app/Model/Monitor_Status.php
${ZM_HTTPD_ROOT}/api/app/Model/Server.php
${ZM_HTTPD_ROOT}/api/app/Model/State.php
+${ZM_HTTPD_ROOT}/api/app/Model/Storage.php
${ZM_HTTPD_ROOT}/api/app/Model/User.php
${ZM_HTTPD_ROOT}/api/app/Model/Zone.php
${ZM_HTTPD_ROOT}/api/app/Model/ZonePreset.php
+${ZM_HTTPD_ROOT}/api/app/Plugin/CakePHP-Enum-Behavior/Model/Behavior/EnumBehavior.php
+${ZM_HTTPD_ROOT}/api/app/Plugin/CakePHP-Enum-Behavior/composer.json
+${ZM_HTTPD_ROOT}/api/app/Plugin/CakePHP-Enum-Behavior/readme.md
${ZM_HTTPD_ROOT}/api/app/Plugin/Crud/.editorconfig
${ZM_HTTPD_ROOT}/api/app/Plugin/Crud/.semver
${ZM_HTTPD_ROOT}/api/app/Plugin/Crud/.travis.yml
@@ -6246,6 +6559,12 @@ ${ZM_HTTPD_ROOT}/api/app/View/Events/jso
${ZM_HTTPD_ROOT}/api/app/View/Events/json/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Events/xml/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Events/xml/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Groups/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Groups/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Groups/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Groups/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Groups/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Groups/xml/view.ctp
${ZM_HTTPD_ROOT}/api/app/View/Helper/AppHelper.php
${ZM_HTTPD_ROOT}/api/app/View/Layouts/Emails/html/default.ctp
${ZM_HTTPD_ROOT}/api/app/View/Layouts/Emails/text/default.ctp
@@ -6261,9 +6580,13 @@ ${ZM_HTTPD_ROOT}/api/app/View/Logs/edit.
${ZM_HTTPD_ROOT}/api/app/View/Logs/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Logs/json/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Logs/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/daemon_control.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Monitors/xml/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Monitors/xml/daemon_control.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/xml/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/xml/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Monitors/xml/view.ctp
@@ -6274,39 +6597,20 @@ ${ZM_HTTPD_ROOT}/api/app/View/Servers/js
${ZM_HTTPD_ROOT}/api/app/View/Servers/xml/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/xml/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Servers/xml/view.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Configs/json/edit.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Configs/json/index.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Configs/json/view.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Configs/xml/index.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Configs/xml/view.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Emails/html/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Emails/text/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Errors/error400.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Errors/error500.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Events/json/index.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Events/json/view.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Events/xml/index.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Events/xml/view.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Helper/AppHelper.php
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/Emails/html/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/Emails/text/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/ajax.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/error.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/flash.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/js/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/rss/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Layouts/xml/default.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Logs/json/index.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Monitors/json/edit.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Monitors/json/index.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Monitors/json/view.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Monitors/xml/edit.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Monitors/xml/index.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Monitors/xml/view.ctp
-${ZM_HTTPD_ROOT}/api/app/View/View/Pages/home.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/json/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/json/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/json/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/xml/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/xml/edit.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Users/xml/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Zones/json/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Zones/json/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Zones/json/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Zones/json/view.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Zones/xml/add.ctp
+${ZM_HTTPD_ROOT}/api/app/View/Zones/xml/edit.ctp
${ZM_HTTPD_ROOT}/api/app/View/Zones/xml/index.ctp
${ZM_HTTPD_ROOT}/api/app/View/Zones/xml/view.ctp
${ZM_HTTPD_ROOT}/api/app/index.php
@@ -6393,7 +6697,6 @@ ${ZM_HTTPD_ROOT}/api/app/vendor/composer
${ZM_HTTPD_ROOT}/api/app/vendor/composer/installers/tests/Composer/Installers/Test/PiwikInstallerTest.php
${ZM_HTTPD_ROOT}/api/app/vendor/composer/installers/tests/Composer/Installers/Test/TestCase.php
${ZM_HTTPD_ROOT}/api/app/vendor/composer/installers/tests/bootstrap.php
-${ZM_HTTPD_ROOT}/api/app/webroot/.htaccess
${ZM_HTTPD_ROOT}/api/app/webroot/css/cake.generic.css
${ZM_HTTPD_ROOT}/api/app/webroot/favicon.ico
${ZM_HTTPD_ROOT}/api/app/webroot/img/cake.icon.png
@@ -6502,13 +6805,26 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Te
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Config/email.php.default
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Config/routes.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Console/Command/AppShell.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Console/Command/Task/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Console/Templates/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Console/cake
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Console/cake.bat
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Console/cake.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Controller/AppController.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Controller/Component/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Controller/PagesController.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Lib/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Locale/eng/LC_MESSAGES/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Model/AppModel.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Model/Behavior/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Model/Datasource/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Plugin/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Test/Case/AllTestsTest.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Test/Case/Controller/Component/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Test/Case/Model/Behavior/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Test/Case/View/Helper/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Test/Fixture/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/Vendor/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/View/Elements/Flash/default.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/View/Emails/html/default.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/View/Emails/text/default.ctp
@@ -6525,10 +6841,18 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Te
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/View/Layouts/rss/default.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/View/Layouts/xml/default.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/View/Pages/home.ctp
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/View/Scaffolds/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/index.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/tmp/cache/models/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/tmp/cache/persistent/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/tmp/cache/views/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/tmp/logs/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/tmp/sessions/empty
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/tmp/tests/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/.htaccess
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/css/cake.generic.css
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/favicon.ico
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/files/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/img/cake.icon.png
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/img/cake.power.gif
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/img/test-error-icon.png
@@ -6536,6 +6860,7 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Te
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/img/test-pass-icon.png
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/img/test-skip-icon.png
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/index.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/js/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/Templates/skel/webroot/test.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/cake
${ZM_HTTPD_ROOT}/api/lib/Cake/Console/cake.bat
@@ -6569,8 +6894,10 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Controller
${ZM_HTTPD_ROOT}/api/lib/Cake/Controller/Component/SessionComponent.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Controller/ComponentCollection.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Controller/Controller.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Controller/RequestHandlerComponent.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Controller/Scaffold.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Core/App.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Core/CakeObject.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Core/CakePlugin.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Core/Configure.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Core/Object.php
@@ -6702,6 +7029,7 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Console/ShellDispatcherTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Console/ShellTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Console/TaskCollectionTest.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Controller/ApplicationControllerTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Controller/Component/Acl/DbAclTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Controller/Component/Acl/IniAclTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Controller/Component/Acl/PhpAclTest.php
@@ -6728,9 +7056,9 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Controller/PagesControllerTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Controller/ScaffoldTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Core/AppTest.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Core/CakeObjectTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Core/CakePluginTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Core/ConfigureTest.php
-${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Core/ObjectTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Error/ErrorHandlerTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Error/ExceptionRendererTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Event/CakeEventManagerTest.php
@@ -6812,7 +7140,6 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Utility/SanitizeTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Utility/SecurityTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Utility/SetTest.php
-${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Utility/StringTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Utility/ValidationTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/Utility/XmlTest.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Case/View/Helper/CacheHelperTest.php
@@ -6963,11 +7290,18 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixtu
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UnsignedFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UserFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidFixture.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidNativeFixture.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidNativeTagFixture.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidNativeTreeFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidTagFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidTreeFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuiditemFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuiditemsUuidportfolioFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuiditemsUuidportfolioNumericidFixture.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidnativeitemFixture.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidnativeitemsUuidnativeportfolioFixture.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidnativeitemsUuidnativeportfolioNumericidFixture.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidnativeportfolioFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/UuidportfolioFixture.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/rss.xml
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/Fixture/sample.xml
@@ -6994,9 +7328,11 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Config/var_test.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Config/var_test2.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Console/Command/SampleShell.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Console/Command/Task/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Console/Templates/test/classes/test_object.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Console/Templates/test/views/admin_edit.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Controller/AppController.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Controller/Component/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Controller/PagesController.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Controller/TestAppsErrorController.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Controller/TestConfigsController.php
@@ -7110,9 +7446,11 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Console/Command/ExampleShell.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Console/Command/Task/OtherTaskTask.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Console/Command/TestPluginShell.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Console/Templates/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Controller/Component/OtherComponent.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Controller/Component/PluginsComponent.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Controller/Component/TestPluginComponent.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Controller/Component/TestPluginEmailComponent.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Controller/Component/TestPluginOtherComponent.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Controller/TestPluginAppController.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/Controller/TestPluginController.php
@@ -7167,7 +7505,9 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPlugin/webroot/root.js
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPluginTwo/Config/bootstrap.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPluginTwo/Console/Command/ExampleShell.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPluginTwo/Console/Command/Task/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPluginTwo/Console/Command/WelcomeShell.php
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPluginTwo/Console/Templates/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Plugin/TestPluginTwo/View/Layouts/Emails/text/default.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Utility/TestAppEngine.php
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/Vendor/Test/MyTest.php
@@ -7251,6 +7591,7 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Posts/sequencial_nocache.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Posts/test_nocache_tags.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Posts/xml/index.ctp
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Scaffolds/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/TestsApps/index.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/TestsApps/json/index.ctp
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Themed/TestTheme/Elements/test_element.ctp
@@ -7271,6 +7612,7 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Themed/TestTheme/webroot/js/theme.js
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Themed/TestTheme/webroot/pdfs/theme_test.pdf
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/View/Themed/TestTheme/webroot/space image.text
+${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/tmp/empty
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/webroot/img/cake.power.gif
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/webroot/theme/test_theme/css/theme_webroot.css
${ZM_HTTPD_ROOT}/api/lib/Cake/Test/test_app/webroot/theme/test_theme/css/webroot_test.css
@@ -7367,26 +7709,75 @@ ${ZM_HTTPD_ROOT}/api/lib/Cake/View/ViewB
${ZM_HTTPD_ROOT}/api/lib/Cake/View/XmlView.php
${ZM_HTTPD_ROOT}/api/lib/Cake/basics.php
${ZM_HTTPD_ROOT}/api/lib/Cake/bootstrap.php
+${ZM_HTTPD_ROOT}/css/bootstrap-table-page-jump-to.min.css
+${ZM_HTTPD_ROOT}/css/bootstrap-table.min.css
${ZM_HTTPD_ROOT}/css/bootstrap.min.css
-${ZM_HTTPD_ROOT}/css/overlay.css
+${ZM_HTTPD_ROOT}/css/font-awesome.min.css
${ZM_HTTPD_ROOT}/css/reset.css
${ZM_HTTPD_ROOT}/css/spinner.css
-${ZM_HTTPD_ROOT}/events
+${ZM_HTTPD_ROOT}/fonts/fontawesome-webfont.eot
+${ZM_HTTPD_ROOT}/fonts/fontawesome-webfont.svg
+${ZM_HTTPD_ROOT}/fonts/fontawesome-webfont.ttf
+${ZM_HTTPD_ROOT}/fonts/fontawesome-webfont.woff
+${ZM_HTTPD_ROOT}/fonts/fontawesome-webfont.woff2
${ZM_HTTPD_ROOT}/fonts/glyphicons-halflings-regular.eot
${ZM_HTTPD_ROOT}/fonts/glyphicons-halflings-regular.svg
${ZM_HTTPD_ROOT}/fonts/glyphicons-halflings-regular.ttf
${ZM_HTTPD_ROOT}/fonts/glyphicons-halflings-regular.woff
${ZM_HTTPD_ROOT}/fonts/glyphicons-halflings-regular.woff2
+${ZM_HTTPD_ROOT}/fonts/license.md
+${ZM_HTTPD_ROOT}/fonts/material-icons.woff
+${ZM_HTTPD_ROOT}/fonts/material-icons.woff2
${ZM_HTTPD_ROOT}/graphics/favicon.ico
-${ZM_HTTPD_ROOT}/graphics/spinner.gif
-${ZM_HTTPD_ROOT}/graphics/transparent.gif
-${ZM_HTTPD_ROOT}/images
+${ZM_HTTPD_ROOT}/graphics/spinner.png
+${ZM_HTTPD_ROOT}/graphics/transparent.png
+${ZM_HTTPD_ROOT}/includes/Control.php
${ZM_HTTPD_ROOT}/includes/Event.php
+${ZM_HTTPD_ROOT}/includes/Filter.php
+${ZM_HTTPD_ROOT}/includes/FilterTerm.php
${ZM_HTTPD_ROOT}/includes/Frame.php
+${ZM_HTTPD_ROOT}/includes/Group.php
+${ZM_HTTPD_ROOT}/includes/Group_Monitor.php
${ZM_HTTPD_ROOT}/includes/Monitor.php
+${ZM_HTTPD_ROOT}/includes/MontageLayout.php
+${ZM_HTTPD_ROOT}/includes/Object.php
${ZM_HTTPD_ROOT}/includes/Server.php
+${ZM_HTTPD_ROOT}/includes/Snapshot.php
${ZM_HTTPD_ROOT}/includes/Storage.php
-${ZM_HTTPD_ROOT}/includes/actions.php
+${ZM_HTTPD_ROOT}/includes/User.php
+${ZM_HTTPD_ROOT}/includes/Zone.php
+${ZM_HTTPD_ROOT}/includes/actions/bandwidth.php
+${ZM_HTTPD_ROOT}/includes/actions/console.php
+${ZM_HTTPD_ROOT}/includes/actions/control.php
+${ZM_HTTPD_ROOT}/includes/actions/controlcap.php
+${ZM_HTTPD_ROOT}/includes/actions/controlcaps.php
+${ZM_HTTPD_ROOT}/includes/actions/device.php
+${ZM_HTTPD_ROOT}/includes/actions/devices.php
+${ZM_HTTPD_ROOT}/includes/actions/donate.php
+${ZM_HTTPD_ROOT}/includes/actions/event.php
+${ZM_HTTPD_ROOT}/includes/actions/eventdetail.php
+${ZM_HTTPD_ROOT}/includes/actions/events.php
+${ZM_HTTPD_ROOT}/includes/actions/filter.php
+${ZM_HTTPD_ROOT}/includes/actions/function.php
+${ZM_HTTPD_ROOT}/includes/actions/group.php
+${ZM_HTTPD_ROOT}/includes/actions/groups.php
+${ZM_HTTPD_ROOT}/includes/actions/login.php
+${ZM_HTTPD_ROOT}/includes/actions/logout.php
+${ZM_HTTPD_ROOT}/includes/actions/monitor.php
+${ZM_HTTPD_ROOT}/includes/actions/monitors.php
+${ZM_HTTPD_ROOT}/includes/actions/montage.php
+${ZM_HTTPD_ROOT}/includes/actions/options.php
+${ZM_HTTPD_ROOT}/includes/actions/privacy.php
+${ZM_HTTPD_ROOT}/includes/actions/server.php
+${ZM_HTTPD_ROOT}/includes/actions/snapshot.php
+${ZM_HTTPD_ROOT}/includes/actions/state.php
+${ZM_HTTPD_ROOT}/includes/actions/storage.php
+${ZM_HTTPD_ROOT}/includes/actions/user.php
+${ZM_HTTPD_ROOT}/includes/actions/version.php
+${ZM_HTTPD_ROOT}/includes/actions/watch.php
+${ZM_HTTPD_ROOT}/includes/actions/zone.php
+${ZM_HTTPD_ROOT}/includes/actions/zones.php
+${ZM_HTTPD_ROOT}/includes/auth.php
${ZM_HTTPD_ROOT}/includes/config.php
${ZM_HTTPD_ROOT}/includes/control_functions.php
${ZM_HTTPD_ROOT}/includes/csrf/LICENSE.txt
@@ -7398,14 +7789,18 @@ ${ZM_HTTPD_ROOT}/includes/database.php
${ZM_HTTPD_ROOT}/includes/functions.php
${ZM_HTTPD_ROOT}/includes/lang.php
${ZM_HTTPD_ROOT}/includes/logger.php
+${ZM_HTTPD_ROOT}/includes/session.php
${ZM_HTTPD_ROOT}/index.php
+${ZM_HTTPD_ROOT}/js/MonitorStream.js
+${ZM_HTTPD_ROOT}/js/Server.js
+${ZM_HTTPD_ROOT}/js/ajaxQueue.js
${ZM_HTTPD_ROOT}/js/logger.js
-${ZM_HTTPD_ROOT}/js/mootools.ext.js
-${ZM_HTTPD_ROOT}/js/overlay.js
+${ZM_HTTPD_ROOT}/js/videojs.zoomrotate.js
+${ZM_HTTPD_ROOT}/lang/ba_ba.php
${ZM_HTTPD_ROOT}/lang/big5_big5.php
-${ZM_HTTPD_ROOT}/lang/cn_zh.php
${ZM_HTTPD_ROOT}/lang/cs_cz.php
${ZM_HTTPD_ROOT}/lang/de_de.php
+${ZM_HTTPD_ROOT}/lang/default.php
${ZM_HTTPD_ROOT}/lang/dk_dk.php
${ZM_HTTPD_ROOT}/lang/en_gb.php
${ZM_HTTPD_ROOT}/lang/en_us.php
@@ -7424,13 +7819,59 @@ ${ZM_HTTPD_ROOT}/lang/ro_ro.php
${ZM_HTTPD_ROOT}/lang/ru_ru.php
${ZM_HTTPD_ROOT}/lang/se_se.php
${ZM_HTTPD_ROOT}/lang/updateLangs.php
-${ZM_HTTPD_ROOT}/skins/classic/css/classic/control.css
+${ZM_HTTPD_ROOT}/lang/zh_cn.php
+${ZM_HTTPD_ROOT}/lang/zh_tw.php
+${ZM_HTTPD_ROOT}/robots.txt
+${ZM_HTTPD_ROOT}/skins/classic/css/base/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/skin.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/console.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/control.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/controlcap.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/controlcaps.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/cycle.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/devices.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/download.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/event.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/events.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/export.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/filter.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/frame.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/frames.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/groups.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/log.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/login.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/monitor.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage_2wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage_3wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage_3wide50enlarge.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage_4wide.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montage_freeform.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/montagereview.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/options.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/plugin.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/privacy.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/report_event_audit.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/server.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/settings.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/snapshot.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/snapshots.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/stats.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/storage.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/timeline.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/timeline.css.php
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/user.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/video.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/watch.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/zone.css
+${ZM_HTTPD_ROOT}/skins/classic/css/base/views/zones.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/export.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/skin.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/console.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/control.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/controlcaps.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/devices.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/download.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/event.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/events.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/export.css
@@ -7447,22 +7888,24 @@ ${ZM_HTTPD_ROOT}/skins/classic/css/class
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_3wide50enlarge.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_4wide.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montage_freeform.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/montagereview.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/options.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/plugin.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/stats.css
+${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/storage.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/timeline.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/timeline.css.php
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/video.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/watch.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/zone.css
${ZM_HTTPD_ROOT}/skins/classic/css/classic/views/zones.css
-${ZM_HTTPD_ROOT}/skins/classic/css/dark/control.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/export.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/skin.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/console.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/control.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/controlcaps.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/devices.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/download.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/event.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/events.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/export.css
@@ -7471,6 +7914,7 @@ ${ZM_HTTPD_ROOT}/skins/classic/css/dark/
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/frames.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/groups.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/log.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/login.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/monitor.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_2wide.css
@@ -7478,112 +7922,133 @@ ${ZM_HTTPD_ROOT}/skins/classic/css/dark/
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_3wide50enlarge.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_4wide.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montage_freeform.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/montagereview.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/options.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/plugin.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/stats.css
+${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/storage.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/timeline.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/timeline.css.php
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/video.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/watch.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/zone.css
${ZM_HTTPD_ROOT}/skins/classic/css/dark/views/zones.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/control.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/export.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/skin.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/console.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/control.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/controlcaps.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/devices.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/event.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/events.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/export.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/filter.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/frame.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/frames.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/groups.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/log.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/monitor.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_2wide.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_3wide.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_3wide50enlarge.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_4wide.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/montage_freeform.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/options.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/plugin.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/stats.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/timeline.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/timeline.css.php
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/video.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/watch.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/zone.css
-${ZM_HTTPD_ROOT}/skins/classic/css/flat/views/zones.css
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-d.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-dl.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-dr.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-l-d.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-l-u.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-l.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-r.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-s-d.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-s-u.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-u.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-ul.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-ur.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/center.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/point-g.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/point-o.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/point-r.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/seq-d.gif
-${ZM_HTTPD_ROOT}/skins/classic/graphics/seq-u.gif
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-d.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-dl.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-dr.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-l-d.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-l-u.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-l.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-r.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-s-d.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-s-u.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-u.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-ul.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/arrow-ur.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/center.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/point-g.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/point-o.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/point-r.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/seq-d.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/seq-u.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/ui-icons_444444_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/ui-icons_555555_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/ui-icons_777620_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/ui-icons_777777_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/ui-icons_cc0000_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/graphics/ui-icons_ffffff_256x240.png
${ZM_HTTPD_ROOT}/skins/classic/includes/config.php
${ZM_HTTPD_ROOT}/skins/classic/includes/control_functions.php
${ZM_HTTPD_ROOT}/skins/classic/includes/export_functions.php
${ZM_HTTPD_ROOT}/skins/classic/includes/functions.php
${ZM_HTTPD_ROOT}/skins/classic/includes/timeline_functions.php
-${ZM_HTTPD_ROOT}/skins/classic/js/classic.js
-${ZM_HTTPD_ROOT}/skins/classic/js/dark.js
-${ZM_HTTPD_ROOT}/skins/classic/js/flat.js
-${ZM_HTTPD_ROOT}/skins/classic/js/jquery-1.11.3.js
-${ZM_HTTPD_ROOT}/skins/classic/js/jquery.js
-${ZM_HTTPD_ROOT}/skins/classic/js/jquery.url
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-auto-refresh.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-cookie.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-export.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-locale-all.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-page-jump-to.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table-toolbar.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap-table.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.bundle.js.map
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.bundle.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.js
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.js.URL
+${ZM_HTTPD_ROOT}/skins/classic/js/bootstrap.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen-sprite.png
+${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen-sprite%2x.png@localhost
+${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen.css
+${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen.jquery.js
+${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen.jquery.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/chosen/chosen.min.css
+${ZM_HTTPD_ROOT}/skins/classic/js/dateTimePicker/jquery-ui-timepicker-addon.css
+${ZM_HTTPD_ROOT}/skins/classic/js/dateTimePicker/jquery-ui-timepicker-addon.js
+${ZM_HTTPD_ROOT}/skins/classic/js/font/vjs.eot
+${ZM_HTTPD_ROOT}/skins/classic/js/font/vjs.ttf
+${ZM_HTTPD_ROOT}/skins/classic/js/font/vjs.woff
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-3.6.1.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-3.6.1.min.map
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/AUTHORS.txt
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/LICENSE.txt
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/external/jquery/jquery.js
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/images/ui-icons_444444_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/images/ui-icons_555555_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/images/ui-icons_777620_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/images/ui-icons_777777_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/images/ui-icons_cc0000_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/images/ui-icons_ffffff_256x240.png
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/index.html
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.css
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.js
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.min.css
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.structure.css
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.structure.min.css
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.theme.css
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/jquery-ui.theme.min.css
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery-ui-1.13.2/package.json
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/jquery.min.js.URL
+${ZM_HTTPD_ROOT}/skins/classic/js/moment.js
+${ZM_HTTPD_ROOT}/skins/classic/js/moment.js.URL
+${ZM_HTTPD_ROOT}/skins/classic/js/moment.min.js
${ZM_HTTPD_ROOT}/skins/classic/js/skin.js
${ZM_HTTPD_ROOT}/skins/classic/js/skin.js.php
+${ZM_HTTPD_ROOT}/skins/classic/js/tableExport.min.js
+${ZM_HTTPD_ROOT}/skins/classic/js/video-js-skin.css
+${ZM_HTTPD_ROOT}/skins/classic/js/video-js.css
+${ZM_HTTPD_ROOT}/skins/classic/js/video-js.css.URL
+${ZM_HTTPD_ROOT}/skins/classic/js/video.js
+${ZM_HTTPD_ROOT}/skins/classic/js/video.js.URL
+${ZM_HTTPD_ROOT}/skins/classic/js/video.min.js
${ZM_HTTPD_ROOT}/skins/classic/skin.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_monitor_filters.php
+${ZM_HTTPD_ROOT}/skins/classic/views/_monitor_source_nvsocket.php
+${ZM_HTTPD_ROOT}/skins/classic/views/add_monitors.php
${ZM_HTTPD_ROOT}/skins/classic/views/bandwidth.php
${ZM_HTTPD_ROOT}/skins/classic/views/blank.php
${ZM_HTTPD_ROOT}/skins/classic/views/console.php
${ZM_HTTPD_ROOT}/skins/classic/views/control.php
${ZM_HTTPD_ROOT}/skins/classic/views/controlcap.php
${ZM_HTTPD_ROOT}/skins/classic/views/controlcaps.php
-${ZM_HTTPD_ROOT}/skins/classic/views/controlpreset.php
${ZM_HTTPD_ROOT}/skins/classic/views/cycle.php
-${ZM_HTTPD_ROOT}/skins/classic/views/device.php
${ZM_HTTPD_ROOT}/skins/classic/views/devices.php
-${ZM_HTTPD_ROOT}/skins/classic/views/donate.php
${ZM_HTTPD_ROOT}/skins/classic/views/error.php
${ZM_HTTPD_ROOT}/skins/classic/views/event.php
-${ZM_HTTPD_ROOT}/skins/classic/views/eventdetail.php
${ZM_HTTPD_ROOT}/skins/classic/views/events.php
${ZM_HTTPD_ROOT}/skins/classic/views/export.php
${ZM_HTTPD_ROOT}/skins/classic/views/filter.php
-${ZM_HTTPD_ROOT}/skins/classic/views/filtersave.php
${ZM_HTTPD_ROOT}/skins/classic/views/frame.php
${ZM_HTTPD_ROOT}/skins/classic/views/frames.php
-${ZM_HTTPD_ROOT}/skins/classic/views/function.php
-${ZM_HTTPD_ROOT}/skins/classic/views/group.php
${ZM_HTTPD_ROOT}/skins/classic/views/groups.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/add_monitors.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/console.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/console.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/control.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/controlcap.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/controlpreset.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/controlpreset.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/controlcaps.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/cycle.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/cycle.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/devices.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/donate.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/donate.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/event.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/event.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/events.js
@@ -7592,7 +8057,10 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/export.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/filter.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/filter.js.php
-${ZM_HTTPD_ROOT}/skins/classic/views/js/group.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/frame.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/frame.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/frames.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/frames.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/groups.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/log.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/login.js
@@ -7603,18 +8071,25 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/monitorprobe.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/montage.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/montage.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/montagereview.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/montagereview.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/onvifprobe.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/options.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/options.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/plugin.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/postlogin.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/postlogin.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/report_event_audit.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/server.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/state.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/state.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/snapshot.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/snapshot.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/snapshots.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/snapshots.js.php
+${ZM_HTTPD_ROOT}/skins/classic/views/js/stats.js
+${ZM_HTTPD_ROOT}/skins/classic/views/js/storage.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/timeline.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/timeline.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/user.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/version.js
-${ZM_HTTPD_ROOT}/skins/classic/views/js/version.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/video.js
${ZM_HTTPD_ROOT}/skins/classic/views/js/video.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/js/watch.js
@@ -7625,10 +8100,10 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/js/
${ZM_HTTPD_ROOT}/skins/classic/views/js/zones.js.php
${ZM_HTTPD_ROOT}/skins/classic/views/log.php
${ZM_HTTPD_ROOT}/skins/classic/views/login.php
-${ZM_HTTPD_ROOT}/skins/classic/views/logout.php
${ZM_HTTPD_ROOT}/skins/classic/views/monitor.php
${ZM_HTTPD_ROOT}/skins/classic/views/monitorpreset.php
${ZM_HTTPD_ROOT}/skins/classic/views/monitorprobe.php
+${ZM_HTTPD_ROOT}/skins/classic/views/monitors.php
${ZM_HTTPD_ROOT}/skins/classic/views/montage.php
${ZM_HTTPD_ROOT}/skins/classic/views/montagereview.php
${ZM_HTTPD_ROOT}/skins/classic/views/none.php
@@ -7637,21 +8112,41 @@ ${ZM_HTTPD_ROOT}/skins/classic/views/opt
${ZM_HTTPD_ROOT}/skins/classic/views/options.php
${ZM_HTTPD_ROOT}/skins/classic/views/plugin.php
${ZM_HTTPD_ROOT}/skins/classic/views/postlogin.php
-${ZM_HTTPD_ROOT}/skins/classic/views/server.php
-${ZM_HTTPD_ROOT}/skins/classic/views/settings.php
-${ZM_HTTPD_ROOT}/skins/classic/views/state.php
+${ZM_HTTPD_ROOT}/skins/classic/views/privacy.php
+${ZM_HTTPD_ROOT}/skins/classic/views/report_event_audit.php
+${ZM_HTTPD_ROOT}/skins/classic/views/snapshot.php
+${ZM_HTTPD_ROOT}/skins/classic/views/snapshots.php
${ZM_HTTPD_ROOT}/skins/classic/views/stats.php
${ZM_HTTPD_ROOT}/skins/classic/views/status.php
${ZM_HTTPD_ROOT}/skins/classic/views/timeline.php
${ZM_HTTPD_ROOT}/skins/classic/views/user.php
-${ZM_HTTPD_ROOT}/skins/classic/views/version.php
${ZM_HTTPD_ROOT}/skins/classic/views/video.php
${ZM_HTTPD_ROOT}/skins/classic/views/watch.php
${ZM_HTTPD_ROOT}/skins/classic/views/zone.php
${ZM_HTTPD_ROOT}/skins/classic/views/zones.php
-${ZM_HTTPD_ROOT}/temp
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-core-1.4.5-compat.js
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-core.js
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-more-1.5.1.js
-${ZM_HTTPD_ROOT}/tools/mootools/mootools-more.js
+${ZM_HTTPD_ROOT}/vendor/autoload.php
+${ZM_HTTPD_ROOT}/vendor/composer/ClassLoader.php
+${ZM_HTTPD_ROOT}/vendor/composer/LICENSE
+${ZM_HTTPD_ROOT}/vendor/composer/autoload_classmap.php
+${ZM_HTTPD_ROOT}/vendor/composer/autoload_files.php
+${ZM_HTTPD_ROOT}/vendor/composer/autoload_namespaces.php
+${ZM_HTTPD_ROOT}/vendor/composer/autoload_psr4.php
+${ZM_HTTPD_ROOT}/vendor/composer/autoload_real.php
+${ZM_HTTPD_ROOT}/vendor/composer/autoload_static.php
+${ZM_HTTPD_ROOT}/vendor/composer/installed.json
+${ZM_HTTPD_ROOT}/vendor/firebase/php-jwt/LICENSE
+${ZM_HTTPD_ROOT}/vendor/firebase/php-jwt/README.md
+${ZM_HTTPD_ROOT}/vendor/firebase/php-jwt/composer.json
+${ZM_HTTPD_ROOT}/vendor/firebase/php-jwt/src/BeforeValidException.php
+${ZM_HTTPD_ROOT}/vendor/firebase/php-jwt/src/ExpiredException.php
+${ZM_HTTPD_ROOT}/vendor/firebase/php-jwt/src/JWT.php
+${ZM_HTTPD_ROOT}/vendor/firebase/php-jwt/src/SignatureInvalidException.php
+${ZM_HTTPD_ROOT}/vendor/ircmaxell/password-compat/LICENSE.md
+${ZM_HTTPD_ROOT}/vendor/ircmaxell/password-compat/composer.json
+${ZM_HTTPD_ROOT}/vendor/ircmaxell/password-compat/lib/password.php
+${ZM_HTTPD_ROOT}/vendor/ircmaxell/password-compat/version-test.php
+${ZM_HTTPD_ROOT}/views/archive.php
${ZM_HTTPD_ROOT}/views/image.php
+${ZM_HTTPD_ROOT}/views/no_database_connection.php
+${ZM_HTTPD_ROOT}/views/view_video.php
+share/zoneminder/icons/16x16/icon.xpm
Index: pkgsrc/security/zoneminder/distinfo
diff -u pkgsrc/security/zoneminder/distinfo:1.20 pkgsrc/security/zoneminder/distinfo:1.21
--- pkgsrc/security/zoneminder/distinfo:1.20 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/distinfo Sun Dec 1 13:49:47 2024
@@ -1,33 +1,35 @@
-$NetBSD: distinfo,v 1.20 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: distinfo,v 1.21 2024/12/01 13:49:47 gdt Exp $
-BLAKE2s (FriendsOfCake-crud-v3.0.10.tar.gz) = e04238f274c6ce5b27f4a106630ef224fe6cb61a8172d32474e8660af7adea81
-SHA512 (FriendsOfCake-crud-v3.0.10.tar.gz) = 2f60557f2c783bb448e06c1ca40b536a1d7d5f3caf0626fa6716a28f808492d4799e238f16c022571be96921105b074b6763920fd7b9cc77b76d17ceadae2040
-Size (FriendsOfCake-crud-v3.0.10.tar.gz) = 72960 bytes
-BLAKE2s (ZoneMinder-1.30.5.tar.gz) = eae68bdd260feaf529154de3173805dd318c7bc22ca0a76341f330d04d06bf1b
-SHA512 (ZoneMinder-1.30.5.tar.gz) = f423b79726357c277814c9346445b695fc1b0f9cff61847003d6286bc36f92aab8ab35689e1a3552fb60394793c478fefb4c8fa3861a1dd06a2655b018c6a52a
-Size (ZoneMinder-1.30.5.tar.gz) = 9936584 bytes
-SHA1 (patch-CMakeLists.txt) = 4cf38ed2818c2000863c4b6587c5b5f64b0c1127
-SHA1 (patch-cmake_Modules_Pod2Man.cmake) = f0a1462037fc63fa9f35d0595f4f50946f5518e7
-SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in) = b8f508abcd5451da73092070a302b99d1fd59def
-SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm) = bded373e318cd074b92853165d5ca38d23bdea5f
-SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm) = b97c104f6ac102fc4510eb0977169375cdd97197
+BLAKE2s (FriendsOfCake-crud-14292374ccf1328f2d5db20897bd06f99ba4d938.tar.gz) = 8877bf6718ecfe3cba2515629418fe5addc60cf8ce4650526b39db6a234922ad
+SHA512 (FriendsOfCake-crud-14292374ccf1328f2d5db20897bd06f99ba4d938.tar.gz) =
da58528686baf05385ad08079f965bce10eba6d599133ab773e9ab1f9e4b7d82cf5431b4b773317b90effb16e0b026a029bdfabe08a9ef1a5e9b94e7a1c2ea9e
+Size (FriendsOfCake-crud-14292374ccf1328f2d5db20897bd06f99ba4d938.tar.gz) = 73086 bytes
+BLAKE2s (ZoneMinder-1.36.33.tar.gz) = 693d5a07ce03b6e97fd402170e05cc89cf2885a9a33215fc66e8615a12e90802
+SHA512 (ZoneMinder-1.36.33.tar.gz) = 7afd25d3fa5dd170bad552332dab5425b664e41d430f1514f2b038ec7391dae6fab165050b541cad50a6904341f77605fde845cc02e4d7ee10f42650cb9e8707
+Size (ZoneMinder-1.36.33.tar.gz) = 11501221 bytes
+BLAKE2s (ZoneMinder-CakePHP-Enum-Behavior-ea90c0cd7f6e24333a90885e563b5d30b793db29.tar.gz) = 4639184438becb1c33450a00e213fca9d11e92b7f2545fb701f40a664c716764
+SHA512 (ZoneMinder-CakePHP-Enum-Behavior-ea90c0cd7f6e24333a90885e563b5d30b793db29.tar.gz) =
75f2188e548b98191c8df82fb76e918f3bda9788f541449df8fa92449ad19aa0b9c13420dd91c760e08a4d31956ad51602242ab97e3bd4460f01e99f49992453
+Size (ZoneMinder-CakePHP-Enum-Behavior-ea90c0cd7f6e24333a90885e563b5d30b793db29.tar.gz) = 3504 bytes
+BLAKE2s (ZoneMinder-RtspServer-055d81fe1293429e496b19104a9ed3360755a440.tar.gz) = 0feba45357a746173378193be365b164061cc9f20e84210ecfe9e991ad9971e4
+SHA512 (ZoneMinder-RtspServer-055d81fe1293429e496b19104a9ed3360755a440.tar.gz) =
2f3bbd449269cba5afda3135e54cca114342956da3ce8fbfb05533ec7b1c3f75767d8b5f3d9b415254ad7b39817bc343b0790c591ef3cc64d2863819ab3a7551
+Size (ZoneMinder-RtspServer-055d81fe1293429e496b19104a9ed3360755a440.tar.gz) = 1396623 bytes
+SHA1 (patch-CMakeLists.txt) = dca040058ec7b389474dff9853c46f65fd5626da
+SHA1 (patch-dep_RtspServer_src_net_EventLoop.cpp) = bf1fe79c2ba1d602adf8895f29f61f7b961eece3
+SHA1 (patch-dep_RtspServer_src_net_Socket.h) = 789e90da4bfc15d6d43d942718538385cb6dfade
+SHA1 (patch-dep_RtspServer_src_net_SocketUtil.cpp) = c566652e8e7985a705682ef960118615b6777288
+SHA1 (patch-dep_RtspServer_src_xop_rtsp.h) = 20a014ce423d19549976c2158d39c46ea6892647
+SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in) = 3bf4e5e8276a682695db640e6608dd14c7315320
+SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm) = 996670d8a659c0624587da73f8083d9349aaa1ba
+SHA1 (patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm) = b3de55618915fad3d9263954db71270c800ad6f1
SHA1 (patch-scripts_zm_in) = a05727261bb8be6b707e9a14ae4ff52ea3770d51
-SHA1 (patch-scripts_zmpkg_pl_in) = 04f30a02ad5132a58c5396bbf5dbb92280eddb8f
-SHA1 (patch-src_zm__event.cpp) = 5908b0fd1390505d851172b1f6f449f1c48f7fde
-SHA1 (patch-src_zm__monitor.cpp) = f690dae0adee48faeb94a393ca22f1ec49e8331e
-SHA1 (patch-src_zm__rtp__ctrl.h) = 4e0fd8e80932de8d77b3386a356cc026ddc23113
-SHA1 (patch-src_zm__rtp__source.cpp) = 039257e76768df2e32a5550625ba7f8d1cb9ba26
-SHA1 (patch-src_zm__thread.h) = 8ac734f991c74a8744f7ee7015e583a701517951
-SHA1 (patch-src_zm__timer.h) = d91d41ef987fa4cc67d6f55c25afc581ef3a273f
-SHA1 (patch-src_zm__utils.cpp) = d5012fb54b0a91640fa49a16daf7c5f0eb54228e
-SHA1 (patch-src_zm__utils.h) = 4ffb7eafa8602076766fd4ae00be797866a229d9
-SHA1 (patch-src_zm_comms_cpp) = bd3c3e6dd4d11ea0845d2da662e99169cd6e6680
-SHA1 (patch-src_zm_comms_h) = 64c0a8e98f9ac551113f3428dafff12a61ea9afe
-SHA1 (patch-src_zm_logger_cpp) = 3ad97a499643d9af5bbd1f86d9b4101bc24be4df
-SHA1 (patch-src_zm_remote_camera_h) = 0d4bd7dae0188df7e463586250ac2ed530230f3d
-SHA1 (patch-src_zm_signal_cpp) = 6863c33f22d40fd9dabdab7ba7056d56fae9d418
-SHA1 (patch-src_zm_thread_cpp) = 3d59ce545ee5ce16417b635e4b963867f4e15741
-SHA1 (patch-src_zmc_cpp) = 925a6fa9ab28b54b5ba0bc5fd657a16c1e59d46e
-SHA1 (patch-src_zmf.cpp) = 73affd763e7f37109e607cc6474fb8e87f783bdf
-SHA1 (patch-src_zmu.cpp) = a238a58cf383e847b69031ec06c929c960cafc6e
-SHA1 (patch-web_ajax_stream_php) = e8f811e63bedec03345b74db72c3d8014b3cc7f6
+SHA1 (patch-scripts_zmpkg_pl_in) = eb3166ae3cd9bb0ce1b828b64722506aa4e82368
+SHA1 (patch-src_zm__event.cpp) = 2831f586f140f682dd107a1adb09531c388a1df8
+SHA1 (patch-src_zm__eventstream.cpp) = d2134edf09f142a6a545ca36d3263b13defcadd6
+SHA1 (patch-src_zm__monitor.cpp) = ac6eb821d5d72455b46165e74ea1d321faf9e431
+SHA1 (patch-src_zm__packet.h) = 96951004741f3d21434d3ca981f6214c07f77c88
+SHA1 (patch-src_zm__rtp__source.cpp) = 288b32cff869103b04e96487b92bb12533b29772
+SHA1 (patch-src_zm__utils.cpp) = e16ffd3f41bd05a32c80142e7246307df12801a8
+SHA1 (patch-src_zm_comms_h) = 33577ab0eac62eadc415fe6fb970b82eb473c8e7
+SHA1 (patch-src_zm_logger_cpp) = 1d3d2a6baef1abe762ede06aaf393e5bc2e2080e
+SHA1 (patch-src_zm_remote_camera_h) = 2f774924338b9e42e7bcaa1701af72861ea62c22
+SHA1 (patch-src_zm_signal_cpp) = af9625702518648b8d62ed20d0d52c1a2a27841a
+SHA1 (patch-src_zmu.cpp) = e5d92c9aa17c3a9e8b53c2cbd43712d80c76ab4e
Index: pkgsrc/security/zoneminder/files/README-pkgsrc.md
diff -u pkgsrc/security/zoneminder/files/README-pkgsrc.md:1.1 pkgsrc/security/zoneminder/files/README-pkgsrc.md:1.2
--- pkgsrc/security/zoneminder/files/README-pkgsrc.md:1.1 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/files/README-pkgsrc.md Sun Dec 1 13:49:47 2024
@@ -1,44 +1,160 @@
-===========================================================================
-$NetBSD: README-pkgsrc.md,v 1.1 2022/09/27 01:20:39 gdt Exp $
+# Introduction
-Performance:
+This is a local pkgsrc README for the zoneminder package. It attempts
+not to duplicate the upstream documentation. (Arguably, some of this
+should be pushed upstream.) This REAMDE presumes familiarity with
+zoneminder, adminstering a web server, adminstering mysql, and
+hand-typing SQL UPDATE statements.
- ZoneMinder benefits dramatically from using libjpeg-turbo. Consider
- building from Pkgsrc with:
+We write /var for ${VARBASE}, /usr/pkg for ${PREFIX}, and /usr/pkg/etc
+for ${PKG_SYSCONFDIR}, without loss of generality.
- JPEG_DEFAULT=libjpeg-turbo
+# pkgsrc-specific notes
+## Choice of jpeg implementation
-To get ZoneMinder started a MySQL database is required.
+ZoneMinder claims to benefit dramatically from using libjpeg-turbo.
+Consider setting that as default in mk.conf
+`JPEG_DEFAULT=libjpeg-turbo` and then *everything*.
-First, create a MySQL user "zmuser":
+## User and Group
-echo "create user 'zmuser'@'localhost' identified by 'zmpass';" | mysql -u root
+zoneminder uses APACHE_USER and APACHE_GROUP. These are www by
+default, but people set them to fpm for use with nginx and php_fpm.
+It is important that apache, zoneminder, and any existing directories
+all agree.
-The default password is "zmpass". You may change this to something else, and
-update ZM_DB_PASS in ${PKG_SYSCONFDIR}/zm.conf.
+# MySQL configuration and initial database creation
+(It seems that zoneminder only works with MySQL.)
-Create the initial database via:
+Condider adding `bind-address=127.0.0.1` to `etc/my.conf`, if you are
+using mysql only for zoneminder and do not want it accessible from the
+network.
- mysql -u root < ${PREFIX}/share/zoneminder/db/zm_create.sql
+See upstream instructions at
+https://zoneminder.readthedocs.io/en/1.32.3/installationguide/ubuntu.html
+which are for Ubuntu, but seem mostly generic.
+Specifically, see "Step 5: Configure the ZoneMinder Database".
-Assign rights to the "zmuser" user via:
+The default password is "zmpass". You may (probably should) change
+this to something else, and set ZM_DB_PASS in
+e.g. /usr/pkg/etc/zm/zmpass.conf.
- echo "grant all on * to 'zmuser';" | mysql -u root zm
+# Other setup
+See "Step 6: Set permissions", and use APACHE_GROUP.
+
+See "Step 9: Edit Timezone in PHP". Otherwise, access to streams will
+fail. See https://github.com/ZoneMinder/ZoneMinder/issues/1552 for
+more information.
+
+# Web setup
+
+## apache
+
+See "Step 7: Configure Apache correctly", but edit the apache config
+file instead of using the not-in-pkgsrc a2enmod command.
+
+mod_cgid is a hard requirement. zm appears to work without rewrite
+and expire. headers is default on. Enabling a zoneminder apache
+module does not make sense, but upstream maybe implies that you
+should.
+
+For now One needs to use prefork instead of event with cgid, because
+php is built without threads.
+
+Zoneminder installs
+/usr/pkg/share/examples/zoneminder/apache/httpd-zoneminder.conf,
+which does two things:
+ - aliases /zm to the zm main dir and /zm/cgi-bin/ to the zm cgi directory
+ - allows those paths to 127.0.0.1
+Either `Include` this, copy/modify and `Include`, or insert into
+httpd.conf. (You will need to adjust the IP acl if you want
+off-machine access.)
+
+It is for future study to use www/ap2-fcgid instead of mod_cgid, and
+then one could use the event MPM.
+
+## nginx
+
+After you figure it out, please send patches to add an nginx config
+file. Likely one would use php_fpm; Makefile guesses so.
+
+# Problems not clearly attributed
+
+In theory `zmpkg.pl start` should start everything. In practice, the
+first `zmdc.pl start` invocation does start the daemon but then fails
+to exit, hanging the startup process. While there is an attempt to
+avoid this in `zmpkg.pl`, it is likely necessary to kill the hanging
+start script, and thus to write a script to do so, to enable reliable
+starting. This is likely an upstream issue, to be debugged after
+pkgsrc is up to date.
+
+# Upgrading from previous versions
+
+As always, backup everything, diff all configs from upstream before
+and minimize, save deltas, and merge to new upstreams keeping intended
+changes. This is going to be worse than most upgrades.
+
+## Standard zoneminder advice
Upgrade a database from an older version of ZoneMinder via:
zmupdate.pl -u root [-p <password>]
+NB: Zoneminder 1.32 will attempt to remove config from the database
+and place it in e.g. `/usr/pkg/etc/zm/conf.d/zmcustom.conf`. The
+package attempts to create the directory, but make one more backup
+than you think you need.
+
+## Zoneminder path woes
+
+In theory, one wouldn't have to set paths, but it seems one does. Go
+over the list at
+https://github.com/ZoneMinder/zoneminder/blob/release-1.32/INSTALL and
+set some.
+
+Probably, see (or create) conf.d/zmpaths.conf.
+
+## Issues due to pkgsrc changes from 1.30 to 1.32
+
+pkgsrc changed the config dir from /usr/pkg/etc to /usr/pkg/etc/zm, so
+you should move zm.conf.
+
+When editing in conf.d, beware zmcustom.conf~ which might or might not
+also be read.
+
+pkgsrc changed from /var/cache/zoneminder to /var/db/zoneminder.
+While merging configs, pay extra attention to stray /var/cache
+pathnames.
+
+### Storage
+
+Zoneminder has "Storage" configured (Options, Storage), and it is
+possible that it used to be /var/cache/zoneminder/events and should
+now be /var/db/zoneminder/events.
+
+### Upload temp dir
+
+One can configure uploads and a temp dir in which to create them.
+That path is in the database as UPLOAD_LOC_DIR and can be a stray
+source of /var/cache/zoneminder.
+
+# Shared memory
+
+Zoneminder tries to use a shm filesystem to store files that are then
+mmap'd. (1.28 used SysV shm but that is no longer relevant.)
-To enable the web interface via Apache, add the following line to httpd.conf:
+On NetBSD, the compiled default might be /dev/shm but the right place
+is /var/shm. This can be changed in zmcustom.conf via ZM_PATH_MAP.
- Include ${PREFIX}/share/examples/zoneminder/apache/zoneminder.conf
+(One might need a lot of space, or to turn the buffer down to fewer
+frames; this is not about pkgsrc.)
-PHP may log warnings if the PHP date.timezone configuration is not set.
-Consider assigning a default system time zone to date.timezone in
-${PKG_SYSCONFDIR}/php.ini.
-===========================================================================
+Somtimes, the shm file can get into a bad state and be zero length.
+This might be a bad error path during camera timeouts; it seems to
+happen more with bad wifi connections. Turning up the timeouts in the
+config (e.g. wait 10s or 30s before giving up instead of 2s) probably
+also helps. This is also not about pkgsrc.
Index: pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt
diff -u pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt:1.1 pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt:1.2
--- pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt:1.1 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt Sun Dec 1 13:49:47 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-CMakeLists.txt,v 1.1 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-CMakeLists.txt,v 1.2 2024/12/01 13:49:47 gdt Exp $
Don't have a file called "version", to avoid conflict with C++20 <version>.
@@ -12,18 +12,18 @@ exist, so don't insist on librt being pr
Let Pkgsrc be responsible for zm.conf into examples, rather than overwriting
the existing configuration file.
---- CMakeLists.txt.orig 2019-02-23 04:38:47.000000000 +1300
-+++ CMakeLists.txt 2022-01-19 22:51:36.000000000 +1300
+--- CMakeLists.txt.orig 2023-02-23 21:44:01.000000000 +0000
++++ CMakeLists.txt
@@ -4,7 +4,7 @@
#
- cmake_minimum_required (VERSION 2.8.7)
- project (zoneminder)
--file (STRINGS "version" zoneminder_VERSION)
-+file (STRINGS "version.txt" zoneminder_VERSION)
+ cmake_minimum_required(VERSION 3.5.0)
+ project(zoneminder)
+-file(STRINGS "version" zoneminder_VERSION)
++file(STRINGS "version.txt" zoneminder_VERSION)
# make API version a minor of ZM version
set(zoneminder_API_VERSION "${zoneminder_VERSION}.1")
-@@ -226,7 +226,9 @@
+@@ -267,7 +267,9 @@ check_include_file("ucontext.h" HAVE_UCO
check_include_file("sys/sendfile.h" HAVE_SYS_SENDFILE_H)
check_include_file("sys/syscall.h" HAVE_SYS_SYSCALL_H)
check_function_exists("syscall" HAVE_SYSCALL)
@@ -33,21 +33,24 @@ the existing configuration file.
check_function_exists("posix_memalign" HAVE_POSIX_MEMALIGN)
check_type_size("siginfo_t" HAVE_SIGINFO_T)
check_type_size("ucontext_t" HAVE_UCONTEXT_T)
-@@ -237,7 +239,7 @@
- include (CheckLibraryExists)
- CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME)
- if(NOT HAVE_CLOCK_GETTIME)
-- message(FATAL_ERROR "clock_gettime not found")
-+ #message(FATAL_ERROR "clock_gettime not found")
- else(NOT HAVE_CLOCK_GETTIME)
- list(APPEND ZM_BIN_LIBS "-lrt")
- endif(NOT HAVE_CLOCK_GETTIME)
-@@ -733,7 +735,7 @@
- endif(zmconfgen_result EQUAL 0)
+@@ -278,7 +280,8 @@ if(UNIX)
+ include(CheckLibraryExists)
+ CHECK_LIBRARY_EXISTS(rt clock_gettime "time.h" HAVE_CLOCK_GETTIME)
+ if(NOT HAVE_CLOCK_GETTIME)
+- message(FATAL_ERROR "clock_gettime not found")
++ # \todo Explain why just skipping this is ok.
++ #message(FATAL_ERROR "clock_gettime not found")
+ else()
+ list(APPEND ZM_BIN_LIBS "-lrt")
+ endif()
+@@ -863,8 +866,8 @@ else()
+ endif()
# Install zm.conf
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zm.conf" DESTINATION "${ZM_CONFIG_DIR}")
+-install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/conf.d/" DESTINATION "${ZM_CONFIG_SUBDIR}" PATTERN "*.in" EXCLUDE)
+#install(FILES "${CMAKE_CURRENT_BINARY_DIR}/zm.conf" DESTINATION "${ZM_CONFIG_DIR}")
++#install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/conf.d/" DESTINATION "${ZM_CONFIG_SUBDIR}" PATTERN "*.in" EXCLUDE)
# Uninstall target
configure_file(
Index: pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in:1.1 pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in:1.2
--- pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in:1.1 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in,v 1.1 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_ConfigData.pm.in,v 1.2 2024/12/01 13:49:48 gdt Exp $
Inhibit a couple of "phone home" options that are enabled by default. These
should be opt-in rather than opt-out.
@@ -6,23 +6,14 @@ should be opt-in rather than opt-out.
The ConfigData.pm module determines what the default setting is for new
options during an upgrade as well as on an initial installation.
---- scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in.orig 2022-01-23 22:09:24.000000000 +1300
-+++ scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in 2022-01-23 22:11:28.000000000 +1300
-@@ -2787,7 +2787,7 @@
+--- scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in.orig 2018-12-08 14:22:36.000000000 +0000
++++ scripts/ZoneMinder/lib/ZoneMinder/ConfigData.pm.in
+@@ -2693,7 +2693,7 @@ our @options = (
},
{
- name => "ZM_CHECK_FOR_UPDATES",
-- default => "yes",
-+ default => "no",
- description => "Check with zoneminder.com for updated versions",
- help => qqq("
- From ZoneMinder version 1.17.0 onwards new versions are
-@@ -2805,7 +2805,7 @@
- },
- {
- name => "ZM_TELEMETRY_DATA",
-- default => "yes",
-+ default => "no",
- description => "Send usage information to ZoneMinder",
- help => qqq("
- Enable collection of usage information of the local system and send
+ name => 'ZM_CHECK_FOR_UPDATES',
+- default => 'yes',
++ default => 'no',
+ description => 'Check with zoneminder.com for updated versions',
+ help => q`
+ From ZoneMinder version 1.17.0 onwards new versions are
Index: pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in:1.1 pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in:1.2
--- pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in:1.1 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in Sun Dec 1 13:49:48 2024
@@ -1,20 +1,39 @@
-$NetBSD: patch-scripts_zmpkg_pl_in,v 1.1 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-scripts_zmpkg_pl_in,v 1.2 2024/12/01 13:49:48 gdt Exp $
-The systemd check in zmpkg.pl does not work, even on systems that use systemd.
-It fails to start, eventually timing out, if there is any parent process
-between zmpkg.pl and systemd or init - such as /etc/init.d/zoneminder
+The systemd check in zmpkg.pl does not work, even on systems that use
+systemd. It fails to start, eventually timing out, if there is any
+parent process between zmpkg.pl and systemd or init - such as
+/etc/init.d/zoneminder. But everything does seem to work ok from
+systemd without this roundabout code anyway, so just inhibit it.
-But everything does seem to work ok from systemd without this roundabout code
-anyway, so just inhibit it.
+Add sleep to avoid suspected race condition.
---- scripts/zmpkg.pl.in.orig 2021-09-26 20:28:10.324733138 +1300
-+++ scripts/zmpkg.pl.in 2021-09-26 20:28:30.414613144 +1300
-@@ -168,7 +168,7 @@
- }
+\todo After catching up, actually debug and/or send upstream.
+
+--- scripts/zmpkg.pl.in.orig 2018-12-08 14:22:36.000000000 +0000
++++ scripts/zmpkg.pl.in
+@@ -143,7 +143,7 @@ if ( $command eq 'state' ) {
+ } # end if command = state
# Check if we are running systemd and if we have been called by the system
--if ( $command =~ /^(start|stop|restart)$/ )
-+if ( 0 && $command =~ /^(start|stop|restart)$/ )
- {
- # We have to detaint to keep perl from complaining
- $command = $1;
+-if ( $command =~ /^(start|stop|restart)$/ ) {
++if ( 0 && $command =~ /^(start|stop|restart)$/ ) {
+ # We have to detaint to keep perl from complaining
+ $command = $1;
+
+@@ -191,6 +191,15 @@ if ( $command =~ /^(?:start|restart)$/ )
+
+ zmMemTidy();
+ runCommand('zmdc.pl startup');
++ Info("Sleeping 2 seconds to avoid zmdc.pl race.");
++ # Somehow, on at least NetBSD 9 amd64, a future zmdc.pl start
++ # command succeeds in starting the daemon, but does not exit.
++ # Based on an unsubstantiated theory that the startup invocation
++ # exits before startup is complete, sleep for 2 seconds
++ # afterwards. Experimentally, this results in normal startup
++ # without hanging.
++ sleep(2);
++ Info("Sleeping complete.");
+
+ my $Server = undef;
+ my $sql;
Index: pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm:1.3 pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm:1.4
--- pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm:1.3 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm,v 1.3 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm,v 1.4 2024/12/01 13:49:48 gdt Exp $
Perl doesn't really support "> /dev/null", so just capture into $output.
@@ -19,14 +19,14 @@ installed on the system, or not in the $
Use the -m parameter to su, as ZM_WEB_USER shouldn't require a login shell.
---- scripts/ZoneMinder/lib/ZoneMinder/General.pm.orig 2019-02-22 15:38:47.000000000 +0000
+--- scripts/ZoneMinder/lib/ZoneMinder/General.pm.orig 2023-02-23 21:44:01.000000000 +0000
+++ scripts/ZoneMinder/lib/ZoneMinder/General.pm
-@@ -129,7 +129,7 @@ sub getCmdFormat {
- chomp( $output );
- Debug( "Test failed, '$output'\n" );
+@@ -92,7 +92,7 @@ sub getCmdFormat {
+ chomp( $output );
+ Debug("Test failed, '$output'");
-- $prefix = "su ".$Config{ZM_WEB_USER}." -c '";
-+ $prefix = "su -m ".$Config{ZM_WEB_USER}." -c '";
- $suffix = "'";
- $command = $prefix.$null_command.$suffix;
- Debug( "Testing \"$command\"\n" );
+- $prefix = 'su '.$Config{ZM_WEB_USER}.q` --shell=/bin/sh --command='`;
++ $prefix = 'su -m'.$Config{ZM_WEB_USER}.q` --shell=/bin/sh --command='`;
+ $suffix = q`'`;
+ $command = $prefix.$null_command.$suffix;
+ Debug("Testing \"$command\"");
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp:1.3 pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp:1.4
--- pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp:1.3 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm__monitor.cpp,v 1.3 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-src_zm__monitor.cpp,v 1.4 2024/12/01 13:49:48 gdt Exp $
The shmat() error return is (apparently) -1 as a pointer. Some compilers
(E.g. clang on MacOS) refuse to consider testing if a pointer is less than
@@ -7,32 +7,32 @@ particular values that might make sense.
Avoid type error (suseconds_t is not long). To be addressed upstream once caught up.
---- src/zm_monitor.cpp.orig 2019-02-23 04:38:47.000000000 +1300
-+++ src/zm_monitor.cpp 2022-01-19 21:56:47.000000000 +1300
-@@ -160,7 +160,7 @@
- return( false );
+--- src/zm_monitor.cpp.orig 2023-02-23 21:44:01.000000000 +0000
++++ src/zm_monitor.cpp
+@@ -200,7 +200,7 @@ bool Monitor::MonitorLink::connect() {
}
- mem_ptr = (unsigned char *)shmat( shm_id, 0, 0 );
-- if ( mem_ptr < 0 )
-+ if ( mem_ptr == (void *)-1 )
- {
- Debug( 3, "Can't shmat link memory: %s", strerror(errno) );
+ #else // ZM_MEM_MAPPED
+ shm_id = shmget((config.shm_key&0xffff0000)|id, mem_size, 0700);
+- if (shm_id < 0) {
++ if (shm_id == (void *)-1) {
+ Debug(3, "Can't shmget link memory: %s", strerror(errno));
connected = false;
-@@ -194,7 +194,7 @@
+ return false;
+@@ -236,7 +236,7 @@ bool Monitor::MonitorLink::disconnect()
connected = false;
#if ZM_MEM_MAPPED
-- if ( mem_ptr > 0 )
-+ if ( mem_ptr != 0 && mem_ptr != (void *)-1 )
- {
- msync( mem_ptr, mem_size, MS_ASYNC );
- munmap( mem_ptr, mem_size );
-@@ -3175,7 +3175,7 @@
- found_macro = true;
- break;
- case 'f' :
-- d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", ts_time->tv_usec/10000 );
-+ d_ptr += snprintf( d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", (long) ts_time->tv_usec/10000 );
- found_macro = true;
- break;
- }
+- if (mem_ptr > (void *)0) {
++ if (mem_ptr != (void *)0 && mem_ptr != (void *)-1) {
+ msync(mem_ptr, mem_size, MS_ASYNC);
+ munmap(mem_ptr, mem_size);
+ }
+@@ -2649,7 +2649,7 @@ void Monitor::TimestampImage(Image *ts_i
+ found_macro = true;
+ break;
+ case 'f' :
+- d_ptr += snprintf(d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", ts_time.tv_usec/10000);
++ d_ptr += snprintf(d_ptr, sizeof(label_text)-(d_ptr-label_text), "%02ld", (long) ts_time.tv_usec/10000);
+ found_macro = true;
+ break;
+ }
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.3 pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.4
--- pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp:1.3 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__utils.cpp Sun Dec 1 13:49:48 2024
@@ -1,28 +1,35 @@
-$NetBSD: patch-src_zm__utils.cpp,v 1.3 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-src_zm__utils.cpp,v 1.4 2024/12/01 13:49:48 gdt Exp $
-\todo Explain
+Avoid assuming linux on arm. For now, assume neon.
---- src/zm_utils.cpp.orig 2019-02-22 15:38:47.000000000 +0000
+Fix time types (sizes).
+
+--- src/zm_utils.cpp.orig 2023-02-23 21:44:01.000000000 +0000
+++ src/zm_utils.cpp
-@@ -76,21 +76,6 @@ const std::string stringtf( const char *
- return( tempString );
+@@ -183,7 +183,7 @@ std::string TimevalToString(timeval tv)
+ return "";
+ }
+
+- return stringtf("%s.%06ld", tm_buf.data(), tv.tv_usec);
++ return stringtf("%s.%06ld", tm_buf.data(), (long) tv.tv_usec);
}
--const std::string stringtf( const std::string &format, ... )
--{
-- va_list ap;
-- char tempBuffer[8192];
-- std::string tempString;
--
-- va_start(ap, format );
-- vsnprintf( tempBuffer, sizeof(tempBuffer), format.c_str() , ap );
-- va_end(ap);
--
-- tempString = tempBuffer;
--
-- return( tempString );
--}
--
- bool startsWith( const std::string &haystack, const std::string &needle )
- {
- return( haystack.substr( 0, needle.length() ) == needle );
+ /* Detect special hardware features, such as SIMD instruction sets */
+@@ -231,13 +231,15 @@ void HwCapsDetect() {
+ unsigned long auxval = 0;
+ elf_aux_info(AT_HWCAP, &auxval, sizeof(auxval));
+ if (auxval & HWCAP_NEON) {
+- #error Unsupported OS.
+- #endif
+ Debug(1,"Detected ARM (AArch32) processor with Neon");
+ neonversion = 1;
+ } else {
+ Debug(1,"Detected ARM (AArch32) processor");
+ }
++# else
++ Debug(1,"!!ASSUMING!! ARM (AArch32) processor with Neon");
++ neonversion = 1;
++# endif
+ #elif defined(__aarch64__)
+ // ARM processor in 64bit mode
+ // Neon is mandatory, no need to check for it
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.3 pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.4
--- pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp:1.3 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_signal_cpp Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm_signal_cpp,v 1.3 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-src_zm_signal_cpp,v 1.4 2024/12/01 13:49:48 gdt Exp $
Don't assume machine-dependent IP register details are available for any
platform except Linux. Only Linux is sure to have this style of mcontext_t.
@@ -6,10 +6,10 @@ platform except Linux. Only Linux is su
Resolves build on systems that have ucontext_t but an mcontext_t that
doesn't look like Linux.
---- src/zm_signal.cpp.orig 2019-02-23 04:38:47.000000000 +1300
-+++ src/zm_signal.cpp 2022-01-18 00:42:50.000000000 +1300
-@@ -66,13 +66,17 @@
- #ifdef __FreeBSD_kernel__
+--- src/zm_signal.cpp.orig 2018-12-08 14:22:36.000000000 +0000
++++ src/zm_signal.cpp
+@@ -66,13 +66,17 @@ RETSIGTYPE zm_die_handler(int signal)
+ #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
ip = (void *)(uc->uc_mcontext.mc_rip);
#else
+ #if defined(__linux__)
@@ -17,7 +17,7 @@ doesn't look like Linux.
+ #endif
#endif
#else
- #ifdef __FreeBSD_kernel__
+ #if defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
ip = (void *)(uc->uc_mcontext.mc_eip);
#else
+ #if defined(__linux__)
Index: pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm:1.2 pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm:1.3
--- pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm:1.2 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm Sun Dec 1 13:49:48 2024
@@ -1,17 +1,18 @@
-$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm,v 1.2 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm,v 1.3 2024/12/01 13:49:48 gdt Exp $
Adjust for (more) modern perl.
Not submitted upstream because pkgsrc is woefully out of date.
---- scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm.orig 2016-02-03 18:40:30.000000000 +0000
+--- scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm.orig 2023-02-23 21:44:01.000000000 +0000
+++ scripts/ZoneMinder/lib/ZoneMinder/Memory/Shared.pm
-@@ -158,7 +158,7 @@ sub zmMemClean
- ."'"
+@@ -158,6 +158,9 @@ sub zmMemClean
+ .'\''
;
- Debug( "Checking for shared memory with '$command'\n" );
-- open( my $CMD, '<', "$command |" )
-+ open( my $CMD, '-|', "$command" )
+ Debug(2, 'Checking for shared memory with '.$command);
++ # \todo
++ # - open( my $CMD, '<', "$command |" )
++ # + open( my $CMD, '-|', "$command" )
+ open( my $CMD, '<', $command.' |' )
or Fatal( "Can't execute '$command': $!" );
while( <$CMD> )
- {
Index: pkgsrc/security/zoneminder/patches/patch-scripts_zm_in
diff -u pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.5 pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.6
--- pkgsrc/security/zoneminder/patches/patch-scripts_zm_in:1.5 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-scripts_zm_in Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-scripts_zm_in,v 1.5 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-scripts_zm_in,v 1.6 2024/12/01 13:49:48 gdt Exp $
/etc/rc.d/init.d/functions doesn't commonly exist.
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h:1.5 pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h:1.6
--- pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h:1.5 Wed Jan 12 11:53:26 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm_comms_h,v 1.5 2022/01/12 11:53:26 dsainty Exp $
+$NetBSD: patch-src_zm_comms_h,v 1.6 2024/12/01 13:49:48 gdt Exp $
extern "C" system headers.
@@ -7,34 +7,39 @@ Include missing system headers for NetBS
To fix Linux readv/writev, back-port:
https://github.com/ZoneMinder/zoneminder/commit/417421b1d869d1b71c8ec1a1e3b082fcede6ce58#diff-484f666f58ec13f38fa402143f2f6ad8e63a013909d3941ffbb3d66745b20c8d
---- src/zm_comms.h.orig 2016-02-03 18:40:30.000000000 +0000
+--- src/zm_comms.h.orig 2023-02-23 21:44:01.000000000 +0000
+++ src/zm_comms.h
-@@ -22,20 +22,24 @@
+@@ -22,18 +22,30 @@
#include "zm_exception.h"
-
+ #include "zm_logger.h"
+-#include <cerrno>
++
++/* \todo Validate that this is still needed. */
+extern "C" {
- #include <string.h>
- #include <unistd.h>
#include <netdb.h>
- #include <errno.h>
- #include <sys/un.h>
--
-#include <set>
+ #include <sys/uio.h>
+ #include <sys/un.h>
+ #include <unistd.h>
-#include <vector>
++
++#include <errno.h>
++#include <string.h>
++
++/* \todo Validate this addition. */
+#include <stdlib.h>
+#include <time.h>
-+#include <sys/uio.h>
#if defined(BSD)
--#include <sys/uio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#endif
+}
+
++#include <cerrno>
+#include <set>
+#include <vector>
- class CommsException : public Exception
- {
+ namespace ZM {
+
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp:1.4 pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp:1.5
--- pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp:1.4 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm__event.cpp,v 1.4 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-src_zm__event.cpp,v 1.5 2024/12/01 13:49:48 gdt Exp $
zoneminder uses %ld for time_t, which is troublesome on NetBSD arm and
presumably i386. (Note that there are multiple patch files for the
@@ -10,83 +10,57 @@ Also, this fix is expedient and probably
Avoid sendfile code when sendfile doesn't exist.
---- src/zm_event.cpp.orig 2019-02-22 15:38:47.000000000 +0000
+--- src/zm_event.cpp.orig 2023-02-23 21:44:01.000000000 +0000
+++ src/zm_event.cpp
-@@ -36,11 +36,13 @@
- #include "zm_event.h"
- #include "zm_monitor.h"
-
-+#if HAVE_SENDFILE
- // sendfile tricks
- extern "C"
- {
- #include "zm_sendfile.h"
- }
-+#endif
-
- #include "zmf.h"
-
-@@ -80,7 +82,7 @@ Event::Event( Monitor *p_monitor, struct
- static char sql[ZM_SQL_MED_BUFSIZ];
-
- struct tm *stime = localtime( &start_time.tv_sec );
-- snprintf( sql, sizeof(sql), "insert into Events ( MonitorId, Name, StartTime, Width, Height, Cause, Notes ) values ( %d, 'New Event', from_unixtime( %ld ), %d, %d, '%s', '%s' )", monitor->Id(),
start_time.tv_sec, monitor->Width(), monitor->Height(), cause.c_str(), notes.c_str() );
-+ snprintf( sql, sizeof(sql), "insert into Events ( MonitorId, Name, StartTime, Width, Height, Cause, Notes ) values ( %d, 'New Event', from_unixtime( %jd ), %d, %d, '%s', '%s' )", monitor->Id(),
(intmax_t) start_time.tv_sec, monitor->Width(), monitor->Height(), cause.c_str(), notes.c_str() );
- if ( mysql_query( &dbconn, sql ) )
- {
- Error( "Can't insert event: %s", mysql_error( &dbconn ) );
-@@ -181,7 +183,7 @@ Event::~Event()
-
- Debug( 1, "Adding closing frame %d to DB", frames );
- static char sql[ZM_SQL_SML_BUFSIZ];
-- snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %ld ), %s%ld.%02ld )", id, frames, end_time.tv_sec,
delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
-+ snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, TimeStamp, Delta ) values ( %d, %d, from_unixtime( %jd ), %s%jd.%02ld )", id, frames, (intmax_t) end_time.tv_sec,
delta_time.positive?"":"-", (intmax_t) delta_time.sec, delta_time.fsec );
- if ( mysql_query( &dbconn, sql ) )
- {
- Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
-@@ -194,7 +196,7 @@ Event::~Event()
- struct DeltaTimeval delta_time;
- DELTA_TIMEVAL( delta_time, end_time, start_time, DT_PREC_2 );
-
-- snprintf( sql, sizeof(sql), "update Events set Name='%s%d', EndTime = from_unixtime( %ld ), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d where
Id = %d", monitor->EventPrefix(), id, end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, frames, alarm_frames, tot_score, (int)(alarm_frames?(tot_score/alarm_frames):0),
max_score, id );
-+ snprintf( sql, sizeof(sql), "update Events set Name='%s%d', EndTime = from_unixtime( %jd ), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d where
Id = %d", monitor->EventPrefix(), id, (intmax_t) end_time.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, frames, alarm_frames, tot_score,
(int)(alarm_frames?(tot_score/alarm_frames):0), max_score, id );
- if ( mysql_query( &dbconn, sql ) )
- {
- Error( "Can't update event: %s", mysql_error( &dbconn ) );
-@@ -525,7 +527,7 @@ void Event::AddFramesInternal( int n_fra
- DELTA_TIMEVAL( delta_time, *(timestamps[i]), start_time, DT_PREC_2 );
-
- int sql_len = strlen(sql);
-- snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%ld), %s%ld.%02ld ), ", id, frames, timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec );
-+ snprintf( sql+sql_len, sizeof(sql)-sql_len, "( %d, %d, from_unixtime(%jd), %s%ld.%02ld ), ", id, frames, (intmax_t) timestamps[i]->tv_sec, delta_time.positive?"":"-", delta_time.sec,
delta_time.fsec );
-
- frameCount++;
- }
-@@ -576,7 +578,7 @@ void Event::AddFrame( Image *image, stru
-
- Debug( 1, "Adding frame %d of type \"%s\" to DB", frames, frame_type );
- static char sql[ZM_SQL_MED_BUFSIZ];
-- snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %ld ), %s%ld.%02ld, %d )", id, frames, frame_type,
timestamp.tv_sec, delta_time.positive?"":"-", delta_time.sec, delta_time.fsec, score );
-+ snprintf( sql, sizeof(sql), "insert into Frames ( EventId, FrameId, Type, TimeStamp, Delta, Score ) values ( %d, %d, '%s', from_unixtime( %jd ), %s%jd.%02ld, %d )", id, frames, frame_type,
(intmax_t) timestamp.tv_sec, delta_time.positive?"":"-", (intmax_t) delta_time.sec, delta_time.fsec, score );
- if ( mysql_query( &dbconn, sql ) )
- {
- Error( "Can't insert frame: %s", mysql_error( &dbconn ) );
-@@ -664,7 +666,7 @@ bool EventStream::loadInitialEventData(
- {
- static char sql[ZM_SQL_SML_BUFSIZ];
-
-- snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and unix_timestamp( EndTime ) > %ld order by Id asc limit 1", monitor_id, event_time );
-+ snprintf( sql, sizeof(sql), "select Id from Events where MonitorId = %d and unix_timestamp( EndTime ) > %jd order by Id asc limit 1", monitor_id, (intmax_t) event_time );
-
- if ( mysql_query( &dbconn, sql ) )
- {
-@@ -1222,7 +1224,9 @@ bool EventStream::sendFrame( int delta_u
- Debug( 2, "Sending frame %d", curr_frame_id );
-
- static char filepath[PATH_MAX];
-+#if HAVE_SENDFILE
- static struct stat filestat;
-+#endif
- FILE *fdj = NULL;
-
- snprintf( filepath, sizeof(filepath), Event::capture_file_format, event_data->path, curr_frame_id );
+@@ -113,10 +113,10 @@ Event::Event(
+ "INSERT INTO `Events` "
+ "( `MonitorId`, `StorageId`, `Name`, `StartDateTime`, `Width`, `Height`, `Cause`, `Notes`, `StateId`, `Orientation`, `Videoed`, `DefaultVideo`, `SaveJPEGs`, `Scheme` )"
+ " VALUES "
+- "( %d, %d, 'New Event', from_unixtime( %ld ), %d, %d, '%s', '%s', %d, %d, %d, '%s', %d, '%s' )",
++ "( %d, %d, 'New Event', from_unixtime( %jd ), %d, %d, '%s', '%s', %d, %d, %d, '%s', %d, '%s' )",
+ monitor->Id(),
+ storage->Id(),
+- start_time.tv_sec,
++ (intmax_t) start_time.tv_sec,
+ monitor->Width(),
+ monitor->Height(),
+ cause.c_str(),
+@@ -164,8 +164,8 @@ Event::~Event() {
+ // Should not be static because we might be multi-threaded
+ char sql[ZM_SQL_LGE_BUFSIZ];
+ snprintf(sql, sizeof(sql),
+- "UPDATE Events SET Name='%s%" PRIu64 "', EndDateTime = from_unixtime(%ld), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d WHERE Id = %"
PRIu64 " AND Name='New Event'",
+- monitor->EventPrefix(), id, end_time.tv_sec,
++ "UPDATE Events SET Name='%s%" PRIu64 "', EndDateTime = from_unixtime(%jd), Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d WHERE Id = %"
PRIu64 " AND Name='New Event'",
++ monitor->EventPrefix(), id, (intmax_t) end_time.tv_sec,
+ delta_time.positive?"":"-", delta_time.sec, delta_time.fsec,
+ frames, alarm_frames,
+ tot_score, (int)(alarm_frames?(tot_score/alarm_frames):0), max_score,
+@@ -373,12 +373,12 @@ void Event::WriteDbFrames() {
+ while (frame_data.size()) {
+ Frame *frame = frame_data.front();
+ frame_data.pop();
+- frame_insert_sql += stringtf("\n( %" PRIu64 ", %d, '%s', from_unixtime( %ld ), %s%ld.%02ld, %d ),",
++ frame_insert_sql += stringtf("\n( %" PRIu64 ", %d, '%s', from_unixtime( %jd ), %s%jd.%02ld, %d ),",
+ id, frame->frame_id,
+ frame_type_names[frame->type],
+- frame->timestamp.tv_sec,
++ (intmax_t) frame->timestamp.tv_sec,
+ frame->delta.positive ? "" : "-",
+- frame->delta.sec,
++ (intmax_t) frame->delta.sec,
+ frame->delta.fsec,
+ frame->score);
+ if (config.record_event_stats and frame->zone_stats.size()) {
+@@ -526,9 +526,9 @@ void Event::AddFrame(const std::shared_p
+
+ char sql[ZM_SQL_MED_BUFSIZ];
+ snprintf(sql, sizeof(sql),
+- "UPDATE Events SET Length = %s%ld.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d WHERE Id = %" PRIu64,
++ "UPDATE Events SET Length = %s%jd.%02ld, Frames = %d, AlarmFrames = %d, TotScore = %d, AvgScore = %d, MaxScore = %d WHERE Id = %" PRIu64,
+ ( delta_time.positive?"":"-" ),
+- delta_time.sec, delta_time.fsec,
++ (intmax_t) delta_time.sec, delta_time.fsec,
+ frames,
+ alarm_frames,
+ tot_score,
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.4 pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.5
--- pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp:1.4 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp Sun Dec 1 13:49:48 2024
@@ -1,26 +1,29 @@
-$NetBSD: patch-src_zm__rtp__source.cpp,v 1.4 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-src_zm__rtp__source.cpp,v 1.5 2024/12/01 13:49:48 gdt Exp $
Fix type issue with tv_sec; see earlier patches.
---- src/zm_rtp_source.cpp.orig 2019-02-22 15:38:47.000000000 +0000
+--- src/zm_rtp_source.cpp.orig 2023-02-23 21:44:01.000000000 +0000
+++ src/zm_rtp_source.cpp
-@@ -197,7 +197,7 @@ void RtpSource::updateRtcpData( uint32_t
- {
- struct timeval ntpTime = tvMake( ntpTimeSecs, suseconds_t((USEC_PER_SEC*(ntpTimeFrac>>16))/(1<<16)) );
+@@ -196,17 +196,17 @@ void RtpSource::updateRtcpData(
+ uint32_t rtpTime) {
+ struct timeval ntpTime = tvMake(ntpTimeSecs, suseconds_t((USEC_PER_SEC*(ntpTimeFrac>>16))/(1<<16)));
-- Debug( 5, "ntpTime: %ld.%06ld, rtpTime: %x", ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
-+ Debug( 5, "ntpTime: %jd.%06ld, rtpTime: %x", (intmax_t) ntpTime.tv_sec,ntpTime.tv_usec, rtpTime );
-
- if ( mBaseTimeNtp.tv_sec == 0 )
- {
-@@ -207,8 +207,8 @@ void RtpSource::updateRtcpData( uint32_t
- }
- else if ( !mRtpClock )
- {
-- Debug( 5, "lastSrNtpTime: %ld.%06ld, rtpTime: %x", mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime );
-- Debug( 5, "ntpTime: %ld.%06ld, rtpTime: %x", ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
-+ Debug( 5, "lastSrNtpTime: %jd.%06ld, rtpTime: %x", (intmax_t) mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime );
-+ Debug( 5, "ntpTime: %jd.%06ld, rtpTime: %x", (intmax_t) ntpTime.tv_sec, ntpTime.tv_usec, rtpTime );
+- Debug(5, "ntpTime: %ld.%06ld, rtpTime: %x", ntpTime.tv_sec, ntpTime.tv_usec, rtpTime);
++ Debug(5, "ntpTime: %jd.%06ld, rtpTime: %x", (intmax_t) ntpTime.tv_sec, (long) ntpTime.tv_usec, rtpTime);
+
+ if ( mBaseTimeNtp.tv_sec == 0 ) {
+ mBaseTimeReal = tvNow();
+ mBaseTimeNtp = ntpTime;
+ mBaseTimeRtp = rtpTime;
+ } else if ( !mRtpClock ) {
+- Debug(5, "lastSrNtpTime: %ld.%06ld, rtpTime: %x"
+- "ntpTime: %ld.%06ld, rtpTime: %x",
+- mLastSrTimeNtp.tv_sec, mLastSrTimeNtp.tv_usec, rtpTime,
+- ntpTime.tv_sec, ntpTime.tv_usec, rtpTime);
++ Debug(5, "lastSrNtpTime: %jd.%06ld, rtpTime: %x"
++ "ntpTime: %jd.%06ld, rtpTime: %x",
++ (intmax_t) mLastSrTimeNtp.tv_sec, (long) mLastSrTimeNtp.tv_usec, rtpTime,
++ (intmax_t) ntpTime.tv_sec, (long) ntpTime.tv_usec, rtpTime);
double diffNtpTime = tvDiffSec( mBaseTimeNtp, ntpTime );
uint32_t diffRtpTime = rtpTime - mBaseTimeRtp;
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h:1.4 pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h:1.5
--- pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h:1.4 Sun Apr 5 08:51:08 2015
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h Sun Dec 1 13:49:48 2024
@@ -1,20 +1,17 @@
-$NetBSD: patch-src_zm_remote_camera_h,v 1.4 2015/04/05 08:51:08 dsainty Exp $
+$NetBSD: patch-src_zm_remote_camera_h,v 1.5 2024/12/01 13:49:48 gdt Exp $
Declare sockaddr_in.
---- src/zm_remote_camera.h.orig 2015-02-05 15:52:37.000000000 +1300
-+++ src/zm_remote_camera.h 2015-04-01 17:56:10.736361360 +1300
-@@ -23,10 +23,13 @@
- #include "zm_camera.h"
+--- src/zm_remote_camera.h.orig 2023-02-23 21:44:01.000000000 +0000
++++ src/zm_remote_camera.h
+@@ -24,6 +24,10 @@
#include "zm_rtsp_auth.h"
+ #include <string>
++/* \todo Validate if necessary. */
+#include <netinet/in.h>
-+
- #include <string>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netdb.h>
+#include <time.h>
++
+ #define SOCKET_BUF_SIZE 8192
//
- // Class representing 'remote' cameras, i.e. those which are
Index: pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp:1.4 pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp:1.5
--- pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp:1.4 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp Sun Dec 1 13:49:48 2024
@@ -1,54 +1,52 @@
-$NetBSD: patch-src_zmu.cpp,v 1.4 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-src_zmu.cpp,v 1.5 2024/12/01 13:49:48 gdt Exp $
time types
---- src/zmu.cpp.orig 2019-02-22 15:38:47.000000000 +0000
+--- src/zmu.cpp.orig 2023-02-23 21:44:01.000000000 +0000
+++ src/zmu.cpp
-@@ -519,14 +519,14 @@ int main( int argc, char *argv[] )
- if ( timestamp.tv_sec )
- strftime( timestamp_str, sizeof(timestamp_str), "%Y-%m-%d %H:%M:%S", localtime( ×tamp.tv_sec ) );
- if ( image_idx == -1 )
-- printf( "Time of last image capture: %s.%02ld\n", timestamp_str, timestamp.tv_usec/10000 );
-+ printf( "Time of last image capture: %s.%02ld\n", timestamp_str, (long) timestamp.tv_usec/10000 );
- else
-- printf( "Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, timestamp.tv_usec/10000 );
-+ printf( "Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, (long) timestamp.tv_usec/10000 );
+@@ -542,12 +542,12 @@ int main(int argc, char *argv[]) {
+ strftime(timestamp_str, sizeof(timestamp_str), "%Y-%m-%d %H:%M:%S", localtime_r(×tamp.tv_sec, &tm_info));
}
+ if ( image_idx == -1 )
+- printf("Time of last image capture: %s.%02ld\n", timestamp_str, timestamp.tv_usec/10000);
++ printf("Time of last image capture: %s.%02ld\n", timestamp_str, (long) timestamp.tv_usec/10000);
else
- {
- if ( have_output ) printf( "%c", separator );
-- printf( "%ld.%02ld", timestamp.tv_sec, timestamp.tv_usec/10000 );
-+ printf( "%jd.%02ld", (intmax_t) timestamp.tv_sec, (long) timestamp.tv_usec/10000 );
- have_output = true;
- }
+- printf("Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, timestamp.tv_usec/10000);
++ printf("Time of image %d capture: %s.%02ld\n", image_idx, timestamp_str, (long) timestamp.tv_usec/10000);
+ } else {
+ if ( have_output ) fputc(separator, stdout);
+- printf("%ld.%02ld", timestamp.tv_sec, timestamp.tv_usec/10000);
++ printf("%jd.%02ld", (intmax_t) timestamp.tv_sec, (long) timestamp.tv_usec/10000);
+ have_output = true;
}
-@@ -792,12 +792,12 @@ int main( int argc, char *argv[] )
- if ( monitor && monitor->connect() )
- {
+ }
+@@ -777,12 +777,12 @@ int main(int argc, char *argv[]) {
+ std::shared_ptr<Monitor> monitor = Monitor::Load(monitor_id, false, Monitor::QUERY);
+ if ( monitor && monitor->connect() ) {
struct timeval tv = monitor->GetTimestamp();
-- printf( "%4d%5d%6d%9d%11ld.%02ld%6d%6d%8d%8.2f\n",
-+ printf( "%4d%5d%6d%9d%11jd.%02ld%6d%6d%8d%8.2f\n",
+- printf( "%4d%5d%6d%9d%11ld.%02ld%6d%6d%8" PRIu64 "%8.2f\n",
++ printf( "%4d%5d%6d%9d%11jd.%02ld%6d%6d%8" PRIu64 "%8.2f\n",
monitor->Id(),
- function,
+ monitor_function,
monitor->GetState(),
monitor->GetTriggerState(),
- tv.tv_sec, tv.tv_usec/10000,
+ (intmax_t) tv.tv_sec, (long) tv.tv_usec/10000,
monitor->GetLastReadIndex(),
monitor->GetLastWriteIndex(),
- monitor->GetLastEvent(),
-@@ -809,12 +809,12 @@ int main( int argc, char *argv[] )
- else
- {
+ monitor->GetLastEventId(),
+@@ -791,12 +791,12 @@ int main(int argc, char *argv[]) {
+ }
+ } else {
struct timeval tv = { 0, 0 };
-- printf( "%4d%5d%6d%9d%11ld.%02ld%6d%6d%8d%8.2f\n",
-+ printf( "%4d%5d%6d%9d%11jd.%02ld%6d%6d%8d%8.2f\n",
+- printf("%4d%5d%6d%9d%11ld.%02ld%6d%6d%8d%8.2f\n",
++ printf("%4d%5d%6d%9d%11jd.%02ld%6d%6d%8d%8.2f\n",
mon_id,
function,
0,
0,
- tv.tv_sec, tv.tv_usec/10000,
-+ (intmax_t) tv.tv_sec, (long) tv.tv_usec/10000,
++ (intmax_t) tv.tv_sec, (long) tv.tv_usec/10000,
0,
0,
0,
Index: pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp
diff -u pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.7 pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.8
--- pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp:1.7 Tue Sep 27 01:20:39 2022
+++ pkgsrc/security/zoneminder/patches/patch-src_zm_logger_cpp Sun Dec 1 13:49:48 2024
@@ -1,4 +1,4 @@
-$NetBSD: patch-src_zm_logger_cpp,v 1.7 2022/09/27 01:20:39 gdt Exp $
+$NetBSD: patch-src_zm_logger_cpp,v 1.8 2024/12/01 13:49:48 gdt Exp $
Use libgen.h for basename.
@@ -9,54 +9,32 @@ to use SYS_gettid.
Fix time types (sizes).
---- src/zm_logger.cpp.orig 2019-02-22 15:38:47.000000000 +0000
+--- src/zm_logger.cpp.orig 2023-02-23 21:44:01.000000000 +0000
+++ src/zm_logger.cpp
-@@ -33,9 +33,11 @@
- #include <errno.h>
- #ifdef __FreeBSD__
- #include <sys/thr.h>
--#include <libgen.h>
- #endif
-
-+/* POSIX specifies libgen.h for basename() */
-+#include <libgen.h>
-+
- bool Logger::smInitialised = false;
- Logger *Logger::smInstance = 0;
-
-@@ -515,7 +517,8 @@ void Logger::logPrint( bool hex, const c
- va_list argPtr;
- struct timeval timeVal;
-
-- const char * const file = basename(filepath);
-+ /* \todo Verify that the cast is safe. */
-+ const char * const file = basename((char *)filepath);
-
- if ( level < PANIC || level > DEBUG9 )
- Panic( "Invalid logger level %d", level );
-@@ -531,14 +534,14 @@ void Logger::logPrint( bool hex, const c
+@@ -439,13 +439,13 @@ void Logger::logPrint(bool hex, const ch
- subtractTime( &timeVal, &logStart );
+ subtractTime( &timeVal, &logStart );
-- snprintf( timeString, sizeof(timeString), "%ld.%03ld", timeVal.tv_sec, timeVal.tv_usec/1000 );
-+ snprintf( timeString, sizeof(timeString), "%jd.%03ld", (intmax_t) timeVal.tv_sec, timeVal.tv_usec/1000 );
- }
- else
- {
- #endif
- char *timePtr = timeString;
- timePtr += strftime( timePtr, sizeof(timeString), "%x %H:%M:%S", localtime(&timeVal.tv_sec) );
-- snprintf( timePtr, sizeof(timeString)-(timePtr-timeString), ".%06ld", timeVal.tv_usec );
-+ snprintf( timePtr, sizeof(timeString)-(timePtr-timeString), ".%06jd", (intmax_t) timeVal.tv_usec );
- #if 0
- }
- #endif
-@@ -615,7 +618,7 @@ void Logger::logPrint( bool hex, const c
-
- mysql_real_escape_string( &mDbConnection, escapedString, syslogStart, strlen(syslogStart) );
-
-- snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, ServerId, Pid, Level, Code, Message, File, Line ) values ( %ld.%06ld, '%s', %d, %d, %d, '%s', '%s', '%s', %d )",
timeVal.tv_sec, timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString, file, line );
-+ snprintf( sql, sizeof(sql), "insert into Logs ( TimeKey, Component, ServerId, Pid, Level, Code, Message, File, Line ) values ( %jd.%06jd, '%s', %d, %d, %d, '%s', '%s', '%s', %d )", (intmax_t)
timeVal.tv_sec, (intmax_t) timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString, file, line );
- if ( mysql_query( &mDbConnection, sql ) )
- {
- Level tempDatabaseLevel = mDatabaseLevel;
+- snprintf( timeString, sizeof(timeString), "%ld.%03ld", timeVal.tv_sec, timeVal.tv_usec/1000 );
++ snprintf( timeString, sizeof(timeString), "%jd.%03ld", (intmax_t) timeVal.tv_sec, (long) timeVal.tv_usec/1000 );
+ } else {
+ #endif
+ char *timePtr = timeString;
+ tm now_tm = {};
+ timePtr += strftime(timePtr, sizeof(timeString), "%x %H:%M:%S", localtime_r(&timeVal.tv_sec, &now_tm));
+- snprintf(timePtr, sizeof(timeString)-(timePtr-timeString), ".%06ld", timeVal.tv_usec);
++ snprintf(timePtr, sizeof(timeString)-(timePtr-timeString), ".%06ld", (long) timeVal.tv_usec);
+ #if 0
+ }
+ #endif
+@@ -534,8 +534,8 @@ void Logger::logPrint(bool hex, const ch
+ "INSERT INTO `Logs` "
+ "( `TimeKey`, `Component`, `ServerId`, `Pid`, `Level`, `Code`, `Message`, `File`, `Line` )"
+ " VALUES "
+- "( %ld.%06ld, '%s', %d, %d, %d, '%s', '%s', '%s', %d )",
+- timeVal.tv_sec, timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString.c_str(), file, line
++ "( %jd.%06ld, '%s', %d, %d, %d, '%s', '%s', '%s', %d )",
++ (intmax_t) timeVal.tv_sec, (long) timeVal.tv_usec, mId.c_str(), staticConfig.SERVER_ID, tid, level, classString, escapedString.c_str(), file, line
+ );
+ dbQueue.push(std::move(sql_string));
+ } else {
Added files:
Index: pkgsrc/security/zoneminder/files/httpd-zoneminder.conf
diff -u /dev/null pkgsrc/security/zoneminder/files/httpd-zoneminder.conf:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/files/httpd-zoneminder.conf Sun Dec 1 13:49:47 2024
@@ -0,0 +1,69 @@
+# pkgsrc Apache configuration for zoneminder, intended to be copied to
+# ${PKG_SYSCONFDIR}/httpd and then included via
+# Include etc/httpd/httpd-zoneminder.conf
+
+# This configuration puts ZoneMinder under /zm. Access is limited to
+# localhost, as a safe default until intentionally changed.
+
+LoadModule cgid_module lib/httpd/mod_cgid.so
+# \todo Consider fcgi intead.
+# <IfModule mod_fcgid.c>
+# <Directory /usr/share/zoneminder/www>
+# Options -Indexes +ExecCGI
+# AllowOverride All
+# AddHandler fcgid-script .php
+# FCGIWrapper /usr/bin/php5-cgi
+# Order allow,deny
+# Allow from all
+# </Directory>
+# </IfModule>
+
+LoadModule php7_module lib/httpd/mod_php7.so
+<FilesMatch \.php$>
+ SetHandler application/x-httpd-php
+</FilesMatch>
+
+# Upstream had
+# <IfModule mod_php5.c>
+# <Directory /usr/share/zoneminder/www>
+# Options -Indexes +FollowSymLinks
+# <IfModule mod_dir.c>
+# DirectoryIndex index.php
+# </IfModule>
+# </Directory>
+# </IfModule>
+
+ScriptAlias /zm/cgi-bin/ "@ZM_HTTPD_CGIBIN@/"
+<Directory "@ZM_HTTPD_CGIBIN@">
+ <RequireAny>
+ Require ip 127.0.0.1
+ Require ip ::
+ </RequireAny>
+</Directory>
+
+Alias /zm/cache "/var/cache/zoneminder"
+<Directory "/var/cache/zoneminder">
+ <RequireAny>
+ Require ip 127.0.0.1
+ Require ip ::
+ </RequireAny>
+</Directory>
+
+Alias /zm/events "/var/db/zoneminder/events"
+Alias /zm/images "/var/db/zoneminder/images"
+<Directory "/var/db/zoneminder">
+ <RequireAny>
+ Require ip 127.0.0.1
+ Require ip ::
+ </RequireAny>
+</Directory>
+
+# \todo Upstream sets Options.
+Alias /zm "@ZM_HTTPD_ROOT@"
+<Directory "@ZM_HTTPD_ROOT@">
+ DirectoryIndex index.php
+ <RequireAny>
+ Require ip 127.0.0.1
+ Require ip ::
+ </RequireAny>
+</Directory>
Index: pkgsrc/security/zoneminder/files/start-watchdog.sh
diff -u /dev/null pkgsrc/security/zoneminder/files/start-watchdog.sh:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/files/start-watchdog.sh Sun Dec 1 13:49:47 2024
@@ -0,0 +1,20 @@
+#!/bin/sh
+
+# On startup, there is a hang (not understood). This script attempts
+# to identify and kill any such hung processes. The normal process
+# supervision restarts it, and it seems the second time it doesn't
+# hang.
+
+while sleep 60; do
+ pids=`ps uaxw | egrep 'zmdc.pl start ' | egrep -v egrep | awk '{print $2}'`
+ if [ "$pids" != "" ]; then
+ logger "$0: found $pids"
+ sleep 10
+ for p in $pids; do
+ if kill -0 $p 2> /dev/null; then
+ logger "$0: pid $p still alive"
+ kill $p
+ fi
+ done
+ fi
+done
Index: pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_EventLoop.cpp
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_EventLoop.cpp:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_EventLoop.cpp Sun Dec 1 13:49:47 2024
@@ -0,0 +1,17 @@
+$NetBSD: patch-dep_RtspServer_src_net_EventLoop.cpp,v 1.1 2024/12/01 13:49:47 gdt Exp $
+
+Add NetBSD to BSD conditional.
+
+\todo File upstream PR.
+
+--- dep/RtspServer/src/net/EventLoop.cpp.orig 2024-01-14 21:16:28.747478445 +0000
++++ dep/RtspServer/src/net/EventLoop.cpp
+@@ -60,7 +60,7 @@ void EventLoop::Loop()
+ {
+ #if defined(__linux) || defined(__linux__)
+ std::shared_ptr<TaskScheduler> task_scheduler_ptr(new EpollTaskScheduler(n));
+-#elif defined(WIN32) || defined(_WIN32) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#elif defined(WIN32) || defined(_WIN32) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ std::shared_ptr<TaskScheduler> task_scheduler_ptr(new SelectTaskScheduler(n));
+ #endif
+ task_schedulers_.push_back(task_scheduler_ptr);
Index: pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_Socket.h
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_Socket.h:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_Socket.h Sun Dec 1 13:49:47 2024
@@ -0,0 +1,26 @@
+$NetBSD: patch-dep_RtspServer_src_net_Socket.h,v 1.1 2024/12/01 13:49:47 gdt Exp $
+
+Extend BSDish OS detection to NetBSD.
+
+Not yet filed upstream.
+
+--- dep/RtspServer/src/net/Socket.h.orig 2024-01-14 21:10:13.216456825 +0000
++++ dep/RtspServer/src/net/Socket.h
+@@ -4,7 +4,7 @@
+ #ifndef XOP_SOCKET_H
+ #define XOP_SOCKET_H
+
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ #include <sys/types.h>
+ #include <sys/socket.h>
+ #include <sys/ioctl.h>
+@@ -17,7 +17,7 @@
+ #include <net/ethernet.h>
+ #endif
+
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ #include <net/route.h>
+ #include <netdb.h>
+ #include <net/if.h>
Index: pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_SocketUtil.cpp
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_SocketUtil.cpp:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_net_SocketUtil.cpp Sun Dec 1 13:49:47 2024
@@ -0,0 +1,44 @@
+$NetBSD: patch-dep_RtspServer_src_net_SocketUtil.cpp,v 1.1 2024/12/01 13:49:47 gdt Exp $
+
+Add NetBSD to BSD conditional.
+
+\todo File upstream PR.
+
+--- dep/RtspServer/src/net/SocketUtil.cpp.orig 2024-01-14 21:17:15.225438102 +0000
++++ dep/RtspServer/src/net/SocketUtil.cpp
+@@ -23,7 +23,7 @@ bool SocketUtil::Bind(SOCKET sockfd, std
+
+ void SocketUtil::SetNonBlock(SOCKET fd)
+ {
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ int flags = fcntl(fd, F_GETFL, 0);
+ fcntl(fd, F_SETFL, flags | O_NONBLOCK);
+ #elif defined(WIN32) || defined(_WIN32)
+@@ -34,7 +34,7 @@ void SocketUtil::SetNonBlock(SOCKET fd)
+
+ void SocketUtil::SetBlock(SOCKET fd, int write_timeout)
+ {
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ int flags = fcntl(fd, F_GETFL, 0);
+ fcntl(fd, F_SETFL, flags&(~O_NONBLOCK));
+ #elif defined(WIN32) || defined(_WIN32)
+@@ -45,7 +45,7 @@ void SocketUtil::SetBlock(SOCKET fd, int
+ if(write_timeout > 0)
+ {
+ #ifdef SO_SNDTIMEO
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ struct timeval tv = {write_timeout/1000, (write_timeout%1000)*1000};
+ setsockopt(fd, SOL_SOCKET, SO_SNDTIMEO, (char*)&tv, sizeof tv);
+ #elif defined(WIN32) || defined(_WIN32)
+@@ -168,7 +168,7 @@ int SocketUtil::GetPeerAddr(SOCKET sockf
+
+ void SocketUtil::Close(SOCKET sockfd)
+ {
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ ::close(sockfd);
+ #elif defined(WIN32) || defined(_WIN32)
+ ::closesocket(sockfd);
Index: pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_xop_rtsp.h
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_xop_rtsp.h:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/patches/patch-dep_RtspServer_src_xop_rtsp.h Sun Dec 1 13:49:47 2024
@@ -0,0 +1,26 @@
+$NetBSD: patch-dep_RtspServer_src_xop_rtsp.h,v 1.1 2024/12/01 13:49:47 gdt Exp $
+
+Add NetBSD to BSD conditional.
+
+\todo File upstream PR.
+
+--- dep/RtspServer/src/xop/rtsp.h.orig 2024-01-14 21:21:34.574730494 +0000
++++ dep/RtspServer/src/xop/rtsp.h
+@@ -51,7 +51,7 @@ public:
+ char ip[100] = { 0 };
+ char suffix[100] = { 0 };
+ uint16_t port = 0;
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__)|| defined(__OpenBSD__)
+ if (sscanf(url.c_str() + 7, "%[^:]:%hu/%s", ip, &port, suffix) == 3)
+ #elif defined(WIN32) || defined(_WIN32)
+ if (sscanf_s(url.c_str() + 7, "%[^:]:%hu/%s", ip, 100, &port, suffix, 100) == 3)
+@@ -59,7 +59,7 @@ public:
+ {
+ rtsp_url_info_.port = port;
+ }
+-#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__OpenBSD__)
++#if defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
+ else if (sscanf(url.c_str() + 7, "%[^/]/%s", ip, suffix) == 2)
+ #elif defined(WIN32) || defined(_WIN32)
+ else if (sscanf_s(url.c_str() + 7, "%[^/]/%s", ip, 100, suffix, 100) == 2)
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__eventstream.cpp
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-src_zm__eventstream.cpp:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__eventstream.cpp Sun Dec 1 13:49:48 2024
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_zm__eventstream.cpp,v 1.1 2024/12/01 13:49:48 gdt Exp $
+
+Only include local sendfile header if there is sendfile support, to
+avoid #error for no sendfile implementation.
+
+--- src/zm_eventstream.cpp.orig 2023-02-23 21:44:01.000000000 +0000
++++ src/zm_eventstream.cpp
+@@ -43,8 +43,8 @@ const std::string EventStream::StreamMod
+
+ bool EventStream::loadInitialEventData(int monitor_id, time_t event_time) {
+ std::string sql = stringtf("SELECT `Id` FROM `Events` WHERE "
+- "`MonitorId` = %d AND unix_timestamp(`EndDateTime`) > %ld "
+- "ORDER BY `Id` ASC LIMIT 1", monitor_id, event_time);
++ "`MonitorId` = %d AND unix_timestamp(`EndDateTime`) > %jd "
++ "ORDER BY `Id` ASC LIMIT 1", monitor_id, (intmax_t) event_time);
+
+ MYSQL_RES *result = zmDbFetch(sql.c_str());
+ if (!result)
Index: pkgsrc/security/zoneminder/patches/patch-src_zm__packet.h
diff -u /dev/null pkgsrc/security/zoneminder/patches/patch-src_zm__packet.h:1.1
--- /dev/null Sun Dec 1 13:49:49 2024
+++ pkgsrc/security/zoneminder/patches/patch-src_zm__packet.h Sun Dec 1 13:49:48 2024
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_zm__packet.h,v 1.1 2024/12/01 13:49:48 gdt Exp $
+
+Add NetBSD to BSD conditional.
+
+\todo File upstream PR.
+
+--- src/zm_packet.h.orig 2024-01-14 21:29:59.095197872 +0000
++++ src/zm_packet.h
+@@ -32,7 +32,7 @@ extern "C" {
+ #include <libavformat/avformat.h>
+ }
+
+-#ifdef __FreeBSD__
++#if defined(__FreeBSD__) || defined(__NetBSD__)
+ #include <sys/time.h>
+ #endif // __FreeBSD__
+
Home |
Main Index |
Thread Index |
Old Index