chore: drop dead code and the stale wireguard-tools dependency [P2]

wireguard-tools was still declared in Depends and in the runtime package list installed by
tools/build.sh --prepare-runtime-env. Since peer discovery moved to docker exec, no code
path invokes a host-side wg, and check_host_tools stopped requiring it. The declaration
was therefore installing a package the harness never calls and misrepresenting the actual
architecture to anyone reading the control file. Removed from both places.

Three items were carrying #[allow(dead_code)], which is a way of silencing the compiler
about a real question rather than answering it:

- SysctlTuningStatus.desired duplicated data that is already in .current - every
  SysctlValue holds both the desired and the current value, so the second Vec was the same
  information cloned on every inspect call and read by nobody;
- SysctlValue.managed was always set to true and never read. Ownership is decided per file
  by the marker, not per key, so the field encoded nothing;
- unix_now() in the reboot scheduler, along with the SystemTime and UNIX_EPOCH imports it
  needed. The module works in chrono NaiveDateTime throughout.

All three are removed rather than annotated. The workspace now builds clean under
-D warnings with no dead_code exceptions anywhere.

cargo test --workspace: 158 + 4 passed. clippy -D warnings clean.
This commit is contained in:
2026-08-06 22:59:18 +05:00
parent bf43b763cd
commit c6fa1a0af9
4 changed files with 6 additions and 25 deletions
+1
View File
@@ -177,6 +177,7 @@
- [ ] Пакет не устанавливает `/etc/awg2-harness/config.toml` автоматически. - [ ] Пакет не устанавливает `/etc/awg2-harness/config.toml` автоматически.
- [ ] Пакет не включает/не стартует сервис автоматически. - [ ] Пакет не включает/не стартует сервис автоматически.
- [ ] Пакет не имеет `Depends`/`Recommends` на `docker.io`; установка Amnezia/Docker внешняя. - [ ] Пакет не имеет `Depends`/`Recommends` на `docker.io`; установка Amnezia/Docker внешняя.
- [ ] Пакет не имеет `Depends` на `wireguard-tools`: peer state читается внутри контейнера, host-side `wg` не используется.
- [ ] `apt install ./awg2-harness_<version>_amd64.deb` не устанавливает и не заменяет Docker. - [ ] `apt install ./awg2-harness_<version>_amd64.deb` не устанавливает и не заменяет Docker.
- [ ] `apt install ./awg2-harness_<version>_amd64.deb` проходит на clean Debian 13 Amnezia host. - [ ] `apt install ./awg2-harness_<version>_amd64.deb` проходит на clean Debian 13 Amnezia host.
- [ ] После ручной установки config `awg2-harness validate-config` проходит. - [ ] После ручной установки config `awg2-harness validate-config` проходит.
+1 -15
View File
@@ -1,10 +1,4 @@
use std::{ use std::{fs, path::PathBuf, process::Command, thread, time::Duration as StdDuration};
fs,
path::PathBuf,
process::Command,
thread,
time::{Duration as StdDuration, SystemTime, UNIX_EPOCH},
};
use anyhow::Context; use anyhow::Context;
use chrono::{Duration, NaiveDateTime, NaiveTime, Timelike, Utc}; use chrono::{Duration, NaiveDateTime, NaiveTime, Timelike, Utc};
@@ -188,14 +182,6 @@ fn parse_hhmm(v: &str) -> anyhow::Result<NaiveTime> {
NaiveTime::from_hms_opt(h, m, 0).ok_or_else(|| anyhow::anyhow!("bad time")) NaiveTime::from_hms_opt(h, m, 0).ok_or_else(|| anyhow::anyhow!("bad time"))
} }
#[allow(dead_code)]
fn unix_now() -> u64 {
SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap_or_default()
.as_secs()
}
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::*; use super::*;
+1 -2
View File
@@ -37,7 +37,6 @@ BUILD_PACKAGES=(
RUNTIME_PACKAGES=( RUNTIME_PACKAGES=(
iproute2 iproute2
wireguard-tools
nftables nftables
kmod kmod
util-linux util-linux
@@ -355,7 +354,7 @@ Section: net
Priority: optional Priority: optional
Architecture: amd64 Architecture: amd64
Maintainer: AWG2 Harness Maintainer: AWG2 Harness
Depends: libc6, iproute2, wireguard-tools, nftables, kmod, util-linux, procps, systemd Depends: libc6, iproute2, nftables, kmod, util-linux, procps, systemd
Description: Host-side orchestrator for AmneziaWG traffic shaping and lifecycle recovery Description: Host-side orchestrator for AmneziaWG traffic shaping and lifecycle recovery
AWG2 Harness manages AmneziaWG traffic shaping, IFB ingress shaping, AWG2 Harness manages AmneziaWG traffic shaping, IFB ingress shaping,
nftables anti-torrent guard, reboot scheduling, swap setup and daemonized nftables anti-torrent guard, reboot scheduling, swap setup and daemonized
+3 -8
View File
@@ -19,9 +19,9 @@ pub struct SysctlTuningStatus {
pub modules_load_matches: bool, pub modules_load_matches: bool,
pub bbr_available: Option<bool>, pub bbr_available: Option<bool>,
pub bbr_active: Option<bool>, pub bbr_active: Option<bool>,
/// Each entry carries both the desired and the current value, so a separate desired
/// list would be the same data twice.
pub current: Vec<SysctlValue>, pub current: Vec<SysctlValue>,
#[allow(dead_code)]
pub desired: Vec<SysctlValue>,
pub drift_reason: Option<String>, pub drift_reason: Option<String>,
pub warnings: Vec<String>, pub warnings: Vec<String>,
} }
@@ -31,8 +31,6 @@ pub struct SysctlValue {
pub key: String, pub key: String,
pub desired: Option<String>, pub desired: Option<String>,
pub current: Option<String>, pub current: Option<String>,
#[allow(dead_code)]
pub managed: bool,
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@@ -109,7 +107,6 @@ pub fn inspect_sysctl_tuning(cfg: &Config) -> anyhow::Result<SysctlTuningStatus>
bbr_available: None, bbr_available: None,
bbr_active: None, bbr_active: None,
current: Vec::new(), current: Vec::new(),
desired: Vec::new(),
drift_reason: Some(format!("render plan unavailable: {e}")), drift_reason: Some(format!("render plan unavailable: {e}")),
warnings: vec![format!("render plan error: {e}")], warnings: vec![format!("render plan error: {e}")],
}); });
@@ -136,7 +133,6 @@ pub fn inspect_sysctl_tuning(cfg: &Config) -> anyhow::Result<SysctlTuningStatus>
key: k.clone(), key: k.clone(),
desired: Some(v.clone()), desired: Some(v.clone()),
current: read_sysctl(k).ok(), current: read_sysctl(k).ok(),
managed: true,
}); });
} }
@@ -201,8 +197,7 @@ pub fn inspect_sysctl_tuning(cfg: &Config) -> anyhow::Result<SysctlTuningStatus>
modules_load_matches, modules_load_matches,
bbr_available: plan.bbr_available, bbr_available: plan.bbr_available,
bbr_active: plan.bbr_active, bbr_active: plan.bbr_active,
current: values.clone(), current: values,
desired: values,
drift_reason, drift_reason,
warnings: plan.warnings, warnings: plan.warnings,
}) })