Fixed three remaining issues from Codex's final review: **1. nullglob State Management (line 3124)** - Replaced shopt -s/u nullglob with compgen -G check - Prevents changing global shell behavior that could affect later globs - More explicit and safer pattern matching **2. authorized_keys Permission Preservation (lines 3116-3117)** - Now uses chmod/chown --reference to preserve original ownership/perms - Falls back gracefully if --reference not available - Proper cleanup on mv failure to prevent temp file leaks - Aborts atomically if operations fail, leaving original untouched **3. Multi-Address Container Detection (lines 3750-3761)** - Iterates over ALL IPs from hostname -I, not just first one - Handles dual-stack (IPv4 + IPv6) and multi-IP containers - Uses break 2 to exit both loops when match found - Prevents false negatives when Pulse IP is not the first address All operations now handle edge cases properly: non-root accounts, dual-stack networking, empty directories, and partial failures. Addresses #123 |
||
|---|---|---|
| .. | ||
| alerts.go | ||
| auth.go | ||
| config_handlers.go | ||
| csrf_store.go | ||
| demo_middleware.go | ||
| diagnostics.go | ||
| DO_NOT_EDIT_FRONTEND_HERE.md | ||
| docker_agents.go | ||
| frontend_embed.go | ||
| guest_metadata.go | ||
| middleware.go | ||
| notifications.go | ||
| oidc_handlers.go | ||
| oidc_service.go | ||
| rate_limit_config.go | ||
| ratelimit.go | ||
| README.md | ||
| recovery_tokens.go | ||
| router.go | ||
| router_integration_test.go | ||
| security.go | ||
| security_oidc.go | ||
| security_setup_fix.go | ||
| session_store.go | ||
| settings.go | ||
| system_settings.go | ||
| types.go | ||
| updates.go | ||
Internal API Package
This directory contains the API server implementation for Pulse.
Important Note About frontend-modern/
The frontend-modern/ subdirectory that appears here is:
- AUTO-GENERATED during builds
- NOT the source code - just a build artifact
- IN .gitignore - never committed
- REQUIRED BY GO - The embed directive needs it here
Frontend Development Location
👉 Edit frontend files at: /opt/pulse/frontend-modern/src/
Why This Structure?
Go's //go:embed directive has limitations:
- Cannot use
../paths to access parent directories - Cannot follow symbolic links
- Must embed files within the Go module
This is a known Go limitation and our structure works around it.