[Pkg-privacy-commits] [onionshare] 11/53: Move wait_for_hs() function into the HS class
Ulrike Uhlig
u-guest at moszumanska.debian.org
Wed Dec 30 00:20:11 UTC 2015
This is an automated email from the git hooks/post-receive script.
u-guest pushed a commit to branch debian
in repository onionshare.
commit 1a4cb26f5d751441ffdf6d5adef10900e9c4765e
Author: Micah Lee <micah at micahflee.com>
Date: Tue Sep 8 17:42:08 2015 -0700
Move wait_for_hs() function into the HS class
---
onionshare/hs.py | 47 +++++++++++++++++++++++++++++++++++++-
onionshare/onionshare.py | 59 +++++-------------------------------------------
2 files changed, 52 insertions(+), 54 deletions(-)
diff --git a/onionshare/hs.py b/onionshare/hs.py
index b163633..9a0a5b7 100644
--- a/onionshare/hs.py
+++ b/onionshare/hs.py
@@ -19,7 +19,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from stem.control import Controller
-import os, tempfile, shutil
+import os, sys, tempfile, shutil, urllib2, httplib
+import socks
import helpers, strings
@@ -100,6 +101,50 @@ class HS(object):
onion_host = open(hostname_file, 'r').read().strip()
return onion_host
+ def wait_for_hs(self, onion_host, transparent_torification):
+ # legacy only, this function is no longer required with ephemeral hidden services
+ print strings._('wait_for_hs')
+
+ ready = False
+ while not ready:
+ try:
+ sys.stdout.write('{0:s} '.format(strings._('wait_for_hs_trying')))
+ sys.stdout.flush()
+
+ if transparent_torification:
+ # no need to set the socks5 proxy
+ urllib2.urlopen('http://{0:s}'.format(onion_host))
+ else:
+ tor_exists = False
+ ports = [9050, 9150]
+ for port in ports:
+ try:
+ s = socks.socksocket()
+ s.setproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', port)
+ s.connect((onion_host, 80))
+ s.close()
+ tor_exists = True
+ break
+ except socks.ProxyConnectionError:
+ pass
+ if not tor_exists:
+ raise NoTor(strings._("cant_connect_socksport").format(tor_socks_ports))
+ ready = True
+
+ sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_yup')))
+ except socks.SOCKS5Error:
+ sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_nope')))
+ sys.stdout.flush()
+ except urllib2.HTTPError: # torification error
+ sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_nope')))
+ sys.stdout.flush()
+ except httplib.BadStatusLine: # torification (with bridge) error
+ sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_nope')))
+ sys.stdout.flush()
+ except KeyboardInterrupt:
+ return False
+ return True
+
def cleanup(self):
if self.supports_ephemeral:
# todo: cleanup the ephemeral hidden service
diff --git a/onionshare/onionshare.py b/onionshare/onionshare.py
index 527eab0..68340df 100644
--- a/onionshare/onionshare.py
+++ b/onionshare/onionshare.py
@@ -17,9 +17,8 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
-import os, sys, subprocess, time, argparse, inspect, shutil, socket, threading, urllib2, httplib
-import socks
+import os, sys, subprocess, time, argparse, inspect, shutil, socket, threading
import strings, helpers, web, hs
class OnionShare(object):
@@ -64,53 +63,6 @@ class OnionShare(object):
self.onion_host = self.hs.start(self.port)
- def wait_for_hs(self):
- # legacy only, this function is no longer required with ephemeral hidden services
- if self.local_only:
- return True
-
- print strings._('wait_for_hs')
-
- ready = False
- while not ready:
- try:
- sys.stdout.write('{0:s} '.format(strings._('wait_for_hs_trying')))
- sys.stdout.flush()
-
- if self.transparent_torification:
- # no need to set the socks5 proxy
- urllib2.urlopen('http://{0:s}'.format(self.onion_host))
- else:
- tor_exists = False
- ports = [9050, 9150]
- for port in ports:
- try:
- s = socks.socksocket()
- s.setproxy(socks.PROXY_TYPE_SOCKS5, '127.0.0.1', port)
- s.connect((self.onion_host, 80))
- s.close()
- tor_exists = True
- break
- except socks.ProxyConnectionError:
- pass
- if not tor_exists:
- raise NoTor(strings._("cant_connect_socksport").format(tor_socks_ports))
- ready = True
-
- sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_yup')))
- except socks.SOCKS5Error:
- sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_nope')))
- sys.stdout.flush()
- except urllib2.HTTPError: # torification error
- sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_nope')))
- sys.stdout.flush()
- except httplib.BadStatusLine: # torification (with bridge) error
- sys.stdout.write('{0:s}\n'.format(strings._('wait_for_hs_nope')))
- sys.stdout.flush()
- except KeyboardInterrupt:
- return False
- return True
-
def cleanup(self):
# cleanup files
for filename in self.cleanup_filenames:
@@ -186,11 +138,12 @@ def main(cwd=None):
t.start()
try: # Trap Ctrl-C
- # wait for hs
+ # wait for hs, only if using old version of tor
if not app.hs.supports_ephemeral:
- ready = app.wait_for_hs()
- if not ready:
- sys.exit()
+ if not app.local_only:
+ ready = app.hs.wait_for_hs(app.onion_host, app.transparent_torification)
+ if not ready:
+ sys.exit()
print strings._("give_this_url")
print 'http://{0:s}/{1:s}'.format(app.onion_host, web.slug)
--
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