Remove unnecessary censorship class invocation, which breaks CLI mode right now.

Fix Website and Chat modes with auto-stop timer in CLI mode.

Add 'poetry run onionshare-cli' tests to CircleCI to catch CLI runtime bugs.
This commit is contained in:
Miguel Jacq 2021-11-12 11:43:09 +11:00
parent da94b92d18
commit f5e4d70731
No known key found for this signature in database
GPG Key ID: EEA4341C6D97A0B6
2 changed files with 15 additions and 17 deletions

View File

@ -30,6 +30,10 @@ jobs:
command: |
cd ~/repo/cli
poetry run pytest -v ./tests
poetry run onionshare-cli --local-only ./tests --auto-stop-timer 2
poetry run onionshare-cli --local-only --receive --auto-stop-timer 2
poetry run onionshare-cli --local-only --website ../docs --auto-stop-timer 2
poetry run onionshare-cli --local-only --chat --auto-stop-timer 2
test-gui:
docker:

View File

@ -27,8 +27,6 @@ from datetime import datetime
from datetime import timedelta
from .common import Common, CannotFindTor
from .censorship import CensorshipCircumvention
from .meek import Meek, MeekNotRunning
from .web import Web
from .onion import TorErrorProtocolError, TorTooOldEphemeral, TorTooOldStealth, Onion
from .onionshare import OnionShare
@ -285,20 +283,6 @@ def main(cwd=None):
# Create the Web object
web = Web(common, False, mode_settings, mode)
# Create the Meek object and start the meek client
# meek = Meek(common)
# meek.start()
# Create the CensorshipCircumvention object to make
# API calls to Tor over Meek
censorship = CensorshipCircumvention(common, meek)
# Example: request recommended bridges, pretending to be from China, using
# domain fronting.
# censorship_recommended_settings = censorship.request_settings(country="cn")
# print(censorship_recommended_settings)
# Clean up the meek subprocess once we're done working with the censorship circumvention API
# meek.cleanup()
# Start the Onion object
try:
onion = Onion(common, use_tmp_dir=True)
@ -474,12 +458,18 @@ def main(cwd=None):
if app.autostop_timer > 0:
# if the auto-stop timer was set and has run out, stop the server
if not app.autostop_timer_thread.is_alive():
if mode == "share" or (mode == "website"):
if mode == "share":
# If there were no attempts to download the share, or all downloads are done, we can stop
if web.share_mode.cur_history_id == 0 or web.done:
print("Stopped because auto-stop timer ran out")
web.stop(app.port)
break
if mode == "website":
# If there were no attempts to visit the website, or all downloads are done, we can stop
if web.website_mode.cur_history_id == 0 or web.done:
print("Stopped because auto-stop timer ran out")
web.stop(app.port)
break
if mode == "receive":
if (
web.receive_mode.cur_history_id == 0
@ -489,6 +479,10 @@ def main(cwd=None):
web.stop(app.port)
break
web.receive_mode.can_upload = False
if mode == "chat":
print("Stopped because auto-stop timer ran out")
web.stop(app.port)
break
# Allow KeyboardInterrupt exception to be handled with threads
# https://stackoverflow.com/questions/3788208/python-threading-ignores-keyboardinterrupt-exception
time.sleep(0.2)