Skip to main content

allowlist_rs/sources/
mod.rs

1use std::{
2    fs::File, 
3    io::{BufRead, BufReader}, 
4    path::Path
5};
6
7#[derive(Default, Clone)]
8pub struct SourceAddresses {
9    pub range: Vec<String>
10}
11
12pub fn is_src_valid(addresses: &SourceAddresses, src: &String) -> bool {
13    match addresses.range.binary_search(src) {
14        Ok(_) => return true,
15        Err(_) => return false
16    }
17}
18
19impl SourceAddresses {
20    pub fn new(path: &str) -> Option<SourceAddresses> {
21        let file = match File::open(Path::new(path)) {
22            Ok(s) => s,
23            Err(e) => { println!("Error: {}", e); return None; }
24        };
25        let reader = BufReader::new(&file);
26        let mut lines: Vec<_> = reader.lines().collect::<Result<_, _>>().unwrap();    
27        lines.sort();
28        Some(SourceAddresses { 
29            range: lines
30        })
31    }
32}