mirror of
https://github.com/onionshare/onionshare.git
synced 2025-08-01 10:56:22 -04:00
command line version automatically closes after download is compltee, unless --stay-open flag is being used (fixes #53)
This commit is contained in:
parent
1b28a4be49
commit
f54dfaaf26
1 changed files with 17 additions and 1 deletions
|
@ -28,6 +28,7 @@ strings = {}
|
||||||
onionshare_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
|
onionshare_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
|
||||||
slug = random_string(16)
|
slug = random_string(16)
|
||||||
download_count = 0
|
download_count = 0
|
||||||
|
stay_open = False
|
||||||
|
|
||||||
REQUEST_LOAD = 0
|
REQUEST_LOAD = 0
|
||||||
REQUEST_DOWNLOAD = 1
|
REQUEST_DOWNLOAD = 1
|
||||||
|
@ -78,8 +79,12 @@ def download():
|
||||||
download_id = download_count
|
download_id = download_count
|
||||||
download_count += 1
|
download_count += 1
|
||||||
|
|
||||||
# tell GUI the download started
|
# prepare some variables to use inside generate() function below
|
||||||
|
# which is outsie of the request context
|
||||||
|
shutdown_func = request.environ.get('werkzeug.server.shutdown')
|
||||||
path = request.path
|
path = request.path
|
||||||
|
|
||||||
|
# tell GUI the download started
|
||||||
add_request(REQUEST_DOWNLOAD, path, { 'id':download_id })
|
add_request(REQUEST_DOWNLOAD, path, { 'id':download_id })
|
||||||
|
|
||||||
dirname = os.path.dirname(filename)
|
dirname = os.path.dirname(filename)
|
||||||
|
@ -107,6 +112,13 @@ def download():
|
||||||
fp.close()
|
fp.close()
|
||||||
sys.stdout.write("\n")
|
sys.stdout.write("\n")
|
||||||
|
|
||||||
|
# download is finished, close the server
|
||||||
|
global stay_open
|
||||||
|
if not stay_open:
|
||||||
|
if shutdown_func is None:
|
||||||
|
raise RuntimeError('Not running with the Werkzeug Server')
|
||||||
|
shutdown_func()
|
||||||
|
|
||||||
r = Response(generate())
|
r = Response(generate())
|
||||||
r.headers.add('Content-Length', filesize)
|
r.headers.add('Content-Length', filesize)
|
||||||
r.headers.add('Content-Disposition', 'attachment', filename=basename)
|
r.headers.add('Content-Disposition', 'attachment', filename=basename)
|
||||||
|
@ -221,12 +233,16 @@ def main():
|
||||||
# parse arguments
|
# parse arguments
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('--local-only', action='store_true', dest='local_only', help='Do not attempt to use tor: for development only')
|
parser.add_argument('--local-only', action='store_true', dest='local_only', help='Do not attempt to use tor: for development only')
|
||||||
|
parser.add_argument('--stay-open', action='store_true', dest='stay_open', help='Keep hidden service running after download has finished')
|
||||||
parser.add_argument('filename', nargs=1)
|
parser.add_argument('filename', nargs=1)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
filename = os.path.abspath(args.filename[0])
|
filename = os.path.abspath(args.filename[0])
|
||||||
local_only = args.local_only
|
local_only = args.local_only
|
||||||
|
|
||||||
|
global stay_open
|
||||||
|
stay_open = args.stay_open
|
||||||
|
|
||||||
if not (filename and os.path.isfile(filename)):
|
if not (filename and os.path.isfile(filename)):
|
||||||
sys.exit(strings["not_a_file"].format(filename))
|
sys.exit(strings["not_a_file"].format(filename))
|
||||||
filename = os.path.abspath(filename)
|
filename = os.path.abspath(filename)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue