From aeb38b5bd0ca8940299390b79abfddb7de1972f3 Mon Sep 17 00:00:00 2001 From: Marco D'Aleo Date: Sun, 15 Oct 2023 19:06:14 +0100 Subject: [PATCH 1/6] Fix inaccurate warning message options --- desktop/onionshare/resources/locale/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/onionshare/resources/locale/en.json b/desktop/onionshare/resources/locale/en.json index a94325f0..f25c30e2 100644 --- a/desktop/onionshare/resources/locale/en.json +++ b/desktop/onionshare/resources/locale/en.json @@ -205,7 +205,7 @@ "gui_close_tab_warning_receive_description": "Close tab that is receiving files?", "gui_close_tab_warning_chat_description": "Close tab that is hosting a chat server?", "gui_close_tab_warning_website_description": "Close tab that is hosting a website?", - "gui_close_tab_warning_close": "Close", + "gui_close_tab_warning_close": "Ok", "gui_close_tab_warning_cancel": "Cancel", "gui_quit_warning_title": "Quit OnionShare?", "gui_quit_warning_description": "Quit and close all tabs, even though sharing is active in some of them?", From add88ef21596a43bc0c2f60d051366ef3dffb73c Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Tue, 17 Oct 2023 09:39:06 +1100 Subject: [PATCH 2/6] Prevent disabling files as well as text (or vice versa) in receive mode --- desktop/onionshare/gui_common.py | 4 ++++ desktop/onionshare/tab/mode/receive_mode/__init__.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/desktop/onionshare/gui_common.py b/desktop/onionshare/gui_common.py index e3d712f5..fcbf47f7 100644 --- a/desktop/onionshare/gui_common.py +++ b/desktop/onionshare/gui_common.py @@ -471,6 +471,10 @@ class GuiCommon: QPushButton { padding: 5px 10px; }""", + "receive_options": """ + QCheckBox:disabled { + color: #666666; + }""", # Tor Settings dialogs "tor_settings_error": """ QLabel { diff --git a/desktop/onionshare/tab/mode/receive_mode/__init__.py b/desktop/onionshare/tab/mode/receive_mode/__init__.py index 87f8fc5f..bfa85459 100644 --- a/desktop/onionshare/tab/mode/receive_mode/__init__.py +++ b/desktop/onionshare/tab/mode/receive_mode/__init__.py @@ -85,12 +85,14 @@ class ReceiveMode(Mode): self.disable_text_checkbox.setText( strings._("mode_settings_receive_disable_text_checkbox") ) + self.disable_text_checkbox.setStyleSheet(self.common.gui.css["receive_options"]) self.disable_files_checkbox = self.settings.get("receive", "disable_files") self.disable_files_checkbox = QtWidgets.QCheckBox() self.disable_files_checkbox.clicked.connect(self.disable_files_checkbox_clicked) self.disable_files_checkbox.setText( strings._("mode_settings_receive_disable_files_checkbox") ) + self.disable_files_checkbox.setStyleSheet(self.common.gui.css["receive_options"]) disable_layout = QtWidgets.QHBoxLayout() disable_layout.addWidget(self.disable_text_checkbox) disable_layout.addWidget(self.disable_files_checkbox) @@ -235,11 +237,21 @@ class ReceiveMode(Mode): self.settings.set( "receive", "disable_text", self.disable_text_checkbox.isChecked() ) + if self.disable_text_checkbox.isChecked(): + # Prevent also disabling files if text is disabled + self.disable_files_checkbox.setDisabled(True) + else: + self.disable_files_checkbox.setDisabled(False) def disable_files_checkbox_clicked(self): self.settings.set( "receive", "disable_files", self.disable_files_checkbox.isChecked() ) + if self.disable_files_checkbox.isChecked(): + # Prevent also disabling text if files is disabled + self.disable_text_checkbox.setDisabled(True) + else: + self.disable_text_checkbox.setDisabled(False) def webhook_url_checkbox_clicked(self): if self.webhook_url_checkbox.isChecked(): From e33887c22dbc273bf54aa2d4634854efb23537fd Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Tue, 17 Oct 2023 12:09:51 +1100 Subject: [PATCH 3/6] State in Chat mode that chats are ephemeral --- desktop/onionshare/resources/locale/en.json | 1 + desktop/onionshare/tab/mode/chat_mode/__init__.py | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/desktop/onionshare/resources/locale/en.json b/desktop/onionshare/resources/locale/en.json index f25c30e2..375c4bc7 100644 --- a/desktop/onionshare/resources/locale/en.json +++ b/desktop/onionshare/resources/locale/en.json @@ -151,6 +151,7 @@ "history_requests_tooltip": "{} web requests", "error_cannot_create_data_dir": "Could not create OnionShare data folder: {}", "gui_receive_mode_warning": "Receive mode lets people upload files to your computer.

Some files can potentially take control of your computer if you open them. Only open things from people you trust, or if you know what you are doing.", + "gui_chat_mode_explainer": "Chat mode lets you chat interactively with others, in Tor Browser.

Chat history is not stored in OnionShare. The chat history will disappear when you close Tor Browser.", "gui_open_folder_error": "Could not open the folder with xdg-open. The file is here: {}", "gui_settings_language_label": "Language", "gui_settings_theme_label": "Theme", diff --git a/desktop/onionshare/tab/mode/chat_mode/__init__.py b/desktop/onionshare/tab/mode/chat_mode/__init__.py index 01f194b1..cb4f6911 100644 --- a/desktop/onionshare/tab/mode/chat_mode/__init__.py +++ b/desktop/onionshare/tab/mode/chat_mode/__init__.py @@ -80,6 +80,11 @@ class ChatMode(Mode): header_label = QtWidgets.QLabel(strings._("gui_new_tab_chat_button")) header_label.setStyleSheet(self.common.gui.css["mode_header_label"]) + # Chat mode explainer + chat_mode_explainer = QtWidgets.QLabel(strings._("gui_chat_mode_explainer")) + chat_mode_explainer.setMinimumHeight(80) + chat_mode_explainer.setWordWrap(True) + # Top bar top_bar_layout = QtWidgets.QHBoxLayout() # Add space at the top, same height as the toggle history bar in other modes @@ -89,6 +94,7 @@ class ChatMode(Mode): self.main_layout = QtWidgets.QVBoxLayout() self.main_layout.addLayout(top_bar_layout) self.main_layout.addWidget(header_label) + self.main_layout.addWidget(chat_mode_explainer) self.main_layout.addWidget(self.primary_action, stretch=1) self.main_layout.addWidget(self.server_status) self.main_layout.addWidget(MinimumSizeWidget(700, 0)) From cf6a6e45902fc775673c68442add9d24decdd061 Mon Sep 17 00:00:00 2001 From: Miguel Jacq Date: Tue, 17 Oct 2023 17:45:23 +1100 Subject: [PATCH 4/6] Add trailing slash on directories in website mode to assist with relative asset links --- cli/onionshare_cli/web/send_base_mode.py | 17 +++++++++++------ cli/onionshare_cli/web/website_mode.py | 7 ++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/cli/onionshare_cli/web/send_base_mode.py b/cli/onionshare_cli/web/send_base_mode.py index d8cef496..ca79b99f 100644 --- a/cli/onionshare_cli/web/send_base_mode.py +++ b/cli/onionshare_cli/web/send_base_mode.py @@ -131,7 +131,7 @@ class SendBaseModeWeb: self.set_file_info_custom(filenames, processed_size_callback) - def directory_listing(self, filenames, path="", filesystem_path=None): + def directory_listing(self, filenames, path="", filesystem_path=None, add_trailing_slash=False): # Tell the GUI about the directory listing history_id = self.cur_history_id self.cur_history_id += 1 @@ -150,12 +150,12 @@ class SendBaseModeWeb: breadcrumbs_leaf = breadcrumbs.pop()[0] # If filesystem_path is None, this is the root directory listing - files, dirs = self.build_directory_listing(path, filenames, filesystem_path) + files, dirs = self.build_directory_listing(path, filenames, filesystem_path, add_trailing_slash) return self.directory_listing_template( path, files, dirs, breadcrumbs, breadcrumbs_leaf ) - def build_directory_listing(self, path, filenames, filesystem_path): + def build_directory_listing(self, path, filenames, filesystem_path, add_trailing_slash=False): files = [] dirs = [] @@ -168,9 +168,14 @@ class SendBaseModeWeb: is_dir = os.path.isdir(this_filesystem_path) if is_dir: - dirs.append( - {"link": os.path.join(f"/{path}", filename), "basename": filename} - ) + if add_trailing_slash: + dirs.append( + {"link": os.path.join(f"/{path}", filename, ""), "basename": filename} + ) + else: + dirs.append( + {"link": os.path.join(f"/{path}", filename), "basename": filename} + ) else: size = os.path.getsize(this_filesystem_path) size_human = self.common.human_readable_filesize(size) diff --git a/cli/onionshare_cli/web/website_mode.py b/cli/onionshare_cli/web/website_mode.py index 1f61532b..34f5abf1 100644 --- a/cli/onionshare_cli/web/website_mode.py +++ b/cli/onionshare_cli/web/website_mode.py @@ -84,12 +84,13 @@ class WebsiteModeWeb(SendBaseModeWeb): return self.stream_individual_file(self.files[index_path]) else: - # Otherwise, render directory listing + # Otherwise, render directory listing, and enforce trailing slash + # which can help with relative asset links in sub-directories. filenames = [] for filename in os.listdir(filesystem_path): filenames.append(filename) filenames.sort() - return self.directory_listing(filenames, path, filesystem_path) + return self.directory_listing(filenames, path, filesystem_path, True) # If it's a file elif os.path.isfile(filesystem_path): @@ -112,7 +113,7 @@ class WebsiteModeWeb(SendBaseModeWeb): # Root directory listing filenames = list(self.root_files) filenames.sort() - return self.directory_listing(filenames, path) + return self.directory_listing(filenames, path, None, True) else: # If the path isn't found, throw a 404 From 339af2ffd2330c670db496b8832198636938d92f Mon Sep 17 00:00:00 2001 From: Marco D'Aleo Date: Tue, 17 Oct 2023 21:55:33 +0100 Subject: [PATCH 5/6] add dependecies for Fedora/CentOS --- desktop/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/desktop/README.md b/desktop/README.md index b950fec4..e4a06910 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -27,7 +27,9 @@ poetry install ### Get Tor -**Linux users:** You may need the `libxcb-xinerama0` and `libxcb-cursor0` packages installed. +**Linux users:** +- On Debian/Debian-based distributions you may need the `libxcb-xinerama0` and `libxcb-cursor0` packages installed. +- On Fedora/CentOS you may need the `libxcb-1.13.1-11.fc38.x86_64` and `xcb-util-0.4.1-2.fc38.x86_64` packages installed. **Windows users:** - Download and install 7-Zip (x64) from https://7-zip.org/download.html. [Add](https://medium.com/@kevinmarkvi/how-to-add-executables-togit fethc-your-path-in-windows-5ffa4ce61a53) `C:\Program Files\7-Zip` to your path. From d1bc7eea5a82621aef66f372dcb02e452d4b656d Mon Sep 17 00:00:00 2001 From: Marco D'Aleo Date: Wed, 18 Oct 2023 08:15:47 +0100 Subject: [PATCH 6/6] remove specific package version --- desktop/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/README.md b/desktop/README.md index e4a06910..5814f08f 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -29,7 +29,7 @@ poetry install **Linux users:** - On Debian/Debian-based distributions you may need the `libxcb-xinerama0` and `libxcb-cursor0` packages installed. -- On Fedora/CentOS you may need the `libxcb-1.13.1-11.fc38.x86_64` and `xcb-util-0.4.1-2.fc38.x86_64` packages installed. +- On Fedora/CentOS you may need the `libxcb-*` and `xcb-util-*` packages installed. **Windows users:** - Download and install 7-Zip (x64) from https://7-zip.org/download.html. [Add](https://medium.com/@kevinmarkvi/how-to-add-executables-togit fethc-your-path-in-windows-5ffa4ce61a53) `C:\Program Files\7-Zip` to your path.