go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/_motor/discovery/network/resolver.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package network
     5  
     6  import (
     7  	"context"
     8  
     9  	"go.mondoo.com/cnquery/motor/asset"
    10  	"go.mondoo.com/cnquery/motor/discovery/common"
    11  	"go.mondoo.com/cnquery/motor/platform/detector"
    12  	"go.mondoo.com/cnquery/motor/providers"
    13  	network_transport "go.mondoo.com/cnquery/motor/providers/network"
    14  	"go.mondoo.com/cnquery/motor/vault"
    15  )
    16  
    17  type Resolver struct{}
    18  
    19  func (r *Resolver) Name() string {
    20  	return "Network Resolver"
    21  }
    22  
    23  func (r *Resolver) AvailableDiscoveryTargets() []string {
    24  	return []string{common.DiscoveryAuto, common.DiscoveryAll}
    25  }
    26  
    27  func (r *Resolver) Resolve(ctx context.Context, root *asset.Asset, conf *providers.Config, credsResolver vault.Resolver, sfn common.QuerySecretFn, userIdDetectors ...providers.PlatformIdDetector) ([]*asset.Asset, error) {
    28  	transport, err := network_transport.New(conf)
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  
    33  	detector := detector.New(transport)
    34  	platform, err := detector.Platform()
    35  	if err != nil {
    36  		return nil, err
    37  	}
    38  
    39  	platformID, err := transport.Identifier()
    40  	if err != nil {
    41  		return nil, err
    42  	}
    43  
    44  	assetObj := &asset.Asset{
    45  		PlatformIds: []string{platformID},
    46  		Platform:    platform,
    47  		Name:        root.Name,
    48  		Connections: []*providers.Config{conf},
    49  		// FIXME: We don't really know at this point if it is online... need to
    50  		// check first
    51  		State: asset.State_STATE_ONLINE,
    52  	}
    53  
    54  	if assetObj.Name == "" {
    55  		assetObj.Name = conf.Host
    56  	}
    57  
    58  	return []*asset.Asset{assetObj}, nil
    59  }