github.com/khulnasoft-lab/tunnel-db@v0.0.0-20231117205118-74e1113bd007/pkg/vulnsrc/bitnami/bitnami.go (about) 1 package bitnami 2 3 import ( 4 "encoding/json" 5 "path/filepath" 6 "strings" 7 8 "golang.org/x/xerrors" 9 10 "github.com/khulnasoft-lab/tunnel-db/pkg/types" 11 "github.com/khulnasoft-lab/tunnel-db/pkg/vulnsrc/osv" 12 "github.com/khulnasoft-lab/tunnel-db/pkg/vulnsrc/vulnerability" 13 ) 14 15 var bitnamiDir = filepath.Join("bitnami-vulndb", "data") 16 17 func NewVulnSrc() osv.OSV { 18 sources := map[types.Ecosystem]types.DataSource{ 19 vulnerability.Bitnami: { 20 ID: vulnerability.BitnamiVulndb, 21 Name: "Bitnami Vulnerability Database", 22 URL: "https://github.com/bitnami/vulndb", 23 }, 24 } 25 26 return osv.New(bitnamiDir, vulnerability.BitnamiVulndb, sources, &transformer{}) 27 } 28 29 type transformer struct{} 30 31 type DatabaseSpecific struct { 32 Severity string `json:"severity"` 33 } 34 35 func (t *transformer) TransformAdvisories(advs []osv.Advisory, entry osv.Entry) ([]osv.Advisory, error) { 36 var specific DatabaseSpecific 37 if err := json.Unmarshal(entry.DatabaseSpecific, &specific); err != nil { 38 return nil, xerrors.Errorf("JSON decode error: %w", err) 39 } 40 41 severity := convertSeverity(specific.Severity) 42 for i := range advs { 43 advs[i].Severity = severity 44 } 45 46 return advs, nil 47 } 48 49 func convertSeverity(severity string) types.Severity { 50 switch strings.ToLower(severity) { 51 case "low": 52 return types.SeverityLow 53 case "moderate": 54 return types.SeverityMedium 55 case "high": 56 return types.SeverityHigh 57 case "critical": 58 return types.SeverityCritical 59 default: 60 return types.SeverityUnknown 61 } 62 }