1use crate::engine::log_action;
4use crate::logging::verify::{FileVerification, verify_all, verify_date};
5
6pub struct LogVerification {
8 pub valid: bool,
9 pub verified: usize,
10 pub mismatched: usize,
11 pub missing: usize,
12 pub malformed: usize,
13 pub unsealed: usize,
14 pub files: Vec<FileVerification>,
15}
16
17pub fn verify_logs(date: Option<&str>) -> (LogVerification, String) {
19 let summary = if let Some(date) = date {
20 verify_date(Some(date))
21 } else {
22 verify_all()
23 };
24
25 let all_valid = summary.mismatched == 0
26 && summary.missing == 0
27 && summary.malformed == 0
28 && summary.unsealed == 0;
29
30 let details = format!(
31 "valid={}, verified={}, mismatched={}, missing={}, malformed={}, unsealed={}",
32 all_valid,
33 summary.verified,
34 summary.mismatched,
35 summary.missing,
36 summary.malformed,
37 summary.unsealed
38 );
39
40 let message = log_action("logs_verified", Some(&details), None, None, None);
41
42 (
43 LogVerification {
44 valid: all_valid,
45 verified: summary.verified,
46 mismatched: summary.mismatched,
47 missing: summary.missing,
48 malformed: summary.malformed,
49 unsealed: summary.unsealed,
50 files: summary.files,
51 },
52 message,
53 )
54}