mirror of
https://github.com/onionshare/onionshare.git
synced 2025-01-27 14:57:25 -05:00
Rename download_count/download_id, upload_count/upload_id, and visit_count/visit_id to simply cur_history_id/history_id, and make all errors create IndividualFileHistoryItem widgets
This commit is contained in:
parent
655bb5bad1
commit
ffe12bdead
@ -19,7 +19,6 @@ class ReceiveModeWeb:
|
|||||||
self.web = web
|
self.web = web
|
||||||
|
|
||||||
self.can_upload = True
|
self.can_upload = True
|
||||||
self.upload_count = 0
|
|
||||||
self.uploads_in_progress = []
|
self.uploads_in_progress = []
|
||||||
|
|
||||||
self.define_routes()
|
self.define_routes()
|
||||||
@ -52,7 +51,7 @@ class ReceiveModeWeb:
|
|||||||
|
|
||||||
# Tell the GUI the receive mode directory for this file
|
# Tell the GUI the receive mode directory for this file
|
||||||
self.web.add_request(self.web.REQUEST_UPLOAD_SET_DIR, request.path, {
|
self.web.add_request(self.web.REQUEST_UPLOAD_SET_DIR, request.path, {
|
||||||
'id': request.upload_id,
|
'id': request.history_id,
|
||||||
'filename': basename,
|
'filename': basename,
|
||||||
'dir': request.receive_mode_dir
|
'dir': request.receive_mode_dir
|
||||||
})
|
})
|
||||||
@ -272,10 +271,9 @@ class ReceiveModeRequest(Request):
|
|||||||
# Prevent new uploads if we've said so (timer expired)
|
# Prevent new uploads if we've said so (timer expired)
|
||||||
if self.web.receive_mode.can_upload:
|
if self.web.receive_mode.can_upload:
|
||||||
|
|
||||||
# Create an upload_id, attach it to the request
|
# Create an history_id, attach it to the request
|
||||||
self.upload_id = self.web.receive_mode.upload_count
|
self.history_id = self.web.receive_mode.cur_history_id
|
||||||
|
self.web.receive_mode.cur_history_id += 1
|
||||||
self.web.receive_mode.upload_count += 1
|
|
||||||
|
|
||||||
# Figure out the content length
|
# Figure out the content length
|
||||||
try:
|
try:
|
||||||
@ -302,10 +300,10 @@ class ReceiveModeRequest(Request):
|
|||||||
if not self.told_gui_about_request:
|
if not self.told_gui_about_request:
|
||||||
# Tell the GUI about the request
|
# Tell the GUI about the request
|
||||||
self.web.add_request(self.web.REQUEST_STARTED, self.path, {
|
self.web.add_request(self.web.REQUEST_STARTED, self.path, {
|
||||||
'id': self.upload_id,
|
'id': self.history_id,
|
||||||
'content_length': self.content_length
|
'content_length': self.content_length
|
||||||
})
|
})
|
||||||
self.web.receive_mode.uploads_in_progress.append(self.upload_id)
|
self.web.receive_mode.uploads_in_progress.append(self.history_id)
|
||||||
|
|
||||||
self.told_gui_about_request = True
|
self.told_gui_about_request = True
|
||||||
|
|
||||||
@ -337,19 +335,19 @@ class ReceiveModeRequest(Request):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
if self.told_gui_about_request:
|
if self.told_gui_about_request:
|
||||||
upload_id = self.upload_id
|
history_id = self.history_id
|
||||||
|
|
||||||
if not self.web.stop_q.empty() or not self.progress[self.filename]['complete']:
|
if not self.web.stop_q.empty() or not self.progress[self.filename]['complete']:
|
||||||
# Inform the GUI that the upload has canceled
|
# Inform the GUI that the upload has canceled
|
||||||
self.web.add_request(self.web.REQUEST_UPLOAD_CANCELED, self.path, {
|
self.web.add_request(self.web.REQUEST_UPLOAD_CANCELED, self.path, {
|
||||||
'id': upload_id
|
'id': history_id
|
||||||
})
|
})
|
||||||
else:
|
else:
|
||||||
# Inform the GUI that the upload has finished
|
# Inform the GUI that the upload has finished
|
||||||
self.web.add_request(self.web.REQUEST_UPLOAD_FINISHED, self.path, {
|
self.web.add_request(self.web.REQUEST_UPLOAD_FINISHED, self.path, {
|
||||||
'id': upload_id
|
'id': history_id
|
||||||
})
|
})
|
||||||
self.web.receive_mode.uploads_in_progress.remove(upload_id)
|
self.web.receive_mode.uploads_in_progress.remove(history_id)
|
||||||
|
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
@ -375,7 +373,7 @@ class ReceiveModeRequest(Request):
|
|||||||
# Update the GUI on the upload progress
|
# Update the GUI on the upload progress
|
||||||
if self.told_gui_about_request:
|
if self.told_gui_about_request:
|
||||||
self.web.add_request(self.web.REQUEST_PROGRESS, self.path, {
|
self.web.add_request(self.web.REQUEST_PROGRESS, self.path, {
|
||||||
'id': self.upload_id,
|
'id': self.history_id,
|
||||||
'progress': self.progress
|
'progress': self.progress
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -44,8 +44,7 @@ class SendBaseModeWeb:
|
|||||||
self.files = {} # Dictionary mapping file paths to filenames on disk
|
self.files = {} # Dictionary mapping file paths to filenames on disk
|
||||||
self.root_files = {} # This is only the root files and dirs, as opposed to all of them
|
self.root_files = {} # This is only the root files and dirs, as opposed to all of them
|
||||||
self.cleanup_filenames = []
|
self.cleanup_filenames = []
|
||||||
self.visit_count = 0
|
self.cur_history_id = 0
|
||||||
self.download_count = 0
|
|
||||||
self.file_info = {'files': [], 'dirs': []}
|
self.file_info = {'files': [], 'dirs': []}
|
||||||
self.gzip_individual_files = {}
|
self.gzip_individual_files = {}
|
||||||
self.init()
|
self.init()
|
||||||
@ -80,12 +79,12 @@ class SendBaseModeWeb:
|
|||||||
|
|
||||||
def directory_listing(self, filenames, path='', filesystem_path=None):
|
def directory_listing(self, filenames, path='', filesystem_path=None):
|
||||||
# Tell the GUI about the directory listing
|
# Tell the GUI about the directory listing
|
||||||
download_id = self.download_count
|
history_id = self.cur_history_id
|
||||||
self.download_count += 1
|
self.cur_history_id += 1
|
||||||
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_STARTED, '/{}'.format(path), {
|
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_STARTED, '/{}'.format(path), {
|
||||||
'id': download_id,
|
'id': history_id,
|
||||||
'method': request.method,
|
'method': request.method,
|
||||||
'directory_listing': True
|
'status_code': 200
|
||||||
})
|
})
|
||||||
|
|
||||||
# If filesystem_path is None, this is the root directory listing
|
# If filesystem_path is None, this is the root directory listing
|
||||||
@ -144,10 +143,10 @@ class SendBaseModeWeb:
|
|||||||
path = request.path
|
path = request.path
|
||||||
|
|
||||||
# Tell GUI the individual file started
|
# Tell GUI the individual file started
|
||||||
download_id = self.download_count
|
history_id = self.cur_history_id
|
||||||
self.download_count += 1
|
self.cur_history_id += 1
|
||||||
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_STARTED, path, {
|
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_STARTED, path, {
|
||||||
'id': download_id,
|
'id': history_id,
|
||||||
'filesize': filesize,
|
'filesize': filesize,
|
||||||
'method': request.method
|
'method': request.method
|
||||||
})
|
})
|
||||||
@ -178,7 +177,7 @@ class SendBaseModeWeb:
|
|||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_PROGRESS, path, {
|
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_PROGRESS, path, {
|
||||||
'id': download_id,
|
'id': history_id,
|
||||||
'bytes': downloaded_bytes
|
'bytes': downloaded_bytes
|
||||||
})
|
})
|
||||||
done = False
|
done = False
|
||||||
@ -188,7 +187,7 @@ class SendBaseModeWeb:
|
|||||||
|
|
||||||
# Tell the GUI the individual file was canceled
|
# Tell the GUI the individual file was canceled
|
||||||
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_CANCELED, path, {
|
self.web.add_request(self.web.REQUEST_INDIVIDUAL_FILE_CANCELED, path, {
|
||||||
'id': download_id
|
'id': history_id
|
||||||
})
|
})
|
||||||
|
|
||||||
fp.close()
|
fp.close()
|
||||||
|
@ -60,10 +60,6 @@ class ShareModeWeb(SendBaseModeWeb):
|
|||||||
static_url_path=self.web.static_url_path))
|
static_url_path=self.web.static_url_path))
|
||||||
return self.web.add_security_headers(r)
|
return self.web.add_security_headers(r)
|
||||||
|
|
||||||
# Each download has a unique id
|
|
||||||
download_id = self.download_count
|
|
||||||
self.download_count += 1
|
|
||||||
|
|
||||||
# Prepare some variables to use inside generate() function below
|
# Prepare some variables to use inside generate() function below
|
||||||
# which is outside of the request context
|
# which is outside of the request context
|
||||||
shutdown_func = request.environ.get('werkzeug.server.shutdown')
|
shutdown_func = request.environ.get('werkzeug.server.shutdown')
|
||||||
@ -81,8 +77,10 @@ class ShareModeWeb(SendBaseModeWeb):
|
|||||||
self.filesize = self.download_filesize
|
self.filesize = self.download_filesize
|
||||||
|
|
||||||
# Tell GUI the download started
|
# Tell GUI the download started
|
||||||
|
history_id = self.cur_history_id
|
||||||
|
self.cur_history_id += 1
|
||||||
self.web.add_request(self.web.REQUEST_STARTED, path, {
|
self.web.add_request(self.web.REQUEST_STARTED, path, {
|
||||||
'id': download_id,
|
'id': history_id,
|
||||||
'use_gzip': use_gzip
|
'use_gzip': use_gzip
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -102,7 +100,7 @@ class ShareModeWeb(SendBaseModeWeb):
|
|||||||
# The user has canceled the download, so stop serving the file
|
# The user has canceled the download, so stop serving the file
|
||||||
if not self.web.stop_q.empty():
|
if not self.web.stop_q.empty():
|
||||||
self.web.add_request(self.web.REQUEST_CANCELED, path, {
|
self.web.add_request(self.web.REQUEST_CANCELED, path, {
|
||||||
'id': download_id
|
'id': history_id
|
||||||
})
|
})
|
||||||
break
|
break
|
||||||
|
|
||||||
@ -124,7 +122,7 @@ class ShareModeWeb(SendBaseModeWeb):
|
|||||||
sys.stdout.flush()
|
sys.stdout.flush()
|
||||||
|
|
||||||
self.web.add_request(self.web.REQUEST_PROGRESS, path, {
|
self.web.add_request(self.web.REQUEST_PROGRESS, path, {
|
||||||
'id': download_id,
|
'id': history_id,
|
||||||
'bytes': downloaded_bytes
|
'bytes': downloaded_bytes
|
||||||
})
|
})
|
||||||
self.web.done = False
|
self.web.done = False
|
||||||
@ -135,7 +133,7 @@ class ShareModeWeb(SendBaseModeWeb):
|
|||||||
|
|
||||||
# tell the GUI the download has canceled
|
# tell the GUI the download has canceled
|
||||||
self.web.add_request(self.web.REQUEST_CANCELED, path, {
|
self.web.add_request(self.web.REQUEST_CANCELED, path, {
|
||||||
'id': download_id
|
'id': history_id
|
||||||
})
|
})
|
||||||
|
|
||||||
fp.close()
|
fp.close()
|
||||||
|
@ -63,6 +63,9 @@ class Web:
|
|||||||
self.auth = HTTPBasicAuth()
|
self.auth = HTTPBasicAuth()
|
||||||
self.auth.error_handler(self.error401)
|
self.auth.error_handler(self.error401)
|
||||||
|
|
||||||
|
# This tracks the history id
|
||||||
|
self.cur_history_id = 0
|
||||||
|
|
||||||
# Verbose mode?
|
# Verbose mode?
|
||||||
if self.common.verbose:
|
if self.common.verbose:
|
||||||
self.verbose_mode()
|
self.verbose_mode()
|
||||||
@ -193,20 +196,52 @@ class Web:
|
|||||||
self.force_shutdown()
|
self.force_shutdown()
|
||||||
print("Someone has made too many wrong attempts to guess your password, so OnionShare has stopped the server. Start sharing again and send the recipient a new address to share.")
|
print("Someone has made too many wrong attempts to guess your password, so OnionShare has stopped the server. Start sharing again and send the recipient a new address to share.")
|
||||||
|
|
||||||
|
history_id = self.cur_history_id
|
||||||
|
self.cur_history_id += 1
|
||||||
|
self.add_request(self.REQUEST_INDIVIDUAL_FILE_STARTED, '{}'.format(request.path), {
|
||||||
|
'id': history_id,
|
||||||
|
'method': request.method,
|
||||||
|
'status_code': 401
|
||||||
|
})
|
||||||
|
|
||||||
r = make_response(render_template('401.html', static_url_path=self.static_url_path), 401)
|
r = make_response(render_template('401.html', static_url_path=self.static_url_path), 401)
|
||||||
return self.add_security_headers(r)
|
return self.add_security_headers(r)
|
||||||
|
|
||||||
def error403(self):
|
def error403(self):
|
||||||
|
history_id = self.cur_history_id
|
||||||
|
self.cur_history_id += 1
|
||||||
|
self.add_request(self.REQUEST_INDIVIDUAL_FILE_STARTED, '{}'.format(request.path), {
|
||||||
|
'id': history_id,
|
||||||
|
'method': request.method,
|
||||||
|
'status_code': 403
|
||||||
|
})
|
||||||
|
|
||||||
self.add_request(Web.REQUEST_OTHER, request.path)
|
self.add_request(Web.REQUEST_OTHER, request.path)
|
||||||
r = make_response(render_template('403.html', static_url_path=self.static_url_path), 403)
|
r = make_response(render_template('403.html', static_url_path=self.static_url_path), 403)
|
||||||
return self.add_security_headers(r)
|
return self.add_security_headers(r)
|
||||||
|
|
||||||
def error404(self):
|
def error404(self):
|
||||||
|
history_id = self.cur_history_id
|
||||||
|
self.cur_history_id += 1
|
||||||
|
self.add_request(self.REQUEST_INDIVIDUAL_FILE_STARTED, '{}'.format(request.path), {
|
||||||
|
'id': history_id,
|
||||||
|
'method': request.method,
|
||||||
|
'status_code': 404
|
||||||
|
})
|
||||||
|
|
||||||
self.add_request(Web.REQUEST_OTHER, request.path)
|
self.add_request(Web.REQUEST_OTHER, request.path)
|
||||||
r = make_response(render_template('404.html', static_url_path=self.static_url_path), 404)
|
r = make_response(render_template('404.html', static_url_path=self.static_url_path), 404)
|
||||||
return self.add_security_headers(r)
|
return self.add_security_headers(r)
|
||||||
|
|
||||||
def error405(self):
|
def error405(self):
|
||||||
|
history_id = self.cur_history_id
|
||||||
|
self.cur_history_id += 1
|
||||||
|
self.add_request(self.REQUEST_INDIVIDUAL_FILE_STARTED, '{}'.format(request.path), {
|
||||||
|
'id': history_id,
|
||||||
|
'method': request.method,
|
||||||
|
'status_code': 405
|
||||||
|
})
|
||||||
|
|
||||||
r = make_response(render_template('405.html', static_url_path=self.static_url_path), 405)
|
r = make_response(render_template('405.html', static_url_path=self.static_url_path), 405)
|
||||||
return self.add_security_headers(r)
|
return self.add_security_headers(r)
|
||||||
|
|
||||||
|
@ -28,17 +28,6 @@ class WebsiteModeWeb(SendBaseModeWeb):
|
|||||||
"""
|
"""
|
||||||
Render the onionshare website.
|
Render the onionshare website.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Each download has a unique id
|
|
||||||
visit_id = self.visit_count
|
|
||||||
self.visit_count += 1
|
|
||||||
|
|
||||||
# Tell GUI the page has been visited
|
|
||||||
self.web.add_request(self.web.REQUEST_STARTED, path, {
|
|
||||||
'id': visit_id,
|
|
||||||
'action': 'visit'
|
|
||||||
})
|
|
||||||
|
|
||||||
return self.render_logic(path)
|
return self.render_logic(path)
|
||||||
|
|
||||||
def directory_listing_template(self, path, files, dirs):
|
def directory_listing_template(self, path, files, dirs):
|
||||||
|
@ -394,9 +394,9 @@ class IndividualFileHistoryItem(HistoryItem):
|
|||||||
self.progress_bar.hide()
|
self.progress_bar.hide()
|
||||||
return
|
return
|
||||||
|
|
||||||
# Is this a directory listing?
|
# Is a status code already sent?
|
||||||
if self.directory_listing:
|
if 'status_code' in data:
|
||||||
self.status_code_label.setText("200")
|
self.status_code_label.setText("{}".format(data['status_code']))
|
||||||
self.status = HistoryItem.STATUS_FINISHED
|
self.status = HistoryItem.STATUS_FINISHED
|
||||||
self.progress_bar.hide()
|
self.progress_bar.hide()
|
||||||
return
|
return
|
||||||
@ -415,6 +415,7 @@ class IndividualFileHistoryItem(HistoryItem):
|
|||||||
|
|
||||||
self.progress_bar.setValue(downloaded_bytes)
|
self.progress_bar.setValue(downloaded_bytes)
|
||||||
if downloaded_bytes == self.progress_bar.total_bytes:
|
if downloaded_bytes == self.progress_bar.total_bytes:
|
||||||
|
self.status_code_label.setText("200")
|
||||||
self.progress_bar.hide()
|
self.progress_bar.hide()
|
||||||
self.status = HistoryItem.STATUS_FINISHED
|
self.status = HistoryItem.STATUS_FINISHED
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user