1package ospkg 2 3import ( 4 "context" 5 "time" 6 7 "github.com/google/wire" 8 "golang.org/x/xerrors" 9 10 detector "github.com/aquasecurity/trivy/pkg/detector/ospkg" 11 "github.com/aquasecurity/trivy/pkg/log" 12 "github.com/aquasecurity/trivy/pkg/rpc" 13 "github.com/aquasecurity/trivy/pkg/vulnerability" 14 proto "github.com/aquasecurity/trivy/rpc/detector" 15) 16 17var SuperSet = wire.NewSet( 18 detector.SuperSet, 19 vulnerability.SuperSet, 20 NewServer, 21) 22 23// Server is for backward compatibility 24type Server struct { 25 detector detector.Operation 26 vulnClient vulnerability.Operation 27} 28 29func NewServer(detector detector.Operation, vulnClient vulnerability.Operation) *Server { 30 return &Server{detector: detector, vulnClient: vulnClient} 31} 32 33// Detect is for backward compatibility 34func (s *Server) Detect(_ context.Context, req *proto.OSDetectRequest) (res *proto.DetectResponse, err error) { 35 vulns, eosl, err := s.detector.Detect("", req.OsFamily, req.OsName, time.Time{}, rpc.ConvertFromRpcPkgs(req.Packages)) 36 if err != nil { 37 err = xerrors.Errorf("failed to detect vulnerabilities of OS packages: %w", err) 38 log.Logger.Error(err) 39 return nil, err 40 } 41 42 s.vulnClient.FillInfo(vulns, "") 43 44 return &proto.DetectResponse{Vulnerabilities: rpc.ConvertToRpcVulns(vulns), Eosl: eosl}, nil 45} 46