From eb38e9d3ba50d9bfc85c2b88658b5e5e172569d2 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 30 Jun 2020 11:26:44 -0700 Subject: [PATCH 1/6] Install setuptools for everything, not just windows --- poetry.lock | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 8e4a1f00..fedb16d0 100644 --- a/poetry.lock +++ b/poetry.lock @@ -469,7 +469,7 @@ docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["jaraco.itertools", "func-timeout"] [metadata] -content-hash = "3f46cfec01bcb5166c9f354aaf4439064b477955f3ea2373fcfdb65d5b89276e" +content-hash = "3d46fa34e498a3bcac9efbde10ee25cabccbd7add2c585d82acc9a28c38203d4" python-versions = "^3.7" [metadata.files] diff --git a/pyproject.toml b/pyproject.toml index 411d03f1..e364db88 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,8 +43,8 @@ pytest-faulthandler = "*" pytest-qt = "*" six = "*" urllib3 = "*" +setuptools = "*" pyinstaller = {version = "*", platform = "darwin"} -setuptools = {version = "*", platform = "windows"} [build-system] requires = ["poetry>=0.12"] From 31eb742340347d0f8e05db307bfdd5c6d49f0997 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 30 Jun 2020 14:18:59 -0700 Subject: [PATCH 2/6] Add flatpak detection --- onionshare_gui/gui_common.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/onionshare_gui/gui_common.py b/onionshare_gui/gui_common.py index 4b8fe5d4..7eb4f0e8 100644 --- a/onionshare_gui/gui_common.py +++ b/onionshare_gui/gui_common.py @@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ import os +import json from onionshare import strings from onionshare.onion import Onion @@ -37,6 +38,18 @@ class GuiCommon: self.qtapp = qtapp self.local_only = local_only + # Are we running in a flatpak package? + self.is_flatpak = False + if os.path.exists("/app/manifest.json"): + try: + with open("/app/manifest.json") as f: + manifest_data = json.loads(f.read()) + if manifest_data["id"] == "org.onionshare.OnionShare": + self.is_flatpak = True + self.common.log("GuiCommon", "__init__", "is_flatpak=True") + except: + pass + # Load settings self.common.load_settings() From 6fafee1ce8c8351099b81518532b0828e9448f24 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 30 Jun 2020 14:27:32 -0700 Subject: [PATCH 3/6] Force saving files inside ~/OnionShare if running in flatpak --- onionshare_gui/tab/mode/receive_mode/__init__.py | 7 ++++++- share/locale/en.json | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/onionshare_gui/tab/mode/receive_mode/__init__.py b/onionshare_gui/tab/mode/receive_mode/__init__.py index ba1fc8c4..c35a492c 100644 --- a/onionshare_gui/tab/mode/receive_mode/__init__.py +++ b/onionshare_gui/tab/mode/receive_mode/__init__.py @@ -24,7 +24,7 @@ from onionshare.web import Web from ..history import History, ToggleHistory, ReceiveHistoryItem from .. import Mode -from ....widgets import MinimumWidthWidget +from ....widgets import MinimumWidthWidget, Alert class ReceiveMode(Mode): @@ -135,6 +135,11 @@ class ReceiveMode(Mode): ) if selected_dir: + # If we're running inside a flatpak package, the data dir must be inside ~/OnionShare + if self.common.gui.is_flatpak: + if not selected_dir.startswith(os.path.expanduser("~/OnionShare")): + Alert(self.common, strings._("gui_receive_flatpak_data_dir")) + self.common.log( "ReceiveMode", "data_dir_button_clicked", diff --git a/share/locale/en.json b/share/locale/en.json index 5e19c42d..87cfd60f 100644 --- a/share/locale/en.json +++ b/share/locale/en.json @@ -22,6 +22,7 @@ "gui_receive_start_server": "Start Receive Mode", "gui_receive_stop_server": "Stop Receive Mode", "gui_receive_stop_server_autostop_timer": "Stop Receive Mode ({} remaining)", + "gui_receive_flatpak_data_dir": "Because you installed OnionShare using flatpak, you must save files to a folder in ~/OnionShare.", "gui_copy_url": "Copy Address", "gui_copy_hidservauth": "Copy HidServAuth", "gui_canceled": "Canceled", @@ -209,4 +210,4 @@ "mode_settings_receive_data_dir_label": "Save files to", "mode_settings_receive_data_dir_browse_button": "Browse", "mode_settings_website_disable_csp_checkbox": "Disable Content Security Policy header (allows your website to use third-party resources)" -} +} \ No newline at end of file From f34f4a1a2ad8fbdcf9ba12bb697bd23f151a150f Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 30 Jun 2020 14:29:33 -0700 Subject: [PATCH 4/6] Missing import --- onionshare_gui/tab/mode/receive_mode/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/onionshare_gui/tab/mode/receive_mode/__init__.py b/onionshare_gui/tab/mode/receive_mode/__init__.py index c35a492c..6d055483 100644 --- a/onionshare_gui/tab/mode/receive_mode/__init__.py +++ b/onionshare_gui/tab/mode/receive_mode/__init__.py @@ -17,6 +17,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . """ +import os from PyQt5 import QtCore, QtWidgets, QtGui from onionshare import strings From 97b50f67527f16085b9febc1917dbad4cf080544 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 30 Jun 2020 14:40:40 -0700 Subject: [PATCH 5/6] When giving flatpak warning, break before setting the selected dir --- onionshare_gui/tab/mode/receive_mode/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/onionshare_gui/tab/mode/receive_mode/__init__.py b/onionshare_gui/tab/mode/receive_mode/__init__.py index 6d055483..a49b86e5 100644 --- a/onionshare_gui/tab/mode/receive_mode/__init__.py +++ b/onionshare_gui/tab/mode/receive_mode/__init__.py @@ -140,6 +140,7 @@ class ReceiveMode(Mode): if self.common.gui.is_flatpak: if not selected_dir.startswith(os.path.expanduser("~/OnionShare")): Alert(self.common, strings._("gui_receive_flatpak_data_dir")) + break self.common.log( "ReceiveMode", From a3288e4a697dff725302d3cac8d31f3d8ac4d2a8 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Tue, 30 Jun 2020 14:53:38 -0700 Subject: [PATCH 6/6] Simplify flatpak detection --- onionshare_gui/gui_common.py | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/onionshare_gui/gui_common.py b/onionshare_gui/gui_common.py index 7eb4f0e8..eb259301 100644 --- a/onionshare_gui/gui_common.py +++ b/onionshare_gui/gui_common.py @@ -18,7 +18,6 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ import os -import json from onionshare import strings from onionshare.onion import Onion @@ -39,16 +38,7 @@ class GuiCommon: self.local_only = local_only # Are we running in a flatpak package? - self.is_flatpak = False - if os.path.exists("/app/manifest.json"): - try: - with open("/app/manifest.json") as f: - manifest_data = json.loads(f.read()) - if manifest_data["id"] == "org.onionshare.OnionShare": - self.is_flatpak = True - self.common.log("GuiCommon", "__init__", "is_flatpak=True") - except: - pass + self.is_flatpak = os.path.exists("/.flatpak-info") # Load settings self.common.load_settings()