From b3f2204a8847e7ebbeee401c6c5fb54e2abb8eb2 Mon Sep 17 00:00:00 2001 From: Jia Chao Date: Fri, 9 Aug 2024 11:37:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=EF=BC=9A--sas=20=20=E6=9F=A5?= =?UTF-8?q?=E6=89=BE=E5=B9=B6=E5=88=97=E5=87=BA=E5=B9=B6=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E5=B7=B2=E4=BF=AE=E5=A4=8D=E4=BD=86=E5=B0=9A=E6=9C=AA=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E7=9A=84=20sa=20=E5=AE=89=E5=85=A8=E5=85=AC=E5=91=8A?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jia Chao --- src/analyzer/mod.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/src/analyzer/mod.rs b/src/analyzer/mod.rs index df510c4..37e7d54 100644 --- a/src/analyzer/mod.rs +++ b/src/analyzer/mod.rs @@ -94,6 +94,39 @@ fn list_cves(cli: &Cli) -> crate::Result<()> { fn list_sas(cli: &Cli) -> crate::Result<()> { let avaliable = get_avaliable()?; let severity = Severity::from_str(&cli.severity)?; + let mut _sas = HashSet::new(); + cli.sources.iter().for_each(|id| { _sas.insert(id); }); + + let mut sas = HashSet::new(); + let mut msg = String::new(); + + // 仅针对可用更新 + for (cusa, _) in &avaliable { + // 过滤 + if cusa.severity() < &severity { + continue; + } + + if let Some(_) = _sas.get(&cusa.id) { + let _ = sas.insert(cusa.clone()); + _sas.remove(&cusa.id); + } + } + + for sa in &sas { + if cli.info { + msg = format!("{msg}\n\n{sa:#?}"); + } else { + msg = format!("{msg}\n{}", sa.id); + } + } + + if !_sas.is_empty() { + msg = format!("{msg}\n\nUnaffected SAs:\n{_sas:#?}") + } + + println!("{msg}"); + Ok(()) }