diff options
author | Micah Lee <micah@micahflee.com> | 2021-04-11 13:33:58 -0700 |
---|---|---|
committer | Micah Lee <micah@micahflee.com> | 2021-04-11 13:33:58 -0700 |
commit | 29970d38ffebb10dcdcd4b9c7fad9a960c27daaf (patch) | |
tree | 94c9c203409a18f2f5fffd914214c5deffac2660 /cli/onionshare_cli/__init__.py | |
parent | f4d71182d68458df6e6b42154a7eb7a1709dbaaf (diff) | |
download | onionshare-29970d38ffebb10dcdcd4b9c7fad9a960c27daaf.tar.gz onionshare-29970d38ffebb10dcdcd4b9c7fad9a960c27daaf.zip |
Implement receive mode webhooks in CLI
Diffstat (limited to 'cli/onionshare_cli/__init__.py')
-rw-r--r-- | cli/onionshare_cli/__init__.py | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/cli/onionshare_cli/__init__.py b/cli/onionshare_cli/__init__.py index c40bf6a0..1bd0582c 100644 --- a/cli/onionshare_cli/__init__.py +++ b/cli/onionshare_cli/__init__.py @@ -193,6 +193,12 @@ def main(cwd=None): default=None, help="Receive files: Save files received to this directory", ) + parser.add_argument( + "--webhook-url", + metavar="webhook_url", + default=None, + help="Receive files: URL to receive webhook notifications", + ) # Website args parser.add_argument( "--disable_csp", @@ -235,6 +241,7 @@ def main(cwd=None): client_auth = bool(args.client_auth) autostop_sharing = not bool(args.no_autostop_sharing) data_dir = args.data_dir + webhook_url = args.webhook_url disable_csp = bool(args.disable_csp) verbose = bool(args.verbose) @@ -283,6 +290,8 @@ def main(cwd=None): if mode == "receive": if data_dir: mode_settings.set("receive", "data_dir", data_dir) + if webhook_url: + mode_settings.set("receive", "webhook_url", webhook_url) if mode == "website": mode_settings.set("website", "disable_csp", disable_csp) else: @@ -354,10 +363,23 @@ def main(cwd=None): # Start the onionshare app try: common.settings.load() - if not mode_settings.get("general", "public"): - web.generate_password(mode_settings.get("onion", "password")) - else: + + if mode_settings.get("general", "public"): web.password = None + else: + web.generate_password(mode_settings.get("onion", "password")) + + # Receive mode needs to know the tor proxy details for webhooks + if mode == "receive": + if local_only: + web.proxies = None + else: + (socks_address, socks_port) = onion.get_tor_socks_port() + web.proxies = { + "http": f"socks5://{socks_address}:{socks_port}", + "https": f"socks5://{socks_address}:{socks_port}", + } + app = OnionShare(common, onion, local_only, autostop_timer) app.choose_port() |