Commit Graph

531 Commits

Author SHA1 Message Date
Isaac Connor
55bbec4c55 Merge pull request #4924 from SteveGilvarry/3816-db-ssl-verify-server-cert
feat: add ZM_DB_SSL_VERIFY_SERVER_CERT option (portable across MySQL/MariaDB)
2026-06-14 09:39:36 -04:00
SteveGilvarry
e60bdc67b2 feat: add ZM_DB_SSL_VERIFY_SERVER_CERT option (portable across MySQL/MariaDB)
Add a ZM_DB_SSL_VERIFY_SERVER_CERT setting so a database connection that uses
ZM_DB_SSL_CA_CERT can talk to a server with a self-signed or otherwise
non-matching certificate. When enabled, verification is by identity (the cert
must chain to the CA and its CN/SAN must match ZM_DB_HOST), consistent across
the C++ daemons, the PHP web interface, the CakePHP API and the Perl scripts.

This re-does the reverted #3817. That PR broke the build because it called
mysql_options(MYSQL_OPT_SSL_VERIFY_SERVER_CERT, ...), and that enum was removed
from the MySQL 8.0 C client in favour of MYSQL_OPT_SSL_MODE; it also passed a
c_str() where a my_bool* was expected, and referenced the PHP constant
unconditionally (fatal on PHP 8 for an upgraded install whose zm.conf predates
the option).

The option that controls server-cert verification differs by client library and
the symbols are enum values, not macros, so CMake feature-detects them by
compiling:
  - HAVE_MYSQL_OPT_SSL_MODE  (MySQL 5.7.11+/8.0, MariaDB Connector/C 3.1+)
  - HAVE_MYSQL_OPT_SSL_VERIFY_SERVER_CERT  (older MariaDB/MySQL)
zm_db.cpp uses SSL_MODE_VERIFY_IDENTITY / SSL_MODE_REQUIRED when the former is
available, else falls back to the latter with a proper my_bool.

Value handling is three-way in every layer: a truthy value verifies, a false-y
value (0/false/no/off) skips verification, and an empty/unset value leaves the
client default in place so existing installs are unchanged on upgrade. PHP, the
API datasource (via PDO flags) and the Perl DSN are all guarded with defined()
checks. Fresh installs default to 1.

Documents the full ZM_DB_* connection and SSL settings, including the hostname
verification gotcha when connecting by IP, in docs/userguide/configfiles.rst.

refs #3816
2026-06-14 13:20:00 +10:00
Isaac Connor
e71878564a docs: add per-column event sort design and plan 2026-06-09 13:10:13 -04:00
Isaac Connor
c4073c964c feat: encoder parameter templates with editor + REST API closes #4778 closes #4802
Adds a curated, per-encoder parameter-template library to ZoneMinder:

- Monitor edit page: a new Template row above the EncoderParameters
  textarea offers per-encoder templates (Balanced / Archival / Low
  Power / Low CPU). Apply merges the template's params into the
  textarea, preserving user-only keys. Advisory lint flags option
  keys that aren't recognised for the selected encoder. Switching
  encoders offers a same-name template on the new encoder via a
  native confirm.

- Options page: a new Encoder Templates tab with full CRUD —
  list / edit / copy / delete — backed by a new CakePHP REST API
  at /api/encoder_templates.

- Storage: a new EncoderTemplates DB table seeded with 14 shipped
  defaults across libx264 / libx265 / h264_nvenc / hevc_nvenc /
  h264_vaapi / hevc_vaapi. The table is mutable; ZM upgrades do not
  re-seed user-edited rows.

- valid_keys (the lint allow-list) stays in PHP code as ffmpeg
  vocabulary, not user data.

- Default params explicitly include pix_fmt to avoid the yuvj420p
  HEVC HW-decode rejection issue we hit earlier.

No C++ change. The textarea content is parsed by the existing
av_dict_parse_string call in src/zm_videostore.cpp.

version.txt -> 1.39.6.

Specs: docs/superpowers/specs/2026-05-0{1,2}-*.md
Plans: docs/superpowers/plans/2026-05-0{1,2}-*.md

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 17:24:17 -04:00
copilot-swe-agent[bot]
04aa0a7781 docs: document all ONVIF_Options key=value pairs
Replaces the uninformative "Any ONVIF options required. This is an
optional field." with a full reference covering:
- key=value,key=value format with an example
- pull_timeout, subscription_timeout, max_retries,
  timestamp_validity, soap_log, renewal_enabled, expire_alarms,
  closes_event — including defaults, valid ranges, and when to use each

Also fixes pre-existing typo: "alam" → "alarm".

Agent-Logs-Url: https://github.com/ZoneMinder/zoneminder/sessions/149f7873-ca12-424f-85d4-4bdc179d2488

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-05-03 20:21:49 +00:00
Isaac Connor
863fac4d72 docs: add zma event re-analysis utility documentation
Add dedicated documentation page for the zma binary covering synopsis,
all command-line options, operating modes (update-existing vs create-events),
save-analysis functionality, and usage examples. Add zma entry to the
components page and user guide toctree.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-04 09:47:26 -05:00
Isaac Connor
9f702cb315 docs: add video group setup to Debian/Ubuntu install guides refs #4642
Document the need to add www-data to the video group for local camera
access. The package postinst now does this automatically, but source
installs still require the manual step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 18:19:20 -05:00
Steve Gilvarry
823504d1d1 Add section on debug logs that we can reference when asking for them. 2026-01-02 14:04:22 +11:00
Isaac Connor
0234a43ff0 easoydocker is deprecated 2025-11-06 18:40:13 -05:00
Isaac Connor
f826f606bc Need a blank line to make toctree valid. 2025-11-06 18:40:13 -05:00
Isaac Connor
9c96ba3d28 Fix references to StartTime => StartDateTime and EndTime 2025-09-05 11:45:49 -04:00
Wyn Williams
e81cca5c37 Update easydocker.rst
Edited to remove info and links to easy docker, file left in place so as to not break any guides or links to it.
2025-08-06 21:39:27 +03:00
Wyn Williams
4c1df8a80e Update packpack.rst
Removed link to now depreciated easy docker images
2025-08-06 21:32:37 +03:00
Wyn Williams
d407f3dbcf Update easydocker.rst
added a warning to not use these docker images in production
2025-08-06 21:31:13 +03:00
Wyn Williams
51145d3560 Update index.rst
removed easy docker reference
2025-08-06 21:28:10 +03:00
Isaac Connor
9cf68eb83d Fix typo. Fixes #3457 2025-07-14 12:03:12 -07:00
Isaac Connor
f1cab94091 Add mysql install and db creation to Jammy instructions. Add a couple hints that it also applies to newer. Fixes #4185 2024-11-12 06:56:16 -05:00
Isaac Connor
b236b48f1b Updates removing zma and fixing some of the perl module names 2024-10-16 11:42:55 -04:00
unbroken75
ea1fd08780 Update debian.rst 2024-09-22 16:15:27 +02:00
robertsilen
1b526e1053 add mariadb 2024-08-19 12:57:40 +03:00
Isaac Connor
9442259d8d Merge pull request #4113 from beltphed/patch-1
Update debian.rst -- fix redirect of stdout in sudo
2024-08-18 12:50:07 -04:00
beltphed
aa892e69d0 Update debian.rst
Failing to install apache2 results in subsequent calls to a2enconf and a2enmod failing because they might not have been installed. (in my case, I was using a minimal Debian 12 install which doesn't install apache2)
2024-08-16 19:55:49 -07:00
beltphed
f94fc05966 Update debian.rst
As written, you can't redirect sudo output as desired. Wrapping the "echo deb..." in quotes will permit a regular user to redirect stdout to /etc/apt/sources.list
2024-08-16 16:47:54 -07:00
Aktarus
fbd7ad533f Update debian.rst, enable autostart of ZM at boot
added one line to enable autostart of ZM at boot
2024-08-04 15:23:38 +02:00
Isaac Connor
84e1869fb8 Add ELOC substitution to get Latitude and Longitude of event 2024-07-05 17:28:59 -04:00
Isaac Connor
481210feaf Rough in web ui api documentation. Add download event video documentation. 2024-07-05 15:37:12 -04:00
Isaac Connor
8618900339 If we are not doing an html email, then don't replace with img tags referencing the attachment. Just do the attachment. Introduce %FID% to sub with the id of the filter. 2024-01-15 16:58:54 -05:00
efranzwa
0026e3446b Add images for Viewing Monitors Doc Section 2023-12-20 06:24:37 -08:00
efranzwa
bd863d026b Update Viewing Monitors Doc Section 2023-12-20 06:22:43 -08:00
Isaac Connor
112eb6b9ad Add support for EISNAP and EPISNAP for snapshot image 2023-12-19 12:27:02 -05:00
efranzwa
b033134596 Add images for Defining Zones Doc Section 2023-12-09 09:49:15 -08:00
efranzwa
6298d48db0 Update Defining Zones Doc Section 2023-12-09 09:47:12 -08:00
efranzwa
fec884493c Added images for Defining Monitors section 2023-11-10 12:59:38 -08:00
efranzwa
bf08d6c9bc Added MQTT Tab section 2023-11-10 12:54:49 -08:00
efranzwa
bea5677a31 Added Misc Tab section 2023-11-10 12:54:33 -08:00
efranzwa
ac8ce700bc Added X10 Tab section 2023-11-10 12:54:06 -08:00
efranzwa
ad65e34d0f Added Control Tab section 2023-11-10 12:53:48 -08:00
efranzwa
bd3b73220f Added Buffers Tab section 2023-11-10 12:53:24 -08:00
efranzwa
703939f7ec Added Timestamp Tab section 2023-11-10 12:53:00 -08:00
efranzwa
ca784d9722 Added ONVIF Tab section 2023-11-10 12:52:10 -08:00
efranzwa
b347385b21 Added Viewing Tab section 2023-11-10 12:51:46 -08:00
efranzwa
31a1278286 Added Recording Tab section 2023-11-10 12:51:04 -08:00
efranzwa
4861aa7acb Added Analysis Tab section 2023-11-10 12:50:21 -08:00
efranzwa
f7cb484fbd Added Source Tab section 2023-11-10 12:49:49 -08:00
efranzwa
15e8ff578b Added General Tab section 2023-11-10 12:49:01 -08:00
efranzwa
8d29f0e468 Add the Adding Monitors section 2023-11-10 12:47:01 -08:00
efranzwa
97b2bd5b9b Update Defining Monitors doc section 2023-11-10 12:42:29 -08:00
Isaac Connor
98bd4f3203 Setup requirements.txt for sphinx-rtd-theme 2023-11-01 10:59:07 -04:00
Isaac Connor
fca24d5322 Revert bogus attempt to add sphinx_rtd_theme to conf.py 2023-11-01 10:58:33 -04:00
Isaac Connor
a43e715aa6 Add sphinx_rtd_theme to import and extensions 2023-10-30 16:44:54 -04:00