[Pkg-privacy-commits] [onionshare] 143/256: Added Tor SOCKS address and port settings
Ulrike Uhlig
ulrike at moszumanska.debian.org
Fri May 26 12:53:29 UTC 2017
This is an automated email from the git hooks/post-receive script.
ulrike pushed a commit to branch master
in repository onionshare.
commit fa12784f8b5e5e8d739ac00ca5b167939050c53b
Author: Micah Lee <micah at micahflee.com>
Date: Sat Apr 15 16:33:41 2017 -0700
Added Tor SOCKS address and port settings
---
onionshare/onion.py | 15 ++++++++++++---
onionshare/settings.py | 12 ++++++++++++
onionshare_gui/settings_dialog.py | 27 +++++++++++++++++++++++++--
share/locale/en.json | 1 +
4 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/onionshare/onion.py b/onionshare/onion.py
index 07c516b..45dba2f 100644
--- a/onionshare/onion.py
+++ b/onionshare/onion.py
@@ -154,7 +154,6 @@ class Onion(object):
self.tor_control_port = self._get_available_port()
self.tor_control_socket = None
self.tor_cookie_auth_file = os.path.join(self.tor_data_directory.name, 'cookie')
- self.tor_socks_port_file = None
self.tor_socks_port = self._get_available_port()
self.tor_torrc = os.path.join(self.tor_data_directory.name, 'torrc')
else:
@@ -163,8 +162,7 @@ class Onion(object):
self.tor_control_port = None
self.tor_control_socket = os.path.join(self.tor_data_directory.name, 'control_socket')
self.tor_cookie_auth_file = os.path.join(self.tor_data_directory.name, 'cookie')
- self.tor_socks_port_file = os.path.join(self.tor_data_directory.name, 'socks_socket')
- self.tor_socks_port = 'unix:{}'.format(self.tor_socks_port_file)
+ self.tor_socks_port = self._get_available_port()
self.tor_torrc = os.path.join(self.tor_data_directory.name, 'torrc')
torrc_template = torrc_template.replace('{{data_directory}}', self.tor_data_directory.name)
@@ -392,6 +390,17 @@ class Onion(object):
self.tor_proc.kill()
self.tor_proc = None
+ def get_tor_socks_port(self):
+ """
+ Returns a (address, port) tuple for the Tor SOCKS port
+ """
+ if self.settings.get('connection_type') == 'bundled':
+ return ('127.0.0.1', self.tor_socks_port)
+ elif self.settings.get('connection_type') == 'automatic':
+ return ('127.0.0.1', 9150)
+ else:
+ return (self.settings.get('socks_address'), self.settings.get('socks_port'))
+
def _get_available_port(self):
"""
Find a random available port
diff --git a/onionshare/settings.py b/onionshare/settings.py
index 2e0b68e..72e79a7 100644
--- a/onionshare/settings.py
+++ b/onionshare/settings.py
@@ -38,6 +38,8 @@ class Settings(object):
'connection_type': 'bundled',
'control_port_address': '127.0.0.1',
'control_port_port': 9051,
+ 'socks_address': '127.0.0.1',
+ 'socks_port': 9050,
'socket_file_path': '/var/run/tor/control',
'auth_type': 'no_auth',
'auth_password': '',
@@ -98,4 +100,14 @@ class Settings(object):
return self._settings[key]
def set(self, key, val):
+ # If typecasting int values fails, fallback to default values
+ if key == 'control_port_port' or key == 'socks_port':
+ try:
+ val = int(val)
+ except:
+ if key == 'control_port_port':
+ val = self.default_settings['control_port_port']
+ elif key == 'socks_port':
+ val = self.default_settings['socks_port']
+
self._settings[key] = val
diff --git a/onionshare_gui/settings_dialog.py b/onionshare_gui/settings_dialog.py
index 447a97d..e14749e 100644
--- a/onionshare_gui/settings_dialog.py
+++ b/onionshare_gui/settings_dialog.py
@@ -18,7 +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/>.
"""
from PyQt5 import QtCore, QtWidgets, QtGui
-import sys, platform
+import sys, platform, datetime
from onionshare import strings, helpers
from onionshare.settings import Settings
@@ -139,6 +139,19 @@ class SettingsDialog(QtWidgets.QDialog):
self.connection_type_socket_file_extras.setLayout(connection_type_socket_file_extras_layout)
self.connection_type_socket_file_extras.hide()
+ # Tor SOCKS address and port
+ gui_settings_socks_label = QtWidgets.QLabel(strings._('gui_settings_socks_label', True))
+ self.connection_type_socks_address = QtWidgets.QLineEdit()
+ self.connection_type_socks_port = QtWidgets.QLineEdit()
+ connection_type_socks_layout = QtWidgets.QHBoxLayout()
+ connection_type_socks_layout.addWidget(gui_settings_socks_label)
+ connection_type_socks_layout.addWidget(self.connection_type_socks_address)
+ connection_type_socks_layout.addWidget(self.connection_type_socks_port)
+
+ self.connection_type_socks = QtWidgets.QWidget()
+ self.connection_type_socks.setLayout(connection_type_socks_layout)
+ self.connection_type_socks.hide()
+
# Authentication options
# No authentication
@@ -179,6 +192,7 @@ class SettingsDialog(QtWidgets.QDialog):
connection_type_group_layout.addWidget(self.connection_type_socket_file_radio)
connection_type_group_layout.addWidget(self.connection_type_control_port_extras)
connection_type_group_layout.addWidget(self.connection_type_socket_file_extras)
+ connection_type_group_layout.addWidget(self.connection_type_socks)
connection_type_group_layout.addWidget(self.authenticate_group)
connection_type_group_layout.addWidget(self.connection_type_test_button)
connection_type_group = QtWidgets.QGroupBox(strings._("gui_settings_connection_type_label", True))
@@ -256,6 +270,8 @@ class SettingsDialog(QtWidgets.QDialog):
self.connection_type_control_port_extras_address.setText(settings.get('control_port_address'))
self.connection_type_control_port_extras_port.setText(str(settings.get('control_port_port')))
self.connection_type_socket_file_extras_path.setText(settings.get('socket_file_path'))
+ self.connection_type_socks_address.setText(settings.get('socks_address'))
+ self.connection_type_socks_port.setText(str(settings.get('socks_port')))
auth_type = settings.get('auth_type')
if auth_type == 'no_auth':
self.authenticate_no_auth_radio.setChecked(True)
@@ -272,6 +288,7 @@ class SettingsDialog(QtWidgets.QDialog):
"""
if checked:
self.authenticate_group.hide()
+ self.connection_type_socks.hide()
def connection_type_automatic_toggled(self, checked):
"""
@@ -279,6 +296,7 @@ class SettingsDialog(QtWidgets.QDialog):
"""
if checked:
self.authenticate_group.hide()
+ self.connection_type_socks.hide()
def connection_type_control_port_toggled(self, checked):
"""
@@ -288,6 +306,7 @@ class SettingsDialog(QtWidgets.QDialog):
if checked:
self.authenticate_group.show()
self.connection_type_control_port_extras.show()
+ self.connection_type_socks.show()
else:
self.connection_type_control_port_extras.hide()
@@ -300,6 +319,7 @@ class SettingsDialog(QtWidgets.QDialog):
if checked:
self.authenticate_group.show()
self.connection_type_socket_file_extras.show()
+ self.connection_type_socks.show()
else:
self.connection_type_socket_file_extras.hide()
@@ -402,9 +422,12 @@ class SettingsDialog(QtWidgets.QDialog):
settings.set('connection_type', 'socket_file')
settings.set('control_port_address', self.connection_type_control_port_extras_address.text())
- settings.set('control_port_port', int(self.connection_type_control_port_extras_port.text()))
+ settings.set('control_port_port', self.connection_type_control_port_extras_port.text())
settings.set('socket_file_path', self.connection_type_socket_file_extras_path.text())
+ settings.set('socks_address', self.connection_type_socks_address.text())
+ settings.set('socks_port', self.connection_type_socks_port.text())
+
if self.authenticate_no_auth_radio.isChecked():
settings.set('auth_type', 'no_auth')
if self.authenticate_password_radio.isChecked():
diff --git a/share/locale/en.json b/share/locale/en.json
index 0d5ba84..b245ec2 100644
--- a/share/locale/en.json
+++ b/share/locale/en.json
@@ -74,6 +74,7 @@
"gui_settings_connection_type_test_button": "Test Tor Settings",
"gui_settings_control_port_label": "Control port",
"gui_settings_socket_file_label": "Socket file",
+ "gui_settings_socks_label": "SOCKS port",
"gui_settings_authenticate_label": "Tor authentication options",
"gui_settings_authenticate_no_auth_option": "No authentication, or cookie authentication",
"gui_settings_authenticate_password_option": "Password",
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/onionshare.git
More information about the Pkg-privacy-commits
mailing list