package orchestrator import ( "github.com/Fimeg/RedFlag/aggregator-agent/internal/client" "github.com/Fimeg/RedFlag/aggregator-agent/internal/scanner" ) // APTScannerWrapper wraps the APT scanner to implement the Scanner interface type APTScannerWrapper struct { scanner *scanner.APTScanner } func NewAPTScannerWrapper(s *scanner.APTScanner) *APTScannerWrapper { return &APTScannerWrapper{scanner: s} } func (w *APTScannerWrapper) IsAvailable() bool { return w.scanner.IsAvailable() } func (w *APTScannerWrapper) Scan() ([]client.UpdateReportItem, error) { return w.scanner.Scan() } func (w *APTScannerWrapper) Name() string { return "APT Update Scanner" } // DNFScannerWrapper wraps the DNF scanner to implement the Scanner interface type DNFScannerWrapper struct { scanner *scanner.DNFScanner } func NewDNFScannerWrapper(s *scanner.DNFScanner) *DNFScannerWrapper { return &DNFScannerWrapper{scanner: s} } func (w *DNFScannerWrapper) IsAvailable() bool { return w.scanner.IsAvailable() } func (w *DNFScannerWrapper) Scan() ([]client.UpdateReportItem, error) { return w.scanner.Scan() } func (w *DNFScannerWrapper) Name() string { return "DNF Update Scanner" } // DockerScannerWrapper wraps the Docker scanner to implement the Scanner interface type DockerScannerWrapper struct { scanner *scanner.DockerScanner } func NewDockerScannerWrapper(s *scanner.DockerScanner) *DockerScannerWrapper { return &DockerScannerWrapper{scanner: s} } func (w *DockerScannerWrapper) IsAvailable() bool { if w.scanner == nil { return false } return w.scanner.IsAvailable() } func (w *DockerScannerWrapper) Scan() ([]client.UpdateReportItem, error) { return w.scanner.Scan() } func (w *DockerScannerWrapper) Name() string { return "Docker Image Update Scanner" } // WindowsUpdateScannerWrapper wraps the Windows Update scanner to implement the Scanner interface type WindowsUpdateScannerWrapper struct { scanner *scanner.WindowsUpdateScanner } func NewWindowsUpdateScannerWrapper(s *scanner.WindowsUpdateScanner) *WindowsUpdateScannerWrapper { return &WindowsUpdateScannerWrapper{scanner: s} } func (w *WindowsUpdateScannerWrapper) IsAvailable() bool { return w.scanner.IsAvailable() } func (w *WindowsUpdateScannerWrapper) Scan() ([]client.UpdateReportItem, error) { return w.scanner.Scan() } func (w *WindowsUpdateScannerWrapper) Name() string { return "Windows Update Scanner" } // WingetScannerWrapper wraps the Winget scanner to implement the Scanner interface type WingetScannerWrapper struct { scanner *scanner.WingetScanner } func NewWingetScannerWrapper(s *scanner.WingetScanner) *WingetScannerWrapper { return &WingetScannerWrapper{scanner: s} } func (w *WingetScannerWrapper) IsAvailable() bool { return w.scanner.IsAvailable() } func (w *WingetScannerWrapper) Scan() ([]client.UpdateReportItem, error) { return w.scanner.Scan() } func (w *WingetScannerWrapper) Name() string { return "Winget Package Update Scanner" }