started web server in separate thread. organized file info, so it can be set from both cli and gui.

This commit is contained in:
Micah Lee 2014-05-30 21:25:26 -04:00
parent 837533e9c6
commit 4868a9155b
2 changed files with 14 additions and 6 deletions

View File

@ -26,12 +26,20 @@ strings = {}
# generate an unguessable string # generate an unguessable string
slug = os.urandom(16).encode('hex') slug = os.urandom(16).encode('hex')
# file information # information about the file
filename = filehash = filesize = '' filename = filesize = filehash = None
def set_file_info(new_filename, new_filesize, new_filehash):
global filename, filesize, filehash
filename = new_filename
filesize = new_filesize
filehash = new_filehash
@app.route("/{0}".format(slug)) @app.route("/{0}".format(slug))
def index(): def index():
global filename, filesize, filehash, slug, strings global filename, filesize, filehash, slug, strings
print 'filename: {0}'.format(filename)
print 'filehash: {0}'.format(filehash)
print 'filesize: {0}'.format(filesize)
return render_template_string(open('{0}/index.html'.format(os.path.dirname(__file__))).read(), return render_template_string(open('{0}/index.html'.format(os.path.dirname(__file__))).read(),
slug=slug, filename=os.path.basename(filename), filehash=filehash, filesize=filesize, strings=strings) slug=slug, filename=os.path.basename(filename), filehash=filehash, filesize=filesize, strings=strings)
@ -125,7 +133,6 @@ def start_hidden_service(port):
return onion_host return onion_host
def main(): def main():
global filename, filehash, filesize
load_strings() load_strings()
# try starting hidden service # try starting hidden service
@ -148,6 +155,7 @@ def main():
# startup # startup
print strings["calculating_sha1"] print strings["calculating_sha1"]
filehash, filesize = file_crunching(filename) filehash, filesize = file_crunching(filename)
set_file_info(filename, filehash, filesize)
tails_open_port(port) tails_open_port(port)
print '\n' + strings["give_this_url"] print '\n' + strings["give_this_url"]
print 'http://{0}/{1}'.format(onion_host, slug) print 'http://{0}/{1}'.format(onion_host, slug)

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
import onionshare, webgui import onionshare, webgui
import os, sys, time, json, gtk import os, sys, time, json, gtk, thread
class Global(object): class Global(object):
quit = False quit = False
@ -75,14 +75,14 @@ def main():
web_send("init('{0}', {1});".format(basename, json.dumps(strings))) web_send("init('{0}', {1});".format(basename, json.dumps(strings)))
web_send("update('{0}')".format(strings['calculating_sha1'])) web_send("update('{0}')".format(strings['calculating_sha1']))
filehash, filesize = onionshare.file_crunching(filename) filehash, filesize = onionshare.file_crunching(filename)
onionshare.set_file_info(filename, filehash, filesize)
onionshare.tails_open_port(port) onionshare.tails_open_port(port)
url = 'http://{0}/{1}'.format(onion_host, onionshare.slug) url = 'http://{0}/{1}'.format(onion_host, onionshare.slug)
web_send("update('{0}')".format('Secret URL is {0}'.format(url))) web_send("update('{0}')".format('Secret URL is {0}'.format(url)))
web_send("set_url('{0}')".format(url)); web_send("set_url('{0}')".format(url));
# start the web server # start the web server
# todo: start this in another thread, and send output using web_send web_thread = thread.start_new_thread(onionshare.app.run, (), {"port": port})
#onionshare.app.run(port=port)
# main loop # main loop
last_second = time.time() last_second = time.time()