ADd secure, remove username and password

Signed-off-by: Ben McDonald <ben.mcdonald@hpe.com>
This commit is contained in:
Ben McDonald 2025-07-03 12:52:18 -07:00
parent 4cfd48da63
commit 488ad241f6
No known key found for this signature in database
2 changed files with 10 additions and 12 deletions

View file

@ -24,6 +24,7 @@ var (
targetHosts [][]string targetHosts [][]string
disableProbing bool disableProbing bool
disableCache bool disableCache bool
insecure bool
) )
// The `scan` command is usually the first step to using the CLI tool. // The `scan` command is usually the first step to using the CLI tool.
@ -138,8 +139,7 @@ var ScanCmd = &cobra.Command{
DisableProbing: disableProbing, DisableProbing: disableProbing,
Verbose: verbose, Verbose: verbose,
Debug: debug, Debug: debug,
Username: username, Insecure: insecure,
Password: password,
}) })
if len(foundAssets) > 0 && debug { if len(foundAssets) > 0 && debug {
@ -179,6 +179,7 @@ func init() {
ScanCmd.Flags().IPMaskVar(&subnetMask, "subnet-mask", net.IPv4Mask(255, 255, 255, 0), "Set the default subnet mask to use for with all subnets not using CIDR notation.") ScanCmd.Flags().IPMaskVar(&subnetMask, "subnet-mask", net.IPv4Mask(255, 255, 255, 0), "Set the default subnet mask to use for with all subnets not using CIDR notation.")
ScanCmd.Flags().BoolVar(&disableProbing, "disable-probing", false, "Disable probing found assets for Redfish service(s) running on BMC nodes") ScanCmd.Flags().BoolVar(&disableProbing, "disable-probing", false, "Disable probing found assets for Redfish service(s) running on BMC nodes")
ScanCmd.Flags().BoolVar(&disableCache, "disable-cache", false, "Disable saving found assets to a cache database specified with 'cache' flag") ScanCmd.Flags().BoolVar(&disableCache, "disable-cache", false, "Disable saving found assets to a cache database specified with 'cache' flag")
ScanCmd.Flags().BoolVar(&insecure, "insecure", false, "Skip TLS certificate verification during probe")
checkBindFlagError(viper.BindPFlag("scan.ports", ScanCmd.Flags().Lookup("port"))) checkBindFlagError(viper.BindPFlag("scan.ports", ScanCmd.Flags().Lookup("port")))
checkBindFlagError(viper.BindPFlag("scan.scheme", ScanCmd.Flags().Lookup("scheme"))) checkBindFlagError(viper.BindPFlag("scan.scheme", ScanCmd.Flags().Lookup("scheme")))

View file

@ -1,6 +1,7 @@
package magellan package magellan
import ( import (
"crypto/tls"
"fmt" "fmt"
"math" "math"
"net" "net"
@ -34,8 +35,7 @@ type ScanParams struct {
DisableProbing bool DisableProbing bool
Verbose bool Verbose bool
Debug bool Debug bool
Username string Insecure bool
Password string
} }
// ScanForAssets() performs a net scan on a network to find available services // ScanForAssets() performs a net scan on a network to find available services
@ -71,8 +71,12 @@ func ScanForAssets(params *ScanParams) []RemoteAsset {
{Type: "JAWS", Path: "/jaws/monitor/outlets"}, {Type: "JAWS", Path: "/jaws/monitor/outlets"},
} }
transport := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: params.Insecure},
}
probeClient := &http.Client{ probeClient := &http.Client{
Timeout: time.Duration(params.Timeout) * time.Second, Timeout: time.Duration(params.Timeout) * time.Second,
Transport: transport,
} }
var wg sync.WaitGroup var wg sync.WaitGroup
@ -92,8 +96,6 @@ func ScanForAssets(params *ScanParams) []RemoteAsset {
if params.Verbose { if params.Verbose {
log.Debug().Err(err).Msgf("failed to connect to host") log.Debug().Err(err).Msgf("failed to connect to host")
} }
// NOTE: This was wg.Done() and return in the original, but that stops the whole worker.
// Continuing allows the worker to process other hosts in its queue.
continue continue
} }
if !params.DisableProbing { if !params.DisableProbing {
@ -106,11 +108,6 @@ func ScanForAssets(params *ScanParams) []RemoteAsset {
continue continue
} }
// Add authentication for JAWS endpoints if credentials are provided
if probe.Type == "JAWS" && params.Username != "" && params.Password != "" {
req.SetBasicAuth(params.Username, params.Password)
}
res, err := probeClient.Do(req) res, err := probeClient.Do(req)
if err == nil && res != nil && res.StatusCode == http.StatusOK { if err == nil && res != nil && res.StatusCode == http.StatusOK {
res.Body.Close() res.Body.Close()