From 7b2211fc1f71df944d3964681afdb39816337bef Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 29 Jun 2021 17:01:47 -0700 Subject: [PATCH] Rename rip_docker to install/vm-builder, and start making a build script that uses it --- .gitignore | 4 +- BUILD.md | 4 +- dangerzone/gui/systray.py | 18 ++++++- install/macos/collect-bins.sh | 4 -- install/macos/get-vm.sh | 17 +++++++ {rip_docker => install/vm-builder}/README.md | 0 .../vm-builder}/Vagrantfile | 0 .../vm-builder}/build-iso.sh | 0 .../vm-builder}/genapkovl-dangerzone.sh | 0 .../vm-builder}/mkimg.dangerzone.sh | 0 {rip_docker => install/vm-builder}/run-vm.sh | 0 .../vm-builder}/ssh-key/README.md | 0 .../vm-builder}/ssh-key/id_ed25519 | 0 .../vm-builder}/ssh-key/id_ed25519.pub | 0 rip_docker/.gitignore | 2 - rip_docker/run-vm.py | 47 ------------------- 16 files changed, 39 insertions(+), 57 deletions(-) delete mode 100755 install/macos/collect-bins.sh create mode 100755 install/macos/get-vm.sh rename {rip_docker => install/vm-builder}/README.md (100%) rename {rip_docker => install/vm-builder}/Vagrantfile (100%) rename {rip_docker => install/vm-builder}/build-iso.sh (100%) rename {rip_docker => install/vm-builder}/genapkovl-dangerzone.sh (100%) rename {rip_docker => install/vm-builder}/mkimg.dangerzone.sh (100%) rename {rip_docker => install/vm-builder}/run-vm.sh (100%) rename {rip_docker => install/vm-builder}/ssh-key/README.md (100%) rename {rip_docker => install/vm-builder}/ssh-key/id_ed25519 (100%) rename {rip_docker => install/vm-builder}/ssh-key/id_ed25519.pub (100%) delete mode 100644 rip_docker/.gitignore delete mode 100755 rip_docker/run-vm.py diff --git a/.gitignore b/.gitignore index 8b86ded..ff7f6ca 100644 --- a/.gitignore +++ b/.gitignore @@ -134,4 +134,6 @@ deb_dist .DS_Store install/windows/Dangerzone.wxs test_docs/sample-safe.pdf -share/bin \ No newline at end of file +share/bin +install/vm-builder/vm +install/vm-builder/.vagrant \ No newline at end of file diff --git a/BUILD.md b/BUILD.md index e432df9..e090f94 100644 --- a/BUILD.md +++ b/BUILD.md @@ -56,10 +56,10 @@ If you don't have it already, install poetry (`pip3 install --user poetry`). The poetry install ``` -Make sure Docker Desktop is installed (Dangerzone copies hyperkit and vpnkit binaries from it) and run this to collect the binaries: +Make sure [Docker Desktop](https://www.docker.com/products/docker-desktop) and vagrant (`brew install vagrant`) are installed and run this to collect the binaries: ``` -./install/macos/collect-bins.sh +./install/macos/get-vm.sh ``` Run from source tree: diff --git a/dangerzone/gui/systray.py b/dangerzone/gui/systray.py index f1f1bbd..df85680 100644 --- a/dangerzone/gui/systray.py +++ b/dangerzone/gui/systray.py @@ -11,7 +11,7 @@ class SysTray(QtWidgets.QSystemTrayIcon): self.setIcon(self.gui_common.get_window_icon()) menu = QtWidgets.QMenu() - self.status_action = menu.addAction("Dangerzone is starting ...") + self.status_action = menu.addAction("...") self.status_action.setEnabled(False) menu.addSeparator() self.restart_action = menu.addAction("Restart") @@ -22,6 +22,22 @@ class SysTray(QtWidgets.QSystemTrayIcon): self.setContextMenu(menu) self.show() + # Processes for the Dangerzone VM + self.vpnkit_p = None + self.hyperkit_p = None + + # Start the VM + self.vm_start() + + def vm_start(self): + self.status_action.setText("Starting Dangerzone ...") + + # Kill existing processes + if self.vpnkit_p is not None: + self.vpnkit_p.terminate() + if self.hyperkit_p is not None: + self.hyperkit_p.terminate() + def restart_clicked(self): self.status_action.setText("Restarting Dangerzone ...") diff --git a/install/macos/collect-bins.sh b/install/macos/collect-bins.sh deleted file mode 100755 index ced9403..0000000 --- a/install/macos/collect-bins.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -mkdir -p share/bin -cp /Applications/Docker.app/Contents/Resources/bin/com.docker.hyperkit share/bin/hyperkit -cp /Applications/Docker.app/Contents/Resources/bin/com.docker.vpnkit share/bin/vpnkit diff --git a/install/macos/get-vm.sh b/install/macos/get-vm.sh new file mode 100755 index 0000000..ff1f600 --- /dev/null +++ b/install/macos/get-vm.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Extract hyperkit and vpnkit from Docker Desktop +mkdir -p share/bin +cp /Applications/Docker.app/Contents/Resources/bin/com.docker.hyperkit share/bin/hyperkit +cp /Applications/Docker.app/Contents/Resources/bin/com.docker.vpnkit share/bin/vpnkit + +# Build ISO +cd install/vm-builder +vagrant up +vagrant ssh -- /vagrant/build-iso.sh +vagrant down +cd ../.. + +# Copy the ISO to resources +mkdir -p share/vm +cp install/vm-builder/vm/* share/vm diff --git a/rip_docker/README.md b/install/vm-builder/README.md similarity index 100% rename from rip_docker/README.md rename to install/vm-builder/README.md diff --git a/rip_docker/Vagrantfile b/install/vm-builder/Vagrantfile similarity index 100% rename from rip_docker/Vagrantfile rename to install/vm-builder/Vagrantfile diff --git a/rip_docker/build-iso.sh b/install/vm-builder/build-iso.sh similarity index 100% rename from rip_docker/build-iso.sh rename to install/vm-builder/build-iso.sh diff --git a/rip_docker/genapkovl-dangerzone.sh b/install/vm-builder/genapkovl-dangerzone.sh similarity index 100% rename from rip_docker/genapkovl-dangerzone.sh rename to install/vm-builder/genapkovl-dangerzone.sh diff --git a/rip_docker/mkimg.dangerzone.sh b/install/vm-builder/mkimg.dangerzone.sh similarity index 100% rename from rip_docker/mkimg.dangerzone.sh rename to install/vm-builder/mkimg.dangerzone.sh diff --git a/rip_docker/run-vm.sh b/install/vm-builder/run-vm.sh similarity index 100% rename from rip_docker/run-vm.sh rename to install/vm-builder/run-vm.sh diff --git a/rip_docker/ssh-key/README.md b/install/vm-builder/ssh-key/README.md similarity index 100% rename from rip_docker/ssh-key/README.md rename to install/vm-builder/ssh-key/README.md diff --git a/rip_docker/ssh-key/id_ed25519 b/install/vm-builder/ssh-key/id_ed25519 similarity index 100% rename from rip_docker/ssh-key/id_ed25519 rename to install/vm-builder/ssh-key/id_ed25519 diff --git a/rip_docker/ssh-key/id_ed25519.pub b/install/vm-builder/ssh-key/id_ed25519.pub similarity index 100% rename from rip_docker/ssh-key/id_ed25519.pub rename to install/vm-builder/ssh-key/id_ed25519.pub diff --git a/rip_docker/.gitignore b/rip_docker/.gitignore deleted file mode 100644 index 37d5497..0000000 --- a/rip_docker/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -vm -.vagrant \ No newline at end of file diff --git a/rip_docker/run-vm.py b/rip_docker/run-vm.py deleted file mode 100755 index 69a9b0d..0000000 --- a/rip_docker/run-vm.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env python3 -import subprocess -import uuid -import os - - -def main(): - base_dir = os.path.join( - os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "vm" - ) - - vm_uuid = uuid.uuid4() - - cmd = [ - "hyperkit", - "-m", - "4G", - "-c", - "2", - "-s", - "0:0,hostbridge", - "-s", - "31,lpc", - "-s", - "2:0,virtio-net", - "-l", - "com1,stdio", - # "-F", - # os.path.join(base_dir, "hyperkit.pid"), - "-U", - str(vm_uuid), - "-s", - "3:0,ahci-cd," + os.path.join(base_dir, "alpine-dangerzone-v3.14-x86_64.iso"), - "-f", - "kexec," - + os.path.join(base_dir, "vmlinuz-virt") - + "," - + os.path.join(base_dir, "initramfs-virt") - + ',"modules=virtio_net console=ttyS0"', - ] - print(" ".join(cmd)) - - subprocess.run(cmd) - - -if __name__ == "__main__": - main()