Commit Graph

116 Commits

Author SHA1 Message Date
Isaac Connor
191130dcf3 fix: validate eventId in getNearEvents() in ajax/status.php
Apply validCardinal() to $_REQUEST['id'], consistent with the
validation now used in getNearFrame() and getFrameImage().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 16:52:26 -05:00
Isaac Connor
24a2126def fix: validate eventId and frameId in getNearFrame() in ajax/status.php
Apply validCardinal() to $_REQUEST['id'] values, consistent with
getFrameImage() which already validates the same kind of inputs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 16:50:59 -05:00
Isaac Connor
89c358a6c0 fix: remove print_r object dump from permission error in ajax/status.php
The canView() failure path was dumping the entire Monitor object via
print_r() into the AJAX error response. This leaked all monitor
properties (Host, Path, ControlAddress, etc.) to users who fail the
permission check. Replace with a minimal error message containing
only the entity type and id.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 15:26:25 -05:00
Isaac Connor
0392d0ef27 fix: add early per-object canView() check in ajax/status.php
The monitor entity's func/zmu elements (Status, FrameRate) execute
in the element loop before the post-SQL canView() check, allowing
any authenticated user to query any monitor via zmu commands.

Add an early permission check after the id is determined but before
the element processing loop. When the entity spec has an 'object'
key and an id is provided, construct the object and call canView()
which respects per-group and per-role permissions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 14:44:42 -05:00
Isaac Connor
e163d3b9b8 fix: replace eval() with call_user_func() in ajax/status.php
Replace all four eval() call sites with call_user_func(). Entity-level
funcs (getFrameImage, getNearFrame, getNearEvents) are now callable
strings. Element-level funcs (daemonCheck, getLoad, getDiskPercent)
are now closures. postFunc handlers use call_user_func with $sqlData
passed as the argument.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 14:11:58 -05:00
Isaac Connor
1d89736b65 fix: harden ORDER BY sort field validation in ajax/status.php
The sort field whitelist check compared bare field names against
$fieldSql entries that could be backtick-wrapped or aliased SQL
expressions, so the check would often fail to match legitimate
fields.  When it failed, execution fell through to append the sort
direction (ASC/DESC) without a field name, producing malformed SQL.
The error log call also passed the wrong variable to join().

Rewrite the sort handling to:
- Skip invalid fields with continue instead of falling through
- Match field names against bare, backtick-wrapped, and aliased forms
- Collect valid ORDER BY clauses into an array before appending
- Backtick-wrap field names in the output SQL
- Only append ORDER BY when valid clauses exist

Also parameterize the prev-event sort comparison in getNearEvents()
and add the missing sort_field bind parameter to both prev and next
event queries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 14:02:15 -05:00
Isaac Connor
52b7c47fd4 Fix Secondary Order SQL Infection in via Stored Event Name and Cause Fields. Fixes GHSA-r6gm-478g-f2c4 2026-02-06 13:58:27 -05:00
Isaac Connor
ffeec4cdec Add E.Id != and use >= and <= when comparing StartDateTime so that we don't skip events with the same startDateTime. Fixes #4186 2024-12-09 17:27:56 -05:00
Isaac Connor
359330b384 When loading prev/next event, sort by StartDateTime, not Id. Id's are not guaranteed to be time-wise sequential. Maybe Fixes #4186 2024-11-27 13:55:50 -05:00
Isaac Connor
51ad77c6b9 Always add auth_relay info to status requests 2024-06-06 18:10:23 -04:00
Isaac Connor
ad6a8c376b Add new auth_hash to any status request. Fixed auth timeout when using rtsp2web or janus 2024-06-06 17:51:05 -04:00
Isaac Connor
f9ea031581 Merge branch 'patch-6' of github.com:IgorA100/zoneminder into IgorA100-patch-6 2024-03-14 17:15:46 -04:00
Isaac Connor
5120baa9ee Implement object permissions vs entity permissions so that we can handle the new group based permissions on Monitors. This fixes status updates when MOnitors=None but there is a per-monitor group based view permission. 2024-03-05 14:00:23 -05:00
IgorA100
cd8ffa08dc Add getCpuUsageHTML() 2024-02-27 16:49:29 +03:00
Isaac Connor
9669f1e3ef Sanitize entity before outputting it preventing XSS 2024-01-24 19:22:47 -05:00
Isaac Connor
e9362f1a10 Fix duplicated Capturing in monitor status elements. Add Recording. Fix MinEventId, MaxEventId, TotalEvents. Ad CaptureFPS, AnalysisFPS and CaptureBandwidth 2024-01-02 16:28:49 -05:00
Isaac Connor
23a0e561eb Remove depth of nested if's by returning early. 2023-11-21 10:49:09 -05:00
Isaac Connor
50ece0ae57 Turn off debugging of status ajax results. Can be a lot of info and can be gotten from browser dev tools 2023-10-26 09:25:45 -04:00
Isaac Connor
f8c89a0405 Merge branch 'master' into tags 2023-09-14 16:42:06 -04:00
Isaac Connor
b44216d3da Merge branch 'master' of github.com:ZoneMinder/zoneminder 2023-09-08 14:19:09 -04:00
Isaac Connor
473d34e220 Update events frameimage status code to use Event object. Make not finding the frame a debug because of bulk frames. 2023-09-08 14:17:36 -04:00
Simpler1
18d74ed7ac (feat): Tags
fix(tag): Create tags on mobile

chore(tags): Change TagName to Name

chore(tags): eslint

chore(tags): dbFetchAll to dbQuery for removetag

chore(events): eslint (attempt 2)

feat(tags): Better handling of keyboard

fix(tags): Enter key for creating new tag

fix(tags): Don't allow space as a tag name

feat(tags): Delete tag if last assignment removed

fix(tags): Increase height of dropdown

in progress

fix(Tags): Use T.Id on the events page dropdown

fix(Tags): Remove $availableTags from events.php

chore(sql): Formatting sql statements

feat(Tags): Working OR on filters and events pages

fix(filter): Populate availableTags

chore(Tags): code formatting

fix(tag): Add tag on create tag

Fix(tags): Remove tag from available if last

feat(tags): Add zm_update.sql

fix(chosen): Undo css width

fix(chosen): tags dropdown width

fix(tags): dropdown over timeline

fix(tags): Full width input

fix(events): Refresh table on page show

chore(filter): Clean up availableTags

chore(event): Clean up available & selected Tags

fix(event): Update available tags on remove

fix(event): Remove hack for selected tags

feat(tags): Blur input after adding tag

doc(tags): Initial tags documentation

fix(tags): Dark theme dropdown

fix(tags): Dark theme for tags on input

fix(tags): Dark theme for highlight in dropdown

fix(tags): Populate filter tags droplist

chore(): Bump zm_update to 1.37.42

chore(tags): Move mobile check to skin.js

chore(tags): Comment debug statements

fix(tags): Enter key to create tag on mobile Chome

chore(tags): Space in 'All Tags' for translation

Temporary commit to handle cookie expiration times

chore(tags): Remove unnecessary Tag(s) from en_gb

chore(): Cleanup unnecessary Error and Debug

chore(): Resolve merge conflicts

chore(): Address merge conflicts with master
2023-08-31 15:50:08 -04:00
Alejandro Criado-Pérez
6fd119157a Text corrections 2023-08-27 02:00:59 +02:00
Isaac Connor
d31f918abc Change the api for frameimage status request to split id into eid and fid instead of having id as an array. 2023-08-15 09:15:24 -04:00
Isaac Connor
03155da5b6 Use the full integer value instead of the first char of mi. Fixes failure to get status on janus viewing pages 2023-07-25 15:18:35 -04:00
Isaac Connor
59ff7f3a31 Improve logged wrt insufficient permissions 2023-06-08 09:17:16 -04:00
Isaac Connor
969baa3891 Convert user from an array to a User object 2023-04-23 12:57:29 -04:00
Isaac Connor
1c538a4bf0 Include Capturing, Analysing, Recording instead of Function 2022-12-14 08:28:21 -05:00
Isaac Connor
0a28a3e659 Add check for REQUEST['entity']. Add missing quotes around state word because it gets executed as code 2022-12-12 13:06:13 -05:00
Isaac Connor
df591a677e Handle when there is no filtering in getNearEvents 2022-12-07 12:27:12 -05:00
Isaac Connor
e08b826843 Add support for lambda functions as post processing. Use the to replace StartDateTimeShort with StartDateTimeFormatted so that dates on viewed events use the specified formatting. 2022-06-21 11:42:18 -04:00
Isaac Connor
909c0e903f Include EndDateTimeShort in event ajax response 2022-02-17 13:30:01 -05:00
Isaac Connor
cb80283398 Merge branch 'master' into timeline_multi_monitor
update code to use jquery instead of mootools
when only viewing 1 monitor, split view in half
load first event image righ toff the bat
2022-02-11 18:03:35 -05:00
Isaac Connor
d71a5932f5 Turn off useless shm display in header. Add ram and swap usage 2021-10-14 13:33:29 -04:00
Isaac Connor
4a40214f73 StartTimeShort should be StartDateTimeShort. Leave StartTimeShort for backwards compatibility. Add Storage, DiskSpace in status=>event 2021-06-08 16:58:50 -04:00
Isaac Connor
587cebecbb navbar requests don't pass an auth token so we never send an auth update. Just always send it. 2021-03-13 12:10:35 -05:00
Andrew Bauer
347c64eb7d remove warning 2020-12-01 13:30:57 -06:00
Andrew Bauer
6da826d79c fix typo 2020-12-01 13:29:43 -06:00
Isaac Connor
66f7cc55dc Spacing code comments, quotes 2020-11-13 17:05:23 -05:00
Isaac Connor
ee89eb45e6 Fix EndTime to EndDateTime 2020-11-04 18:39:02 -05:00
Isaac Connor
e085e08caa Fix missed StartTime to StartDateTime 2020-11-04 18:27:51 -05:00
Isaac Connor
1690bcbd38 update auth_relay when we update auth_hash 2020-10-26 18:49:14 -04:00
Isaac Connor
e6f08959fa Fix use of result instead of NearEvents 2020-10-21 10:40:26 -04:00
Isaac Connor
34ce3a1498 Use Filter::parse instead of parseFilter. Use Filter->addTerm to limit to User's monitor restrictions. Return early with better logging in the event of error. Introduce Filter->addTerm 2020-10-21 10:36:40 -04:00
Isaac Connor
10c0a6617c Return Debug to a regular function to match other logging functions. Since we switched to using namespaces we no longer clash with cake_php. 2020-10-14 10:39:25 -04:00
Isaac Connor
9e6db17e68 Fix getting next event due to case of asc 2020-10-10 11:09:39 -04:00
Isaac Connor
93021f5806 Update getNearEvents to handle when event doesn't exist 2020-10-05 09:30:33 -04:00
Isaac Connor
a19990f4d7 Merge branch 'release-1.34' 2020-08-06 11:57:35 -04:00
Isaac Connor
3242ce6ec9 Handle backticks in matches sort fields. Fixes regression in 1.34.17 2020-08-06 10:37:56 -04:00
Andrew Bauer
2b29a7983a clean up navbar background refresh 2020-08-02 13:01:20 -05:00