1use std::fs::File;
2use std::io::Read;
3#[allow(unused_imports)]
4use 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}