初步完成 --repoter

Signed-off-by: Jia Chao <jiachao2130@126.com>
This commit is contained in:
Jia Chao 2024-08-13 14:54:20 +08:00
parent adf2180d11
commit 6c2b47d4f4

View File

@ -188,14 +188,72 @@ fn list_sas(cli: &Cli) -> crate::Result<()> {
// 最为详尽的报告,包括当前系统中软件包所涉及到,已修复和可用但未修复
// 的所有软件包的列表。
// 其格式如下:
// XXXXXX 报告
// FIXED:
// SA ID
// CVES
// effected rpms list
// ...
//
// ====================
// AVALIABLE:
// SA ID
// CVES
// effected rpms list
// ...
//
fn repoter(cli: &Cli) -> crate::Result<()> {
let reporter = _reporter()?;
let fixed = reporter.get_fixed();
let avaliable = reporter.get_avaliable();
let _ = fixed;
let _ = avaliable;
println!("TODO...");
Ok(())
let mut msg = String::new();
msg = format!("{msg}系统漏洞信息检测报告\n\n");
// fixed
msg = format!("{msg}已修复的安全公告\n");
for (cusa, rpms) in fixed {
// sa cves 信息
msg = format!("{msg}{} (fixed):\n", cusa.id());
let mut cves = vec![];
cusa.cves().iter().for_each(|cve| { cves.push(&cve.id); });
msg = format!("{msg}{:2}涉及 CVE 列表:{:?}\n", "", cves);
for rpm in rpms {
msg = format!("{msg}{:4}{}\n", "", rpm.nevra());
}
// 空
msg = format!("{msg}\n");
}
// "==============="
let mut seprator = String::new();
for _ in 0..80 {
seprator.push('=');
}
msg = format!("{msg}\n{seprator}\n\n\n");
// avaliable updates
msg = format!("{msg}可用更新\n");
for (cusa, rpms) in avaliable {
// sa cves 信息
msg = format!("{msg}{} (avaliable):\n", cusa.id());
let mut cves = vec![];
cusa.cves().iter().for_each(|cve| { cves.push(&cve.id); });
msg = format!("{msg}{:2}涉及 CVE 列表:{:?}\n", "", cves);
for rpm in rpms {
msg = format!("{msg}{:4}{}\n", "", rpm.nevra());
}
// 空
msg = format!("{msg}\n");
}
println!("{msg}");
// summary 一下
summary(cli)
}
fn summary(cli: &Cli) -> crate::Result<()> {