[Pkg-privacy-commits] [onionshare] 55/256: You must connect to a socket file instead of a port for Tor Browser 6.5a6. Make automatic settings fallback to socket file if the port doesn't work (only for Linux so far, have not tested in OS X, and is not supported in Windows)
Ulrike Uhlig
ulrike at moszumanska.debian.org
Fri May 26 12:53:12 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 50835b67f8811a6b772b5b18f1670a050198de68
Author: Micah Lee <micah at micahflee.com>
Date: Thu Dec 29 13:36:29 2016 -0800
You must connect to a socket file instead of a port for Tor Browser 6.5a6. Make automatic settings fallback to socket file if the port doesn't work (only for Linux so far, have not tested in OS X, and is not supported in Windows)
---
onionshare/onion.py | 56 +++++++++++++++++++++++++++++++++++------------------
1 file changed, 37 insertions(+), 19 deletions(-)
diff --git a/onionshare/onion.py b/onionshare/onion.py
index 0f20a77..a8f6d4e 100644
--- a/onionshare/onion.py
+++ b/onionshare/onion.py
@@ -21,7 +21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
from stem.control import Controller
from stem import SocketError
from stem.connection import MissingPassword, UnreadableCookieFile
-import os, sys, tempfile, shutil, urllib
+import os, sys, tempfile, shutil, urllib, platform
from . import socks
from . import helpers, strings
@@ -109,28 +109,46 @@ class Onion(object):
if self.settings.get('connection_type') == 'automatic':
# Automatically try to guess the right way to connect to Tor Browser
- # Try connecting
- try:
- # If the TOR_CONTROL_PORT environment variable is set, use that
- env_port = os.environ.get('TOR_CONTROL_PORT')
- if env_port:
+ # Try connecting to control port
+ found_tor = False
+
+ # If the TOR_CONTROL_PORT environment variable is set, use that
+ env_port = os.environ.get('TOR_CONTROL_PORT')
+ if env_port:
+ try:
self.c = Controller.from_port(port=int(env_port))
+ found_tor = True
+ except:
+ pass
- else:
- # Otherwise, try default ports for Tor Browser, Tor Messenger, and system tor
- found_tor = False
- try:
- ports = [9151, 9153, 9051]
- for port in ports:
- self.c = Controller.from_port(port=port)
- found_tor = True
- except:
- pass
- if not found_tor:
+ else:
+ # Otherwise, try default ports for Tor Browser, Tor Messenger, and system tor
+ try:
+ ports = [9151, 9153, 9051]
+ for port in ports:
+ self.c = Controller.from_port(port=port)
+ found_tor = True
+ except:
+ pass
+
+ # If connecting to default control ports failed, so let's try
+ # guessing the socket file name next
+ if not found_tor:
+ try:
+ p = platform.system()
+ if p == 'Linux':
+ socket_file_path = '/run/user/{}/Tor/control.socket'.format(os.geteuid())
+ elif p == 'Darwin':
+ # TODO: figure out the unix socket path in OS X
+ socket_file_path = '/run/user/{}/Tor/control.socket'.format(os.geteuid())
+ elif p == 'Windows':
+ # Windows doesn't support unix sockets
raise TorErrorAutomatic(strings._('settings_error_automatic'))
- except TorErrorAutomatic:
- raise TorErrorAutomatic(strings._('settings_error_automatic'))
+ self.c = Controller.from_socket_file(path=socket_file_path)
+
+ except:
+ raise TorErrorAutomatic(strings._('settings_error_automatic'))
# Try authenticating
try:
--
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