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 }