get_network_interfaces() used fcntl ioctls and get_all_interface_ips()
shelled out to `ip -j addr show` — both Linux-only. On Windows the
fcntl path raised ImportError and returned [], so the VP "bind IP"
dropdown showed no interfaces.
Add a Windows branch using psutil.net_if_addrs() + net_if_stats()
(psutil is already a dep). Same dict shape as the Linux path, filters
loopback / link-local / down interfaces by address class instead of
by name prefix. No name-based exclusion — users may legitimately
bind a VP to a Hyper-V / WSL / Tailscale virtual adapter.
The Linux fcntl path is untouched.
- SSDP proxy for cross-network setups: select slicer network interface for automatic printer discovery via SSDP relay
- FTP proxy now listens on privileged port 990 (matching Bambu Studio expectations) instead of 9990
- For systemd: requires `AmbientCapabilities=CAP_NET_BIND_SERVICE` capability
- Automatic directory permission checking at startup with clear error messages for Docker/bare metal