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:
@@ -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,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
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user