From aa1788386a0277d8bca5beda1b6a6312026ce2f5 Mon Sep 17 00:00:00 2001 From: sqlerrorthing <148702857+sqlerrorthing@users.noreply.github.com> Date: Mon, 3 Nov 2025 05:10:52 +0800 Subject: [PATCH] fix shitcode --- rust/crates/zaprett/src/service.rs | 33 ++++++++++++++---------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/rust/crates/zaprett/src/service.rs b/rust/crates/zaprett/src/service.rs index fc84bb0..3f23fa0 100644 --- a/rust/crates/zaprett/src/service.rs +++ b/rust/crates/zaprett/src/service.rs @@ -8,8 +8,7 @@ use nix::sys::signal::{Signal, kill}; use nix::unistd::{Pid, Uid}; use regex::Regex; use std::borrow::Cow; -use std::path::Path; -use sysctl::Sysctl; +use sysctl::{Ctl, CtlValue, Sysctl}; use sysinfo::{Pid as SysPid, System}; use tokio::fs; use tokio::fs::File; @@ -62,8 +61,8 @@ pub async fn start_service() -> anyhow::Result<()> { .replace_all(&strat_modified, ZAPRETT_DIR_PATH.to_str().unwrap()) .into_owned(); - let ctl = sysctl::Ctl::new("net.netfilter.nf_conntrack_tcp_be_liberal")?; - ctl.set_value(sysctl::CtlValue::String("1".into()))?; + let ctl = Ctl::new("net.netfilter.nf_conntrack_tcp_be_liberal")?; + ctl.set_value(CtlValue::String("1".into()))?; setup_iptables_rules().expect("setup iptables rules"); @@ -106,19 +105,17 @@ pub async fn service_status() -> anyhow::Result { bail!("Running not from root, exiting"); }; - let pid_i32 = match fs::read_to_string(Path::new(*MODULE_PATH).join("tmp/pid.lock")).await { - Ok(s) => match s.trim().parse::() { - Ok(pid) => pid, - Err(_) => return Ok(false), - }, - Err(_) => return Ok(false), + let Ok(Some(pid)) = fs::read_to_string(MODULE_PATH.join("/tmp/pid.lock")) + .await + .map(|s| s.trim().parse::().ok()) + else { + bail!("failed to get pid"); }; - let pid = SysPid::from(pid_i32 as usize); - let system = System::new_all(); - if let Some(process) = system.process(pid) { - if process.name() == "zaprett" { - return Ok(true); - } - } - Ok(false) + + let is_zaprett = System::new_all() + .process(SysPid::from(pid)) + .map(|process| process.name() == "zaprett") + .unwrap_or(false); + + Ok(is_zaprett) }