diff --git a/src/detections/mod.rs b/src/detections/mod.rs index ad3011e6..d1996a94 100644 --- a/src/detections/mod.rs +++ b/src/detections/mod.rs @@ -4,6 +4,7 @@ mod common; mod configs; pub mod detection; mod powershell; +mod print; mod security; mod sysmon; mod system; diff --git a/src/detections/print.rs b/src/detections/print.rs new file mode 100644 index 00000000..6f131ee5 --- /dev/null +++ b/src/detections/print.rs @@ -0,0 +1,78 @@ +use std::collections::HashMap; + +#[derive(Debug)] +pub enum Lang { + ja, + en, +} + +#[derive(Debug)] +pub struct MessageLanguages { + ja: String, + en: String, +} + +#[derive(Debug)] +pub struct ErrorMessage { + map: HashMap, +} + +impl ErrorMessage { + pub fn new() -> Self { + let mut messages: HashMap = HashMap::new(); + messages.insert( + "undefined".to_string(), + MessageLanguages { + ja: "未設定".to_string(), + en: "Undefined".to_string(), + }, + ); + ErrorMessage { map: messages } + } + + /// エラーメッセージを設定 + pub fn insert_rule(&mut self, error_code: String, message: MessageLanguages) { + self.map.insert(error_code, message); + } + + /// エラーメッセージを指定された言語で返す + pub fn return_error_message(&self, error_num: &str, lang: Lang) -> String { + let messages = if let Some(boxed_message) = self.map.get(error_num) { + boxed_message + } else { + self.map.get("undefined").unwrap() + }; + match lang { + Lang::ja => messages.ja.clone(), + Lang::en => messages.en.clone(), + } + } +} + +#[test] +fn test_create_error_message() { + let mut error_message = ErrorMessage::new(); + + error_message.insert_rule( + "4103".to_string(), + MessageLanguages { + ja: "パイプライン実行をしています".to_string(), + en: "Execute pipeline".to_string(), + }, + ); + + let message_ja1 = error_message.return_error_message("4103", Lang::ja); + assert_eq!(message_ja1, "パイプライン実行をしています"); + let message_ja2 = error_message.return_error_message("4103", Lang::ja); + assert_eq!(message_ja2, "パイプライン実行をしています"); + + let message_en1 = error_message.return_error_message("4103", Lang::en); + assert_eq!(message_en1, "Execute pipeline"); + let message_en2 = error_message.return_error_message("4103", Lang::en); + assert_eq!(message_en2, "Execute pipeline"); + + let undef_ja = error_message.return_error_message("HOGE", Lang::ja); + assert_eq!(undef_ja, "未設定"); + let undef_en = error_message.return_error_message("HOGE", Lang::en); + assert_eq!(undef_en, "Undefined"); +}