CVS commit: pkgsrc/security/zoneminder

"Greg Troxel" <[email protected]> Thu, 30 Jul 2026 12:36:01 +0000
Newsgroups gmane.os.netbsd.devel.pkgsrc.cvs
Message-ID <[email protected]>
Module Name:	pkgsrc
Committed By:	gdt
Date:		Thu Jul 30 12:36:00 UTC 2026

Modified Files:
	pkgsrc/security/zoneminder: Makefile PLIST distinfo
	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__rtp__source.cpp patch-src_zm__utils.cpp
	    patch-src_zm_signal_cpp
Added Files:
	pkgsrc/security/zoneminder/patches: patch-src_zm__comms.h
	    patch-src_zm__remote__camera__nvsocket.cpp
	    patch-web_includes_database.php
Removed Files:
	pkgsrc/security/zoneminder/patches: patch-src_zm__event.cpp
	    patch-src_zm__eventstream.cpp patch-src_zm__image.cpp
	    patch-src_zm__monitor.cpp patch-src_zm__packet.h
	    patch-src_zm__packetqueue.cpp patch-src_zm__regexp.cpp
	    patch-src_zm__rtsp__server__fifo__source.cpp patch-src_zm__time.h
	    patch-src_zm_comms_h patch-src_zm_logger_cpp
	    patch-src_zm_remote_camera_h patch-src_zmu.cpp

Log Message:
security/zoneminder: Update to 1.38.3

Upstream NEWS, less bugfixes and minor improvements:

ZoneMinder 1.38.x Release Notes
TL;DR - Key Highlights

  - Role-Based Access Control - Enterprise-grade permission system with user roles
  - Modern Streaming - WebRTC, Go2RTC, RTSP2Web support with hardware acceleration
  - Monitor Function Redesign - Granular control with separate Capturing, Analysing, and Recording settings
  - Enhanced Protocols - ONVIF Events, MQTT, Amcrest API integration
  -Event Tagging - Flexible labeling and organization system
  - Server Monitoring - Real-time CPU, memory, and performance metrics
  - Geolocation - Geographic tracking for events and servers
  - Hardware Encoding - GPU acceleration for video encoding

Overview

ZoneMinder 1.38.x represents a major evolution from version 1.36.x,
introducing significant architectural improvements, new streaming
capabilities, enhanced security features, and extensive monitoring
enhancements. This release focuses on modernizing the platform with
support for contemporary streaming protocols, implementing
enterprise-grade access control, and improving performance and
scalability.

Major Feature Areas

1. Advanced User Access Control & Security

Role-Based Access Control (RBAC)

    Introduced comprehensive role-based permission system with
    reusable role templates New database tables: User_Roles,
    Role_Groups_Permissions, Role_Monitors_Permissions Replaced legacy
    comma-separated monitor ID strings with normalized permission
    tables Fine-grained permissions for both monitor groups and
    individual monitors

Enhanced User Management

    Added user profile fields: Name, Email, Phone User-specific
    montage layouts for personalized dashboards Improved security
    controls with private and system configuration flags

2. Modern Streaming & Multi-Protocol Support

WebRTC Integration

    Janus WebRTC Gateway support with audio streaming capabilities
    Go2RTC protocol support for alternative streaming RTSP2Web
    streaming with WebRTC/MSE/HLS options Configurable codec selection
    and stream profiles

Hardware-Accelerated Encoding

    Hardware acceleration support for video encoding (GPU encoding)
    New encoder configuration options: EncoderHWAccelName and
    EncoderHWAccelDevice Human-readable codec names replacing
    integer-based codec selection Optimized encoding for reduced CPU
    usage

3. Monitor Function Redesign

One of the most significant architectural changes in 1.38.x is the
redesign of the monitor Function field into three independent control
parameters. This provides much more granular control over monitor
behavior.

Legacy Function Field (1.36.x and earlier)

The traditional Function field was a single enum that controlled all aspects of a monitor's operation:

    None - Monitor disabled
    Monitor - Capture video only (no recording, no motion detection)
    Modect - Motion detection with recording on motion
    Record - Continuous recording without motion detection
    Mocord - Continuous recording with motion detection
    Nodect - Recording on external trigger, no built-in motion detection

New Granular Control (1.38.x)

The Function field has been split into three independent settings,
allowing fine-grained control:

Capturing enum (None/Ondemand/Always)

    Controls whether the monitor captures video from the camera
    None - No video capture (monitor effectively disabled)
    Ondemand - Capture only when needed (e.g., when viewing live or triggered by events)
    Always - Continuous video capture from the camera

Analysing enum (None/Always)

    Controls whether motion detection and analysis is performed
    None - No motion detection or analysis (equivalent to Monitor or Record modes)
    Always - Perform motion detection and analysis (equivalent to Modect or Mocord modes)

Recording enum (None/OnMotion/Always)

    Controls when video is saved to disk
    None - No recording (live viewing only)
    OnMotion - Record only when motion is detected or triggered
    Always - Continuous recording

Migration from Legacy Functions

The database automatically migrates old Function values to the new settings:

    None → Capturing: None, Analysing: None, Recording: None
    Monitor → Capturing: Always, Analysing: None, Recording: None
    Modect → Capturing: Always, Analysing: Always, Recording: OnMotion
    Record → Capturing: Always, Analysing: None, Recording: Always
    Mocord → Capturing: Always, Analysing: Always, Recording: Always
    Nodect → Capturing: Always, Analysing: None, Recording: OnMotion

Benefits of the New Design

    More flexible monitor configurations (e.g., analyze but don't record, or record without analysis)
    Better resource management by independently controlling capture, analysis, and storage
    Clearer separation of concerns for troubleshooting
    Foundation for future enhancements like conditional recording policies
    Easier to understand monitor behavior at a glance

4. Enhanced Camera Integration

Extended Protocol Support

    ONVIF Event Listener for direct camera event notifications
    Amcrest API support for Amcrest-branded cameras
    MQTT integration for IoT device communication and message handling

Camera Management

    Camera manufacturer and model database integration

5. Advanced Event Management

Event Tagging System

    Flexible event labeling with custom tags
    Many-to-many relationship between events and tags
    Improved event organization and filtering

Event Automation & Triggers

    Event start and end command execution
    Multiple event close modes: system, time, duration, idle, alarm-based
    Section length warnings for long recordings
    Filter execution intervals for scheduled automation

Event Metadata & Analytics

    Event data extensibility with custom metadata storage
    Geolocation tracking (latitude/longitude) for events
    Enhanced event reporting system with historical analytics

6. Performance & Infrastructure

Server Monitoring

    Comprehensive server statistics tracking
    CPU usage monitoring (User, Nice, System, Idle percentages)
    Memory and swap utilization metrics
    Timestamped performance data collection

Optimization Features

    Monitor startup delay to stagger initialization and reduce system load
    Enhanced status tracking with update timestamps
    Analysis image channel optimization (Full Color vs. Y-Channel) (reduces cpu use)
    Improved monitor soft delete with logical deletion flags
    Monitor importance levels (Normal/Less/Not) for stream prioritization
    Wall clock timestamp synchronization when doing passthrough

7. Display & User Interface

Montage Enhancements

    Expanded grid layouts: 1/2/4/5/6/7/8/9/10/12/16 Wide configurations
    User-specific montage layouts with personalized views
    options to locate/hide status information to fully use space

Playback Improvements

    Default player selection for preferred streaming client
    Enhanced video playback controls
    Improved event viewing experience
    Optimal mjpeg scaling to reduce cpu/bandwidth use while maintaining fidelity

** New file explorer view **

    limited to defined storage areas

** Watch and Cycle views merged **

    PTZ controls improved, with toggling of visibility

8. Storage & Recording

Granular Recording Control

With the redesign of the monitor Function field (see section 3),
recording behavior is now controlled independently through the
Recording, Capturing, and Analysing settings. This provides much
greater flexibility:

    Recording modes: None/OnMotion/Always
    Capturing modes: None/Ondemand/Always
    Analysis modes: None/Always

This allows configurations that weren't possible with the old Function
field, such as:

    Capture and analyze without recording (for alerting only)
    Record without analysis (for compliance/archival)
    On-demand capture with triggered recording

Email Notifications

    Email format options: Individual or Summary
    Improved event notification formatting
    Configurable alert delivery

9. Geographic & Metadata Features

Geolocation Support

    Geographic coordinates for monitors, events, and servers
    Location-based event tracking and analysis

10. Development & Integration

Database Schema Evolution

The 1.37.x series includes approximately 79 database schema updates
from 1.37.1 through 1.37.79, each introducing targeted improvements
and new capabilities. Key architectural changes include:

    Migration from string-based configuration to normalized relational tables
    Introduction of extensible metadata storage systems
    Enhanced foreign key relationships for referential integrity
    Improved indexing for query performance

Upgrade Considerations

Breaking Changes

    Permission system migration from comma-separated strings to normalized tables
    Some configuration parameters have been renamed or restructured
    Monitor soft delete may require updates to custom scripts that query monitor data


To generate a diff of this commit:
cvs rdiff -u -r1.104 -r1.105 pkgsrc/security/zoneminder/Makefile
cvs rdiff -u -r1.12 -r1.13 pkgsrc/security/zoneminder/PLIST
cvs rdiff -u -r1.28 -r1.29 pkgsrc/security/zoneminder/distinfo
cvs rdiff -u -r1.4 -r1.5 \
    pkgsrc/security/zoneminder/patches/patch-CMakeLists.txt \
    pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_General_pm \
    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_ConfigData.pm.in \
    pkgsrc/security/zoneminder/patches/patch-scripts_zmpkg_pl_in
cvs rdiff -u -r1.3 -r1.4 \
    pkgsrc/security/zoneminder/patches/patch-scripts_ZoneMinder_lib_ZoneMinder_Memory_Shared.pm
cvs rdiff -u -r1.6 -r1.7 \
    pkgsrc/security/zoneminder/patches/patch-scripts_zm_in \
    pkgsrc/security/zoneminder/patches/patch-src_zm__rtp__source.cpp
cvs rdiff -u -r0 -r1.1 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__comms.h \
    pkgsrc/security/zoneminder/patches/patch-src_zm__remote__camera__nvsocket.cpp \
    pkgsrc/security/zoneminder/patches/patch-web_includes_database.php
cvs rdiff -u -r1.7 -r0 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__event.cpp
cvs rdiff -u -r1.1 -r0 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__eventstream.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__packet.h \
    pkgsrc/security/zoneminder/patches/patch-src_zm__packetqueue.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__regexp.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__rtsp__server__fifo__source.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm__time.h
cvs rdiff -u -r1.3 -r0 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__image.cpp
cvs rdiff -u -r1.5 -r0 \
    pkgsrc/security/zoneminder/patches/patch-src_zm__monitor.cpp \
    pkgsrc/security/zoneminder/patches/patch-src_zm_remote_camera_h \
    pkgsrc/security/zoneminder/patches/patch-src_zmu.cpp
cvs rdiff -u -r1.6 -r0 \
    pkgsrc/security/zoneminder/patches/patch-src_zm_comms_h
cvs rdiff -u -r1.9 -r0 \
    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.
(unnamed) (text/x-diff, 124.9 KB) - not displayed