nvd_cves/api/
mod.rs

1use crate::impact::ImpactMetrics;
2use crate::v4::configurations::Node;
3use crate::v4::{Description, Reference, Weaknesses};
4use chrono::NaiveDateTime;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
8#[serde(rename_all = "camelCase")]
9pub struct CVE {
10  pub id: String,
11  pub source_identifier: String,
12  pub published: NaiveDateTime,
13  // 最后修改时间
14  pub last_modified: NaiveDateTime,
15  pub vuln_status: VulnStatus,
16  pub descriptions: Vec<Description>,
17  pub metrics: ImpactMetrics,
18  #[serde(default)]
19  pub weaknesses: Vec<Weaknesses>,
20  #[serde(default)]
21  pub configurations: Vec<Nodes>,
22  pub references: Vec<Reference>,
23}
24#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
25pub struct Nodes {
26  #[serde(default)]
27  pub nodes: Vec<Node>,
28}
29
30// 漏洞状态,最新的有很多都是正在分析这个漏洞,没有什么数据,TODO: 可以在前端添加个过滤条件
31#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
32pub enum VulnStatus {
33  /// 已修改
34  Modified,
35  /// 已经分析
36  Analyzed,
37  /// 正在进行分析
38  #[serde(rename = "Undergoing Analysis")]
39  UndergoingAnalysis,
40  /// 已拒绝
41  Rejected,
42  /// 被认可的
43  Received,
44  /// 等待分析
45  #[serde(rename = "Awaiting Analysis")]
46  AwaitingAnalysis,
47}