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:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user