allowlist-rs 0.1.0

Validate requests against a list of known IPv4 host addresses
Documentation
use std::{
    fs::File, 
    io::{BufRead, BufReader}, 
    path::Path
};

#[derive(Default, Clone)]
pub struct SourceAddresses {
    pub range: Vec<String>
}

pub fn is_src_valid(addresses: &SourceAddresses, src: &String) -> bool {
    match addresses.range.binary_search(src) {
        Ok(_) => return true,
        Err(_) => return false
    }
}

impl SourceAddresses {
    pub fn new(path: &str) -> Option<SourceAddresses> {
        let file = match File::open(Path::new(path)) {
            Ok(s) => s,
            Err(e) => { println!("Error: {}", e); return None; }
        };
        let reader = BufReader::new(&file);
        let mut lines: Vec<_> = reader.lines().collect::<Result<_, _>>().unwrap();    
        lines.sort();
        Some(SourceAddresses { 
            range: lines
        })
    }
}