aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMicah Lee <micah@micahflee.com>2021-05-10 18:27:16 -0700
committerMicah Lee <micah@micahflee.com>2021-05-10 18:27:16 -0700
commit6dcdef6a155d10abece0f1a54a90109bf31e7e1e (patch)
treeb6f765b1fb66bd5101a183e5a41ec0820f944db6
parentdb5bc1ea10447c1989a2bf8c8782f9a2fff32bfc (diff)
parentcd5eff4ba795c2c66be68ff3dd246b71fdfba457 (diff)
downloadonionshare-6dcdef6a155d10abece0f1a54a90109bf31e7e1e.tar.gz
onionshare-6dcdef6a155d10abece0f1a54a90109bf31e7e1e.zip
Merge branch 'update-locales' into develop
-rw-r--r--cli/onionshare_cli/settings.py7
-rw-r--r--docs/README.md72
-rwxr-xr-xdocs/check-weblate.py153
-rw-r--r--docs/gettext/.doctrees/advanced.doctreebin30413 -> 30413 bytes
-rw-r--r--docs/gettext/.doctrees/develop.doctreebin35678 -> 37736 bytes
-rw-r--r--docs/gettext/.doctrees/environment.picklebin37841 -> 37975 bytes
-rw-r--r--docs/gettext/.doctrees/features.doctreebin47169 -> 47169 bytes
-rw-r--r--docs/gettext/.doctrees/help.doctreebin7679 -> 7679 bytes
-rw-r--r--docs/gettext/.doctrees/index.doctreebin3439 -> 3439 bytes
-rw-r--r--docs/gettext/.doctrees/install.doctreebin20613 -> 20613 bytes
-rw-r--r--docs/gettext/.doctrees/security.doctreebin13526 -> 13526 bytes
-rw-r--r--docs/gettext/.doctrees/tor.doctreebin30114 -> 30114 bytes
-rw-r--r--docs/gettext/develop.pot28
-rw-r--r--docs/poetry.lock162
-rw-r--r--docs/pyproject.toml1
-rw-r--r--docs/source/develop.rst197
16 files changed, 505 insertions, 115 deletions
diff --git a/cli/onionshare_cli/settings.py b/cli/onionshare_cli/settings.py
index 59fcf8df..54a0fcd9 100644
--- a/cli/onionshare_cli/settings.py
+++ b/cli/onionshare_cli/settings.py
@@ -64,12 +64,13 @@ class Settings(object):
"da": "Dansk", # Danish
"nl": "Nederlands", # Dutch
"en": "English", # English
- "fi": "Suomi", # Finnish
+ # "fi": "Suomi", # Finnish
"fr": "Français", # French
"gl": "Galego", # Galician
"de": "Deutsch", # German
"el": "Ελληνικά", # Greek
"is": "Íslenska", # Icelandic
+ "id": "Bahasa Indonesia", # Indonesian
# "ga": "Gaeilge", # Irish
"it": "Italiano", # Italian
"ja": "日本語", # Japanese
@@ -79,10 +80,10 @@ class Settings(object):
"pl": "Polski", # Polish
"pt_BR": "Português (Brasil)", # Portuguese Brazil
"pt_PT": "Português (Portugal)", # Portuguese Portugal
- "sk": "Slovenčina", # Slovak
# "ro": "Română", # Romanian
"ru": "Русский", # Russian
- # "sr_Latn": "Srpska (latinica)", # Serbian (latin)
+ "sr_Latn": "Srpska (latinica)", # Serbian (latin)
+ "sk": "Slovenčina", # Slovak
"es": "Español", # Spanish
"sv": "Svenska", # Swedish
# "te": "తెలుగు", # Telugu
diff --git a/docs/README.md b/docs/README.md
index fe026802..029217bb 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -36,3 +36,75 @@ sphinx-intl update -p build/gettext -l de
# Build German translated document
make -e SPHINXOPTS="-D language='de'" html
```
+
+## Discoving which translations are >90% complete
+
+Each OnionShare release should only include a language if >90% of the strings have been translated into it. The script `check-weblate.py` script can be used to make a few hundreds weblate API requests to determine this for you automatically. It requires using your weblate API key, which you can find in your [user profile](https://hosted.weblate.org/accounts/profile/#api).
+
+```
+$ poetry run ./check-weblate.py $WEBLATE_API_KEY
+GET https://hosted.weblate.org/api/projects/onionshare/languages/
+GET https://hosted.weblate.org/api/translations/onionshare/translations/hr/
+GET https://hosted.weblate.org/api/translations/onionshare/translations/eo/
+GET https://hosted.weblate.org/api/translations/onionshare/translations/ja/
+<...snip...>
+GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/wo/ | error 404
+GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/ar/
+GET https://hosted.weblate.org/api/translations/onionshare/doc-tor/it/
+
+App translations >= 100%
+=======================
+English (en), 100.0%
+
+App translations >= 90%
+=======================
+Arabic (ar), 95.0%
+Bengali (bn), 95.0%
+Catalan (ca), 93.5%
+Chinese (Simplified) (zh_Hans), 98.0%
+Chinese (Traditional) (zh_Hant), 95.0%
+Croatian (hr), 95.0%
+Danish (da), 94.5%
+Dutch (nl), 92.6%
+French (fr), 98.0%
+Galician (gl), 97.5%
+German (de), 95.0%
+Greek (el), 98.0%
+Icelandic (is), 98.0%
+Indonesian (id), 98.0%
+Italian (it), 94.5%
+Japanese (ja), 94.5%
+Kurdish (Central) (ckb), 94.5%
+Norwegian Bokmål (nb_NO), 98.0%
+Polish (pl), 95.0%
+Portuguese (Brazil) (pt_BR), 95.0%
+Portuguese (Portugal) (pt_PT), 92.6%
+Russian (ru), 95.0%
+Serbian (latin) (sr_Latn), 95.0%
+Slovak (sk), 94.5%
+Spanish (es), 98.0%
+Swedish (sv), 94.5%
+Turkish (tr), 98.0%
+Ukrainian (uk), 98.0%
+
+App translations >= 80%
+=======================
+Finnish (fi), 88.1%
+
+Docs translations >= 100%
+========================
+English (en), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%
+Turkish (tr), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%
+Ukrainian (uk), 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%
+
+Docs translations >= 90%
+========================
+
+
+Docs translations >= 80%
+========================
+German (de), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%
+Greek (el), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%
+Russian (ru), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%
+Spanish (es), 90.6%, 100.0%, 82.1%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%, 100.0%
+```
diff --git a/docs/check-weblate.py b/docs/check-weblate.py
new file mode 100755
index 00000000..c3e1be03
--- /dev/null
+++ b/docs/check-weblate.py
@@ -0,0 +1,153 @@
+#!/usr/bin/env python3
+import sys
+import httpx
+import asyncio
+import time
+
+
+api_token = None
+languages = {}
+app_translations = {}
+docs_translations = {}
+
+
+async def api(path):
+ url = f"https://hosted.weblate.org{path}"
+
+ async with httpx.AsyncClient() as client:
+ r = await client.get(
+ url, headers={"Authorization": f"Token {api_token}"}, timeout=30.0
+ )
+
+ if r.status_code == 200:
+ print(f"GET {url}")
+ return r.json()
+ else:
+ print(f"GET {url} | error {r.status_code}")
+ return None
+
+
+async def get_app_translation(lang_code):
+ global app_translations
+ obj = await api(f"/api/translations/onionshare/translations/{lang_code}/")
+ if obj:
+ app_translations[lang_code] = obj["translated_percent"]
+
+
+async def get_docs_translation(component, lang_code):
+ global docs_translations
+ obj = await api(f"/api/translations/onionshare/{component}/{lang_code}/")
+ if obj:
+ if component not in docs_translations:
+ docs_translations[component] = {}
+ docs_translations[component][lang_code] = obj["translated_percent"]
+
+
+async def app_percent_output(percent_min, percent_max=101):
+ out = []
+ for lang_code in languages:
+ if (
+ app_translations[lang_code] >= percent_min
+ and app_translations[lang_code] < percent_max
+ ):
+ out.append(
+ f"{languages[lang_code]} ({lang_code}), {app_translations[lang_code]}%"
+ )
+
+ out.sort()
+
+ print(f"App translations >= {percent_min}%")
+ print("=======================")
+ print("\n".join(out))
+
+ print("")
+
+
+async def docs_percent_output(percent_min, exclude=[]):
+ out = []
+ for lang_code in languages:
+ include_language = True
+ percentages = []
+
+ for component in docs_translations:
+ if lang_code not in docs_translations[component]:
+ include_language = False
+ break
+
+ percentages.append(docs_translations[component][lang_code])
+
+ if docs_translations[component][lang_code] < percent_min:
+ include_language = False
+ break
+
+ if include_language:
+ percentages = [f"{p}%" for p in percentages]
+ percentages = ", ".join(percentages)
+ out.append(f"{languages[lang_code]} ({lang_code}), {percentages}")
+
+ excluded = []
+ for s in out:
+ if s not in exclude:
+ excluded.append(s)
+
+ excluded.sort()
+
+ print(f"Docs translations >= {percent_min}%")
+ print("========================")
+ print("\n".join(excluded))
+
+ print("")
+ return excluded
+
+
+async def main():
+ global api_token, languages, app_translations, docs_translations
+
+ if len(sys.argv) != 2:
+ print(f"Usage: {sys.argv[0]} API_KEY")
+ print(
+ "You can find your personal API key at: https://hosted.weblate.org/accounts/profile/#api"
+ )
+ return
+
+ api_token = sys.argv[1]
+
+ # Get the list of languages in the OnionShare project
+ res = await api("/api/projects/onionshare/languages/")
+ for obj in res:
+ languages[obj["code"]] = obj["language"]
+
+ # Get the app translations for each language
+ await asyncio.gather(*[get_app_translation(lang_code) for lang_code in languages])
+
+ # Get the documentation translations for each component for each language
+ for component in [
+ "doc-advanced",
+ "doc-develop",
+ "doc-features",
+ "doc-help",
+ "doc-index",
+ "doc-install",
+ "doc-security",
+ "doc-sphinx",
+ "doc-tor",
+ ]:
+ docs_futures = []
+ for lang_code in languages:
+ docs_futures.append(get_docs_translation(component, lang_code))
+
+ await asyncio.gather(*docs_futures)
+
+ print("")
+
+ await app_percent_output(100)
+ await app_percent_output(90, 100)
+ await app_percent_output(80, 90)
+
+ out100 = await docs_percent_output(100)
+ out90 = await docs_percent_output(90, out100)
+ await docs_percent_output(80, out100 + out90)
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/docs/gettext/.doctrees/advanced.doctree b/docs/gettext/.doctrees/advanced.doctree
index f3300dc9..3a142d54 100644
--- a/docs/gettext/.doctrees/advanced.doctree
+++ b/docs/gettext/.doctrees/advanced.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/develop.doctree b/docs/gettext/.doctrees/develop.doctree
index c50d1041..8c48f7e0 100644
--- a/docs/gettext/.doctrees/develop.doctree
+++ b/docs/gettext/.doctrees/develop.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/environment.pickle b/docs/gettext/.doctrees/environment.pickle
index 4127bd0e..4b580f66 100644
--- a/docs/gettext/.doctrees/environment.pickle
+++ b/docs/gettext/.doctrees/environment.pickle
Binary files differ
diff --git a/docs/gettext/.doctrees/features.doctree b/docs/gettext/.doctrees/features.doctree
index d5025345..339a9870 100644
--- a/docs/gettext/.doctrees/features.doctree
+++ b/docs/gettext/.doctrees/features.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/help.doctree b/docs/gettext/.doctrees/help.doctree
index 9af01519..32e71df0 100644
--- a/docs/gettext/.doctrees/help.doctree
+++ b/docs/gettext/.doctrees/help.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/index.doctree b/docs/gettext/.doctrees/index.doctree
index bcb4fc44..6ae4d2f8 100644
--- a/docs/gettext/.doctrees/index.doctree
+++ b/docs/gettext/.doctrees/index.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/install.doctree b/docs/gettext/.doctrees/install.doctree
index 5e50e29a..ec507658 100644
--- a/docs/gettext/.doctrees/install.doctree
+++ b/docs/gettext/.doctrees/install.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/security.doctree b/docs/gettext/.doctrees/security.doctree
index 7cd39d9e..0d5182b7 100644
--- a/docs/gettext/.doctrees/security.doctree
+++ b/docs/gettext/.doctrees/security.doctree
Binary files differ
diff --git a/docs/gettext/.doctrees/tor.doctree b/docs/gettext/.doctrees/tor.doctree
index ca578150..378ebe7d 100644
--- a/docs/gettext/.doctrees/tor.doctree
+++ b/docs/gettext/.doctrees/tor.doctree
Binary files differ
diff --git a/docs/gettext/develop.pot b/docs/gettext/develop.pot
index 734070ed..8ef36381 100644
--- a/docs/gettext/develop.pot
+++ b/docs/gettext/develop.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: OnionShare 2.3.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2021-05-03 21:48-0700\n"
+"POT-Creation-Date: 2021-05-10 18:26-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -72,54 +72,54 @@ msgstr ""
msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
msgstr ""
-#: ../../source/develop.rst:117
+#: ../../source/develop.rst:121
msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
msgstr ""
-#: ../../source/develop.rst:121
+#: ../../source/develop.rst:125
msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
msgstr ""
-#: ../../source/develop.rst:124
+#: ../../source/develop.rst:128
msgid "Local Only"
msgstr ""
-#: ../../source/develop.rst:126
+#: ../../source/develop.rst:130
msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
msgstr ""
-#: ../../source/develop.rst:164
+#: ../../source/develop.rst:167
msgid "In this case, you load the URL ``http://onionshare:train-system@127.0.0.1:17635`` in a normal web-browser like Firefox, instead of using the Tor Browser."
msgstr ""
-#: ../../source/develop.rst:167
+#: ../../source/develop.rst:170
msgid "Contributing Translations"
msgstr ""
-#: ../../source/develop.rst:169
+#: ../../source/develop.rst:172
msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
msgstr ""
-#: ../../source/develop.rst:171
+#: ../../source/develop.rst:174
msgid "To help translate, make a Hosted Weblate account and start contributing."
msgstr ""
-#: ../../source/develop.rst:174
+#: ../../source/develop.rst:177
msgid "Suggestions for Original English Strings"
msgstr ""
-#: ../../source/develop.rst:176
+#: ../../source/develop.rst:179
msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
msgstr ""
-#: ../../source/develop.rst:178
+#: ../../source/develop.rst:181
msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
msgstr ""
-#: ../../source/develop.rst:182
+#: ../../source/develop.rst:185
msgid "Status of Translations"
msgstr ""
-#: ../../source/develop.rst:183
+#: ../../source/develop.rst:186
msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
msgstr ""
diff --git a/docs/poetry.lock b/docs/poetry.lock
index 1be892f9..3bc4f44a 100644
--- a/docs/poetry.lock
+++ b/docs/poetry.lock
@@ -7,6 +7,14 @@ optional = false
python-versions = "*"
[[package]]
+name = "async-generator"
+version = "1.10"
+description = "Async generators and context managers for Python 3.5+"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[[package]]
name = "babel"
version = "2.9.0"
description = "Internationalization utilities"
@@ -50,6 +58,17 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
+name = "contextvars"
+version = "2.4"
+description = "PEP 567 Backport"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+immutables = ">=0.9"
+
+[[package]]
name = "docutils"
version = "0.16"
description = "Docutils -- Python Documentation Utilities"
@@ -58,6 +77,48 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
+name = "h11"
+version = "0.12.0"
+description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1"
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[[package]]
+name = "httpcore"
+version = "0.13.3"
+description = "A minimal low-level HTTP client."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+h11 = ">=0.11,<0.13"
+sniffio = ">=1.0.0,<2.0.0"
+
+[package.extras]
+http2 = ["h2 (>=3,<5)"]
+
+[[package]]
+name = "httpx"
+version = "0.18.1"
+description = "The next generation HTTP client."
+category = "main"
+optional = false
+python-versions = ">=3.6"
+
+[package.dependencies]
+async-generator = {version = "*", markers = "python_version < \"3.7\""}
+certifi = "*"
+httpcore = ">=0.13.0,<0.14.0"
+rfc3986 = {version = ">=1.3,<2", extras = ["idna2008"]}
+sniffio = "*"
+
+[package.extras]
+brotli = ["brotlicffi (>=1.0.0,<2.0.0)"]
+http2 = ["h2 (>=3.0.0,<4.0.0)"]
+
+[[package]]
name = "idna"
version = "2.10"
description = "Internationalized Domain Names in Applications (IDNA)"
@@ -74,6 +135,17 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
+name = "immutables"
+version = "0.15"
+description = "Immutable Collections"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[package.extras]
+test = ["flake8 (>=3.8.4,<3.9.0)", "pycodestyle (>=2.6.0,<2.7.0)"]
+
+[[package]]
name = "jinja2"
version = "2.11.2"
description = "A very fast and expressive template engine."
@@ -150,6 +222,20 @@ security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
[[package]]
+name = "rfc3986"
+version = "1.5.0"
+description = "Validating URI References per RFC 3986"
+category = "main"
+optional = false
+python-versions = "*"
+
+[package.dependencies]
+idna = {version = "*", optional = true, markers = "extra == \"idna2008\""}
+
+[package.extras]
+idna2008 = ["idna"]
+
+[[package]]
name = "six"
version = "1.15.0"
description = "Python 2 and 3 compatibility utilities"
@@ -158,6 +244,17 @@ optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
+name = "sniffio"
+version = "1.2.0"
+description = "Sniff out which async library your code is running under"
+category = "main"
+optional = false
+python-versions = ">=3.5"
+
+[package.dependencies]
+contextvars = {version = ">=2.1", markers = "python_version < \"3.7\""}
+
+[[package]]
name = "snowballstemmer"
version = "2.0.0"
description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms."
@@ -314,13 +411,17 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
[metadata]
lock-version = "1.1"
python-versions = "^3.6"
-content-hash = "c10cf732636ae0ea2c57b2a5698505a78b3d396c1656a9cd23f3f86ac825c762"
+content-hash = "d146005969ffef66c679fac3bac5aeb4e03b1ec2852e1afefdfe4087a5be789c"
[metadata.files]
alabaster = [
{file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"},
{file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"},
]
+async-generator = [
+ {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"},
+ {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"},
+]
babel = [
{file = "Babel-2.9.0-py2.py3-none-any.whl", hash = "sha256:9d35c22fcc79893c3ecc85ac4a56cde1ecf3f19c540bba0922308a6c06ca6fa5"},
{file = "Babel-2.9.0.tar.gz", hash = "sha256:da031ab54472314f210b0adcff1588ee5d1d1d0ba4dbd07b94dba82bde791e05"},
@@ -341,10 +442,25 @@ colorama = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
]
+contextvars = [
+ {file = "contextvars-2.4.tar.gz", hash = "sha256:f38c908aaa59c14335eeea12abea5f443646216c4e29380d7bf34d2018e2c39e"},
+]
docutils = [
{file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
{file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
]
+h11 = [
+ {file = "h11-0.12.0-py3-none-any.whl", hash = "sha256:36a3cb8c0a032f56e2da7084577878a035d3b61d104230d4bd49c0c6b555a9c6"},
+ {file = "h11-0.12.0.tar.gz", hash = "sha256:47222cb6067e4a307d535814917cd98fd0a57b6788ce715755fa2b6c28b56042"},
+]
+httpcore = [
+ {file = "httpcore-0.13.3-py3-none-any.whl", hash = "sha256:ff614f0ef875b9e5fe0bdd459b31ea0eea282ff12dc82add83d68b3811ee94ad"},
+ {file = "httpcore-0.13.3.tar.gz", hash = "sha256:5d674b57a11275904d4fd0819ca02f960c538e4472533620f322fc7db1ea0edc"},
+]
+httpx = [
+ {file = "httpx-0.18.1-py3-none-any.whl", hash = "sha256:ad2e3db847be736edc4b272c4d5788790a7e5789ef132fc6b5fef8aeb9e9f6e0"},
+ {file = "httpx-0.18.1.tar.gz", hash = "sha256:0a2651dd2b9d7662c70d12ada5c290abcf57373b9633515fe4baa9f62566086f"},
+]
idna = [
{file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"},
{file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"},
@@ -353,6 +469,23 @@ imagesize = [
{file = "imagesize-1.2.0-py2.py3-none-any.whl", hash = "sha256:6965f19a6a2039c7d48bca7dba2473069ff854c36ae6f19d2cde309d998228a1"},
{file = "imagesize-1.2.0.tar.gz", hash = "sha256:b1f6b5a4eab1f73479a50fb79fcf729514a900c341d8503d62a62dbc4127a2b1"},
]
+immutables = [
+ {file = "immutables-0.15-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:6728f4392e3e8e64b593a5a0cd910a1278f07f879795517e09f308daed138631"},
+ {file = "immutables-0.15-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f0836cd3bdc37c8a77b192bbe5f41dbcc3ce654db048ebbba89bdfe6db7a1c7a"},
+ {file = "immutables-0.15-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:8703d8abfd8687932f2a05f38e7de270c3a6ca3bd1c1efb3c938656b3f2f985a"},
+ {file = "immutables-0.15-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:b8ad986f9b532c026f19585289384b0769188fcb68b37c7f0bd0df9092a6ca54"},
+ {file = "immutables-0.15-cp36-cp36m-win_amd64.whl", hash = "sha256:6f117d9206165b9dab8fd81c5129db757d1a044953f438654236ed9a7a4224ae"},
+ {file = "immutables-0.15-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:b75ade826920c4e490b1bb14cf967ac14e61eb7c5562161c5d7337d61962c226"},
+ {file = "immutables-0.15-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:b7e13c061785e34f73c4f659861f1b3e4a5fd918e4395c84b21c4e3d449ebe27"},
+ {file = "immutables-0.15-cp37-cp37m-win_amd64.whl", hash = "sha256:3035849accee4f4e510ed7c94366a40e0f5fef9069fbe04a35f4787b13610a4a"},
+ {file = "immutables-0.15-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:b04fa69174e0c8f815f9c55f2a43fc9e5a68452fab459a08e904a74e8471639f"},
+ {file = "immutables-0.15-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:141c2e9ea515a3a815007a429f0b47a578ebeb42c831edaec882a245a35fffca"},
+ {file = "immutables-0.15-cp38-cp38-win_amd64.whl", hash = "sha256:cbe8c64640637faa5535d539421b293327f119c31507c33ca880bd4f16035eb6"},
+ {file = "immutables-0.15-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:a0a4e4417d5ef4812d7f99470cd39347b58cb927365dd2b8da9161040d260db0"},
+ {file = "immutables-0.15-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3b15c08c71c59e5b7c2470ef949d49ff9f4263bb77f488422eaa157da84d6999"},
+ {file = "immutables-0.15-cp39-cp39-win_amd64.whl", hash = "sha256:2283a93c151566e6830aee0e5bee55fc273455503b43aa004356b50f9182092b"},
+ {file = "immutables-0.15.tar.gz", hash = "sha256:3713ab1ebbb6946b7ce1387bb9d1d7f5e09c45add58c2a2ee65f963c171e746b"},
+]
jinja2 = [
{file = "Jinja2-2.11.2-py2.py3-none-any.whl", hash = "sha256:f0a4641d3cf955324a89c04f3d94663aa4d638abe8f733ecd3582848e1c37035"},
{file = "Jinja2-2.11.2.tar.gz", hash = "sha256:89aab215427ef59c34ad58735269eb58b1a5808103067f7bb9d5836c651b3bb0"},
@@ -376,20 +509,39 @@ markupsafe = [
{file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"},
{file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"},
+ {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"},
+ {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"},
+ {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"},
+ {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"},
{file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"},
+ {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"},
+ {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"},
+ {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"},
+ {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
{file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
{file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"},
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"},
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"},
+ {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"},
{file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
{file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"},
+ {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"},
{file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
]
packaging = [
@@ -412,10 +564,18 @@ requests = [
{file = "requests-2.25.0-py2.py3-none-any.whl", hash = "sha256:e786fa28d8c9154e6a4de5d46a1d921b8749f8b74e28bde23768e5e16eece998"},
{file = "requests-2.25.0.tar.gz", hash = "sha256:7f1a0b932f4a60a1a65caa4263921bb7d9ee911957e0ae4a23a6dd08185ad5f8"},
]
+rfc3986 = [
+ {file = "rfc3986-1.5.0-py2.py3-none-any.whl", hash = "sha256:a86d6e1f5b1dc238b218b012df0aa79409667bb209e58da56d0b94704e712a97"},
+ {file = "rfc3986-1.5.0.tar.gz", hash = "sha256:270aaf10d87d0d4e095063c65bf3ddbc6ee3d0b226328ce21e036f946e421835"},
+]
six = [
{file = "six-1.15.0-py2.py3-none-any.whl", hash = "sha256:8b74bedcbbbaca38ff6d7491d76f2b06b3592611af620f8426e82dddb04a5ced"},
{file = "six-1.15.0.tar.gz", hash = "sha256:30639c035cdb23534cd4aa2dd52c3bf48f06e5f4a941509c8bafd8ce11080259"},
]
+sniffio = [
+ {file = "sniffio-1.2.0-py3-none-any.whl", hash = "sha256:471b71698eac1c2112a40ce2752bb2f4a4814c22a54a3eed3676bc0f5ca9f663"},
+ {file = "sniffio-1.2.0.tar.gz", hash = "sha256:c4666eecec1d3f50960c6bdf61ab7bc350648da6c126e3cf6898d8cd4ddcd3de"},
+]
snowballstemmer = [
{file = "snowballstemmer-2.0.0-py2.py3-none-any.whl", hash = "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0"},
{file = "snowballstemmer-2.0.0.tar.gz", hash = "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52"},
diff --git a/docs/pyproject.toml b/docs/pyproject.toml
index 1b1cb289..fa1c3c55 100644
--- a/docs/pyproject.toml
+++ b/docs/pyproject.toml
@@ -9,6 +9,7 @@ python = "^3.6"
sphinx = "^3.2.1"
sphinx-rtd-theme = "^0.5.0"
sphinx-intl = "^2.0.1"
+httpx = "^0.18.1"
[tool.poetry.dev-dependencies]
diff --git a/docs/source/develop.rst b/docs/source/develop.rst
index ac8703d2..6ac1da61 100644
--- a/docs/source/develop.rst
+++ b/docs/source/develop.rst
@@ -41,79 +41,83 @@ When developing, it's convenient to run OnionShare from a terminal and add the `
This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::
$ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes
- OnionShare 2.3 | https://onionshare.org/
-
- @@@@@@@@@
- @@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ___ _
- @@@@@@ @@@@@@@@@@@@@ / _ \ (_)
- @@@@ @ @@@@@@@@@@@ | | | |_ __ _ ___ _ __
- @@@@@@@@ @@@@@@@@@@ | | | | '_ \| |/ _ \| '_ \
- @@@@@@@@@@@@ @@@@@@@@@@ \ \_/ / | | | | (_) | | | |
- @@@@@@@@@@@@@@@@ @@@@@@@@@ \___/|_| |_|_|\___/|_| |_|
- @@@@@@@@@ @@@@@@@@@@@@@@@@ _____ _
- @@@@@@@@@@ @@@@@@@@@@@@ / ___| |
- @@@@@@@@@@ @@@@@@@@ \ `--.| |__ __ _ _ __ ___
- @@@@@@@@@@@ @ @@@@ `--. \ '_ \ / _` | '__/ _ \
- @@@@@@@@@@@@@ @@@@@@ /\__/ / | | | (_| | | | __/
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \____/|_| |_|\__,_|_| \___|
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@
- @@@@@@@@@
-
- [Nov 10 2020 20:50:35] Settings.__init__
- [Nov 10 2020 20:50:35] Settings.load
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=wordlist.txt
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
- [Nov 10 2020 20:50:35] ModeSettings.load: creating /home/user/.config/onionshare/persistent/abstain-reprogram-elevate.json
- [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.public = False
- [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.autostart_timer = 0
- [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.autostop_timer = 0
- [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.legacy = False
- [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: general.client_auth = False
- [Nov 10 2020 20:50:35] ModeSettings.set: updating abstain-reprogram-elevate: share.autostop_sharing = True
- [Nov 10 2020 20:50:35] Web.__init__: is_gui=False, mode=share
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=static
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=static, path=/home/user/code/onionshare/cli/onionshare_cli/resources/static
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=templates
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=templates, path=/home/user/code/onionshare/cli/onionshare_cli/resources/templates
- [Nov 10 2020 20:50:35] Web.generate_static_url_path: new static_url_path is /static_qa7rlyxwnfodczrriv3tj5yeoq
- [Nov 10 2020 20:50:35] ShareModeWeb.init
- [Nov 10 2020 20:50:35] Onion.__init__
- [Nov 10 2020 20:50:35] Onion.connect
- [Nov 10 2020 20:50:35] Settings.__init__
- [Nov 10 2020 20:50:35] Settings.load
- [Nov 10 2020 20:50:35] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmpz53ztq3m
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=torrc_template
- [Nov 10 2020 20:50:35] Common.get_resource_path: filename=torrc_template, path=/home/user/code/onionshare/cli/onionshare_cli/resources/torrc_template
+ ╭───────────────────────────────────────────╮
+ │ * ▄▄█████▄▄ * │
+ │ ▄████▀▀▀████▄ * │
+ │ ▀▀█▀ ▀██▄ │
+ │ * ▄█▄ ▀██▄ │
+ │ ▄█████▄ ███ -+- │
+ │ ███ ▀█████▀ │
+ │ ▀██▄ ▀█▀ │
+ │ * ▀██▄ ▄█▄▄ * │
+ │ * ▀████▄▄▄████▀ │
+ │ ▀▀█████▀▀ │
+ │ -+- * │
+ │ ▄▀▄ ▄▀▀ █ │
+ │ █ █ ▀ ▀▄ █ │
+ │ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
+ │ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
+ │ │
+ │ v2.3.2.dev1 │
+ │ │
+ │ https://onionshare.org/ │
+ ╰───────────────────────────────────────────╯
+
+ [May 10 2021 18:24:02] Settings.__init__
+ [May 10 2021 18:24:02] Settings.load
+ [May 10 2021 18:24:02] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=wordlist.txt
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
+ [May 10 2021 18:24:02] ModeSettings.load: creating /home/user/.config/onionshare/persistent/tattered-handgun-stress.json
+ [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.title = None
+ [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.public = False
+ [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.autostart_timer = 0
+ [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.autostop_timer = 0
+ [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.legacy = False
+ [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: general.client_auth = False
+ [May 10 2021 18:24:02] ModeSettings.set: updating tattered-handgun-stress: share.autostop_sharing = True
+ [May 10 2021 18:24:02] Web.__init__: is_gui=False, mode=share
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=static
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=static, path=/home/user/code/onionshare/cli/onionshare_cli/resources/static
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=templates
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=templates, path=/home/user/code/onionshare/cli/onionshare_cli/resources/templates
+ [May 10 2021 18:24:02] Web.generate_static_url_path: new static_url_path is /static_4yxrx2mzi5uzkblklpzd46mwke
+ [May 10 2021 18:24:02] ShareModeWeb.init
+ [May 10 2021 18:24:02] Onion.__init__
+ [May 10 2021 18:24:02] Onion.connect
+ [May 10 2021 18:24:02] Settings.__init__
+ [May 10 2021 18:24:02] Settings.load
+ [May 10 2021 18:24:02] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
+ [May 10 2021 18:24:02] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmpw6u0nz8l
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=torrc_template
+ [May 10 2021 18:24:02] Common.get_resource_path: filename=torrc_template, path=/home/user/code/onionshare/cli/onionshare_cli/resources/torrc_template
Connecting to the Tor network: 100% - Done
- [Nov 10 2020 20:50:42] Onion.connect: Connected to tor 0.4.4.5
- [Nov 10 2020 20:50:42] Settings.load
- [Nov 10 2020 20:50:42] Web.generate_password: saved_password=None
- [Nov 10 2020 20:50:42] Common.get_resource_path: filename=wordlist.txt
- [Nov 10 2020 20:50:42] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
- [Nov 10 2020 20:50:42] Web.generate_password: built random password: "pedometer-grower"
- [Nov 10 2020 20:50:42] OnionShare.__init__
- [Nov 10 2020 20:50:42] OnionShare.start_onion_service
- [Nov 10 2020 20:50:42] Onion.start_onion_service: port=17610
- [Nov 10 2020 20:50:42] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3
- [Nov 10 2020 20:50:46] ModeSettings.set: updating abstain-reprogram-elevate: general.service_id = x5duatuhpiwfzb23iwpjanalvtxdhoj43ria44s53ryy5diywvbu24ad
- [Nov 10 2020 20:50:46] ModeSettings.set: updating abstain-reprogram-elevate: onion.private_key = uIXJzY+88tGSAXAjQxdwkzb2L7jHv467RIX1WDieVkFEZjEA7st2p/6uVCM4KM3L9PdShTPScuUv2IEbVQammA==
+ [May 10 2021 18:24:10] Onion.connect: Connected to tor 0.4.5.7
+ [May 10 2021 18:24:10] Settings.load
+ [May 10 2021 18:24:10] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
+ [May 10 2021 18:24:10] Web.generate_password: saved_password=None
+ [May 10 2021 18:24:10] Common.get_resource_path: filename=wordlist.txt
+ [May 10 2021 18:24:10] Common.get_resource_path: filename=wordlist.txt, path=/home/user/code/onionshare/cli/onionshare_cli/resources/wordlist.txt
+ [May 10 2021 18:24:10] Web.generate_password: built random password: "tipping-colonize"
+ [May 10 2021 18:24:10] OnionShare.__init__
+ [May 10 2021 18:24:10] OnionShare.start_onion_service
+ [May 10 2021 18:24:10] Onion.start_onion_service: port=17645
+ [May 10 2021 18:24:10] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3
+ [May 10 2021 18:24:14] ModeSettings.set: updating tattered-handgun-stress: general.service_id = omxjamkys6diqxov7lxru2upromdprxjuq3czdhen6hrshzd4sll2iyd
+ [May 10 2021 18:24:14] ModeSettings.set: updating tattered-handgun-stress: onion.private_key = 6PhomJCjlWicmOyAAe0wnQoEM3vcyHBivrRGDy0hzm900fW5ITDJ6iv2+tluLoueYj81MhmnYeTOHDm8UGOfhg==
Compressing files.
- [Nov 10 2020 20:50:46] ShareModeWeb.init
- [Nov 10 2020 20:50:46] ShareModeWeb.set_file_info_custom
- [Nov 10 2020 20:50:46] ShareModeWeb.build_zipfile_list
- [Nov 10 2020 20:50:46] Web.start: port=17610
- * Running on http://127.0.0.1:17610/ (Press CTRL+C to quit)
-
+ [May 10 2021 18:24:14] ShareModeWeb.init
+ [May 10 2021 18:24:14] ShareModeWeb.set_file_info_custom
+ [May 10 2021 18:24:14] ShareModeWeb.build_zipfile_list
+ [May 10 2021 18:24:14] Web.start: port=17645
+ * Running on http://127.0.0.1:17645/ (Press CTRL+C to quit)
+
Give this address to the recipient:
- http://onionshare:pedometer-grower@x5duatuhpiwfzb23iwpjanalvtxdhoj43ria44s53ryy5diywvbu24ad.onion
-
+ http://onionshare:tipping-colonize@omxjamkys6diqxov7lxru2upromdprxjuq3czdhen6hrshzd4sll2iyd.onion
+
Press Ctrl+C to stop the server
+
You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::
common.log('OnionShareGui', 'start_server', 'I ran here')
@@ -127,38 +131,37 @@ Tor is slow, and it's often convenient to skip starting onion services altogethe
You can do this with the ``--local-only`` flag. For example::
$ poetry run onionshare-cli --local-only --receive
- OnionShare 2.3 | https://onionshare.org/
-
- @@@@@@@@@
- @@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ___ _
- @@@@@@ @@@@@@@@@@@@@ / _ \ (_)
- @@@@ @ @@@@@@@@@@@ | | | |_ __ _ ___ _ __
- @@@@@@@@ @@@@@@@@@@ | | | | '_ \| |/ _ \| '_ \
- @@@@@@@@@@@@ @@@@@@@@@@ \ \_/ / | | | | (_) | | | |
- @@@@@@@@@@@@@@@@ @@@@@@@@@ \___/|_| |_|_|\___/|_| |_|
- @@@@@@@@@ @@@@@@@@@@@@@@@@ _____ _
- @@@@@@@@@@ @@@@@@@@@@@@ / ___| |
- @@@@@@@@@@ @@@@@@@@ \ `--.| |__ __ _ _ __ ___
- @@@@@@@@@@@ @ @@@@ `--. \ '_ \ / _` | '__/ _ \
- @@@@@@@@@@@@@ @@@@@@ /\__/ / | | | (_| | | | __/
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ \____/|_| |_|\__,_|_| \___|
- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@@@@@@@
- @@@@@@@@@@@@@@@@@@@
- @@@@@@@@@
-
- * Running on http://127.0.0.1:17635/ (Press CTRL+C to quit)
-
+ ╭───────────────────────────────────────────╮
+ │ * ▄▄█████▄▄ * │
+ │ ▄████▀▀▀████▄ * │
+ │ ▀▀█▀ ▀██▄ │
+ │ * ▄█▄ ▀██▄ │
+ │ ▄█████▄ ███ -+- │
+ │ ███ ▀█████▀ │
+ │ ▀██▄ ▀█▀ │
+ │ * ▀██▄ ▄█▄▄ * │
+ │ * ▀████▄▄▄████▀ │
+ │ ▀▀█████▀▀ │
+ │ -+- * │
+ │ ▄▀▄ ▄▀▀ █ │
+ │ █ █ ▀ ▀▄ █ │
+ │ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
+ │ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
+ │ │
+ │ v2.3.2.dev1 │
+ │ │
+ │ https://onionshare.org/ │
+ ╰───────────────────────────────────────────╯
+
+ * Running on http://127.0.0.1:17617/ (Press CTRL+C to quit)
+
Files sent to you appear in this folder: /home/user/OnionShare
-
+
Warning: Receive mode lets people upload files to your computer. Some files can potentially take control of your computer if you open them. Only open things from people you trust, or if you know what you are doing.
-
+
Give this address to the sender:
- http://onionshare:train-system@127.0.0.1:17635
-
+ http://onionshare:ended-blah@127.0.0.1:17617
+
Press Ctrl+C to stop the server
In this case, you load the URL ``http://onionshare:train-system@127.0.0.1:17635`` in a normal web-browser like Firefox, instead of using the Tor Browser.