diff --git a/src/analyzer/mod.rs b/src/analyzer/mod.rs index 1e6498a..b3c02a2 100644 --- a/src/analyzer/mod.rs +++ b/src/analyzer/mod.rs @@ -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 { let mut reporter = Reporter::new(); // 当前系统所有已安装的 rpm 包 diff --git a/src/lib.rs b/src/lib.rs index b54d07d..3285af4 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,7 +17,7 @@ pub type Result = std::result::Result; // 首先需要读取并载入配置信息 // 默认为 /etc/cuavrs 下 -lazy_static!{ +lazy_static! { pub static ref CONFIG: Config = { let default = Path::new("/etc/cuavrs/cuvat.json"); if default.is_file() {