diff --git a/internal/jupyter/network_manager.go b/internal/jupyter/network_manager.go index 29f2fd3..f0ade2a 100644 --- a/internal/jupyter/network_manager.go +++ b/internal/jupyter/network_manager.go @@ -340,7 +340,7 @@ func (nm *NetworkManager) TestConnectivity(_ context.Context, config *NetworkCon } }() - nm.logger.Info("connectivity test passed", "url", url) + nm.logger.Info("connectivity test passed", "url", stripTokenFromURL(url)) return nil } diff --git a/internal/jupyter/service_manager.go b/internal/jupyter/service_manager.go index ac9b38d..40cb393 100644 --- a/internal/jupyter/service_manager.go +++ b/internal/jupyter/service_manager.go @@ -14,6 +14,18 @@ import ( "github.com/jfraeys/fetch_ml/internal/logging" ) +// stripTokenFromURL removes the token query parameter from a URL for safe logging +func stripTokenFromURL(url string) string { + idx := strings.Index(url, "?token=") + if idx == -1 { + idx = strings.Index(url, "&token=") + } + if idx != -1 { + return url[:idx] + } + return url +} + const ( serviceStatusRunning = "running" defaultWorkspaceBase = "/data/active/workspaces" @@ -451,7 +463,7 @@ func (sm *ServiceManager) StartService( sm.logger.Info("jupyter service started", "service_id", serviceID, "name", req.Name, - "url", url, + "url", stripTokenFromURL(url), "workspace", req.Workspace) return service, nil