// backend\postgres_url.go package main import ( "net/url" "strings" ) // stripPasswordFromPostgresURL: // - wenn URL ein Passwort hat, wird es extrahiert und URL ohne Passwort zurückgegeben // - unterstützt postgres:// und postgresql:// func stripPasswordFromPostgresURL(raw string) (sanitized string, password string) { raw = strings.TrimSpace(raw) if raw == "" { return "", "" } low := strings.ToLower(raw) if !strings.HasPrefix(low, "postgres://") && !strings.HasPrefix(low, "postgresql://") { // nicht anfassen, evtl. nutzt du später andere DSNs return raw, "" } u, err := url.Parse(raw) if err != nil { return raw, "" } if u.User == nil { return raw, "" } user := u.User.Username() pw, hasPw := u.User.Password() if hasPw && strings.TrimSpace(pw) != "" { password = pw } // Sanitized: nur user ohne password if user != "" { u.User = url.User(user) } else { u.User = nil } return u.String(), password }