Make Qubes conversion work after the dangerzone-image split#1463
Merged
almet merged 7 commits intosplit-dangerzone-imagefrom Apr 23, 2026
Merged
Make Qubes conversion work after the dangerzone-image split#1463almet merged 7 commits intosplit-dangerzone-imagefrom
almet merged 7 commits intosplit-dangerzone-imagefrom
Conversation
Modify the RPM package now that dangerzone-insecure-converter-qubes covers the server-side aspect of the conversion.
almet
reviewed
Apr 23, 2026
Member
almet
left a comment
There was a problem hiding this comment.
I've added a few notes. I think we're almost good to go with this. Mainly a few changes related to how we do the teleport, and that's it!
4ed2b46 to
806f259
Compare
8f2e537 to
8e91108
Compare
Contributor
Author
|
I've squashed the fixups in this branch, and tested the Qubes tests locally. I think it's ready to merge once the CI turns green. |
8e91108 to
abae770
Compare
Member
|
The linter reports this: Otherwise, it's good! Since this targets the dangerzone-split branch, if you don't have the time to fix it before I get another look at it, I'll merge and fix in this other branch :-) Thanks a lot 👍 |
Now that the server-side components are not bundled in the Dangerzone repo, we need to slightly modify the teleport trick we did. The change is that we no longer import the `conversion` module, but we look for the source of the `dangerzone-insecure-converter` module via the `DANGERZONE_INSECURE_CONVERTER_PATH` envvar. Note that this is a dev-only argument.
Update the build instructions for Qubes, now that we have a separate component for the server-side part of the conversion.
abae770 to
a6c191c
Compare
Contributor
Author
|
Fixed it: diff --git a/dangerzone/isolation_provider/qubes.py b/dangerzone/isolation_provider/qubes.py
index 2f99e892..4fd8f49d 100644
--- a/dangerzone/isolation_provider/qubes.py
+++ b/dangerzone/isolation_provider/qubes.py
@@ -5,7 +5,7 @@ import subprocess
import sys
import zipfile
from pathlib import Path
-from typing import IO, Callable, Optional
+from typing import IO
from ..document import Document
from ..updater.signatures import is_container_tar_bundled
@@ -49,6 +49,7 @@ class Qubes(IsolationProvider):
if dev_mode:
assert p.stdin is not None
+ assert conv_mod_path is not None
# Send the dangerzone module first.
self.teleport_dz_module(conv_mod_path, p.stdin)
@@ -84,7 +85,7 @@ class Qubes(IsolationProvider):
if p.stdout:
p.stdout.close()
- def teleport_dz_module(self, conv_path: Optional[str], wpipe: IO[bytes]) -> None:
+ def teleport_dz_module(self, conv_path: str, wpipe: IO[bytes]) -> None:
"""Send the dangerzone module to another qube, as a zipfile."""
# Grab the absolute file path of the dangerzone module.
temp_file = io.BytesIO() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Update the Dangerzone Qubes logic and build instructions to work with the new server-side component (see also freedomofpress/dangerzone-image#7).