CheckPeer only knew SO_PEERCRED, so on platforms without it the
ZM_STREAM_SOCKET_ALLOWED_UIDS allow-list was silently ignored and every
client was logged as uid 0 pid 0. Use getpeereid where it exists (the
BSDs and macOS report no pid), and warn once per connection on any other
platform that the allow-list cannot be enforced.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
New conf.d/03-stream-socket.conf settings, parsed into staticConfig:
- ZM_STREAM_SOCKET_GROUP: group ownership of the 0660 socket files,
defaults to the web group, letting a dedicated consumer user be
granted access by group membership
- ZM_STREAM_SOCKET_ALLOWED_UIDS: optional SO_PEERCRED uid allow-list
- ZM_STREAM_SOCKET_MAX_CLIENTS / QUEUE_BYTES / QUEUE_MSGS / STALL_SECS:
per-consumer queue bounds and stall disconnect threshold
These are deployment-level settings, so they live in conf.d alongside
ZM_PATH_SOCKS rather than in the Config table. Consumed by the
StreamSocket class added in the next commit.
Tests: full ctest suite (98 tests) passes at the branch head.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* cmake changes to support conf.d
* php changes to support conf.d
* perl changes to support conf.d
* C changes to support conf.d
* add conf.d support to rpmspecfile
* fix typo
* specify ZM_CONFIG_SUBDIR in relevant target distros
* put back my config_file perl definition
* remove quotes from ZM macros
* fix snprintf
* add README to conf.d folder
* adjust rpm specfile
* remove custom permissions from README in rpmspecfile
* modify rpm README documentation to reflect conf.d support
* set ZM_CONFIG_SUBDIR in debian rules file