mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-09-19 17:20:22 -04:00
The original fix replaced the hardcoded 000 token in getCamParams and _setImaging, but get_config/set_config landed upstream afterwards and carry three more imaging requests that still address VideoSource 000: the ImagingSettings and ImagingOptions entries in %config_types, and the SetImagingSettings body in set_config. Cameras that number their sources differently reject all three. On an AMLINK AL5M-T5171EW the video source is 00000 and a request for 000 comes back as "The requested VideoSource does not exist.", so the imaging half of the config API is unusable on those cameras even with the earlier fix applied. The query bodies now carry a __VIDEO_SOURCE_TOKEN__ placeholder, matching how __PROFILE_TOKEN__ already works, and get_config substitutes it only when the body contains it so unrelated categories do not pay for a GetVideoSources round trip. set_config calls _video_source_token() directly, which is cached after the first lookup. The added tests assert on the module source because %config_types is a file-scoped lexical. That is deliberate: the failure this guards against is a new imaging call being written with a literal token again, which is exactly how get_config/set_config reintroduced the bug. Verified against both live AMLINK units: GetVideoSources returns 00000 on each, and GetImagingSettings answers for 00000 while faulting for 000. Perl suite 13 files / 191 assertions pass. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UvTCzCbvGt8xKQRNCSA7o8