useself::config::CONFIG;useself::rsinetd::RsInetd;useanyhow::Result;useasync_std::task;usedaemonize::Daemonize;modconfig;modlog;modrsinetd;modrule;fnmain()->Result<()>{// Init
log::init_logger();let rules =rule::Rule::parse()?;daemonize();// to store init value, daemon should start after Init
let rsinetd =RsInetd::new();task::block_on(rsinetd.run(rules));Ok(())}#[cfg(unix)]fndaemonize(){if!CONFIG.daemon {return;}Daemonize::new().pid_file(format!("/tmp/rsinetd.pid")).working_directory("/tmp").umask(0o777).start().expect("Failed to start as daemon");}#[cfg(not(unix))]fndaemonize(){}