From 6ba7944bb230d76c9c5e5a9ad26850589fa7409f Mon Sep 17 00:00:00 2001 From: Claus Lohmar Date: Tue, 21 Jul 2026 19:37:27 +0000 Subject: [PATCH] fix: add unrar-free, use 7z for .zip extraction (more reliable) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Added unrar-free package to backend installer - Added .rar to archive extension detection - Changed .zip extraction from unzip → 7z (x -y) 7z handles .zip, .7z, and other formats with one tool - Added unrar handler for .rar files --- backend/converter.py | 5 +++-- backend/install.sh | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/converter.py b/backend/converter.py index 2a5b1f1..1ae989b 100644 --- a/backend/converter.py +++ b/backend/converter.py @@ -19,7 +19,7 @@ STAGING_OUT = Path("/mnt/converter/out") DISK_EXTENSIONS = {".vmdk", ".qcow2", ".qcow", ".img", ".raw", ".vhd", ".vhdx"} -ARCHIVE_EXTENSIONS = {".7z", ".zip", ".tar.gz", ".tgz", ".tar", ".gz", ".bz2", ".xz"} +ARCHIVE_EXTENSIONS = {".7z", ".zip", ".rar", ".tar.gz", ".tgz", ".tar", ".gz", ".bz2", ".xz"} MIN_DISK_BYTES = 1024 @@ -56,7 +56,8 @@ def extract_if_needed(filename: str) -> Path: # Determine extraction tool tool_map = { ".7z": ("7z", ["7z", "x", "-y", str(filepath)]), - ".zip": ("unzip", ["unzip", "-o", str(filepath)]), + ".zip": ("7z", ["7z", "x", "-y", str(filepath)]), + ".rar": ("unrar", ["unrar", "x", "-y", str(filepath)]), ".tar.gz": ("tar", ["tar", "-xzf", str(filepath)]), ".tgz": ("tar", ["tar", "-xzf", str(filepath)]), ".tar": ("tar", ["tar", "-xf", str(filepath)]), diff --git a/backend/install.sh b/backend/install.sh index 3d5e895..5349127 100755 --- a/backend/install.sh +++ b/backend/install.sh @@ -110,6 +110,7 @@ REQUIRED=( libguestfs-tools "guestfish" p7zip-full "7z" unzip "unzip" + unrar-free "unrar" tar "tar" gzip "gunzip" bzip2 "bunzip2"