Commit Graph
80 Commits
Author SHA1 Message Date
Isaac ConnorandClaude Opus 5.5 0e0f4afb1d fix: generate the OpenBSD rc.d script from the configured paths refs #5152
The rc.d script and Apache config hard-coded the /usr/local paths the
FreeBSD/OpenBSD distro target uses, so any build with other paths got
files pointing at the wrong place.

Make the rc.d script a template filled with CMAKE_INSTALL_FULL_BINDIR and
PERL_EXECUTABLE, generated into misc/ when building on OpenBSD. Drop the
OpenBSD Apache config: misc/apache.conf is already generated from the
configured web, cgi and cache paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 19:29:02 -04:00
Steve GilvarryandClaude Opus 5 8de8ed4018 feat: add a launchd job for starting ZoneMinder on macOS refs #4998
misc/ has a systemd unit and an init.d script, so on macOS nothing
restarts ZoneMinder after a reboot. This is the launchd counterpart,
generated next to zoneminder.service with the same substitutions.

Mapping the unit across needed three decisions worth recording.

zmpkg.pl forks zmdc.pl and returns, which systemd calls Type=forking.
launchd has no such notion and by default kills everything left in a
job's process group once the job exits - which would be all of
ZoneMinder, immediately. AbandonProcessGroup=true disables exactly that.
So the job starts ZoneMinder rather than supervising it, and zmdc.pl and
zmwatch.pl go on restarting the daemons themselves as they always have.

There is no equivalent of ExecStop, so unloading the job does not stop
ZoneMinder. The comment in the file says so and gives the stop-then-
unload order rather than leaving people to find out.

There is no equivalent of After= or Requires= either. launchd only
orders jobs it manages, and a Homebrew MariaDB is not one, so ZoneMinder
can start before the database is listening. zmdc.pl retries, and the
comment points at zmdc.log for when it matters.

Generated but not installed, matching how zoneminder.service is treated:
/Library/LaunchDaemons is read at boot, so putting a job there is the
installer's decision and not the build's.

Verified with plutil -lint and plutil -p on the generated file, and every
key checked against launchd.plist(5). Not loaded here - that needs an
installed ZoneMinder to start.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01B5KL9Xbi7K5aGsauLtd8tG
2026-09-12 22:19:09 +10:00
Isaac ConnorandClaude Opus 5 995fd54fef feat: harden zoneminder.service and pin the options ZoneMinder cannot run under
Now that the daemons reliably land in this unit rather than inheriting the web
server's namespace, the unit is worth hardening. Add the protections that do
not interfere with capture: ProtectSystem=full, ProtectClock,
ProtectControlGroups, ProtectHostname, ProtectKernelLogs, ProtectKernelModules,
ProtectKernelTunables, LockPersonality, RestrictRealtime and RestrictSUIDSGID.

Set the options that would break us explicitly rather than leaving them to a
default a distribution might override, since each fails in a way that is not
visible from the web ui:

  PrivateDevices and PrivateTmp, because zmc publishes frames in /dev/shm for a
  zms that runs under the web server, and zmaudit.pl cleans up the swap images
  zms writes under /var/tmp.

  ProcSubset and ProtectProc, because zmstats reads /proc/stat, /proc/meminfo
  and /proc/loadavg, and zmpkg.pl reads /proc/self/cgroup to decide whether
  systemd started it.

Record why NoNewPrivileges, ProtectHome and MemoryDenyWriteExecute are absent,
and warn that the mount namespace these options create hides filesystems
mounted after ZoneMinder starts.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019URmtYqza6Rzi6F7cmabSm
2026-08-14 23:37:22 -04:00
Isaac ConnorandClaude Opus 4.6 025dca865f feat: merge MacVendors.json with zm_utils, adding 39 new MAC prefixes
Merge MAC vendor database from zm_utils into ZoneMinder. Adds entries for
Reolink, Dahua, Hanwha, Buffalo, Google, Sagemcom, and many additional
HikVision/Ubiquiti/Grandstream MACs. Sorted by vendor type for readability.
Removes duplicates from zm_utils source. Preserves ZM-only Uniview and
TP-Link entries. Keeps IC Realtime Dahua control mapping that zm_utils lost.
Updates Vivotek with ePTZ control and normalizes D-Link type name.

34 -> 73 entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 10:30:53 -05:00
Isaac ConnorandClaude Opus 4.6 f127359fe0 feat: add network probe function for Uniview cameras
Add probeUniview() that queries the camera's LAPI for device model,
name, resolution, and codec. Uses RTSP main stream URL format
rtsp://ip:554/media/video1 and LAPI snapshot endpoint for thumbnails.
Includes OUI alias probeZhejiangUniviewTechnologiesCoLtd for IEEE
vendor name matching. Adds all 4 registered Uniview MAC OUI prefixes
(48ea63, 6cf17e, 88263f, c47905) to MacVendors.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-13 09:17:58 -05:00
Isaac Connor 4f1b437937 Add example .service file for running go2rtc with ZoneMinder 2025-10-23 12:42:23 -04:00
Isaac Connor 3504b06c25 Add TP-Link to MacVendors 2024-05-31 14:53:23 -04:00
Charlie Root cfb3bfbfee Add ICRealTime camera 2024-01-24 14:22:27 -08:00
Isaac Connor 194c5a0628 Add another Annke Hikvision mac address 2023-08-25 10:54:44 -04:00
Isaac Connor 6381601ba2 Fix type for DLink 2023-08-08 18:35:07 -04:00
Isaac Connor 7a35b337d2 add another Hikvision 2023-07-25 20:02:52 -04:00
Isaac Connor 5ab303526c Add some more HIkvision 2023-07-25 18:14:25 -04:00
Isaac Connor 185f8a8d5f Add another Zmcreest mac 2023-07-21 14:25:57 -07:00
Isaac Connor 55f1e560c6 Add a mac for Foscam 2023-07-15 10:29:06 -04:00
clipo1979 6aa817116c Update fail2ban.rules
Update to add working rule for changes from version 1.35+
2023-06-07 21:39:20 +01:00
Isaac Connor b136f3cf21 Add policykit files for controlling dnsmasq 2023-05-30 20:47:05 -04:00
Isaac Connor 243decb5bd Remove spae 2023-05-30 20:47:05 -04:00
Isaac Connor 7048b2ab5a Point to https 2023-05-30 20:47:05 -04:00
Isaac Connor d522ef677a Add Avigilon, loading of arp-scan oui database and showing of all devices instead of just recognized cameras. Remove the : from mac addresses to match OUI dbs 2023-05-12 12:59:53 -04:00
Isaac Connor 68d83b9a7a Add MacVendors 2023-04-23 15:43:00 -04:00
Isaac Connor 7a9fecff34 Install MacVendors.json 2023-04-22 16:59:12 -04:00
Isaac Connor 9a91296a29 Merge from debian patch 0001-Adapt-apache2.conf-to-work-out-of-the-box.patch 2022-04-28 10:36:06 -04:00
Isaac Connor 2b468fa115 Add policykit rules for arp-scan 2022-02-07 12:32:50 -05:00
Jonathan Bennett 5026008482 Changes due to janus packaging 2022-01-16 19:55:53 -06:00
Jonathan Bennett 50c824f3bb Janus cleanup, adds support to the "watch" view 2022-01-11 21:21:58 -06:00
Isaac Connor 385d1602e0 Add an example fail2ban rule as provided by Pedulla 2021-09-10 13:54:24 -04:00
Peter Keresztes Schmidt 6c9983155c Build: Reindent the CMakeLists
Indent with 2 spaces
Also remove expressions form closing tags. They have been made optional a while ago since they make reading rather more difficult.
2021-02-04 22:00:56 +01:00
Isaac Connor a7b23f5c39 add esnotification to log lines to ignore in logcheck 2019-12-31 19:12:31 -05:00
Isaac Connor 3acbf1551d add zm-sudo.in 2019-05-27 13:26:29 -04:00
Isaac Connor c4d76f03c9 Introduce ZM_PATH_SHUTDOWN to cmake config 2019-05-27 12:09:32 -04:00
Andrew Bauer dbb51e9857 add generic nginx config file 2018-12-02 09:40:15 -06:00
Pliable Pixels 940ad3fe68 made message generic 2018-09-26 14:47:20 -04:00
Pliable Pixels 6bca9415e8 added note to make sure headers is on 2018-09-26 10:17:16 -04:00
Andrew Bauer 49993210d6 Create apache-cors.conf 2018-09-24 08:36:50 -05:00
Andrew Bauer 3c225c9f1c Migrate Webcache out of webroot (#2083)
* migrate webcache folder out of webroot, migrate htaccess files

* rpm specfile - add missing reference to cache folder

* fix submodule mixup
2018-04-19 15:01:46 -04:00
Andrew Bauer 17fbb49025 cannot assign categories when type=link
RPM packaging calls the freedesktop tool "desktop-file-install", which fails with: 
```
error: key "Categories" is present in group "Desktop Entry", but the type is "Link" while this key is only valid for type "Application"
```
@connortechnology This fails the build so I'm removing the categories. Let me know if you've got any other ideas.
2018-04-17 15:50:30 -05:00
Isaac Connor 460b0b0ab9 add an example monit config 2018-02-21 13:12:25 -05:00
Isaac Connor 0bd1ee5992 Merge branch 'master' into m 2018-01-25 08:43:31 -05:00
Andrew Bauer 617331ef32 fix apache alias 2018-01-17 10:38:20 -06:00
Isaac Connor 6db9a78dab add compressing options to the sample logrotate config 2017-06-26 12:17:49 -04:00
Isaac Connor fd44ff4e60 Merge branch 'master' into storageareas 2017-05-10 13:16:08 -04:00
Andrew Bauer 0d6a20fa9b only install polkit rules on systems with systemd 2017-05-10 10:54:56 -05:00
Isaac Connor 4360431e98 fix line that generates .desktop 2017-04-26 16:46:11 -04:00
Isaac Connor 8bc8a17554 use a substitution to generate zoneminder.desktop 2017-04-26 16:40:17 -04:00
Isaac Connor 9d3e2a7b0f test 2017-04-26 16:31:30 -04:00
Isaac Connor 948aceee30 move the line that installs zoneminder.desktop into the misc/CMakeLists.txt 2017-04-26 16:11:45 -04:00
Isaac Connor 20345df3eb Merge branch 'icon' into storageareas 2017-04-26 15:58:26 -04:00
Isaac Connor e39a757c46 add an icon made from favicon.ico and a .desktop file to be install in /usr/share/applications/ 2017-04-26 15:21:28 -04:00
Isaac Connor d039227f79 Merge branch 'master' into storageareas 2017-04-12 13:51:10 -04:00
Isaac Connor b4ac277ecb Merge pull request #1846 from mnoorenberghe/docker_vhost
Use misc/apache.conf instead of utils/docker/apache-vhost in docker
2017-04-06 08:41:21 -04:00