go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/windows_security.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package resources
     5  
     6  import (
     7  	"go.mondoo.com/cnquery/llx"
     8  	"go.mondoo.com/cnquery/providers-sdk/v1/plugin"
     9  	"go.mondoo.com/cnquery/providers-sdk/v1/util/convert"
    10  	"go.mondoo.com/cnquery/providers/os/connection/shared"
    11  	"go.mondoo.com/cnquery/providers/os/resources/windows"
    12  )
    13  
    14  func (w *mqlWindowsSecurity) products() ([]interface{}, error) {
    15  	conn := w.MqlRuntime.Connection.(shared.Connection)
    16  
    17  	products, err := windows.GetSecurityProducts(conn)
    18  	if err != nil {
    19  		return nil, err
    20  	}
    21  
    22  	res := []interface{}{}
    23  	for i := range products {
    24  		p := products[i]
    25  
    26  		mqlProduct, err := CreateResource(w.MqlRuntime, "windows.security.product", map[string]*llx.RawData{
    27  			"type":           llx.StringData(p.Type),
    28  			"guid":           llx.StringData(p.Guid),
    29  			"name":           llx.StringData(p.Name),
    30  			"state":          llx.IntData(p.State),
    31  			"productState":   llx.StringData(p.ProductStatus),
    32  			"signatureState": llx.StringData(p.SignatureStatus),
    33  			"timestamp":      llx.TimeData(p.Timestamp),
    34  		})
    35  		if err != nil {
    36  			return nil, err
    37  		}
    38  		res = append(res, mqlProduct)
    39  	}
    40  
    41  	return res, nil
    42  }
    43  
    44  func (w *mqlWindowsSecurityProduct) id() (string, error) {
    45  	return "windows.security.product/" + w.Guid.Data, nil
    46  }
    47  
    48  func initWindowsSecurityHealth(runtime *plugin.Runtime, args map[string]*llx.RawData) (map[string]*llx.RawData, plugin.Resource, error) {
    49  	if len(args) > 2 {
    50  		return args, nil, nil
    51  	}
    52  
    53  	if args == nil {
    54  		args = map[string]*llx.RawData{}
    55  	}
    56  
    57  	conn := runtime.Connection.(shared.Connection)
    58  
    59  	health, err := windows.GetSecurityProviderHealth(conn)
    60  	if err != nil {
    61  		return nil, nil, err
    62  	}
    63  
    64  	firewall, _ := convert.JsonToDict(health.Firewall)
    65  	autoupdate, _ := convert.JsonToDict(health.AutoUpdate)
    66  	antivirus, _ := convert.JsonToDict(health.AntiVirus)
    67  	antispyware, _ := convert.JsonToDict(health.AntiSpyware)
    68  	internetsettings, _ := convert.JsonToDict(health.InternetSettings)
    69  	uac, _ := convert.JsonToDict(health.Uac)
    70  	securitycenterservice, _ := convert.JsonToDict(health.SecurityCenterService)
    71  
    72  	args["firewall"] = llx.DictData(firewall)
    73  	args["autoUpdate"] = llx.DictData(autoupdate)
    74  	args["antiVirus"] = llx.DictData(antivirus)
    75  	args["antiSpyware"] = llx.DictData(antispyware)
    76  	args["internetSettings"] = llx.DictData(internetsettings)
    77  	args["uac"] = llx.DictData(uac)
    78  	args["securityCenterService"] = llx.DictData(securitycenterservice)
    79  
    80  	return args, nil, nil
    81  }