Commit Graph

1488 Commits

Author SHA1 Message Date
Isaac Connor
c250eadcea fix: use ${PERL_EXECUTABLE} instead of hardcoded perl in CMake builds
Replace 4 hardcoded `perl` invocations with `${PERL_EXECUTABLE}` from
find_package(Perl) so builds work when perl isn't in PATH or the wrong
perl would be found (NixOS, custom installs, Homebrew vs system).

Also: fix ZMCONFGEN_RESULT variable case mismatch in error message,
remove deprecated IMMEDIATE keyword from configure_file(), bump
cmake_minimum_required from 3.5 to 3.12 (C++17 requires 3.9+), and
remove dead C++11 fallback for CMake < 3.8 in ConfigureBaseTargets.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-12 12:25:37 -05:00
Isaac Connor
fcfc7db0c7 Merge branch 'master' of github.com:ZoneMinder/zoneminder 2026-02-09 09:29:41 -05:00
Isaac Connor
f7858f3770 feat: add events command to zmonvif-probe.pl
Add 'events' command to check if an ONVIF camera supports the events
service. Returns "Events: yes" or "Events: no" for easy parsing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-09 09:29:36 -05:00
Nic Boet
d66a3525bd feat: detect MariaDB-native command names with fallback to MySQL legacy names
MariaDB is deprecating mysql-prefixed utility names (mysqldump,
mysql) in favour of its own (mariadb-dump, mariadb). Add
findDbCommand() to ZoneMinder::General that probes for the
MariaDB-native binary first and falls back to the legacy name.
Results are cached per-process. Update the three call sites in
zmupdate.pl.in and zmcamtool.pl.in.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 13:19:32 -06:00
Isaac Connor
4ebbc540ca Merge pull request #4601 from pliablepixels/fix-tag-filtering
fix: correct tag filter operator handling for No Tag and Any Tag
2026-02-07 15:38:11 -05:00
Pliable Pixels
79253dc374 fix: address review feedback for tag filter handling
- Add IS NOT operator check alongside != in PHP FilterTerm.php
  (was already handled in Perl but missing from PHP)
- Add defined() guard on $term->{val} in Perl Filter.pm to avoid
  uninitialized value warnings with malformed/legacy saved filters

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 13:11:13 -05:00
Pliable Pixels
1188635e9a fix: correct tag filter operator handling for "No Tag" and "Any Tag"
The filter system ignored the operator (= vs !=) when generating SQL
for the special tag values "No Tag" (0) and "Any Tag" (-1).

In PHP (FilterTerm.php), "Tag != Any Tag" produced EXISTS instead of
NOT EXISTS, returning events WITH tags instead of events WITHOUT tags.

In Perl (Filter.pm), != was not handled as a special case and fell
through to generic SQL (T.Id != -1), which excluded events with no
tags because LEFT JOIN produces NULL and NULL != -1 evaluates to
UNKNOWN in SQL. Additionally, T.Id was unconditionally prepended for
all tag values, producing invalid SQL (T.IdEXISTS) for the special
cases that use EXISTS/NOT EXISTS subqueries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 13:01:39 -05:00
Isaac Connor
eb7ad81e40 fix: correct syntax error and missing parameter in Database.pm
- zmDbDo: fix mismatched parentheses in Error() call
- zmDbGetMonitorAndControl: pass $id parameter to zmDbFetchOne

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 13:44:49 -05:00
copilot-swe-agent[bot]
27793980ef fix: Address code review feedback
- Add SSL verification state tracking to Dahua.pm to ensure retry logic works for all requests
- Add SSL retry logic to Dahua.pm sendCmd method
- Remove redundant 'use IO::Socket::SSL' statements from TapoC520WS_ONVIF.pm retry blocks

refs #TBD

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-02-02 14:37:57 +00:00
copilot-swe-agent[bot]
bce080c735 feat: Enable SSL certificate verification with fallback for all components
Enable TLS peer certificate verification by default in all components that communicate over HTTPS. If SSL verification fails, log a warning and retry without verification to maintain backward compatibility with cameras using self-signed certificates.

Changes:
- C++ (zm_monitor_go2rtc.cpp): Enable SSL verification for all curl operations (3 locations)
- C++ (zm_monitor_rtsp2web.cpp): Enable SSL verification for all curl operations (3 locations)
- PHP (monitor_probe.php): Enable SSL verification with fallback logic
- Perl (Dahua.pm): Enable SSL verification with LWP::UserAgent
- Perl (TapoC520WS_ONVIF.pm): Enable SSL verification with retry logic in request methods

refs #TBD

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-02-02 14:34:19 +00:00
Isaac Connor
397d2a357e Merge branch 'master' of github.com:ZoneMinder/zoneminder 2026-02-01 10:17:16 -05:00
Isaac Connor
05db51a3ff Fix package name being Frame instead of User 2026-02-01 09:06:14 -05:00
Pliable Pixels
ee99bca21c fix: correct package name in User.pm (ZoneMinder::Frame → ZoneMinder::User)
User.pm declares `package ZoneMinder::Frame` instead of
`package ZoneMinder::User`, clobbering the Frame package namespace
and making the User ORM class unusable via `ZoneMinder::User->find_one()`.

Fixes ZoneMinder/zoneminder#4581

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 09:04:40 -05:00
Isaac Connor
d89f2e59db refactor: rename Janus_Use_RTSP_Restream to Restream
Rename Janus-specific restream fields to be more generic since they are
now used by Go2RTC and RTSP2Web as well:
- Janus_Use_RTSP_Restream → Restream
- Janus_RTSP_User → RTSP_User

Update visibility logic so the Restream checkbox appears when RTSPServer
is enabled AND any streaming service (Janus, Go2RTC, or RTSP2Web) is
selected, rather than only when Janus is enabled.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-31 18:47:37 -05:00
Isaac Connor
872cdb1b44 Add Group.pm which is not actually used anywhere 2026-01-31 16:22:24 -05:00
Isaac Connor
479d3a9b05 Split parsing Path and Control address into their own functions, adding back a hack to handle unescaped passwords on ControlAddress. In Amcrest_HTTP if using ControlAddress fails, fall back to using Path 2026-01-22 11:54:58 -05:00
Isaac Connor
b6ee583454 Merge updates from another branch, cleaning up and improve address/auth parsing and improving put() 2026-01-22 10:03:01 -05:00
Isaac Connor
f702c6c190 Add last_analysis_view_time to perl shm structure 2026-01-16 15:28:43 -05:00
Isaac Connor
0ee1da73cf Remove primark_key 2026-01-14 09:46:31 -05:00
Isaac Connor
376e6b8899 Only set timezone if it is set in config. 2026-01-14 09:33:50 -05:00
Isaac Connor
32ec9dc801 Add defaults for Type and Scheme to prevent warnings in logs due to undefined values 2026-01-14 09:32:08 -05:00
Isaac Connor
201b2bbd06 Set tz in Date::Manip so that returned unixdate from '-1 hour' is in the current timezone, not UTC 2026-01-14 09:31:55 -05:00
Isaac Connor
8864d5759d Merge pull request #4510 from SteveGilvarry/videojs_update
Videojs update
2026-01-10 10:21:50 -05:00
copilot-swe-agent[bot]
b44aafb0ca Add "Any Tag" filter option for events
- Added "Any Tag" entry with value -1 to availableTags in Filter.php (widget and simple_widget methods)
- Added "Any Tag" entry to filter.php view
- Added translation for "Any Tag" in en_gb.php language file
- Implemented SQL logic in FilterTerm.php to handle "Any Tag" (value -1) using EXISTS query
- Implemented SQL logic in Filter.pm (Perl) to handle "Any Tag" (value -1) using EXISTS query

Co-authored-by: connortechnology <925519+connortechnology@users.noreply.github.com>
2026-01-10 14:13:37 +00:00
Isaac Connor
6cfe79e259 Add AI generated Reolink http api. Tested for camera rebooting. 2026-01-08 17:19:07 -05:00
Isaac Connor
6b30d733c5 Update to use shared code from Control.pm 2026-01-06 14:58:40 -05:00
Isaac Connor
cb11f1f264 Clear query as well as path. Use canonical instead of creating our own BaseURL, set uri userinfo 2026-01-06 14:58:13 -05:00
Isaac Connor
b323c48b0f address and port are now self{address} and self{port} 2026-01-06 12:36:21 -05:00
Isaac Connor
da7ec8a082 Improve error message to tell us what type the object was 2026-01-06 08:44:21 -05:00
Isaac Connor
d6650b84b3 Put API back under system for now as the api tab can't show it yet 2026-01-05 16:36:12 -05:00
Isaac Connor
708f386b5c Add uri unescaping password 2026-01-05 12:34:38 -05:00
Isaac Connor
9984b6ee7d Fix duration of autostop 2026-01-05 09:29:36 -05:00
Steve Gilvarry
12450b390f Removing object tags as plugins are dead. I think this page still has reasons to exist but none of this code works in modern browsers. Well that is my opinion. 2025-12-31 19:33:54 +11:00
Isaac Connor
46669166eb Merge branch 'master' of github.com:ZoneMinder/zoneminder 2025-12-19 09:55:54 -05:00
Isaac Connor
6d3b7ddebc Add ZM_WEB_ID_ON_FILTER to optionally remove the Id from the dropdown 2025-12-19 09:55:43 -05:00
Simpler1
adf3eb2381 Fix(Filter): Handle events with multiple tags
Fixes an error that occurred when running a named filter that returned events that contained more than one tag.

Subquery returns more than 1 row
2025-12-19 09:32:19 -05:00
Simpler1
3a0d8d7c8f Fix(tags): "No Tag" filter now works properly. 2025-12-08 15:09:01 -05:00
Isaac Connor
43f281c005 Add ZM_WEB_ANIMATIONS so that we can decide to turn off ui css animations 2025-12-05 14:13:52 -05:00
Isaac Connor
2cfed3d8f1 headers must be an array ref aparently. 2025-11-25 09:01:32 -05:00
Isaac Connor
5bb4caab8f Fixup taking content as a hash. Use URI to convert it to a string. Add headers support in post. 2025-11-24 16:23:28 -05:00
Isaac Connor
aaffd5822a Move assigning ua up because it gets used in guess_crednetials 2025-11-11 15:54:49 -05:00
Isaac Connor
9c9a2dcb0b Update to use Control:: methods instead of our own duplicates 2025-11-07 16:24:00 -05:00
Isaac Connor
dcc2779882 Don't add extra / in get/post/put. Automatically populate BaseUrl and ua->credentials. Fall back to getting credentials from monitor->User and ->Pass 2025-11-07 16:23:51 -05:00
Isaac Connor
9da6a2e424 Year is 2 digit in deep mode 2025-11-06 21:26:08 -05:00
Isaac Connor
0baa4007e5 Prevent warning when empty ControlDevice 2025-10-24 16:59:48 -04:00
Isaac Connor
abcb281542 FIx extra ) 2025-10-24 09:08:43 -04:00
Isaac Connor
a0d66fc58f Add support for CurrentDate/Time/DateTime to filters 2025-10-23 19:17:00 -04:00
Isaac Connor
5db736f135 Update default value for ZM_TELEMETRY_SERVER_ENDPOINT 2025-10-21 05:40:34 -04:00
Isaac Connor
48ae1c5f28 Only update storage DiskSpace if assigned an area 2025-10-17 08:17:16 -04:00
Isaac Connor
83532aba60 Use https in zoneminder home url 2025-10-15 17:32:54 -04:00