mirror of
https://github.com/onionshare/onionshare.git
synced 2025-01-26 11:13:00 -03:00
Clean ui, add strings, fix web listing logic
This commit is contained in:
parent
391c82f2a6
commit
0c6dbe4c8a
4 changed files with 39 additions and 54 deletions
|
@ -81,24 +81,27 @@ class WebsiteModeWeb(object):
|
||||||
|
|
||||||
self.web.add_request(self.web.REQUEST_LOAD, request.path)
|
self.web.add_request(self.web.REQUEST_LOAD, request.path)
|
||||||
|
|
||||||
|
print(self.file_info)
|
||||||
|
|
||||||
|
filelist = []
|
||||||
if self.file_info['files']:
|
if self.file_info['files']:
|
||||||
self.website_folder = os.path.dirname(self.file_info['files'][0]['filename'])
|
self.website_folder = os.path.dirname(self.file_info['files'][0]['filename'])
|
||||||
|
filelist = [v['basename'] for v in self.file_info['files']]
|
||||||
elif self.file_info['dirs']:
|
elif self.file_info['dirs']:
|
||||||
self.website_folder = self.file_info['dirs'][0]['filename']
|
self.website_folder = self.file_info['dirs'][0]['filename']
|
||||||
|
filelist = os.listdir(self.website_folder)
|
||||||
else:
|
else:
|
||||||
return self.web.error404()
|
return self.web.error404()
|
||||||
|
|
||||||
if any((fname == 'index.html') for fname in os.listdir(self.website_folder)):
|
if any((fname == 'index.html') for fname in filelist):
|
||||||
self.web.app.static_url_path = self.website_folder
|
self.web.app.static_url_path = self.website_folder
|
||||||
self.web.app.static_folder = self.website_folder
|
self.web.app.static_folder = self.website_folder
|
||||||
if not os.path.isfile(os.path.join(self.website_folder, page_path)):
|
if not os.path.isfile(os.path.join(self.website_folder, page_path)):
|
||||||
page_path = os.path.join(page_path, 'index.html')
|
page_path = os.path.join(page_path, 'index.html')
|
||||||
|
|
||||||
return send_from_directory(self.website_folder, page_path)
|
return send_from_directory(self.website_folder, page_path)
|
||||||
|
elif any(os.path.isfile(os.path.join(self.website_folder, i)) for i in filelist):
|
||||||
elif any(os.path.isfile(os.path.join(self.website_folder, i)) for i in os.listdir(self.website_folder)):
|
|
||||||
filenames = []
|
filenames = []
|
||||||
for i in os.listdir(self.website_folder):
|
for i in filelist:
|
||||||
filenames.append(os.path.join(self.website_folder, i))
|
filenames.append(os.path.join(self.website_folder, i))
|
||||||
|
|
||||||
self.set_file_info(filenames)
|
self.set_file_info(filenames)
|
||||||
|
|
|
@ -341,6 +341,27 @@ class ReceiveHistoryItem(HistoryItem):
|
||||||
self.label.setText(self.get_canceled_label_text(self.started))
|
self.label.setText(self.get_canceled_label_text(self.started))
|
||||||
|
|
||||||
|
|
||||||
|
class VisitHistoryItem(HistoryItem):
|
||||||
|
"""
|
||||||
|
Download history item, for share mode
|
||||||
|
"""
|
||||||
|
def __init__(self, common, id, total_bytes):
|
||||||
|
super(VisitHistoryItem, self).__init__()
|
||||||
|
self.common = common
|
||||||
|
|
||||||
|
self.id = id
|
||||||
|
self.visited = time.time()
|
||||||
|
self.visited_dt = datetime.fromtimestamp(self.visited)
|
||||||
|
|
||||||
|
# Label
|
||||||
|
self.label = QtWidgets.QLabel(strings._('gui_visit_started').format(self.started_dt.strftime("%b %d, %I:%M%p")))
|
||||||
|
|
||||||
|
# Layout
|
||||||
|
layout = QtWidgets.QVBoxLayout()
|
||||||
|
layout.addWidget(self.label)
|
||||||
|
self.setLayout(layout)
|
||||||
|
|
||||||
|
|
||||||
class HistoryItemList(QtWidgets.QScrollArea):
|
class HistoryItemList(QtWidgets.QScrollArea):
|
||||||
"""
|
"""
|
||||||
List of items
|
List of items
|
||||||
|
|
|
@ -27,7 +27,7 @@ from onionshare.web import Web
|
||||||
|
|
||||||
from ..file_selection import FileSelection
|
from ..file_selection import FileSelection
|
||||||
from .. import Mode
|
from .. import Mode
|
||||||
from ..history import History, ToggleHistory, DownloadHistoryItem
|
from ..history import History, ToggleHistory, VisitHistoryItem
|
||||||
from ...widgets import Alert
|
from ...widgets import Alert
|
||||||
|
|
||||||
class WebsiteMode(Mode):
|
class WebsiteMode(Mode):
|
||||||
|
@ -130,7 +130,7 @@ class WebsiteMode(Mode):
|
||||||
The shutdown timer expired, should we stop the server? Returns a bool
|
The shutdown timer expired, should we stop the server? Returns a bool
|
||||||
"""
|
"""
|
||||||
# If there were no attempts to download the share, or all downloads are done, we can stop
|
# If there were no attempts to download the share, or all downloads are done, we can stop
|
||||||
if self.web.website_mode.download_count == 0 or self.web.done:
|
if self.web.website_mode.visit_count == 0 or self.web.done:
|
||||||
self.server_status.stop_server()
|
self.server_status.stop_server()
|
||||||
self.server_status_label.setText(strings._('close_on_timeout'))
|
self.server_status_label.setText(strings._('close_on_timeout'))
|
||||||
return True
|
return True
|
||||||
|
@ -144,7 +144,7 @@ class WebsiteMode(Mode):
|
||||||
Starting the server.
|
Starting the server.
|
||||||
"""
|
"""
|
||||||
# Reset web counters
|
# Reset web counters
|
||||||
self.web.website_mode.download_count = 0
|
self.web.website_mode.visit_count = 0
|
||||||
self.web.error404_count = 0
|
self.web.error404_count = 0
|
||||||
|
|
||||||
# Hide and reset the downloads if we have previously shared
|
# Hide and reset the downloads if we have previously shared
|
||||||
|
@ -201,11 +201,10 @@ class WebsiteMode(Mode):
|
||||||
|
|
||||||
def cancel_server_custom(self):
|
def cancel_server_custom(self):
|
||||||
"""
|
"""
|
||||||
Stop the compression thread on cancel
|
Log that the server has been cancelled
|
||||||
"""
|
"""
|
||||||
if self.compress_thread:
|
self.common.log('WebsiteMode', 'cancel_server')
|
||||||
self.common.log('WebsiteMode', 'cancel_server: quitting compress thread')
|
|
||||||
self.compress_thread.quit()
|
|
||||||
|
|
||||||
def handle_tor_broke_custom(self):
|
def handle_tor_broke_custom(self):
|
||||||
"""
|
"""
|
||||||
|
@ -217,7 +216,7 @@ class WebsiteMode(Mode):
|
||||||
"""
|
"""
|
||||||
Handle REQUEST_LOAD event.
|
Handle REQUEST_LOAD event.
|
||||||
"""
|
"""
|
||||||
self.system_tray.showMessage(strings._('systray_page_loaded_title'), strings._('systray_download_page_loaded_message'))
|
self.system_tray.showMessage(strings._('systray_site_loaded_title'), strings._('systray_site_page_loaded_message'))
|
||||||
|
|
||||||
def handle_request_started(self, event):
|
def handle_request_started(self, event):
|
||||||
"""
|
"""
|
||||||
|
@ -226,52 +225,12 @@ class WebsiteMode(Mode):
|
||||||
|
|
||||||
filesize = self.web.website_mode.download_filesize
|
filesize = self.web.website_mode.download_filesize
|
||||||
|
|
||||||
item = DownloadHistoryItem(self.common, event["data"]["id"], filesize)
|
item = VisitHistoryItem(self.common, event["data"]["id"], filesize)
|
||||||
self.history.add(event["data"]["id"], item)
|
self.history.add(event["data"]["id"], item)
|
||||||
self.toggle_history.update_indicator(True)
|
self.toggle_history.update_indicator(True)
|
||||||
self.history.in_progress_count += 1
|
self.history.in_progress_count += 1
|
||||||
self.history.update_in_progress()
|
self.history.update_in_progress()
|
||||||
|
|
||||||
self.system_tray.showMessage(strings._('systray_download_started_title'), strings._('systray_download_started_message'))
|
|
||||||
|
|
||||||
def handle_request_progress(self, event):
|
|
||||||
"""
|
|
||||||
Handle REQUEST_PROGRESS event.
|
|
||||||
"""
|
|
||||||
self.history.update(event["data"]["id"], event["data"]["bytes"])
|
|
||||||
|
|
||||||
# Is the download complete?
|
|
||||||
if event["data"]["bytes"] == self.web.website_mode.filesize:
|
|
||||||
self.system_tray.showMessage(strings._('systray_download_completed_title'), strings._('systray_download_completed_message'))
|
|
||||||
|
|
||||||
# Update completed and in progress labels
|
|
||||||
self.history.completed_count += 1
|
|
||||||
self.history.in_progress_count -= 1
|
|
||||||
self.history.update_completed()
|
|
||||||
self.history.update_in_progress()
|
|
||||||
|
|
||||||
# Close on finish?
|
|
||||||
if self.common.settings.get('close_after_first_download'):
|
|
||||||
self.server_status.stop_server()
|
|
||||||
self.status_bar.clearMessage()
|
|
||||||
self.server_status_label.setText(strings._('closing_automatically'))
|
|
||||||
else:
|
|
||||||
if self.server_status.status == self.server_status.STATUS_STOPPED:
|
|
||||||
self.history.cancel(event["data"]["id"])
|
|
||||||
self.history.in_progress_count = 0
|
|
||||||
self.history.update_in_progress()
|
|
||||||
|
|
||||||
def handle_request_canceled(self, event):
|
|
||||||
"""
|
|
||||||
Handle REQUEST_CANCELED event.
|
|
||||||
"""
|
|
||||||
self.history.cancel(event["data"]["id"])
|
|
||||||
|
|
||||||
# Update in progress count
|
|
||||||
self.history.in_progress_count -= 1
|
|
||||||
self.history.update_in_progress()
|
|
||||||
self.system_tray.showMessage(strings._('systray_download_canceled_title'), strings._('systray_download_canceled_message'))
|
|
||||||
|
|
||||||
def on_reload_settings(self):
|
def on_reload_settings(self):
|
||||||
"""
|
"""
|
||||||
If there were some files listed for sharing, we should be ok to re-enable
|
If there were some files listed for sharing, we should be ok to re-enable
|
||||||
|
|
|
@ -114,6 +114,7 @@
|
||||||
"gui_use_legacy_v2_onions_checkbox": "Use legacy addresses",
|
"gui_use_legacy_v2_onions_checkbox": "Use legacy addresses",
|
||||||
"gui_save_private_key_checkbox": "Use a persistent address",
|
"gui_save_private_key_checkbox": "Use a persistent address",
|
||||||
"gui_share_url_description": "<b>Anyone</b> with this OnionShare address can <b>download</b> your files using the <b>Tor Browser</b>: <img src='{}' />",
|
"gui_share_url_description": "<b>Anyone</b> with this OnionShare address can <b>download</b> your files using the <b>Tor Browser</b>: <img src='{}' />",
|
||||||
|
"gui_website_url_description": "<b>Anyone</b> with this OnionShare address can <b>visit</b> your website using the <b>Tor Browser</b>: <img src='{}' />",
|
||||||
"gui_receive_url_description": "<b>Anyone</b> with this OnionShare address can <b>upload</b> files to your computer using the <b>Tor Browser</b>: <img src='{}' />",
|
"gui_receive_url_description": "<b>Anyone</b> with this OnionShare address can <b>upload</b> files to your computer using the <b>Tor Browser</b>: <img src='{}' />",
|
||||||
"gui_url_label_persistent": "This share will not auto-stop.<br><br>Every subsequent share reuses the address. (To use one-time addresses, turn off \"Use persistent address\" in the settings.)",
|
"gui_url_label_persistent": "This share will not auto-stop.<br><br>Every subsequent share reuses the address. (To use one-time addresses, turn off \"Use persistent address\" in the settings.)",
|
||||||
"gui_url_label_stay_open": "This share will not auto-stop.",
|
"gui_url_label_stay_open": "This share will not auto-stop.",
|
||||||
|
@ -168,6 +169,7 @@
|
||||||
"gui_share_mode_autostop_timer_waiting": "Waiting to finish sending",
|
"gui_share_mode_autostop_timer_waiting": "Waiting to finish sending",
|
||||||
"gui_receive_mode_no_files": "No Files Received Yet",
|
"gui_receive_mode_no_files": "No Files Received Yet",
|
||||||
"gui_receive_mode_autostop_timer_waiting": "Waiting to finish receiving",
|
"gui_receive_mode_autostop_timer_waiting": "Waiting to finish receiving",
|
||||||
|
"gui_visit_started": "Someone has visited your website {}",
|
||||||
"receive_mode_upload_starting": "Upload of total size {} is starting",
|
"receive_mode_upload_starting": "Upload of total size {} is starting",
|
||||||
"days_first_letter": "d",
|
"days_first_letter": "d",
|
||||||
"hours_first_letter": "h",
|
"hours_first_letter": "h",
|
||||||
|
|
Loading…
Add table
Reference in a new issue