From a2948ba03fd5e70ed76087f2389b76e9570dd629 Mon Sep 17 00:00:00 2001 From: David Zager Date: Fri, 12 Jul 2024 10:04:17 -0400 Subject: [PATCH] :bug: check config before .NET framework analysis Signed-off-by: David Zager --- cmd/analyze.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cmd/analyze.go b/cmd/analyze.go index 588543c2..6c4f3714 100644 --- a/cmd/analyze.go +++ b/cmd/analyze.go @@ -2030,9 +2030,30 @@ func (a *analyzeCommand) analyzeDotnetFramework(ctx context.Context) error { var err error + // Check configuration + var systemInfo struct { + Plugins struct { + Network []string `json:"network"` + } `json:"plugins"` + } + cmd := exec.Command(Settings.PodmanBinary, []string{"system", "info", "--format=json"}...) + out, err := cmd.Output() + if err != nil { + return err + } + if err = json.Unmarshal(out, &systemInfo); err != nil { + return err + } + a.log.V(5).Info("container network plugins", "plugins", systemInfo) + if !slices.Contains(systemInfo.Plugins.Network, "nat") { + err := fmt.Errorf("Unsupported container client configuration") + a.log.Error(err, ".NET Framework projects must be analyzed using docker configured to run Windows containers") + return err + } + // Create network networkName := container.RandomName() - cmd := exec.Command(Settings.PodmanBinary, []string{"network", "create", "-d", "nat", networkName}...) + cmd = exec.Command(Settings.PodmanBinary, []string{"network", "create", "-d", "nat", networkName}...) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr err = cmd.Run()