siquery/linux/
mod.rs

1use std::fs::File;
2use std::io::Read;
3#[allow(unused_imports)]
4// TODO implement to_json
5use serde_json;
6#[cfg(feature = "etc_hosts")] use crate::tables::EtcHostsIface;
7#[cfg(feature = "etc_services")] use crate::tables::EtcServicesIface;
8#[cfg(feature = "etc_protocols")] use crate::tables::EtcProtocolsIface;
9#[cfg(feature = "logical_drive")] mod logical_drive;
10#[cfg(feature = "interface_address")] mod interface_address;
11#[cfg(feature = "interface_details")] mod interface_details;
12#[cfg(feature = "os_version")] mod os_version;
13#[cfg(feature = "system_info")] mod system_info;
14#[cfg(feature = "uptime")] mod uptime;
15#[cfg(feature = "process_open_sockets")] mod process_open_sockets;
16#[cfg(feature = "processes")] mod processes;
17#[cfg(feature = "mounts")] mod mounts;
18#[cfg(feature = "groups")] mod groups;
19#[cfg(feature = "users")] mod users;
20#[cfg(feature = "logged_in_users")] mod logged_in_users;
21#[cfg(feature = "proxies")] mod proxies;
22
23pub struct EtcHostsReader {}
24#[cfg(feature = "etc_hosts")]
25impl EtcHostsIface for EtcHostsReader {
26    fn get_hosts_file(&self) -> Option<String> {
27        let mut s = String::new();
28        File::open("/etc/hosts").ok()?.read_to_string(&mut s).ok()?;
29        Some(s)
30    }
31}
32
33pub struct EtcProtocolsReader {}
34#[cfg(feature = "etc_protocols")]
35impl EtcProtocolsIface for EtcProtocolsReader {
36    fn get_protocols_file(&self) -> Option<String> {
37        let mut s = String::new();
38        File::open("/etc/protocols").ok()?.read_to_string(&mut s).ok()?;
39        Some(s)
40    }
41}
42
43pub struct EtcServicesReader {}
44#[cfg(feature = "etc_services")]
45impl EtcServicesIface for EtcServicesReader {
46    fn get_services_file(&self) -> Option<String> {
47        let mut s = String::new();
48        File::open("/etc/services").ok()?.read_to_string(&mut s).ok()?;
49        Some(s)
50    }
51}