dnf 支持,添加骨架

Signed-off-by: Jia Chao <jiachao2130@126.com>
This commit is contained in:
Jia Chao 2024-08-26 19:37:12 +08:00
parent fcd1a4dc7d
commit e5b9f185c5
2 changed files with 43 additions and 8 deletions

View File

@ -45,9 +45,7 @@ impl Reporter {
let fixed = HashMap::new();
let avaliable = HashMap::new();
Self {
fixed, avaliable
}
Self { fixed, avaliable }
}
// get fixed, 不可写
@ -106,11 +104,17 @@ pub fn cuvat_run(cli: &Cli) -> crate::Result<()> {
}
fn list_cves(cli: &Cli) -> crate::Result<()> {
if cli.dnf {
return _dnf_list_cves(cli);
}
let reporter = _reporter()?;
let avaliable = reporter.get_avaliable();
let severity = Severity::from_str(&cli.severity)?;
let mut _cves = HashSet::new();
cli.sources.iter().for_each(|id| { _cves.insert(id); });
cli.sources.iter().for_each(|id| {
_cves.insert(id);
});
let mut cves = HashSet::new();
let mut msg = String::new();
@ -147,12 +151,22 @@ fn list_cves(cli: &Cli) -> crate::Result<()> {
Ok(())
}
fn _dnf_list_cves(_cli: &Cli) -> crate::Result<()> {
Ok(())
}
fn list_sas(cli: &Cli) -> crate::Result<()> {
if cli.dnf {
return _dnf_list_sas(cli);
}
let reporter = _reporter()?;
let avaliable = reporter.get_avaliable();
let severity = Severity::from_str(&cli.severity)?;
let mut _sas = HashSet::new();
cli.sources.iter().for_each(|id| { _sas.insert(id); });
cli.sources.iter().for_each(|id| {
_sas.insert(id);
});
let mut sas = HashSet::new();
let mut msg = String::new();
@ -187,6 +201,10 @@ fn list_sas(cli: &Cli) -> crate::Result<()> {
Ok(())
}
fn _dnf_list_sas(_cli: &Cli) -> crate::Result<()> {
Ok(())
}
// 最为详尽的报告,包括当前系统中软件包所涉及到,已修复和可用但未修复
// 的所有软件包的列表。
// 其格式如下:
@ -205,6 +223,11 @@ fn list_sas(cli: &Cli) -> crate::Result<()> {
// ...
//
fn repoter(cli: &Cli) -> crate::Result<()> {
if cli.dnf {
println!("暂不支持此功能,请联系开发者");
return Ok(());
}
let reporter = _reporter()?;
let fixed = reporter.get_fixed();
let avaliable = reporter.get_avaliable();
@ -218,7 +241,9 @@ fn repoter(cli: &Cli) -> crate::Result<()> {
// sa cves 信息
msg = format!("{msg}{} (fixed):\n", cusa.id());
let mut cves = vec![];
cusa.cves().iter().for_each(|cve| { cves.push(&cve.id); });
cusa.cves().iter().for_each(|cve| {
cves.push(&cve.id);
});
msg = format!("{msg}{:2}涉及 CVE 列表:{:?}\n", "", cves);
for rpm in rpms {
@ -241,7 +266,9 @@ fn repoter(cli: &Cli) -> crate::Result<()> {
// sa cves 信息
msg = format!("{msg}{} (avaliable):\n", cusa.id());
let mut cves = vec![];
cusa.cves().iter().for_each(|cve| { cves.push(&cve.id); });
cusa.cves().iter().for_each(|cve| {
cves.push(&cve.id);
});
msg = format!("{msg}{:2}涉及 CVE 列表:{:?}\n", "", cves);
for rpm in rpms {
@ -258,6 +285,10 @@ fn repoter(cli: &Cli) -> crate::Result<()> {
}
fn summary(cli: &Cli) -> crate::Result<()> {
if cli.dnf {
return _dnf_summary(cli);
}
let reporter = _reporter()?;
let avaliable = reporter.get_avaliable();
let severity = Severity::from_str(&cli.severity)?;
@ -306,6 +337,10 @@ fn summary(cli: &Cli) -> crate::Result<()> {
Ok(())
}
fn _dnf_summary(_cli: &Cli) -> crate::Result<()> {
Ok(())
}
fn _reporter() -> crate::Result<Reporter> {
let mut reporter = Reporter::new();
// 当前系统所有已安装的 rpm 包

View File

@ -17,7 +17,7 @@ pub type Result<T> = std::result::Result<T, Error>;
// 首先需要读取并载入配置信息
// 默认为 /etc/cuavrs 下
lazy_static!{
lazy_static! {
pub static ref CONFIG: Config = {
let default = Path::new("/etc/cuavrs/cuvat.json");
if default.is_file() {