mirror of
https://github.com/onionshare/onionshare.git
synced 2025-01-11 04:02:40 -03:00
Add bundled Tor to Tor connection settings, and make it only work in Windows and Mac, and not in dev mode
This commit is contained in:
parent
b0eb44f82f
commit
8280b1b5d8
2 changed files with 38 additions and 6 deletions
|
@ -18,6 +18,7 @@ You should have received a copy of the GNU General Public License
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
"""
|
"""
|
||||||
from PyQt5 import QtCore, QtWidgets, QtGui
|
from PyQt5 import QtCore, QtWidgets, QtGui
|
||||||
|
import sys, platform
|
||||||
|
|
||||||
from onionshare import strings
|
from onionshare import strings
|
||||||
from onionshare.settings import Settings
|
from onionshare.settings import Settings
|
||||||
|
@ -68,6 +69,21 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||||
|
|
||||||
# Connection type: either automatic, control port, or socket file
|
# Connection type: either automatic, control port, or socket file
|
||||||
|
|
||||||
|
# Bundled Tor
|
||||||
|
self.connection_type_bundled_radio = QtWidgets.QRadioButton(strings._('gui_settings_connection_type_bundled_option', True))
|
||||||
|
self.connection_type_bundled_radio.toggled.connect(self.connection_type_bundled_toggled)
|
||||||
|
|
||||||
|
# Bundled Tor only works in Windows and Mac
|
||||||
|
p = platform.system()
|
||||||
|
if (p == 'Windows' or p == 'Darwin'):
|
||||||
|
# Bundled Tor doesn't work on dev mode
|
||||||
|
if getattr(sys, 'onionshare_dev_mode', False):
|
||||||
|
self.connection_type_bundled_radio.setEnabled(False)
|
||||||
|
else:
|
||||||
|
# If not using Windows or Mac, disable and hide bundled Tor
|
||||||
|
self.connection_type_bundled_radio.setEnabled(False)
|
||||||
|
self.connection_type_bundled_radio.hide()
|
||||||
|
|
||||||
# Automatic
|
# Automatic
|
||||||
self.connection_type_automatic_radio = QtWidgets.QRadioButton(strings._('gui_settings_connection_type_automatic_option', True))
|
self.connection_type_automatic_radio = QtWidgets.QRadioButton(strings._('gui_settings_connection_type_automatic_option', True))
|
||||||
self.connection_type_automatic_radio.toggled.connect(self.connection_type_automatic_toggled)
|
self.connection_type_automatic_radio.toggled.connect(self.connection_type_automatic_toggled)
|
||||||
|
@ -104,6 +120,7 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||||
|
|
||||||
# Connection type layout
|
# Connection type layout
|
||||||
connection_type_group_layout = QtWidgets.QVBoxLayout()
|
connection_type_group_layout = QtWidgets.QVBoxLayout()
|
||||||
|
connection_type_group_layout.addWidget(self.connection_type_bundled_radio)
|
||||||
connection_type_group_layout.addWidget(self.connection_type_automatic_radio)
|
connection_type_group_layout.addWidget(self.connection_type_automatic_radio)
|
||||||
connection_type_group_layout.addWidget(self.connection_type_control_port_radio)
|
connection_type_group_layout.addWidget(self.connection_type_control_port_radio)
|
||||||
connection_type_group_layout.addWidget(self.connection_type_socket_file_radio)
|
connection_type_group_layout.addWidget(self.connection_type_socket_file_radio)
|
||||||
|
@ -182,7 +199,13 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||||
self.stealth_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
self.stealth_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||||
|
|
||||||
connection_type = settings.get('connection_type')
|
connection_type = settings.get('connection_type')
|
||||||
if connection_type == 'automatic':
|
if connection_type == 'bundled':
|
||||||
|
if self.connection_type_bundled_radio.isEnabled():
|
||||||
|
self.connection_type_bundled_radio.setChecked(True)
|
||||||
|
else:
|
||||||
|
# If bundled tor is disabled, fallback to automatic
|
||||||
|
self.connection_type_automatic_radio.setChecked(True)
|
||||||
|
elif connection_type == 'automatic':
|
||||||
self.connection_type_automatic_radio.setChecked(True)
|
self.connection_type_automatic_radio.setChecked(True)
|
||||||
elif connection_type == 'control_port':
|
elif connection_type == 'control_port':
|
||||||
self.connection_type_control_port_radio.setChecked(True)
|
self.connection_type_control_port_radio.setChecked(True)
|
||||||
|
@ -201,15 +224,19 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||||
# Show the dialog
|
# Show the dialog
|
||||||
self.exec_()
|
self.exec_()
|
||||||
|
|
||||||
def connection_type_automatic_toggled(self, checked):
|
def connection_type_bundled_toggled(self, checked):
|
||||||
"""
|
"""
|
||||||
Connection type automatic was toggled. If checked, disable all other
|
Connection type bundled was toggled. If checked, hide authentication fields.
|
||||||
fields. If unchecked, enable all other fields.
|
"""
|
||||||
|
if checked:
|
||||||
|
self.authenticate_group.hide()
|
||||||
|
|
||||||
|
def connection_type_automatic_toggled(self, checked):
|
||||||
|
"""
|
||||||
|
Connection type automatic was toggled. If checked, hide authentication fields.
|
||||||
"""
|
"""
|
||||||
if checked:
|
if checked:
|
||||||
self.authenticate_group.hide()
|
self.authenticate_group.hide()
|
||||||
else:
|
|
||||||
self.authenticate_group.show()
|
|
||||||
|
|
||||||
def connection_type_control_port_toggled(self, checked):
|
def connection_type_control_port_toggled(self, checked):
|
||||||
"""
|
"""
|
||||||
|
@ -217,6 +244,7 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||||
for Tor control address and port. If unchecked, hide those extra fields.
|
for Tor control address and port. If unchecked, hide those extra fields.
|
||||||
"""
|
"""
|
||||||
if checked:
|
if checked:
|
||||||
|
self.authenticate_group.show()
|
||||||
self.connection_type_control_port_extras.show()
|
self.connection_type_control_port_extras.show()
|
||||||
else:
|
else:
|
||||||
self.connection_type_control_port_extras.hide()
|
self.connection_type_control_port_extras.hide()
|
||||||
|
@ -228,6 +256,7 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||||
for socket file. If unchecked, hide those extra fields.
|
for socket file. If unchecked, hide those extra fields.
|
||||||
"""
|
"""
|
||||||
if checked:
|
if checked:
|
||||||
|
self.authenticate_group.show()
|
||||||
self.connection_type_socket_file_extras.show()
|
self.connection_type_socket_file_extras.show()
|
||||||
else:
|
else:
|
||||||
self.connection_type_socket_file_extras.hide()
|
self.connection_type_socket_file_extras.hide()
|
||||||
|
@ -287,6 +316,8 @@ class SettingsDialog(QtWidgets.QDialog):
|
||||||
settings.set('close_after_first_download', self.close_after_first_download_checkbox.isChecked())
|
settings.set('close_after_first_download', self.close_after_first_download_checkbox.isChecked())
|
||||||
settings.set('use_stealth', self.stealth_checkbox.isChecked())
|
settings.set('use_stealth', self.stealth_checkbox.isChecked())
|
||||||
|
|
||||||
|
if self.connection_type_bundled_radio.isChecked():
|
||||||
|
settings.set('connection_type', 'bundled')
|
||||||
if self.connection_type_automatic_radio.isChecked():
|
if self.connection_type_automatic_radio.isChecked():
|
||||||
settings.set('connection_type', 'automatic')
|
settings.set('connection_type', 'automatic')
|
||||||
if self.connection_type_control_port_radio.isChecked():
|
if self.connection_type_control_port_radio.isChecked():
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
"gui_settings_sharing_label": "Sharing options",
|
"gui_settings_sharing_label": "Sharing options",
|
||||||
"gui_settings_close_after_first_download_option": "Stop sharing after first download",
|
"gui_settings_close_after_first_download_option": "Stop sharing after first download",
|
||||||
"gui_settings_connection_type_label": "How should OnionShare connect to Tor?",
|
"gui_settings_connection_type_label": "How should OnionShare connect to Tor?",
|
||||||
|
"gui_settings_connection_type_bundled_option": "Use Tor that is bundled with OnionShare",
|
||||||
"gui_settings_connection_type_automatic_option": "Attempt automatic configuration with Tor Browser",
|
"gui_settings_connection_type_automatic_option": "Attempt automatic configuration with Tor Browser",
|
||||||
"gui_settings_connection_type_control_port_option": "Connect using control port",
|
"gui_settings_connection_type_control_port_option": "Connect using control port",
|
||||||
"gui_settings_connection_type_socket_file_option": "Connect using socket file",
|
"gui_settings_connection_type_socket_file_option": "Connect using socket file",
|
||||||
|
|
Loading…
Reference in a new issue