tarpit-log-parser 0.2.1

library to parse tarpit log files
Documentation
use std::net::{Ipv4Addr, SocketAddrV4};

use chrono::NaiveDate;

use crate::{parsing::parse_log_line, Action, LogLevel, TarpitLogEntry};

#[test]
fn parsing_log_line_event() {
    let input =
        "2022-01-06 17:55:11 INFO    TarpitServer: Client ('159.65.200.85', 49698) connected";
    let (rest, parsed) = parse_log_line(input).unwrap();

    let expected = TarpitLogEntry::Event {
        ip: SocketAddrV4::new(Ipv4Addr::new(159, 65, 200, 85), 49698u16),
        timestamp: NaiveDate::from_ymd_opt(2022, 1, 6)
            .unwrap()
            .and_hms_opt(17, 55, 11)
            .unwrap(),
        action: Action::Connect,
        log_level: LogLevel::Info,
    };
    assert_eq!(parsed, expected);
    assert!(rest.is_empty());
}

#[test]
fn parsing_log_line_message() {
    let input = "2022-01-06 17:55:11 INFO    Main: Server startup completed.";
    let (rest, parsed) = parse_log_line(input).unwrap();

    let expected = TarpitLogEntry::Message {
        timestamp: NaiveDate::from_ymd_opt(2022, 1, 6)
            .unwrap()
            .and_hms_opt(17, 55, 11)
            .unwrap(),
        log_level: LogLevel::Info,
        issuer: String::from("Main"),
        message: String::from("Server startup completed."),
    };
    assert_eq!(parsed, expected);
    assert!(rest.is_empty());
}