mDNS Discovery:
- Implement zeroconf mDNS service registration (_secubox._udp)
- Implement peer discovery via mDNS browsing
- TXT records contain DID, role, version
- Auto-discovery of other SecuBox nodes on LAN
Topology Visualization:
- Add 7 mock nodes for demo (2 relays, 4 edges, 1 air-gapped)
- Generate edges connecting edge nodes to relays
- Force-directed layout with role-based positioning
- Node coordinates calculated based on role
C3BOX Dashboard:
- Add shared sidebar navigation (consistent with other modules)
- Responsive layout with main-content wrapper
- Air-gapped node role styling
Control Server:
- Enhanced topology endpoint with node IPs and calculated positions
- Edge generation logic for relay-link and edge-link types
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Implement control server at /run/secuboxd/topo.sock for secuboxctl:
- internal/control/server.go: Unix socket server with command handling
- Commands: mesh.status, mesh.peers, mesh.topology, mesh.nodes
- Commands: node.info, node.rotate, telemetry.latest, ping
- JSON responses with proper error handling
- Graceful shutdown and socket cleanup
Expand secuboxctl CLI with new commands:
- mesh topology: Show mesh topology graph
- mesh nodes: List mesh nodes with ZKP status
- telemetry latest: Show system metrics
All commands tested and working on VM.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- secuboxd.service: Change Type from notify to simple, run as root
- c3box.service: Remove config file requirement, use command-line flags
- Add secuboxd-prod.yaml with production paths
- Add daemon/build/ to gitignore
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- hamiltonian.go: Fix currentTimestamp() to use time.Now().Unix()
- telemetry.go: Implement getCPUPercent() from /proc/stat
- telemetry.go: Implement getDiskPercent() via syscall.Statfs
- telemetry.go: Implement getNFTablesRuleCount() from nft output
- telemetry.go: Implement getCrowdSecBans() from cscli
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>