From 062096998ebea2930ba5302dcf4666bbdbba02e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20M=C3=A9taireau?= Date: Thu, 3 Oct 2024 16:40:34 +0200 Subject: [PATCH] Catch installation errors and display them. Fixes #193 --- dangerzone/gui/main_window.py | 76 ++++++++++++------ dangerzone/isolation_provider/container.py | 20 +++-- dangerzone/util.py | 11 +++ poetry.lock | 47 ++++++++++- pyproject.toml | 2 + tests/gui/test_main_window.py | 88 ++++++++++++++++++++- tests/isolation_provider/base.py | 1 - tests/test_docs/unsafe/sample-bmp.bmp | Bin 0 -> 1000810 bytes tests/test_docs/unsafe/sample-doc.doc | Bin 0 -> 36352 bytes tests/test_docs/unsafe/sample-docm.docm | Bin 0 -> 26699 bytes 10 files changed, 213 insertions(+), 32 deletions(-) create mode 100644 tests/test_docs/unsafe/sample-bmp.bmp create mode 100644 tests/test_docs/unsafe/sample-doc.doc create mode 100644 tests/test_docs/unsafe/sample-docm.docm diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index 43fb4c8f0..90ae34252 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -20,15 +20,20 @@ from PySide6.QtWidgets import QTextEdit except ImportError: from PySide2 import QtCore, QtGui, QtSvg, QtWidgets - from PySide2.QtWidgets import QAction, QTextEdit from PySide2.QtCore import Qt + from PySide2.QtWidgets import QAction, QTextEdit from .. import errors from ..document import SAFE_EXTENSION, Document from ..isolation_provider.container import Container, NoContainerTechException from ..isolation_provider.dummy import Dummy from ..isolation_provider.qubes import Qubes, is_qubes_native_conversion -from ..util import get_resource_path, get_subprocess_startupinfo, get_version +from ..util import ( + format_exception, + get_resource_path, + get_subprocess_startupinfo, + get_version, +) from .logic import Alert, CollapsibleBox, DangerzoneGui, UpdateDialog from .updater import UpdateReport @@ -388,15 +393,24 @@ def closeEvent(self, e: QtGui.QCloseEvent) -> None: class InstallContainerThread(QtCore.QThread): - finished = QtCore.Signal() + finished = QtCore.Signal(str) def __init__(self, dangerzone: DangerzoneGui) -> None: super(InstallContainerThread, self).__init__() self.dangerzone = dangerzone def run(self) -> None: - self.dangerzone.isolation_provider.install() - self.finished.emit() + error = None + try: + installed = self.dangerzone.isolation_provider.install() + except Exception as e: + log.error("Container installation problem") + error = format_exception(e) + else: + if not installed: + error = "The image cannot be found. This can be caused by a faulty container image." + finally: + self.finished.emit(error) class WaitingWidget(QtWidgets.QWidget): @@ -423,9 +437,10 @@ def __init__(self) -> None: # Enable copying self.setTextInteractionFlags(Qt.TextSelectableByMouse) - def set_content(self, error: str) -> None: - self.setPlainText(error) - self.setVisible(True) + def set_content(self, error: Optional[str] = None) -> None: + if error: + self.setPlainText(error) + self.setVisible(True) class WaitingWidgetContainer(WaitingWidget): @@ -438,7 +453,6 @@ class WaitingWidgetContainer(WaitingWidget): # # Linux states # - "install_container" - finished = QtCore.Signal() def __init__(self, dangerzone: DangerzoneGui) -> None: super(WaitingWidgetContainer, self).__init__() @@ -509,20 +523,43 @@ def check_state(self) -> None: # Update the state self.state_change(state, error) + def show_error(self, msg: str, details: Optional[str] = None) -> None: + self.label.setText(msg) + show_traceback = details is not None + if show_traceback: + self.traceback.set_content(details) + self.traceback.setVisible(show_traceback) + self.buttons.show() + + def show_message(self, msg: str) -> None: + self.label.setText(msg) + self.traceback.setVisible(False) + self.buttons.hide() + + def installation_finished(self, error: Optional[str] = None): + if error: + msg = ( + "During installation of the dangerzone image,
" + "the following error occured:" + ) + self.show_error(msg, error) + else: + self.finished.emit() + def state_change(self, state: str, error: Optional[str] = None) -> None: if state == "not_installed": if platform.system() == "Linux": - self.label.setText( + self.show_error( "Dangerzone requires Podman

" "Install it and retry." ) else: - self.label.setText( + self.show_error( "Dangerzone requires Docker Desktop

" "Download Docker Desktop" ", install it, and open it." ) - self.buttons.show() + elif state == "not_running": if platform.system() == "Linux": # "not_running" here means that the `podman image ls` command failed. @@ -530,27 +567,20 @@ def state_change(self, state: str, error: Optional[str] = None) -> None: "Dangerzone requires Podman

" "Podman is installed but cannot run properly. See errors below" ) - if error: - self.traceback.set_content(error) - - self.label.setText(message) - else: - self.label.setText( + message = ( "Dangerzone requires Docker Desktop

" "Docker is installed but isn't running.

" "Open Docker and make sure it's running in the background." ) - self.buttons.show() + self.show_error(message, error) else: - self.label.setText( + self.show_message( "Installing the Dangerzone container image.

" "This might take a few minutes..." ) - self.buttons.hide() - self.traceback.setVisible(False) self.install_container_t = InstallContainerThread(self.dangerzone) - self.install_container_t.finished.connect(self.finished) + self.install_container_t.finished.connect(self.installation_finished) self.install_container_t.start() diff --git a/dangerzone/isolation_provider/container.py b/dangerzone/isolation_provider/container.py index fe6626c17..0a5c2b149 100644 --- a/dangerzone/isolation_provider/container.py +++ b/dangerzone/isolation_provider/container.py @@ -165,7 +165,7 @@ def install() -> bool: startupinfo=get_subprocess_startupinfo(), ) - chunk_size = 10240 + chunk_size = 4 << 20 compressed_container_path = get_resource_path("container.tar.gz") with gzip.open(compressed_container_path) as f: while True: @@ -175,19 +175,20 @@ def install() -> bool: p.stdin.write(chunk) else: break - p.communicate() + _, err = p.communicate() + if p.returncode < 0: + raise RuntimeError(f"Could not install container image: {err.decode()}") - if not Container.is_container_installed(): - log.error("Failed to install the container image") + if not Container.is_container_installed(raise_on_error=True): return False log.info("Container image installed") return True @staticmethod - def is_container_installed() -> bool: + def is_container_installed(raise_on_error: bool = False) -> bool: """ - See if the podman container is installed. Linux only. + See if the container is installed. """ # Get the image id with open(get_resource_path("image-id.txt")) as f: @@ -214,6 +215,13 @@ def is_container_installed() -> bool: elif found_image_id == "": pass else: + msg = ( + f"{Container.CONTAINER_NAME} images found, but IDs do not match." + f"Found: {found_image_id}, Expected: {','.join(expected_image_ids)}" + ) + if raise_on_error: + raise RuntimeError(msg) + log.info(msg) log.info("Deleting old dangerzone container image") try: diff --git a/dangerzone/util.py b/dangerzone/util.py index 311288c7a..c6a62ab99 100644 --- a/dangerzone/util.py +++ b/dangerzone/util.py @@ -2,6 +2,7 @@ import platform import subprocess import sys +import traceback import unicodedata from typing import Optional @@ -97,3 +98,13 @@ def is_safe(chr: str) -> bool: else: sanitized_str += "�" return sanitized_str + + +def format_exception(e): + # The signature of traceback.format_exception has changed in python 3.10 + if sys.version_info < (3, 10): + output = traceback.format_exception(*sys.exc_info()) + else: + output = traceback.format_exception(e) + + return "".join(output) diff --git a/poetry.lock b/poetry.lock index f611b0255..ffb5b188b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -875,6 +875,51 @@ pytest = "*" dev = ["pre-commit", "tox"] doc = ["sphinx", "sphinx-rtd-theme"] +[[package]] +name = "pytest-subprocess" +version = "1.5.2" +description = "A plugin to fake subprocess for pytest" +optional = false +python-versions = ">=3.6" +files = [ + {file = "pytest_subprocess-1.5.2-py3-none-any.whl", hash = "sha256:23ac7732aa8bd45f1757265b1316eb72a7f55b41fb21e2ca22e149ba3629fa46"}, + {file = "pytest_subprocess-1.5.2.tar.gz", hash = "sha256:ad3ca8a35e798bf9c82d9f16d88700b30d98c5a28236117b86c5d6e581a8ed97"}, +] + +[package.dependencies] +pytest = ">=4.0.0" + +[package.extras] +dev = ["changelogd", "nox"] +docs = ["changelogd", "furo", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-napoleon"] +test = ["Pygments (>=2.0)", "anyio", "coverage", "docutils (>=0.12)", "pytest (>=4.0)", "pytest-asyncio (>=0.15.1)", "pytest-rerunfailures", "pytest-timeout"] + +[[package]] +name = "pytest-xvfb" +version = "3.0.0" +description = "A pytest plugin to run Xvfb (or Xephyr/Xvnc) for tests." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pytest-xvfb-3.0.0.tar.gz", hash = "sha256:3746ab1f4d1159f03f751638d053689ccd284291b38b8fb03d3ebbe7bf69cfc0"}, + {file = "pytest_xvfb-3.0.0-py3-none-any.whl", hash = "sha256:352f247c788457ccdfcfeec8a47a2a6594c8eaf22f0302dae9e2635bb23975c2"}, +] + +[package.dependencies] +pytest = ">=2.8.1" +pyvirtualdisplay = ">=1.3" + +[[package]] +name = "pyvirtualdisplay" +version = "3.0" +description = "python wrapper for Xvfb, Xephyr and Xvnc" +optional = false +python-versions = "*" +files = [ + {file = "PyVirtualDisplay-3.0-py3-none-any.whl", hash = "sha256:40d4b8dfe4b8de8552e28eb367647f311f88a130bf837fe910e7f180d5477f0e"}, + {file = "PyVirtualDisplay-3.0.tar.gz", hash = "sha256:09755bc3ceb6eb725fb07eca5425f43f2358d3bf08e00d2a9b792a1aedd16159"}, +] + [[package]] name = "pywin32" version = "306" @@ -1080,4 +1125,4 @@ type = ["pytest-mypy"] [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.13" -content-hash = "9f1c256ac7a768845d519e58206bb3021be7fca94a55c29534cb7a157609e4e8" +content-hash = "ac8367d531c3f4f3c74feee94450ad0336fdae8d1fe0ae815e26cfc8ab1c89d4" diff --git a/pyproject.toml b/pyproject.toml index d240ceb9c..bdce1e27e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,8 @@ pytest-mock = "^3.10.0" pytest-qt = "^4.2.0" pytest-cov = "^5.0.0" strip-ansi = "*" +pytest-subprocess = "^1.5.2" +pytest-xvfb = "^3.0.0" [tool.poetry.group.qubes.dependencies] pymupdf = "^1.23.6" diff --git a/tests/gui/test_main_window.py b/tests/gui/test_main_window.py index 2fe29d979..ea260b6b3 100644 --- a/tests/gui/test_main_window.py +++ b/tests/gui/test_main_window.py @@ -6,6 +6,7 @@ from pytest import MonkeyPatch, fixture from pytest_mock import MockerFixture +from pytest_subprocess import FakeProcess from pytestqt.qtbot import QtBot from dangerzone.document import Document @@ -13,12 +14,17 @@ from dangerzone.gui import main_window as main_window_module from dangerzone.gui import updater as updater_module from dangerzone.gui.logic import DangerzoneGui -from dangerzone.gui.main_window import ( # import Pyside related objects from here to avoid duplicating import logic. + +# import Pyside related objects from here to avoid duplicating import logic. +from dangerzone.gui.main_window import ( ContentWidget, + InstallContainerThread, QtCore, QtGui, + WaitingWidgetContainer, ) from dangerzone.gui.updater import UpdateReport, UpdaterThread +from dangerzone.isolation_provider.container import Container from .test_updater import assert_report_equal, default_updater_settings @@ -492,3 +498,83 @@ def test_drop_1_invalid_2_valid_documents( content_widget.doc_selection_wrapper.dropEvent( drag_1_invalid_and_2_valid_files_event ) + + +def test_installation_image_ls_error( + qtbot: QtBot, mocker: MockerFixture, fp: FakeProcess +): + # Setup + mock_app = mocker.MagicMock() + dummy = mocker.MagicMock(spec=Container) + dummy.get_runtime.return_value = "podman" + + # Make "podman image ls" return an error + fp.register_subprocess( + ["podman", "image", "ls"], returncode=-1, stderr="podman image ls logs" + ) + fp.pass_command(["xdg-mime", "query", "default", "application/pdf"]) + + dz = DangerzoneGui(mock_app, dummy) + widget = WaitingWidgetContainer(dz) + qtbot.addWidget(widget) + + # Assert that the error is displayed in the GUI + assert "Podman is installed but cannot run properly" in widget.label.text() + assert "podman image ls logs" in widget.traceback.toPlainText() + + +def test_installation_failure_exception( + qtbot: QtBot, mocker: MockerFixture, fp: FakeProcess +): + # Setup + mock_app = mocker.MagicMock() + dummy = mocker.MagicMock(spec=Container) + dummy.get_runtime.return_value = "podman" + dummy.install.side_effect = RuntimeError("Error during install") + + # Make "podman image ls" return an error + fp.register_subprocess(["podman", "image", "ls"], returncode=0) + fp.pass_command(["xdg-mime", "query", "default", "application/pdf"]) + + dz = DangerzoneGui(mock_app, dummy) + widget = WaitingWidgetContainer(dz) + qtbot.addWidget(widget) + + # Assert that the error is displayed in the GUI + assert "Installing the Dangerzone container image" in widget.label.text() + # Start the installation process + install_thread = InstallContainerThread(dz) + with qtbot.waitSignal(install_thread.finished, timeout=5000): + install_thread.start() + + assert "the following error occured" in widget.label.text() + assert "Traceback" in widget.traceback.toPlainText() + assert "Error during install" in widget.traceback.toPlainText() + + +def test_installation_failure_return_false( + qtbot: QtBot, mocker: MockerFixture, fp: FakeProcess +): + # Setup + mock_app = mocker.MagicMock() + dummy = mocker.MagicMock(spec=Container) + dummy.get_runtime.return_value = "podman" + dummy.install.return_value = False + + # Make "podman image ls" return an error + fp.register_subprocess(["podman", "image", "ls"], returncode=0) + fp.pass_command(["xdg-mime", "query", "default", "application/pdf"]) + + dz = DangerzoneGui(mock_app, dummy) + widget = WaitingWidgetContainer(dz) + qtbot.addWidget(widget) + + # Assert that the error is displayed in the GUI + assert "Installing the Dangerzone container image" in widget.label.text() + # Start the installation process + install_thread = InstallContainerThread(dz) + with qtbot.waitSignal(install_thread.finished, timeout=5000): + install_thread.start() + + assert "the following error occured" in widget.label.text() + assert "The image cannot be found" in widget.traceback.toPlainText() diff --git a/tests/isolation_provider/base.py b/tests/isolation_provider/base.py index abf488961..50199d7db 100644 --- a/tests/isolation_provider/base.py +++ b/tests/isolation_provider/base.py @@ -7,7 +7,6 @@ from dangerzone.conversion import errors from dangerzone.document import Document from dangerzone.isolation_provider import base -from dangerzone.isolation_provider.qubes import running_on_qubes TIMEOUT_STARTUP = 60 # Timeout in seconds until the conversion sandbox starts. diff --git a/tests/test_docs/unsafe/sample-bmp.bmp b/tests/test_docs/unsafe/sample-bmp.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dca58a343bade49bc17551fcaba6a6ac142d84a9 GIT binary patch literal 1000810 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 a@Bgygc=s&)==Hep7p}hyFwp0_k^cj0PwGto literal 0 HcmV?d00001 diff --git a/tests/test_docs/unsafe/sample-docm.docm b/tests/test_docs/unsafe/sample-docm.docm new file mode 100644 index 0000000000000000000000000000000000000000..36293dbfcc4e7f4fc8fe9de97ea58b05e0d78684 GIT binary patch literal 26699 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 t4gZk;E6e_^{