1extern crate p0f_api;
2
3use std::net::IpAddr;
4use std::str::FromStr;
5
6use p0f_api::P0f;
7
8pub fn main() {
9 let ip = std::env::args().nth(1).unwrap_or("127.0.0.1".into());
11 let path = std::env::args().nth(2).unwrap_or("p0f.sock".into());
12
13 let mut p0f = P0f::new_connect(&path).expect(&format!(r#"Could not connect to p0f socket "{}""#, &path));
15 let addr = IpAddr::from_str(&ip).expect(&format!(r#"Invalid IP address: "{}"#, ip));
17
18 let resp = p0f.query(&addr);
20
21 if let Ok(resp) = resp {
22 if let Some(resp) = resp {
25 println!("Ok: {:?} -> {:#?}.", addr, resp);
27 } else {
28 println!("p0f returned no match.");
30 }
31 } else if let Err(resp_err) = resp {
32 println!("Response error: {:#?}.", resp_err);
34 }
35
36 p0f.query_v4( &std::net::Ipv4Addr::new(127, 0, 0, 1) ).unwrap();
38 p0f.query_v4( &[127, 0, 0, 1].into() ).unwrap();
39 p0f.query_v4( &0x7f000001.into() ).unwrap();
40
41 p0f.query_v6( &std::net::Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 1) ).unwrap();
43 p0f.query_v6( &[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1].into() ).unwrap();
44}