37 lines
1.4 KiB
Rust
37 lines
1.4 KiB
Rust
|
|
|
||
|
|
// Init of configuration files could also be done via Config crate.
|
||
|
|
// But at this point of development it seems like unjustified overhead.
|
||
|
|
|
||
|
|
extern crate serde_json;
|
||
|
|
use std::fs::File;
|
||
|
|
|
||
|
|
pub struct Config {
|
||
|
|
pub filter: String,
|
||
|
|
pub insert_max: usize,
|
||
|
|
pub pcap_file: String,
|
||
|
|
pub connection: String,
|
||
|
|
pub device: String,
|
||
|
|
pub is_device: bool,
|
||
|
|
pub pcap_dir: String,
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
pub fn from_json_file() -> Option<Config> {
|
||
|
|
let config_file = File::open("parser.json").expect("file should open read only");
|
||
|
|
let json: serde_json::Value = serde_json::from_reader(config_file).unwrap();
|
||
|
|
Some(Config {
|
||
|
|
filter: json.get("filter").unwrap().as_str().unwrap().to_owned(),
|
||
|
|
insert_max : json.get("insert_max").unwrap().as_u64().unwrap() as usize,
|
||
|
|
pcap_file : json.get("pcap_file").unwrap().as_str().unwrap().to_owned(),
|
||
|
|
connection : format!("host={} user={} password={}",
|
||
|
|
json.get("database_host").unwrap().as_str().unwrap(),
|
||
|
|
json.get("database_user").unwrap().as_str().unwrap(),
|
||
|
|
json.get("database_password").unwrap().as_str().unwrap(),
|
||
|
|
),
|
||
|
|
device : json.get("parse_device").unwrap().as_str().unwrap().to_owned(),
|
||
|
|
is_device : json.get("from_device").unwrap().as_bool().unwrap(),
|
||
|
|
pcap_dir : json.get("pcap_dir").unwrap().as_str().unwrap().to_owned(),
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|