ares/checkers/
regex_checker.rs1use gibberish_or_not::Sensitivity;
2use lemmeknow::Identifier;
3
4use super::checker_type::{Check, Checker};
5use crate::{checkers::checker_result::CheckResult, config::get_config};
6use log::trace;
7use regex::Regex;
8
9pub struct RegexChecker;
12
13impl Check for Checker<RegexChecker> {
14 fn new() -> Self {
15 Checker {
16 name: "Regex Checker",
17 description: "Uses Regex to check for regex matches, useful for finding cribs.",
18 link: "https://github.com/rust-lang/regex",
19 tags: vec!["crib", "regex"],
20 expected_runtime: 0.01,
21 popularity: 1.0,
22 lemmeknow_config: Identifier::default(),
23 sensitivity: Sensitivity::Medium, enhanced_detector: None,
25 _phantom: std::marker::PhantomData,
26 }
27 }
28
29 fn check(&self, text: &str) -> CheckResult {
30 trace!("Checking {} with regex", text);
31 let config = get_config();
33 let regex_to_parse = config.regex.clone();
34 let re = Regex::new(®ex_to_parse.unwrap()).unwrap();
35
36 let regex_check_result = re.is_match(text);
37 let mut plaintext_found = false;
38 let printed_name = format!("Regex matched: {re}");
39 if regex_check_result {
40 plaintext_found = true;
41 }
42
43 CheckResult {
44 is_identified: plaintext_found,
45 text: text.to_string(),
46 checker_name: self.name,
47 checker_description: self.description,
48 description: printed_name,
49 link: self.link,
50 }
51 }
52
53 fn with_sensitivity(mut self, sensitivity: Sensitivity) -> Self {
54 self.sensitivity = sensitivity;
55 self
56 }
57
58 fn get_sensitivity(&self) -> Sensitivity {
59 self.sensitivity
60 }
61}