Pulse/internal
rcourtman 1b221cca71 feat: Add configurable allowlist for webhook private IP targets (addresses #673)
Allow homelab users to send webhooks to internal services while maintaining security defaults.

Changes:
- Add webhookAllowedPrivateCIDRs field to SystemSettings (persistent config)
- Implement CIDR parsing and validation in NotificationManager
- Convert ValidateWebhookURL to instance method to access allowlist
- Add UI controls in System Settings for configuring trusted CIDR ranges
- Maintain strict security by default (block all private IPs)
- Keep localhost, link-local, and cloud metadata services blocked regardless of allowlist
- Re-validate on both config save and webhook delivery (DNS rebinding protection)
- Add comprehensive tests for CIDR parsing and IP matching

Backend:
- UpdateAllowedPrivateCIDRs() parses comma-separated CIDRs with validation
- Support for bare IPs (auto-converts to /32 or /128)
- Thread-safe allowlist updates with RWMutex
- Logging when allowlist is updated or used
- Validation errors prevent invalid CIDRs from being saved

Frontend:
- New "Webhook Security" section in System Settings
- Input field with examples and helpful placeholder text
- Real-time unsaved changes tracking
- Loads and saves allowlist via system settings API

Security:
- Default behavior unchanged (all private IPs blocked)
- Explicit opt-in required via configuration
- Localhost (127/8) always blocked
- Link-local (169.254/16) always blocked
- Cloud metadata services always blocked
- DNS resolution checked at both save and send time

Testing:
- Tests for CIDR parsing (valid/invalid inputs)
- Tests for IP allowlist matching
- Tests for bare IP address handling
- Tests for security boundaries (localhost, link-local remain blocked)

Related to #673

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 08:31:12 +00:00
..
alerts Improve backup-age alerts to show VM/CT names in multi-cluster setups (related to #668) 2025-11-08 18:24:04 +00:00
api feat: Add configurable allowlist for webhook private IP targets (addresses #673) 2025-11-09 08:31:12 +00:00
auth Fix config backup/restore by enforcing 12-char minimum password (related to #646) 2025-11-07 22:51:55 +00:00
config feat: Add configurable allowlist for webhook private IP targets (addresses #673) 2025-11-09 08:31:12 +00:00
crypto Harden setup token flow and enforce encrypted persistence 2025-10-25 16:00:37 +00:00
discovery Fix P1/P2 infrastructure issues: panic recovery and optimizations 2025-11-07 09:55:22 +00:00
dockeragent Fix critical version embedding issues for 4.26 release 2025-11-06 11:42:52 +00:00
errors Fix settings security tab navigation 2025-10-11 23:29:47 +00:00
hostagent Fix pulse-host-agent temperature collection on all Linux distros (related to #661) 2025-11-08 10:25:01 +00:00
hostmetrics Normalize docker agent version handling 2025-10-28 08:42:58 +00:00
logging feat: comprehensive diagnostics and observability improvements 2025-10-21 12:37:39 +00:00
metrics Add comprehensive alert system reliability improvements 2025-11-06 16:46:30 +00:00
mock Refactor: Code cleanup and localStorage consolidation 2025-11-04 21:50:46 +00:00
models Fix Docker host custom display name not persisting in UI (related to #662) 2025-11-08 10:28:20 +00:00
monitoring Improve backup-age alerts to show VM/CT names in multi-cluster setups (related to #668) 2025-11-08 18:24:04 +00:00
notifications feat: Add configurable allowlist for webhook private IP targets (addresses #673) 2025-11-09 08:31:12 +00:00
sensors feat: Add temperature collection to pulse-host-agent (related to #661) 2025-11-07 22:54:40 +00:00
ssh/knownhosts feat(security): Add SSH output limits and improve host key management 2025-11-07 17:09:02 +00:00
system Enhance container detection for temperature SSH safeguards (refs #601) 2025-11-04 22:30:35 +00:00
tempproxy Fix temperature data intermittency caused by proxy rate limit retries 2025-11-05 10:20:15 +00:00
types Fix settings security tab navigation 2025-10-11 23:29:47 +00:00
updates Surface update errors to UI for better user feedback (related to #671) 2025-11-09 08:23:04 +00:00
utils Refactor: Code cleanup and localStorage consolidation 2025-11-04 21:50:46 +00:00
websocket Fix P1: Add shutdown mechanism to WebSocket Hub 2025-11-07 10:20:26 +00:00