Author SHA1 Message Date
DragonSlayer_14 7f5c8db6ce Merge pull request 'Merge dev in testing: Ref: Entfernt vollständige 32-Bit-Unterstützung (i686)' (#3) from dev into testing
Unit-Tests / Unit-Tests (pull_request) Skipped
Auto-PR (Testing → Main) / Erstelle automatisch PR von testing nach main (push) Successful in 12s
Testing Build, Publish & Preview Release / Erkenne relevante Code-Änderungen (push) Successful in 13s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 27s
Security Scans / Trivy & OSV-Scanner (push) Successful in 44s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 45s
Testing Build, Publish & Preview Release / Build, Publish Packages (Testing) & Create Preview Release (push) Successful in 12m11s
TruffleHog Secret Scan / TruffleHog (push) Successful in 10s
Reviewed-on: #3
2026-09-20 12:20:30 +00:00
DragonSlayer_14 2f33e2202d Merge pull request 'Merge dev in testing: Neue Version 2.0.0 mit kompletter Überarbeitung' (#1) from dev into testing
Testing Build, Publish & Preview Release / Erkenne relevante Code-Änderungen (push) Successful in 10s
Unit-Tests / Unit-Tests (pull_request) Skipped
TruffleHog Secret Scan / TruffleHog (push) Successful in 20s
Auto-PR (Testing → Main) / Erstelle automatisch PR von testing nach main (push) Successful in 15s
Security Scans / Trivy & OSV-Scanner (push) Successful in 36s
TruffleHog Secret Scan / TruffleHog (pull_request) Successful in 24s
Security Scans / Trivy & OSV-Scanner (pull_request) Successful in 34s
Testing Build, Publish & Preview Release / Build, Publish Packages (Testing) & Create Preview Release (push) Failing after 13m0s
Reviewed-on: #1
2026-09-20 11:44:44 +00:00
4 changed files with 14 additions and 20 deletions
+6 -7
View File
@@ -46,11 +46,10 @@ maintainer = "DragonSlayer_14"
copyright = "2026 DragonSlayer_14" copyright = "2026 DragonSlayer_14"
section = "net" section = "net"
priority = "optional" priority = "optional"
# mac2ip ist eine harte Laufzeitabhängigkeit (MAC->IP-Auflösung; # mac2ip und nmap sind harte Laufzeitabhängigkeiten (MAC->IP-Auflösung); davfs2/cifs-utils/
# davfs2/cifs-utils/nfs-common werden bewusst NICHT hart verlangt, # nfs-common werden bewusst NICHT hart verlangt, da smart-mount pro konfiguriertem Laufwerk
# da smart-mount pro konfiguriertem Laufwerk nur das jeweils benötigte Mount-Backend # nur das jeweils benötigte Mount-Backend zur Laufzeit prüft/lädt (siehe MountBackend::check_available).
# zur Laufzeit prüft/lädt (siehe MountBackend::check_available). depends = "$auto, mac2ip, nmap"
depends = "$auto, mac2ip"
recommends = "davfs2, cifs-utils, nfs-common" recommends = "davfs2, cifs-utils, nfs-common"
extended-description = """\ extended-description = """\
smart-mount bindet Paare aus einem lokalen (LAN, WebDAV/SMB/NFS) und einem Cloud-Laufwerk smart-mount bindet Paare aus einem lokalen (LAN, WebDAV/SMB/NFS) und einem Cloud-Laufwerk
@@ -79,7 +78,7 @@ assets = [
{ source = "packaging/systemd/smart-mount-watch.service", dest = "/usr/lib/systemd/system/smart-mount-watch.service", mode = "644" }, { source = "packaging/systemd/smart-mount-watch.service", dest = "/usr/lib/systemd/system/smart-mount-watch.service", mode = "644" },
{ source = "packaging/systemd/smart-mount-watch.timer", dest = "/usr/lib/systemd/system/smart-mount-watch.timer", mode = "644" }, { source = "packaging/systemd/smart-mount-watch.timer", dest = "/usr/lib/systemd/system/smart-mount-watch.timer", mode = "644" },
] ]
requires = { "mac2ip" = "*" } requires = { "mac2ip" = "*", "nmap" = "*" }
suggests = { "davfs2" = "*", "cifs-utils" = "*", "nfs-utils" = "*" } suggests = { "davfs2" = "*", "cifs-utils" = "*", "nfs-utils" = "*" }
# postinst/postrm-Äquivalente: richten den paketierten systemd-Dienst automatisch ein/entfernen # postinst/postrm-Äquivalente: richten den paketierten systemd-Dienst automatisch ein/entfernen
# (Gegenstück zu packaging/deb/postinst+postrm). $1 in %postun: Anzahl verbleibender Versionen # (Gegenstück zu packaging/deb/postinst+postrm). $1 in %postun: Anzahl verbleibender Versionen
@@ -100,7 +99,7 @@ fi
[package.metadata.arch] [package.metadata.arch]
pkgrel = "1" # Wird in CI durch get-build-number.py dynamisch überschrieben pkgrel = "1" # Wird in CI durch get-build-number.py dynamisch überschrieben
arch = "x86_64" arch = "x86_64"
depends = ["gcc-libs", "glibc", "mac2ip"] depends = ["gcc-libs", "glibc", "mac2ip", "nmap"]
optdepends = [ optdepends = [
"davfs2: WebDAV-Laufwerke einbinden", "davfs2: WebDAV-Laufwerke einbinden",
"cifs-utils: SMB/CIFS-Laufwerke einbinden", "cifs-utils: SMB/CIFS-Laufwerke einbinden",
+2 -3
View File
@@ -14,9 +14,8 @@ werden (z. B. über ein separates Sync-Tool).
## Voraussetzungen ## Voraussetzungen
- **[`mac2ip`](https://gitea.creative-dragonslayer.de/Linuxapps/Mac2Ip)**: hart benötigt, sofern - **[`mac2ip`](https://gitea.creative-dragonslayer.de/Linuxapps/Mac2Ip)** und **`nmap`**: hart
lokale Laufwerke per MAC-Adresse adressiert werden (Auflösung MAC → IP). `mac2ip` verlangt benötigt, sofern lokale Laufwerke per MAC-Adresse adressiert werden (Auflösung MAC → IP).
`nmap` bereits selbst als eigene Paketabhängigkeit.
- **`timeout`** (GNU coreutils): auf praktisch jedem Linux-System bereits vorhanden (Basis- - **`timeout`** (GNU coreutils): auf praktisch jedem Linux-System bereits vorhanden (Basis-
Systempaket). Wird verwendet, um `mount`/`umount`-Aufrufe zeitlich zu begrenzen - siehe Systempaket). Wird verwendet, um `mount`/`umount`-Aufrufe zeitlich zu begrenzen - siehe
"Verhalten bei nicht mehr erreichbarem Server" unten. "Verhalten bei nicht mehr erreichbarem Server" unten.
+5 -10
View File
@@ -10,18 +10,13 @@ pub mod watch;
use clap::{CommandFactory, Parser, Subcommand}; use clap::{CommandFactory, Parser, Subcommand};
use clap_complete::Shell; use clap_complete::Shell;
/// Startet den Prozess bei Bedarf transparent über `sudo` neu, falls nicht bereits als root /// Bricht mit einer klaren Fehlermeldung ab, falls nicht als root aufgerufen. Mounten läuft
/// aufgerufen. Mounten läuft ausschließlich als root/System-Dienst (siehe /// ausschließlich als root/System-Dienst (siehe [`smart_mount::systemd`]) - es gibt seit dem
/// [`smart_mount::systemd`]) - es gibt seit dem Wegfall des Nutzerkontexts keine /// Wegfall des Nutzerkontexts keine unprivilegierte Mount-Variante mehr, für die ein
/// unprivilegierte Mount-Variante mehr, für die ein Rechte-Check hier zu früh käme. /// Rechte-Check hier zu früh käme.
///
/// `run_as_root()` ersetzt den aktuellen Prozess per `execve` und kehrt bei Erfolg nie zurück
/// (siehe sudo-ctdra); der `io::Error`-Rückgabewert ist ausschließlich der Fehlerfall (z. B.
/// `sudo` nicht gefunden).
pub(crate) fn require_root(context: &str) -> anyhow::Result<()> { pub(crate) fn require_root(context: &str) -> anyhow::Result<()> {
if !sudo_ctdra::is_run_as_root() { if !sudo_ctdra::is_run_as_root() {
let err = sudo_ctdra::run_as_root(); anyhow::bail!("'{context}' requires root privileges (re-run with sudo).");
anyhow::bail!("'{context}' requires root privileges: could not re-exec via sudo: {err}");
} }
Ok(()) Ok(())
} }
+1
View File
@@ -64,6 +64,7 @@ pub fn run_checks(cfg: &AppConfig) -> Vec<CheckResult> {
&cfg.settings.mac2ip_binary, &cfg.settings.mac2ip_binary,
"install mac2ip (private tool, see README)", "install mac2ip (private tool, see README)",
)); ));
results.push(check_binary("nmap", "nmap", "install package 'nmap'"));
} }
results results