feat(scanner) export pkg list scan method (#1203)

* feat(scanner) export pkg list scan method

* fix args

* fix func

* fix init debian
This commit is contained in:
sadayuki-matsuno
2021-04-01 17:38:20 +09:00
committed by GitHub
parent 9bfe0627ae
commit e879ff1e9e

View File

@@ -179,6 +179,26 @@ func ViaHTTP(header http.Header, body string, toLocalFile bool) (models.ScanResu
Release: kernelRelease,
Version: kernelVersion,
}
installedPackages, srcPackages, err := ParseInstalledPkgs(distro, kernel, body)
if err != nil {
return models.ScanResult{}, err
}
return models.ScanResult{
ServerName: serverName,
Family: family,
Release: release,
RunningKernel: models.Kernel{
Release: kernelRelease,
Version: kernelVersion,
},
Packages: installedPackages,
SrcPackages: srcPackages,
ScannedCves: models.VulnInfos{},
}, nil
}
func ParseInstalledPkgs(distro config.Distro, kernel models.Kernel, pkgList string) (models.Packages, models.SrcPackages, error) {
base := base{
Distro: distro,
osPackages: osPackages{
@@ -188,7 +208,7 @@ func ViaHTTP(header http.Header, body string, toLocalFile bool) (models.ScanResu
}
var osType osTypeInterface
switch family {
switch distro.Family {
case constant.Debian, constant.Ubuntu:
osType = &debian{base: base}
case constant.RedHat:
@@ -208,28 +228,10 @@ func ViaHTTP(header http.Header, body string, toLocalFile bool) (models.ScanResu
redhatBase: redhatBase{base: base},
}
default:
return models.ScanResult{}, xerrors.Errorf("Server mode for %s is not implemented yet", family)
return models.Packages{}, models.SrcPackages{}, xerrors.Errorf("Server mode for %s is not implemented yet", base.Distro.Family)
}
installedPackages, srcPackages, err := osType.parseInstalledPackages(body)
if err != nil {
return models.ScanResult{}, err
}
result := models.ScanResult{
ServerName: serverName,
Family: family,
Release: release,
RunningKernel: models.Kernel{
Release: kernelRelease,
Version: kernelVersion,
},
Packages: installedPackages,
SrcPackages: srcPackages,
ScannedCves: models.VulnInfos{},
}
return result, nil
return osType.parseInstalledPackages(pkgList)
}
// initServers detect the kind of OS distribution of target servers