From 826798c586c210d77985b36d96ee091b91e65368 Mon Sep 17 00:00:00 2001 From: AetherForge Date: Sun, 7 Jun 2026 12:25:28 -0700 Subject: [PATCH] Wire subnet discovery routes and relay scan UDP hints. Register recon history/export/canary APIs and discovered-hosts on the router; map UDP and path-tracer hints in relay ToScanReport; wire public canary ping to ReconHandler. --- server/internal/api/router.go | 7 ++++--- server/internal/recon/relay_scan.go | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/server/internal/api/router.go b/server/internal/api/router.go index 5fb9c01..b240510 100644 --- a/server/internal/api/router.go +++ b/server/internal/api/router.go @@ -556,6 +556,9 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler r.Get("/vuln/catalog", vulnHandler.Catalog) r.Post("/recon/scan", reconHandler.Scan) + r.Get("/recon/history", reconHandler.History) + r.Get("/recon/export/{scan_id}", reconHandler.Export) + r.Get("/recon/canary/{scan_id}", reconHandler.CanaryStatus) r.Post("/recon/relay-scan", reconHandler.RelayScan) r.Get("/recon/discovered-hosts", subnetDiscoveryHandler.GetDiscoveredHosts) @@ -825,9 +828,7 @@ func NewRouter(database *db.Database, wsHub *WSHub, configHandler *ConfigHandler r.Get("/api/download/agent-mac", serveAgentBinary("mac")) r.Get("/api/download/agent-linux", serveAgentBinary("linux")) - r.Get("/recon/ping/{scan_id}", func(w http.ResponseWriter, r *http.Request) { - writeJSON(w, map[string]interface{}{"ok": false, "error": "canary not configured"}) - }) + r.Get("/recon/ping/{scan_id}", reconHandler.CanaryPing) // Serve frontend SPA if webRoot != "" { diff --git a/server/internal/recon/relay_scan.go b/server/internal/recon/relay_scan.go index a983670..7a67842 100644 --- a/server/internal/recon/relay_scan.go +++ b/server/internal/recon/relay_scan.go @@ -138,6 +138,7 @@ func (r *RelayScanReport) ToScanReport() *ScanReport { } return &ScanReport{ Host: r.Host, ScannedAt: r.ScannedAt, Ports: r.Ports, RelayVia: relayVia, + UDPHints: r.UDPHints, PathTracerHints: r.PathTracerHints, Recommendations: r.Recommendations, } }