Crates.io | usiem-basic-parser |
lib.rs | usiem-basic-parser |
version | 0.1.0 |
source | src |
created_at | 2021-03-28 15:03:40.151924+00 |
updated_at | 2023-08-03 20:38:36.707455+00 |
description | uSIEM parser component that allows using multiple and different parsers |
homepage | |
repository | https://github.com/u-siem/usiem-basic-parser |
max_upload_size | |
id | 374690 |
size | 31,349 |
Basic Parser component that supports multiple different sources and log formats
// Create component and register parsers
let mut parser_component = BasicParserComponent::new();
parser_component.add_parser(Box::from(parser1));
parser_component.add_parser(Box::from(parser2));
// Send the component to the kernel to be managed
kernel.add_component(parser_component);
There are some examples in the µSIEM library used for testing.
#[derive(Clone)]
pub struct DummyParserText {
schema : FieldSchema
}
impl DummyParserText {
pub fn new() -> Self {
Self {
schema : FieldSchema::new()
}
}
}
impl LogParser for DummyParserText {
fn parse_log(
&self,
mut log: SiemLog,
_datasets: &DatasetHolder,
) -> Result<SiemLog, LogParsingError> {
if !log.message().contains("DUMMY") {
return Err(LogParsingError::NoValidParser(log));
}
log.add_field("parser", SiemField::from_str("DummyParserText"));
Ok(log)
}
fn name(&self) -> &'static str {
"DummyParserText"
}
fn description(&self) -> &'static str {
"This is a dummy that parsers if contains DUMMY in text"
}
fn schema(&self) -> & FieldSchema {
&self.schema
}
fn generator(&self) -> Box<dyn LogGenerator> {
return Box::new(DummyLogGenerator {});
}
}
let parser1 = DummyParserText::new();
parser_component.add_parser(Box::from(parser1));