tarpit-log-parser 0.2.1

library to parse tarpit log files
Documentation
use chrono::NaiveDateTime;
use nom::character::complete::line_ending;
use nom::multi::separated_list0;
use nom::Finish;
use parsing::parse_log_line;
use std::net::SocketAddrV4;

mod parsing;
#[cfg(test)]
mod tests;

#[derive(Debug)]
pub struct TarpitLog {
    pub lines: Vec<TarpitLogEntry>,
}

#[derive(Debug, PartialEq)]
pub enum TarpitLogEntry {
    Message {
        timestamp: NaiveDateTime,
        log_level: LogLevel,
        issuer: String,
        message: String,
    },
    Event {
        timestamp: NaiveDateTime,
        ip: SocketAddrV4,
        action: Action,
        log_level: LogLevel,
    },
}

#[derive(Debug, PartialEq)]
pub enum Action {
    Connect,
    Disconnect,
}

#[derive(Debug, Clone, Copy, PartialEq)]
pub enum LogLevel {
    Trace,
    Debug,
    Info,
    Warn,
    Error,
}

// TODO: error handling
pub fn parse_tarpit_log(input: &str) -> Result<TarpitLog, String> {
    separated_list0(line_ending, parse_log_line)(input)
        .finish()
        .map(|result| TarpitLog { lines: result.1 })
        .map_err(|e: nom::error::Error<&str>| e.to_string())
}