This repository has been archived by the owner on Aug 21, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 18
/
securityscanner.go
79 lines (70 loc) · 3.72 KB
/
securityscanner.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package securityscanner
import (
"errors"
"github.com/creasty/defaults"
)
// SecurityScannerFieldGroup represents the SecurityScannerFieldGroup config fields
type SecurityScannerFieldGroup struct {
FeatureSecurityScanner bool `default:"false" validate:"" json:"FEATURE_SECURITY_SCANNER" yaml:"FEATURE_SECURITY_SCANNER"`
SecurityScannerEndpoint string `default:"" validate:"" json:"SECURITY_SCANNER_ENDPOINT,omitempty" yaml:"SECURITY_SCANNER_ENDPOINT,omitempty"`
SecurityScannerIndexingInterval int `default:"30" validate:"" json:"SECURITY_SCANNER_INDEXING_INTERVAL,omitempty" yaml:"SECURITY_SCANNER_INDEXING_INTERVAL,omitempty"`
SecurityScannerNotifications bool `default:"false" validate:"" json:"FEATURE_SECURITY_NOTIFICATIONS" yaml:"FEATURE_SECURITY_NOTIFICATIONS"`
SecurityScannerV4Endpoint string `default:"" validate:"" json:"SECURITY_SCANNER_V4_ENDPOINT,omitempty" yaml:"SECURITY_SCANNER_V4_ENDPOINT,omitempty"`
SecurityScannerV4NamespaceWhitelist []string `default:"[]" validate:"" json:"SECURITY_SCANNER_V4_NAMESPACE_WHITELIST,omitempty" yaml:"SECURITY_SCANNER_V4_NAMESPACE_WHITELIST,omitempty"`
SecurityScannerV4PSK string `default:"" json:"SECURITY_SCANNER_V4_PSK,omitempty" yaml:"SECURITY_SCANNER_V4_PSK,omitempty"`
}
// NewSecurityScannerFieldGroup creates a new SecurityScannerFieldGroup
func NewSecurityScannerFieldGroup(fullConfig map[string]interface{}) (*SecurityScannerFieldGroup, error) {
newSecurityScannerFieldGroup := &SecurityScannerFieldGroup{}
defaults.Set(newSecurityScannerFieldGroup)
if value, ok := fullConfig["FEATURE_SECURITY_SCANNER"]; ok {
newSecurityScannerFieldGroup.FeatureSecurityScanner, ok = value.(bool)
if !ok {
return newSecurityScannerFieldGroup, errors.New("FEATURE_SECURITY_SCANNER must be of type bool")
}
}
if value, ok := fullConfig["SECURITY_SCANNER_ENDPOINT"]; ok {
newSecurityScannerFieldGroup.SecurityScannerEndpoint, ok = value.(string)
if !ok {
return newSecurityScannerFieldGroup, errors.New("SECURITY_SCANNER_ENDPOINT must be of type string")
}
}
if value, ok := fullConfig["SECURITY_SCANNER_INDEXING_INTERVAL"]; ok {
newSecurityScannerFieldGroup.SecurityScannerIndexingInterval, ok = value.(int)
if !ok {
return newSecurityScannerFieldGroup, errors.New("SECURITY_SCANNER_INDEXING_INTERVAL must be of type int")
}
}
if value, ok := fullConfig["SECURITY_SCANNER_NOTIFICATIONS"]; ok {
newSecurityScannerFieldGroup.SecurityScannerNotifications, ok = value.(bool)
if !ok {
return newSecurityScannerFieldGroup, errors.New("SECURITY_SCANNER_NOTIFICATIONS must be of type bool")
}
}
if value, ok := fullConfig["SECURITY_SCANNER_V4_ENDPOINT"]; ok {
newSecurityScannerFieldGroup.SecurityScannerV4Endpoint, ok = value.(string)
if !ok {
return newSecurityScannerFieldGroup, errors.New("SECURITY_SCANNER_V4_ENDPOINT must be of type string")
}
}
if value, ok := fullConfig["SECURITY_SCANNER_V4_PSK"]; ok {
newSecurityScannerFieldGroup.SecurityScannerV4PSK, ok = value.(string)
if !ok {
return newSecurityScannerFieldGroup, errors.New("SECURITY_SCANNER_V4_PSK must be of type string")
}
}
if value, ok := fullConfig["SECURITY_SCANNER_V4_NAMESPACE_WHITELIST"]; ok {
// newSecurityScannerFieldGroup.SecurityScannerV4NamespaceWhitelist = value.([]string)
for _, element := range value.([]interface{}) {
strElement, ok := element.(string)
if !ok {
return newSecurityScannerFieldGroup, errors.New("SECURITY_SCANNER_V4_NAMESPACE_WHITELIST must be of type []string")
}
newSecurityScannerFieldGroup.SecurityScannerV4NamespaceWhitelist = append(
newSecurityScannerFieldGroup.SecurityScannerV4NamespaceWhitelist,
strElement,
)
}
}
return newSecurityScannerFieldGroup, nil
}