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

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package network
     5  
     6  import (
     7  	"strconv"
     8  
     9  	"go.mondoo.com/cnquery/motor/providers"
    10  )
    11  
    12  type Provider struct {
    13  	FQDN    string
    14  	Port    int32
    15  	Scheme  string
    16  	Family  []string
    17  	Options map[string]string
    18  }
    19  
    20  func New(conf *providers.Config) (*Provider, error) {
    21  	family := []string{"network"}
    22  	s := providers.ProviderID_HOST
    23  	if _, ok := conf.Options["tls"]; ok {
    24  		family = append(family, "tls")
    25  		s = providers.ProviderID_TLS
    26  	}
    27  
    28  	return &Provider{
    29  		FQDN:    conf.Host,
    30  		Port:    conf.Port,
    31  		Scheme:  s,
    32  		Family:  family,
    33  		Options: conf.Options,
    34  	}, nil
    35  }
    36  
    37  func (p *Provider) Identifier() (string, error) {
    38  	host := p.FQDN
    39  	if p.Port != 0 {
    40  		host = p.FQDN + ":" + strconv.Itoa(int(p.Port))
    41  	}
    42  
    43  	if _, ok := p.Options["tls"]; ok {
    44  		return "//platformid.api.mondoo.app/runtime/network/tls/" + host, nil
    45  	} else {
    46  		return "//platformid.api.mondoo.app/runtime/network/host/" + host, nil
    47  	}
    48  }
    49  
    50  func (p *Provider) URI() string {
    51  	if p.Port == 0 {
    52  		return p.Scheme + "://" + p.FQDN
    53  	}
    54  	return p.Scheme + "://" + p.FQDN + ":" + strconv.Itoa(int(p.Port))
    55  }
    56  
    57  func (p *Provider) Supports(mode string) bool {
    58  	for i := range p.Family {
    59  		if p.Family[i] == mode {
    60  			return true
    61  		}
    62  	}
    63  	return false
    64  }
    65  
    66  // ----------------- other requirements vv -------------------------
    67  
    68  func (p *Provider) Close() {}
    69  
    70  func (p *Provider) Capabilities() providers.Capabilities {
    71  	return providers.Capabilities{}
    72  }
    73  
    74  func (p *Provider) Kind() providers.Kind {
    75  	return providers.Kind_KIND_NETWORK
    76  }
    77  
    78  func (p *Provider) PlatformIdDetectors() []providers.PlatformIdDetector {
    79  	return []providers.PlatformIdDetector{}
    80  }
    81  
    82  func (p *Provider) Runtime() string {
    83  	return ""
    84  }