From 721e677fa648afc1004f0c000d3e4f0b3e1af57a Mon Sep 17 00:00:00 2001 From: enzo Date: Wed, 13 May 2026 04:15:57 +0200 Subject: [PATCH] fix(os): use NAME directly, avoid double 'GNU/Linux' - NAME already contains 'Debian GNU/Linux', don't append it again - With DEBIAN_VERSION_FULL: NAME + DEBIAN_VERSION_FULL + (codename) - Without: NAME + VERSION_ID + (codename) - Fixes duplication bug --- full_updater/backend/scanner.py | 39 +++++++++++---------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/full_updater/backend/scanner.py b/full_updater/backend/scanner.py index 818a35c..4d2d768 100644 --- a/full_updater/backend/scanner.py +++ b/full_updater/backend/scanner.py @@ -148,40 +148,27 @@ def scan_os(target: Target) -> str: line = line.strip() if "=" in line: key, val = line.split("=", 1) - # Supprimer les guillemets val = val.strip().strip('"').strip("'") os_data[key] = val # 2. Extraire les champs - version_id = os_data.get("DEBIAN_VERSION_FULL", "") - if not version_id: - version_id = os_data.get("VERSION", "") - if not version_id: - version_id = os_data.get("VERSION_ID", "") - + name = os_data.get("NAME", "") codename = os_data.get("VERSION_CODENAME", "") - pretty_name = os_data.get("PRETTY_NAME", "") - os_name = os_data.get("NAME", "") + debian_version_full = os_data.get("DEBIAN_VERSION_FULL", "") + version_id = os_data.get("VERSION_ID", "") - # 3. Fallback sur /etc/debian_version si tout vide - if not version_id: - ok, ver_out, _ = run_cmd(prefix + ["cat", "/etc/debian_version"], timeout=30) - version_id = ver_out.strip() if ok else "" + # 3. Construire le libellé final + # Avec DEBIAN_VERSION_FULL : NAME DEBIAN_VERSION_FULL (VERSION_CODENAME) + # Sans : NAME VERSION_ID (VERSION_CODENAME) + version = debian_version_full if debian_version_full else version_id - # 4. Fallback sur lsb_release pour le nom - if not os_name: - ok, name_out, _ = run_cmd(prefix + ["lsb_release", "-is"], timeout=30) - os_name = name_out.strip() if ok else "" + if name and version and codename: + return f"{name} {version} ({codename})" + if name and version: + return f"{name} {version}" - if not os_name and pretty_name: - return pretty_name - if not os_name or not version_id: - return pretty_name if pretty_name else "OS inconnu" - - # Construire le libellé final - if codename: - return f"{os_name} GNU/Linux {version_id} ({codename})" - return f"{os_name} GNU/Linux {version_id}" + # Fallback : PRETTY_NAME ou "OS inconnu" + return os_data.get("PRETTY_NAME", "OS inconnu") def ensure_debsecan_installed(is_host: bool, vmid: str = "") -> tuple[bool, str]: