Files
numa/docs/implementation/windows-support-plan.md
Razvan Dimescu 787733cbea docs: update README, Windows plan, and launch drafts for Windows support
- README: platform-specific Quick Start, install/uninstall table
- Windows plan: Phase 2 complete, Phase 3 scoped
- Launch drafts: updated "Does it support Windows?" response

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 17:57:21 +03:00

2.1 KiB
Raw Blame History

Windows Support — Implementation Plan

MarchApril 2026

Phase 1: Run on Windows without system integration — DONE (v0.3.0)

  • Cross-platform config_dir() and data_dir()
  • src/system_dns.rs — Windows DNS discovery via ipconfig /all
  • Stubs for install/uninstall/service on unsupported OS
  • Multicast LAN discovery (SO_REUSEPORT skipped on Windows)
  • All deps compile on windows-msvc
  • CI: check-windows job (build + clippy)
  • Cross-platform LAN discovery tested: macOS ↔ Windows

Phase 2: DNS configuration — DONE (PR #28)

  • numa install — set DNS to 127.0.0.1 via netsh for all active interfaces
  • numa uninstall — restore DNS from backup (DHCP or static with secondaries)
  • ipconfig /all parser — per-interface adapter name, DHCP status, DNS servers
  • Localization — German adapter/DHCP/DNS labels handled
  • Disconnected adapters — skipped
  • Backup — %PROGRAMDATA%\numa\original-dns.json
  • Dnscache — disable via registry on install, re-enable on uninstall (reboot required)
  • Auto-start — registry Run key (HKLM\...\Run\Numa) on install, removed on uninstall
  • UDP ConnectionReset — Windows ICMP error 10054 caught and ignored
  • IP validation — added to discover_windows()
  • CI: cargo test + binary artifact upload on Windows
  • README.md — add Windows install instructions

Phase 3: Full service integration (future)

Windows Service

  • Use windows-service crate to register Numa as a Windows Service
  • sc.exe create numa binPath=... as alternative
  • Auto-start on boot (SYSTEM context, no login required), auto-restart on crash
  • Replace registry Run key with proper SCM integration

CA trust

  • certutil.exe -addstore Root ca.pem to trust Numa CA system-wide
  • Reverse: certutil.exe -delstore Root "Numa Local CA"
  • Needs admin elevation

DHCP DNS detection

  • Current detect_dhcp_dns() returns None on Windows
  • Could parse ipconfig /all for "DHCP Server" + "DNS Servers" lines
  • Or use WinAPI GetNetworkParams()