From 3b9396c5000264d4b0afee5951939aba9bee1d6e Mon Sep 17 00:00:00 2001 From: Jia Chao Date: Tue, 6 Aug 2024 15:10:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=EF=BC=9A=E5=88=97=E5=87=BA?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=B7=B2=E5=8F=91=E5=B8=83=E4=BD=86=E6=9C=AA?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=9A=84=E5=AE=89=E5=85=A8=E5=85=AC=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jia Chao --- Cargo.toml | 4 ++++ src/analyzer/mod.rs | 37 ++++++++++++++++++++++++++++--------- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6306060..6a927d0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,10 @@ name = "cuvat-rs" version = "0.1.0" edition = "2021" +[[bin]] +name = "cuvat" +path = "src/main.rs" + [dependencies] clap = { version = "4.0", features = ["derive"] } serde = { version = "1", features = ["serde_derive"] } diff --git a/src/analyzer/mod.rs b/src/analyzer/mod.rs index 06b4af6..cd949c4 100644 --- a/src/analyzer/mod.rs +++ b/src/analyzer/mod.rs @@ -65,7 +65,10 @@ fn repoter(cli: &Cli) -> crate::Result<()> { fn summary(cli: &Cli) -> crate::Result<()> { let avaliable = get_avaliable()?; let severity = Severity::from_str(&cli.severity)?; + let mut total = 0; let mut res = vec![0; 5]; + let mut lists = vec![vec![]; 5]; + let mut msg = String::new(); for (cusa, rpms) in &avaliable { // 过滤 @@ -74,20 +77,36 @@ fn summary(cli: &Cli) -> crate::Result<()> { } let pos: usize = cusa.severity().into(); + total += 1; res[pos] += 1; + lists[pos].push(cusa); } - let msg = format!( - " -漏洞扫描结果如下: - 致命漏洞: {:3} 个 - 高危漏洞: {:3} 个 - 中危漏洞: {:3} 个 - 低危漏洞: {:3} 个 + + // 如果需要列出详细的 sa + if cli.list { + msg = format!("当前系统未修复的公告列表(共 {total} 个):\n"); + for sas in &lists { + for sa in sas { + msg = format!("{msg}\n{:>4}{}: {:?}", "", sa.id(), sa.severity()); + } + } + //msg = format!("{msg}\n\n"); + } else { + msg = format!( + "{msg} +本次安全检查共扫描出 {} 个漏洞: + + 致命漏洞:{:>3} 个 + 高危漏洞:{:>3} 个 + 中危漏洞:{:>3} 个 + 低危漏洞:{:>3} 个 ", - res[4], res[3], res[2], res[1] - ); + total, res[4], res[3], res[2], res[1] + ); + } println!("{}", msg); + Ok(()) }