This commit is contained in:
2024-12-21 20:56:28 +00:00
commit 04782f4a11
3 changed files with 318 additions and 0 deletions

74
src/main.rs Normal file
View File

@@ -0,0 +1,74 @@
use clap::Parser;
use std::thread::sleep;
use std::time::Duration;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
/// Run in foreground
#[arg(short, long)]
foreground: bool,
/// PID file
#[arg(short, long, default_value = "/var/run/dhcpleasemon.pid")]
pid_file: String,
/// Root directory
#[arg(short, long, default_value = "/")]
root_dir: String,
/// Directory with trigger scripts
#[arg(short, long, default_value = "/etc/dhcpleasemon")]
scripts_dir: String,
/// Directory monitored for lease changes
#[arg(short, long, default_value = "/var/db/dhcpleased")]
dhcp_lease_dir: String,
/// Scan interval
#[arg(short = 't', long, default_value_t = 1)]
interval: u8,
/// Interfaces to monitor
#[arg(short, long)]
interfaces: Vec<String>,
}
struct Monitor<'a> {
args: &'a Args,
}
impl<'a> Monitor<'a> {
fn new(args: &'a Args) -> Self {
Self { args }
}
fn check_iface(&self, iface_name: String) {
println!("Checking: {}", iface_name);
}
fn run(&mut self) {
loop {
for iface in &self.args.interfaces {
self.check_iface(iface.to_string());
}
sleep(Duration::new(self.args.interval.into(), 0));
println!("{:?}", self.args);
println!("hello");
}
}
}
fn main() {
let args = Args::parse();
let mut monitor = Monitor::new(&args);
if args.interfaces.is_empty() {
eprintln!("No interfaces to monitor");
}
monitor.run();
}
// EOF