summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2020-12-22 13:30:59 -0800
committerMicah Lee <micah@micahflee.com>2020-12-22 13:30:59 -0800
commit6eee7f9c5c42752bb17a1ae2da14a96a55ba7297 (patch)
tree9e70ec73bc3611b51bd099bcff9a1c8df7c9e02c /desktop
parent71558afb57d1f3aa9ac747897dda636f371c6d01 (diff)
parent96d21853c09690cd94ae086ec9d0541e51b97eef (diff)
downloadonionshare-6eee7f9c5c42752bb17a1ae2da14a96a55ba7297.tar.gz
onionshare-6eee7f9c5c42752bb17a1ae2da14a96a55ba7297.zip
Merge branch 'develop' into 1166_make_cancel_forceful
Diffstat (limited to 'desktop')
-rw-r--r--desktop/src/onionshare/__init__.py4
-rw-r--r--desktop/src/onionshare/main_window.py27
-rw-r--r--desktop/src/onionshare/resources/locale/ca.json18
-rw-r--r--desktop/src/onionshare/resources/locale/da.json4
-rw-r--r--desktop/src/onionshare/resources/locale/de.json3
-rw-r--r--desktop/src/onionshare/resources/locale/en.json2
-rw-r--r--desktop/src/onionshare/resources/locale/es.json3
-rw-r--r--desktop/src/onionshare/resources/locale/gl.json3
-rw-r--r--desktop/src/onionshare/resources/locale/hr.json3
-rw-r--r--desktop/src/onionshare/resources/locale/pt_BR.json6
-rw-r--r--desktop/src/onionshare/resources/locale/tr.json3
-rw-r--r--desktop/src/onionshare/resources/locale/uk.json3
-rw-r--r--desktop/src/onionshare/resources/locale/zh_Hans.json18
-rw-r--r--desktop/src/onionshare/tab/mode/__init__.py6
-rw-r--r--desktop/src/onionshare/tab/mode/chat_mode/__init__.py6
-rw-r--r--desktop/src/onionshare/tab/mode/receive_mode/__init__.py6
-rw-r--r--desktop/src/onionshare/tab/mode/share_mode/__init__.py6
-rw-r--r--desktop/src/onionshare/tab/mode/website_mode/__init__.py6
-rw-r--r--desktop/src/onionshare/tab/tab.py2
-rw-r--r--desktop/src/onionshare/tab_widget.py2
-rw-r--r--desktop/src/onionshare/threads.py19
21 files changed, 132 insertions, 18 deletions
diff --git a/desktop/src/onionshare/__init__.py b/desktop/src/onionshare/__init__.py
index 287d882c..f66c5a28 100644
--- a/desktop/src/onionshare/__init__.py
+++ b/desktop/src/onionshare/__init__.py
@@ -64,6 +64,10 @@ def main():
"""
common = Common()
+ # Required for macOS Big Sur: https://stackoverflow.com/a/64878899
+ if common.platform == "Darwin":
+ os.environ["QT_MAC_WANTS_LAYER"] = "1"
+
# Display OnionShare banner
print(f"OnionShare {common.version} | https://onionshare.org/")
diff --git a/desktop/src/onionshare/main_window.py b/desktop/src/onionshare/main_window.py
index c1e0cd1a..a1b44032 100644
--- a/desktop/src/onionshare/main_window.py
+++ b/desktop/src/onionshare/main_window.py
@@ -30,6 +30,7 @@ from .widgets import Alert
from .update_checker import UpdateThread
from .tab_widget import TabWidget
from .gui_common import GuiCommon
+from .threads import OnionCleanupThread
class MainWindow(QtWidgets.QMainWindow):
@@ -285,8 +286,32 @@ class MainWindow(QtWidgets.QMainWindow):
e.accept()
def cleanup(self):
+ self.common.log("MainWindow", "cleanup")
self.tabs.cleanup()
- self.common.gui.onion.cleanup()
+
+ alert = Alert(
+ self.common,
+ strings._("gui_rendezvous_cleanup"),
+ QtWidgets.QMessageBox.Information,
+ buttons=QtWidgets.QMessageBox.NoButton,
+ autostart=False,
+ )
+ quit_early_button = QtWidgets.QPushButton(
+ strings._("gui_rendezvous_cleanup_quit_early")
+ )
+ alert.addButton(quit_early_button, QtWidgets.QMessageBox.RejectRole)
+
+ self.onion_cleanup_thread = OnionCleanupThread(self.common)
+ self.onion_cleanup_thread.finished.connect(alert.accept)
+ self.onion_cleanup_thread.start()
+
+ alert.exec_()
+ if alert.clickedButton() == quit_early_button:
+ self.common.log("MainWindow", "cleanup", "quitting early")
+ if self.onion_cleanup_thread.isRunning():
+ self.onion_cleanup_thread.terminate()
+ self.onion_cleanup_thread.wait()
+ self.common.gui.onion.cleanup(wait=False)
# Wait 1 second for threads to close gracefully, so tests finally pass
time.sleep(1)
diff --git a/desktop/src/onionshare/resources/locale/ca.json b/desktop/src/onionshare/resources/locale/ca.json
index 4edcc392..0015a5ba 100644
--- a/desktop/src/onionshare/resources/locale/ca.json
+++ b/desktop/src/onionshare/resources/locale/ca.json
@@ -107,7 +107,7 @@
"gui_settings_autostop_timer_checkbox": "Utilitza un temporitzador d'aturada",
"gui_settings_autostop_timer": "Atura a:",
"settings_error_unknown": "No s'ha pogut connectar a Tor perquè la configuració és inconsistent.",
- "settings_error_automatic": "No s'ha pogut connectar al controlador de Tor. Heu iniciat el Tor Browser? (disponible a torproject.org)",
+ "settings_error_automatic": "No s'ha pogut connectar al controlador de Tor. Heu iniciat el navegador Tor? (disponible a torproject.org)",
"settings_error_socket_port": "No s'ha pogut establir la connexió al controlador de Tor a {}:{}.",
"settings_error_socket_file": "No s'ha pogut connectar al controlador de Tor fent servir el fitxer de socket {}.",
"settings_error_auth": "S'ha establert la connexió a {}:{} però ha fallat l'autenticació. Pot ser que no sigui un controlador de Tor?",
@@ -131,7 +131,7 @@
"gui_tor_connection_error_settings": "Proveu de canviar la configuració de com OnionShare es connecta a la xarxa Tor.",
"gui_tor_connection_canceled": "No s'ha pogut establir la connexió amb la xarxa Tor.\n\nAssegureu-vos que teniu connexió a internet, torneu a obrir l'OnionShare i prepareu la connexió a Tor.",
"gui_tor_connection_lost": "S'ha perdut la connexió amb Tor.",
- "gui_server_started_after_autostop_timer": "El temporitzador de finalització automàtica ha acabat abans que s'iniciés el servidor.\nTorneu a compartir-ho.",
+ "gui_server_started_after_autostop_timer": "El temporitzador de finalització automàtica ha acabat abans que s'iniciés el servidor. Torneu a compartir-ho.",
"gui_server_autostop_timer_expired": "El temporitzador de finalització automàtica ja s'ha acabat. Ajusteu-lo per a poder compartir.",
"share_via_onionshare": "Comparteix-ho amb l'OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Fes servir adreces amb un format antic",
@@ -280,5 +280,17 @@
"gui_chat_stop_server": "Atura el servidor de xat",
"gui_chat_start_server": "Inicia el servidor de xat",
"gui_file_selection_remove_all": "Treu-ho tot",
- "gui_remove": "Treu"
+ "gui_remove": "Treu",
+ "error_port_not_available": "El port OnionShare no és disponible",
+ "gui_tab_name_chat": "Xat",
+ "gui_tab_name_website": "Lloc web",
+ "gui_tab_name_receive": "Rep",
+ "gui_tab_name_share": "Comparteix",
+ "gui_main_page_chat_button": "Comença el xat",
+ "gui_main_page_website_button": "Comença l'allotjatment",
+ "gui_main_page_receive_button": "Comença la recepció",
+ "gui_main_page_share_button": "Comença la compartició",
+ "gui_new_tab_chat_button": "Xat anònim",
+ "gui_open_folder_error": "No s'ha pogut obrir la carpeta amb xdg-open. El fitxer és aquí: {}",
+ "gui_chat_url_description": "<b>Qualsevol persona</b> amb aquesta adreça OnionShare pot <b>unir-se a aquesta sala de xat</b> fent servir el <b>navegador Tor</b>: <img src='{}' />"
}
diff --git a/desktop/src/onionshare/resources/locale/da.json b/desktop/src/onionshare/resources/locale/da.json
index 8eea6c7f..e4da77bc 100644
--- a/desktop/src/onionshare/resources/locale/da.json
+++ b/desktop/src/onionshare/resources/locale/da.json
@@ -287,5 +287,7 @@
"gui_main_page_share_button": "Begynd at dele",
"gui_main_page_receive_button": "Begynd at modtage",
"gui_main_page_website_button": "Begynd at være vært",
- "gui_main_page_chat_button": "Begynd at chatte"
+ "gui_main_page_chat_button": "Begynd at chatte",
+ "gui_chat_url_description": "<b>Alle</b> med denne OnionShare-adresse kan <b>deltage i chatrummet</b> med <b>Tor Browser</b>: <img src='{}' />",
+ "error_port_not_available": "OnionShare-port ikke tilgængelig"
}
diff --git a/desktop/src/onionshare/resources/locale/de.json b/desktop/src/onionshare/resources/locale/de.json
index 0ffed7dc..25db240e 100644
--- a/desktop/src/onionshare/resources/locale/de.json
+++ b/desktop/src/onionshare/resources/locale/de.json
@@ -291,5 +291,6 @@
"gui_open_folder_error": "Fehler beim Öffnen des Ordners mit xdg-open. Die Datei befindet sich hier: {}",
"gui_qr_code_description": "Scanne diesen QR-Code mit einem QR-Scanner, wie zB. mit der Kamera deines Smartphones, um die OnionShare-Adresse einfacher mit anderen zu teilen.",
"gui_receive_flatpak_data_dir": "Da OnionShare durch Flatpak installiert wurde, müssen Dateien im Verzeichnis ~/OnionShare gespeichert werden.",
- "gui_chat_url_description": "<b>Jeder</b>, der diese OnionShare-Adresse hat, kann <b>diesem Chatroom beitreten</b>, indem er den <b>Tor Browser</b> benutzt: <img src='{}' />"
+ "gui_chat_url_description": "<b>Jeder</b>, der diese OnionShare-Adresse hat, kann <b>diesem Chatroom beitreten</b>, indem er den <b>Tor Browser</b> benutzt: <img src='{}' />",
+ "error_port_not_available": "OnionShare-Port nicht verfügbar"
}
diff --git a/desktop/src/onionshare/resources/locale/en.json b/desktop/src/onionshare/resources/locale/en.json
index 9617e9c4..502fe13e 100644
--- a/desktop/src/onionshare/resources/locale/en.json
+++ b/desktop/src/onionshare/resources/locale/en.json
@@ -188,5 +188,7 @@
"settings_error_bundled_tor_not_supported": "Using the Tor version that comes with OnionShare does not work in developer mode on Windows or macOS.",
"settings_error_bundled_tor_timeout": "Taking too long to connect to Tor. Maybe you aren't connected to the Internet, or have an inaccurate system clock?",
"settings_error_bundled_tor_broken": "OnionShare could not connect to Tor:\n{}",
+ "gui_rendezvous_cleanup": "Waiting for Tor circuits to close to be sure your files have successfully transferred.\n\nThis might take a few minutes.",
+ "gui_rendezvous_cleanup_quit_early": "Quit Early",
"error_port_not_available": "OnionShare port not available"
} \ No newline at end of file
diff --git a/desktop/src/onionshare/resources/locale/es.json b/desktop/src/onionshare/resources/locale/es.json
index f93333c4..0035f9c5 100644
--- a/desktop/src/onionshare/resources/locale/es.json
+++ b/desktop/src/onionshare/resources/locale/es.json
@@ -296,5 +296,6 @@
"gui_main_page_website_button": "Empezar a alojar",
"gui_main_page_receive_button": "Empezar a recibir",
"gui_main_page_share_button": "Empezar a compartir",
- "gui_chat_url_description": "<b>Cualquiera</b> con esta dirección de OnionShare puede <b>puede unirse a este cuarto de chat</b> usando el <b>Navegador Tor</b>: <img src='{}' />"
+ "gui_chat_url_description": "<b>Cualquiera</b> con esta dirección de OnionShare puede <b>puede unirse a este cuarto de chat</b> usando el <b>Navegador Tor</b>: <img src='{}' />",
+ "error_port_not_available": "Puerto OnionShare no disponible"
}
diff --git a/desktop/src/onionshare/resources/locale/gl.json b/desktop/src/onionshare/resources/locale/gl.json
index 6d074949..3a5558f9 100644
--- a/desktop/src/onionshare/resources/locale/gl.json
+++ b/desktop/src/onionshare/resources/locale/gl.json
@@ -187,5 +187,6 @@
"settings_error_unreadable_cookie_file": "Conectado ó controlador Tor, pero o contrasinal igual está mal, ou o teu usuario non ten permiso para ler o ficheiro de cookie.",
"settings_error_bundled_tor_not_supported": "A versión Tor que ven con OnionShare non funciona en modo desenvolvedor en Windows ou macOS.",
"settings_error_bundled_tor_timeout": "Tarda demasiado en conectar a Tor. Igual non tes conexión a Internet, ou o reloxo do sistema está mal axustado?",
- "settings_error_bundled_tor_broken": "OnionShare non puido conectar a Tor:\n{}"
+ "settings_error_bundled_tor_broken": "OnionShare non puido conectar a Tor:\n{}",
+ "error_port_not_available": "Non está dispoñible o porto OnionShare"
}
diff --git a/desktop/src/onionshare/resources/locale/hr.json b/desktop/src/onionshare/resources/locale/hr.json
index 6c40fdfd..d7670121 100644
--- a/desktop/src/onionshare/resources/locale/hr.json
+++ b/desktop/src/onionshare/resources/locale/hr.json
@@ -229,5 +229,6 @@
"gui_main_page_website_button": "Pokreni hosting",
"gui_main_page_receive_button": "Pokreni primanje",
"gui_main_page_share_button": "Pokreni dijeljenje",
- "gui_chat_url_description": "<b>Svatko</b> s ovom OnionShare adresom može se <b>pridružiti sobi za chat</b> koristeći <b>Tor preglednik</b>: <img src='{}' />"
+ "gui_chat_url_description": "<b>Svatko</b> s ovom OnionShare adresom može se <b>pridružiti sobi za chat</b> koristeći <b>Tor preglednik</b>: <img src='{}' />",
+ "error_port_not_available": "OnionShare priključak nije dostupan"
}
diff --git a/desktop/src/onionshare/resources/locale/pt_BR.json b/desktop/src/onionshare/resources/locale/pt_BR.json
index b321ba7f..f4916351 100644
--- a/desktop/src/onionshare/resources/locale/pt_BR.json
+++ b/desktop/src/onionshare/resources/locale/pt_BR.json
@@ -131,7 +131,7 @@
"gui_tor_connection_error_settings": "Tente mudar nas configurações a forma como OnionShare se conecta à rede Tor.",
"gui_tor_connection_canceled": "Não foi possível conectar ao Tor.\n\nTenha certeza que você está conectado à Internet, então abra OnionShare novamente e configure sua conexão ao Tor.",
"gui_tor_connection_lost": "Desconectado do Tor.",
- "gui_server_started_after_autostop_timer": "O tempo esgotou antes do servidor iniciar.\nPor favor, crie um novo compartilhamento.",
+ "gui_server_started_after_autostop_timer": "O cronômetro de parada automática acabou antes que o servidor fosse iniciado. Por favor, faça um novo compartilhamento.",
"gui_server_autostop_timer_expired": "O cronômetro já esgotou. Por favor, ajuste-o para começar a compartilhar.",
"share_via_onionshare": "Compartilhar via OnionShare",
"gui_use_legacy_v2_onions_checkbox": "Usar endereços do tipo antigo",
@@ -282,5 +282,7 @@
"gui_chat_start_server": "Iniciar um servidor de conversas",
"gui_file_selection_remove_all": "Remover tudo",
"gui_remove": "Remover",
- "gui_tab_name_chat": "Bate-papo"
+ "gui_tab_name_chat": "Bate-papo",
+ "error_port_not_available": "Porta OnionShare não disponível",
+ "gui_chat_url_description": "<b>Qualquer um</b> com este endereço OnionShare pode <b>entrar nesta sala de chat</b> usando o <b>Tor Browser</b>: <img src='{}' />"
}
diff --git a/desktop/src/onionshare/resources/locale/tr.json b/desktop/src/onionshare/resources/locale/tr.json
index 1fae24b1..c5663e48 100644
--- a/desktop/src/onionshare/resources/locale/tr.json
+++ b/desktop/src/onionshare/resources/locale/tr.json
@@ -254,5 +254,6 @@
"gui_tab_name_receive": "Al",
"gui_tab_name_website": "Web Sitesi",
"gui_tab_name_chat": "Sohbet",
- "gui_chat_url_description": "Bu OnionShare adresine sahip olan <b>herkes</b> <b>Tor Browser</b> kullanarak <b>bu sohbet odasına katılabilir</b>: <img src='{}' />"
+ "gui_chat_url_description": "Bu OnionShare adresine sahip olan <b>herkes</b> <b>Tor Browser</b> kullanarak <b>bu sohbet odasına katılabilir</b>: <img src='{}' />",
+ "error_port_not_available": "OnionShare bağlantı noktası kullanılamıyor"
}
diff --git a/desktop/src/onionshare/resources/locale/uk.json b/desktop/src/onionshare/resources/locale/uk.json
index bb16daaf..528c19c1 100644
--- a/desktop/src/onionshare/resources/locale/uk.json
+++ b/desktop/src/onionshare/resources/locale/uk.json
@@ -229,5 +229,6 @@
"gui_main_page_chat_button": "Почати спілкуватися в чаті",
"gui_main_page_website_button": "Почати хостинг",
"gui_main_page_receive_button": "Почати отримання",
- "gui_chat_url_description": "<b>Будь-хто</b> за цією адресою OnionShare може <b>приєднатися до цієї бесіди</b> за допомогою <b>Tor Browser</b>: <img src='{}' />"
+ "gui_chat_url_description": "<b>Будь-хто</b> за цією адресою OnionShare може <b>приєднатися до цієї бесіди</b> за допомогою <b>Tor Browser</b>: <img src='{}' />",
+ "error_port_not_available": "Порт OnionShare недоступний"
}
diff --git a/desktop/src/onionshare/resources/locale/zh_Hans.json b/desktop/src/onionshare/resources/locale/zh_Hans.json
index 497e42df..6ba6607c 100644
--- a/desktop/src/onionshare/resources/locale/zh_Hans.json
+++ b/desktop/src/onionshare/resources/locale/zh_Hans.json
@@ -31,7 +31,7 @@
"help_verbose": "将OnionShare错误日志记录到stdout,将web错误日志记录到磁盘",
"help_filename": "要分享的文件或文件夹的列表",
"help_config": "自定义JSON配置文件的路径(可选)",
- "gui_drag_and_drop": "拖动文件或文件夹\n以开始共享",
+ "gui_drag_and_drop": "拖放文件和文件夹以开始共享",
"gui_add": "添加",
"gui_delete": "删除",
"gui_choose_items": "选取",
@@ -243,7 +243,7 @@
"mode_settings_autostop_timer_checkbox": "定时停止onion服务",
"mode_settings_autostart_timer_checkbox": "定时起动onion服务",
"mode_settings_public_checkbox": "不使用密码",
- "mode_settings_persistent_checkbox": "保存此标签,并在打开OnionShare时自动打开它。",
+ "mode_settings_persistent_checkbox": "保存此标签,并在我打开OnionShare时自动打开它",
"mode_settings_advanced_toggle_hide": "隐藏高级选项",
"mode_settings_advanced_toggle_show": "显示高级选项",
"gui_quit_warning_cancel": "取消",
@@ -270,5 +270,17 @@
"gui_chat_start_server": "开始言论服务器",
"gui_file_selection_remove_all": "删除所有",
"gui_remove": "删除",
- "gui_qr_code_dialog_title": "Onionshare 二维码"
+ "gui_qr_code_dialog_title": "Onionshare 二维码",
+ "error_port_not_available": "OnionShare端口不可用",
+ "gui_tab_name_chat": "聊天",
+ "gui_tab_name_website": "网站",
+ "gui_tab_name_receive": "接收",
+ "gui_tab_name_share": "分享",
+ "gui_main_page_chat_button": "开始聊天",
+ "gui_main_page_website_button": "开始托管",
+ "gui_main_page_receive_button": "开始接收",
+ "gui_main_page_share_button": "开始分享",
+ "gui_new_tab_chat_button": "匿名聊天",
+ "gui_open_folder_error": "用xdg-open打开文件夹失败。文件在这里: {}",
+ "gui_chat_url_description": "<b>任何</b>有这个OnionShare地址的人均可 <b>加入这个聊天室</b>,方法是使用<b>Tor浏览器</b>:<img src='{}' />"
}
diff --git a/desktop/src/onionshare/tab/mode/__init__.py b/desktop/src/onionshare/tab/mode/__init__.py
index 7d2159c7..c48f20c0 100644
--- a/desktop/src/onionshare/tab/mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/__init__.py
@@ -107,6 +107,12 @@ class Mode(QtWidgets.QWidget):
"""
pass
+ def get_type(self):
+ """
+ Returns the type of mode as a string (e.g. "share", "receive", etc.)
+ """
+ pass
+
def human_friendly_time(self, secs):
"""
Returns a human-friendly time delta from given seconds.
diff --git a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py b/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
index 25a02969..a7c2929b 100644
--- a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
@@ -101,6 +101,12 @@ class ChatMode(Mode):
self.wrapper_layout.addLayout(self.column_layout)
self.setLayout(self.wrapper_layout)
+ def get_type(self):
+ """
+ Returns the type of mode as a string (e.g. "share", "receive", etc.)
+ """
+ return "chat"
+
def get_stop_server_autostop_timer_text(self):
"""
Return the string to put on the stop server button, if there's an auto-stop timer
diff --git a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
index 95d1ecbe..95a68dcb 100644
--- a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
@@ -149,6 +149,12 @@ class ReceiveMode(Mode):
self.wrapper_layout.addLayout(self.column_layout)
self.setLayout(self.wrapper_layout)
+ def get_type(self):
+ """
+ Returns the type of mode as a string (e.g. "share", "receive", etc.)
+ """
+ return "receive"
+
def data_dir_button_clicked(self):
"""
Browse for a new OnionShare data directory, and save to tab settings
diff --git a/desktop/src/onionshare/tab/mode/share_mode/__init__.py b/desktop/src/onionshare/tab/mode/share_mode/__init__.py
index ccf85dbd..bf1498d5 100644
--- a/desktop/src/onionshare/tab/mode/share_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/share_mode/__init__.py
@@ -173,6 +173,12 @@ class ShareMode(Mode):
# Always start with focus on file selection
self.file_selection.setFocus()
+ def get_type(self):
+ """
+ Returns the type of mode as a string (e.g. "share", "receive", etc.)
+ """
+ return "share"
+
def autostop_sharing_checkbox_clicked(self):
"""
Save autostop sharing setting to the tab settings
diff --git a/desktop/src/onionshare/tab/mode/website_mode/__init__.py b/desktop/src/onionshare/tab/mode/website_mode/__init__.py
index 325b22f1..6df6ff02 100644
--- a/desktop/src/onionshare/tab/mode/website_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/website_mode/__init__.py
@@ -173,6 +173,12 @@ class WebsiteMode(Mode):
# Always start with focus on file selection
self.file_selection.setFocus()
+ def get_type(self):
+ """
+ Returns the type of mode as a string (e.g. "share", "receive", etc.)
+ """
+ return "website"
+
def disable_csp_checkbox_clicked(self):
"""
Save disable CSP setting to the tab settings
diff --git a/desktop/src/onionshare/tab/tab.py b/desktop/src/onionshare/tab/tab.py
index 8f5ffd08..8cbddfed 100644
--- a/desktop/src/onionshare/tab/tab.py
+++ b/desktop/src/onionshare/tab/tab.py
@@ -669,7 +669,9 @@ class Tab(QtWidgets.QWidget):
return False
def cleanup(self):
+ self.common.log("Tab", "cleanup", f"tab_id={self.tab_id}")
if self.get_mode() and self.get_mode().web_thread:
+ self.get_mode().web.stop(self.get_mode().app.port)
self.get_mode().web_thread.quit()
self.get_mode().web_thread.wait()
self.app.cleanup()
diff --git a/desktop/src/onionshare/tab_widget.py b/desktop/src/onionshare/tab_widget.py
index 84d16e83..b78e67dd 100644
--- a/desktop/src/onionshare/tab_widget.py
+++ b/desktop/src/onionshare/tab_widget.py
@@ -81,6 +81,8 @@ class TabWidget(QtWidgets.QTabWidget):
self.event_handler_t.start()
def cleanup(self):
+ self.common.log("TabWidget", "cleanup")
+
# Stop the event thread
self.event_handler_t.should_quit = True
self.event_handler_t.quit()
diff --git a/desktop/src/onionshare/threads.py b/desktop/src/onionshare/threads.py
index 285b51b9..0c31a838 100644
--- a/desktop/src/onionshare/threads.py
+++ b/desktop/src/onionshare/threads.py
@@ -77,7 +77,7 @@ class OnionThread(QtCore.QThread):
try:
if self.mode.obtain_onion_early:
self.mode.app.start_onion_service(
- self.mode.settings, await_publication=False
+ self.mode.get_type(), self.mode.settings, await_publication=False
)
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
time.sleep(0.2)
@@ -86,7 +86,7 @@ class OnionThread(QtCore.QThread):
self.mode.app.stop_onion_service(self.mode.settings)
else:
self.mode.app.start_onion_service(
- self.mode.settings, await_publication=True
+ self.mode.get_type(), self.mode.settings, await_publication=True
)
# wait for modules in thread to load, preventing a thread-related cx_Freeze crash
time.sleep(0.2)
@@ -258,3 +258,18 @@ class EventHandlerThread(QtCore.QThread):
if self.should_quit:
break
time.sleep(0.2)
+
+
+class OnionCleanupThread(QtCore.QThread):
+ """
+ Wait for Tor rendezvous circuits to close in a separate thread
+ """
+
+ def __init__(self, common):
+ super(OnionCleanupThread, self).__init__()
+ self.common = common
+ self.common.log("OnionCleanupThread", "__init__")
+
+ def run(self):
+ self.common.log("OnionCleanupThread", "run")
+ self.common.gui.onion.cleanup()