diff --git a/cli/onionshare_cli/__init__.py b/cli/onionshare_cli/__init__.py
index c046e472..a359f770 100644
--- a/cli/onionshare_cli/__init__.py
+++ b/cli/onionshare_cli/__init__.py
@@ -38,14 +38,6 @@ from .onionshare import OnionShare
from .mode_settings import ModeSettings
-def build_url(mode_settings, app, web):
- # Build the URL
- if mode_settings.get("general", "public"):
- return f"http://{app.onion_host}"
- else:
- return f"http://onionshare:{web.password}@{app.onion_host}"
-
-
def main(cwd=None):
"""
The main() function implements all of the logic that the command-line version of
@@ -113,7 +105,7 @@ def main(cwd=None):
action="store_true",
dest="public",
default=False,
- help="Don't use a password",
+ help="Don't use a private key",
)
parser.add_argument(
"--auto-start-timer",
@@ -129,20 +121,6 @@ def main(cwd=None):
default=0,
help="Stop onion service at schedule time (N seconds from now)",
)
- parser.add_argument(
- "--legacy",
- action="store_true",
- dest="legacy",
- default=False,
- help="Use legacy address (v2 onion service, not recommended)",
- )
- parser.add_argument(
- "--client-auth",
- action="store_true",
- dest="client_auth",
- default=False,
- help="Use client authorization (requires --legacy)",
- )
# Share args
parser.add_argument(
"--no-autostop-sharing",
@@ -215,8 +193,6 @@ def main(cwd=None):
public = bool(args.public)
autostart_timer = int(args.autostart_timer)
autostop_timer = int(args.autostop_timer)
- legacy = bool(args.legacy)
- client_auth = bool(args.client_auth)
autostop_sharing = not bool(args.no_autostop_sharing)
data_dir = args.data_dir
webhook_url = args.webhook_url
@@ -237,13 +213,6 @@ def main(cwd=None):
# Verbose mode?
common.verbose = verbose
- # client_auth can only be set if legacy is also set
- if client_auth and not legacy:
- print(
- "Client authentication (--client-auth) is only supported with with legacy onion services (--legacy)"
- )
- sys.exit()
-
# Re-load settings, if a custom config was passed in
if config_filename:
common.load_settings(config_filename)
@@ -264,8 +233,6 @@ def main(cwd=None):
mode_settings.set("general", "public", public)
mode_settings.set("general", "autostart_timer", autostart_timer)
mode_settings.set("general", "autostop_timer", autostop_timer)
- mode_settings.set("general", "legacy", legacy)
- mode_settings.set("general", "client_auth", client_auth)
if mode == "share":
mode_settings.set("share", "autostop_sharing", autostop_sharing)
if mode == "receive":
@@ -352,11 +319,6 @@ def main(cwd=None):
try:
common.settings.load()
- 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:
@@ -381,7 +343,7 @@ def main(cwd=None):
sys.exit()
app.start_onion_service(mode, mode_settings, False)
- url = build_url(mode_settings, app, web)
+ url = f"http://{app.onion_host}"
schedule = datetime.now() + timedelta(seconds=autostart_timer)
if mode == "receive":
print(
@@ -394,21 +356,21 @@ def main(cwd=None):
"what you are doing."
)
print("")
- if mode_settings.get("general", "client_auth"):
+ if not mode_settings.get("general", "public"):
print(
- f"Give this address and HidServAuth lineto your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
+ f"Give this address and private key to your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
- print(app.auth_string)
+ print(f"Private key: {app.auth_string}")
else:
print(
f"Give this address to your sender, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
else:
- if mode_settings.get("general", "client_auth"):
+ if not mode_settings.get("general", "public"):
print(
- f"Give this address and HidServAuth line to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
+ f"Give this address and private key to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
)
- print(app.auth_string)
+ print(f"Private key: {app.auth_string}")
else:
print(
f"Give this address to your recipient, and tell them it won't be accessible until: {schedule.strftime('%I:%M:%S%p, %b %d, %y')}"
@@ -426,7 +388,6 @@ def main(cwd=None):
sys.exit()
except (TorTooOldEphemeral, TorTooOldStealth, TorErrorProtocolError) as e:
print("")
- print(e.args[0])
sys.exit()
if mode == "website":
@@ -458,21 +419,14 @@ def main(cwd=None):
t.start()
try: # Trap Ctrl-C
- # Wait for web.generate_password() to finish running
time.sleep(0.2)
# start auto-stop timer thread
if app.autostop_timer > 0:
app.autostop_timer_thread.start()
- # Save the web password if we are using a persistent private key
- if mode_settings.get("persistent", "enabled"):
- if not mode_settings.get("onion", "password"):
- mode_settings.set("onion", "password", web.password)
- # mode_settings.save()
-
# Build the URL
- url = build_url(mode_settings, app, web)
+ url = f"http://{app.onion_host}"
print("")
if autostart_timer > 0:
@@ -490,21 +444,21 @@ def main(cwd=None):
)
print("")
- if mode_settings.get("general", "client_auth"):
- print("Give this address and HidServAuth to the sender:")
- print(url)
- print(app.auth_string)
- else:
+ if mode_settings.get("general", "public"):
print("Give this address to the sender:")
print(url)
- else:
- if mode_settings.get("general", "client_auth"):
- print("Give this address and HidServAuth line to the recipient:")
- print(url)
- print(app.auth_string)
else:
+ print("Give this address and private key to the sender:")
+ print(url)
+ print(f"Private key: {app.auth_string}")
+ else:
+ if mode_settings.get("general", "public"):
print("Give this address to the recipient:")
print(url)
+ else:
+ print("Give this address and private key to the recipient:")
+ print(url)
+ print(f"Private key: {app.auth_string}")
print("")
print("Press Ctrl+C to stop the server")
diff --git a/cli/onionshare_cli/mode_settings.py b/cli/onionshare_cli/mode_settings.py
index 47900997..47ff1c63 100644
--- a/cli/onionshare_cli/mode_settings.py
+++ b/cli/onionshare_cli/mode_settings.py
@@ -37,8 +37,8 @@ class ModeSettings:
self.default_settings = {
"onion": {
"private_key": None,
- "hidservauth_string": None,
- "password": None,
+ "client_auth_priv_key": None,
+ "client_auth_pub_key": None,
},
"persistent": {"mode": None, "enabled": False},
"general": {
@@ -46,8 +46,6 @@ class ModeSettings:
"public": False,
"autostart_timer": False,
"autostop_timer": False,
- "legacy": False,
- "client_auth": False,
"service_id": None,
},
"share": {"autostop_sharing": True, "filenames": []},
diff --git a/cli/onionshare_cli/onion.py b/cli/onionshare_cli/onion.py
index f9c7177e..7f6faa17 100644
--- a/cli/onionshare_cli/onion.py
+++ b/cli/onionshare_cli/onion.py
@@ -21,8 +21,8 @@ along with this program. If not, see .
from stem.control import Controller
from stem import ProtocolError, SocketClosed
from stem.connection import MissingPassword, UnreadableCookieFile, AuthenticationFailure
-from Crypto.PublicKey import RSA
import base64
+import nacl.public
import os
import tempfile
import subprocess
@@ -170,6 +170,20 @@ class Onion(object):
# Keep track of onions where it's important to gracefully close to prevent truncated downloads
self.graceful_close_onions = []
+ def key_str(self, key):
+ """
+ Returns a base32 decoded string of a key.
+ """
+ # bytes to base 32
+ key_bytes = bytes(key)
+ key_b32 = base64.b32encode(key_bytes)
+ # strip trailing ====
+ assert key_b32[-4:] == b'===='
+ key_b32 = key_b32[:-4]
+ # change from b'ASDF' to ASDF
+ s = key_b32.decode('utf-8')
+ return s
+
def connect(
self,
custom_settings=None,
@@ -570,14 +584,15 @@ class Onion(object):
callable(list_ephemeral_hidden_services) and self.tor_version >= "0.2.7.1"
)
- # Do the versions of stem and tor that I'm using support stealth onion services?
+ # Do the versions of stem and tor that I'm using support v3 stealth onion services?
try:
res = self.c.create_ephemeral_hidden_service(
{1: 1},
- basic_auth={"onionshare": None},
+ basic_auth=None,
await_publication=False,
key_type="NEW",
- key_content="RSA1024",
+ key_content="ED25519-V3",
+ client_auth_v3="E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA",
)
tmp_service_id = res.service_id
self.c.remove_ephemeral_hidden_service(tmp_service_id)
@@ -612,65 +627,58 @@ class Onion(object):
"Your version of Tor is too old, ephemeral onion services are not supported"
)
raise TorTooOldEphemeral()
- if mode_settings.get("general", "client_auth") and not self.supports_stealth:
- print(
- "Your version of Tor is too old, stealth onion services are not supported"
- )
- raise TorTooOldStealth()
-
- auth_cookie = None
- if mode_settings.get("general", "client_auth"):
- if mode_settings.get("onion", "hidservauth_string"):
- auth_cookie = mode_settings.get("onion", "hidservauth_string").split()[
- 2
- ]
- if auth_cookie:
- basic_auth = {"onionshare": auth_cookie}
- else:
- # If we had neither a scheduled auth cookie or a persistent hidservauth string,
- # set the cookie to 'None', which means Tor will create one for us
- basic_auth = {"onionshare": None}
- else:
- # Not using client auth at all
- basic_auth = None
if mode_settings.get("onion", "private_key"):
key_content = mode_settings.get("onion", "private_key")
- if self.is_v2_key(key_content):
- key_type = "RSA1024"
- else:
- # Assume it was a v3 key. Stem will throw an error if it's something illegible
- key_type = "ED25519-V3"
+ key_type = "ED25519-V3"
else:
+ key_content = "ED25519-V3"
key_type = "NEW"
- # Work out if we can support v3 onion services, which are preferred
- if self.supports_v3_onions and not mode_settings.get("general", "legacy"):
- key_content = "ED25519-V3"
- else:
- # fall back to v2 onion services
- key_content = "RSA1024"
-
- # v3 onions don't yet support basic auth. Our ticket:
- # https://github.com/onionshare/onionshare/issues/697
- if (
- key_type == "NEW"
- and key_content == "ED25519-V3"
- and not mode_settings.get("general", "legacy")
- ):
- basic_auth = None
debug_message = f"key_type={key_type}"
if key_type == "NEW":
debug_message += f", key_content={key_content}"
self.common.log("Onion", "start_onion_service", debug_message)
+
+ if mode_settings.get("general", "public"):
+ client_auth_priv_key = None
+ client_auth_pub_key = None
+ else:
+ if not self.supports_stealth:
+ print(
+ "Your version of Tor is too old, stealth onion services are not supported"
+ )
+ raise TorTooOldStealth()
+ else:
+ if key_type == "NEW" or not mode_settings.get("onion", "client_auth_priv_key"):
+ # Generate a new key pair for Client Auth on new onions, or if
+ # it's a persistent onion but for some reason we don't them
+ client_auth_priv_key_raw = nacl.public.PrivateKey.generate()
+ client_auth_priv_key = self.key_str(client_auth_priv_key_raw)
+ client_auth_pub_key = self.key_str(client_auth_priv_key_raw.public_key)
+ else:
+ # These should have been saved in settings from the previous run of a persistent onion
+ client_auth_priv_key = mode_settings.get("onion", "client_auth_priv_key")
+ client_auth_pub_key = mode_settings.get("onion", "client_auth_pub_key")
+
try:
- res = self.c.create_ephemeral_hidden_service(
- {80: port},
- await_publication=await_publication,
- basic_auth=basic_auth,
- key_type=key_type,
- key_content=key_content,
- )
+ if not self.supports_stealth:
+ res = self.c.create_ephemeral_hidden_service(
+ {80: port},
+ await_publication=await_publication,
+ basic_auth=None,
+ key_type=key_type,
+ key_content=key_content,
+ )
+ else:
+ res = self.c.create_ephemeral_hidden_service(
+ {80: port},
+ await_publication=await_publication,
+ basic_auth=None,
+ key_type=key_type,
+ key_content=key_content,
+ client_auth_v3=client_auth_pub_key,
+ )
except ProtocolError as e:
print("Tor error: {}".format(e.args[0]))
@@ -688,12 +696,20 @@ class Onion(object):
# Save the private key and hidservauth string
if not mode_settings.get("onion", "private_key"):
mode_settings.set("onion", "private_key", res.private_key)
- if mode_settings.get("general", "client_auth") and not mode_settings.get(
- "onion", "hidservauth_string"
- ):
- auth_cookie = list(res.client_auth.values())[0]
- self.auth_string = f"HidServAuth {onion_host} {auth_cookie}"
- mode_settings.set("onion", "hidservauth_string", self.auth_string)
+
+ # If using V3 onions and Client Auth, save both the private and public key
+ # because we need to send the public key to ADD_ONION (if we restart this
+ # same share at a later date), and the private key to the other user for
+ # their Tor Browser.
+ if not mode_settings.get("general", "public"):
+ mode_settings.set("onion", "client_auth_priv_key", client_auth_priv_key)
+ mode_settings.set("onion", "client_auth_pub_key", client_auth_pub_key)
+ # If we were pasting the client auth directly into the filesystem behind a Tor client,
+ # it would need to be in the format below. However, let's just set the private key
+ # by itself, as this can be pasted directly into Tor Browser, which is likely to
+ # be the most common use case.
+ # self.auth_string = f"{onion_host}:x25519:{client_auth_priv_key}"
+ self.auth_string = client_auth_priv_key
return onion_host
@@ -825,15 +841,3 @@ class Onion(object):
return ("127.0.0.1", 9150)
else:
return (self.settings.get("socks_address"), self.settings.get("socks_port"))
-
- def is_v2_key(self, key):
- """
- Helper function for determining if a key is RSA1024 (v2) or not.
- """
- try:
- # Import the key
- key = RSA.importKey(base64.b64decode(key))
- # Is this a v2 Onion key? (1024 bits) If so, we should keep using it.
- return key.n.bit_length() == 1024
- except Exception:
- return False
diff --git a/cli/onionshare_cli/onionshare.py b/cli/onionshare_cli/onionshare.py
index bd94100f..c2711b89 100644
--- a/cli/onionshare_cli/onionshare.py
+++ b/cli/onionshare_cli/onionshare.py
@@ -74,13 +74,15 @@ class OnionShare(object):
if self.local_only:
self.onion_host = f"127.0.0.1:{self.port}"
+ if not mode_settings.get("general", "public"):
+ self.auth_string = "E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA"
return
self.onion_host = self.onion.start_onion_service(
mode, mode_settings, self.port, await_publication
)
- if mode_settings.get("general", "client_auth"):
+ if not mode_settings.get("general", "public"):
self.auth_string = self.onion.auth_string
def stop_onion_service(self, mode_settings):
diff --git a/cli/onionshare_cli/resources/templates/401.html b/cli/onionshare_cli/resources/templates/401.html
deleted file mode 100644
index 5e43ca01..00000000
--- a/cli/onionshare_cli/resources/templates/401.html
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
diff --git a/cli/onionshare_cli/web/web.py b/cli/onionshare_cli/web/web.py
index 04919185..0f2dfe7e 100644
--- a/cli/onionshare_cli/web/web.py
+++ b/cli/onionshare_cli/web/web.py
@@ -34,7 +34,6 @@ from flask import (
send_file,
__version__ as flask_version,
)
-from flask_httpauth import HTTPBasicAuth
from flask_socketio import SocketIO
from .share_mode import ShareModeWeb
@@ -64,18 +63,16 @@ class Web:
REQUEST_STARTED = 1
REQUEST_PROGRESS = 2
REQUEST_CANCELED = 3
- REQUEST_RATE_LIMIT = 4
- REQUEST_UPLOAD_INCLUDES_MESSAGE = 5
- REQUEST_UPLOAD_FILE_RENAMED = 6
- REQUEST_UPLOAD_SET_DIR = 7
- REQUEST_UPLOAD_FINISHED = 8
- REQUEST_UPLOAD_CANCELED = 9
- REQUEST_INDIVIDUAL_FILE_STARTED = 10
- REQUEST_INDIVIDUAL_FILE_PROGRESS = 11
- REQUEST_INDIVIDUAL_FILE_CANCELED = 12
- REQUEST_ERROR_DATA_DIR_CANNOT_CREATE = 13
- REQUEST_OTHER = 14
- REQUEST_INVALID_PASSWORD = 15
+ REQUEST_UPLOAD_INCLUDES_MESSAGE = 4
+ REQUEST_UPLOAD_FILE_RENAMED = 5
+ REQUEST_UPLOAD_SET_DIR = 6
+ REQUEST_UPLOAD_FINISHED = 7
+ REQUEST_UPLOAD_CANCELED = 8
+ REQUEST_INDIVIDUAL_FILE_STARTED = 9
+ REQUEST_INDIVIDUAL_FILE_PROGRESS = 10
+ REQUEST_INDIVIDUAL_FILE_CANCELED = 11
+ REQUEST_ERROR_DATA_DIR_CANNOT_CREATE = 12
+ REQUEST_OTHER = 13
def __init__(self, common, is_gui, mode_settings, mode="share"):
self.common = common
@@ -92,8 +89,6 @@ class Web:
)
self.app.secret_key = self.common.random_string(8)
self.generate_static_url_path()
- self.auth = HTTPBasicAuth()
- self.auth.error_handler(self.error401)
# Verbose mode?
if self.common.verbose:
@@ -132,9 +127,6 @@ class Web:
]
self.q = queue.Queue()
- self.password = None
-
- self.reset_invalid_passwords()
self.done = False
@@ -199,28 +191,6 @@ class Web:
Common web app routes between all modes.
"""
- @self.auth.get_password
- def get_pw(username):
- if username == "onionshare":
- return self.password
- else:
- return None
-
- @self.app.before_request
- def conditional_auth_check():
- # Allow static files without basic authentication
- if request.path.startswith(self.static_url_path + "/"):
- return None
-
- # If public mode is disabled, require authentication
- if not self.settings.get("general", "public"):
-
- @self.auth.login_required
- def _check_login():
- return None
-
- return _check_login()
-
@self.app.errorhandler(404)
def not_found(e):
mode = self.get_mode()
@@ -260,31 +230,6 @@ class Web:
f"{self.common.get_resource_path('static')}/img/favicon.ico"
)
- def error401(self):
- auth = request.authorization
- if auth:
- if (
- auth["username"] == "onionshare"
- and auth["password"] not in self.invalid_passwords
- ):
- print(f"Invalid password guess: {auth['password']}")
- self.add_request(Web.REQUEST_INVALID_PASSWORD, data=auth["password"])
-
- self.invalid_passwords.append(auth["password"])
- self.invalid_passwords_count += 1
-
- if self.invalid_passwords_count == 20:
- self.add_request(Web.REQUEST_RATE_LIMIT)
- 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."
- )
-
- r = make_response(
- render_template("401.html", static_url_path=self.static_url_path), 401
- )
- return self.add_security_headers(r)
-
def error403(self):
self.add_request(Web.REQUEST_OTHER, request.path)
r = make_response(
@@ -362,21 +307,6 @@ class Web:
"""
self.q.put({"type": request_type, "path": path, "data": data})
- def generate_password(self, saved_password=None):
- self.common.log("Web", "generate_password", f"saved_password={saved_password}")
- if saved_password is not None and saved_password != "":
- self.password = saved_password
- self.common.log(
- "Web",
- "generate_password",
- f'saved_password sent, so password is: "{self.password}"',
- )
- else:
- self.password = self.common.build_password()
- self.common.log(
- "Web", "generate_password", f'built random password: "{self.password}"'
- )
-
def verbose_mode(self):
"""
Turn on verbose mode, which will log flask errors to a file.
@@ -386,10 +316,6 @@ class Web:
log_handler.setLevel(logging.WARNING)
self.app.logger.addHandler(log_handler)
- def reset_invalid_passwords(self):
- self.invalid_passwords_count = 0
- self.invalid_passwords = []
-
def force_shutdown(self):
"""
Stop the flask web server, from the context of the flask app.
@@ -446,18 +372,9 @@ class Web:
# To stop flask, load http://shutdown:[shutdown_password]@127.0.0.1/[shutdown_password]/shutdown
# (We're putting the shutdown_password in the path as well to make routing simpler)
if self.running:
- if self.password:
- requests.get(
- f"http://127.0.0.1:{port}/{self.shutdown_password}/shutdown",
- auth=requests.auth.HTTPBasicAuth("onionshare", self.password),
- )
- else:
- requests.get(
- f"http://127.0.0.1:{port}/{self.shutdown_password}/shutdown"
- )
-
- # Reset any password that was in use
- self.password = None
+ requests.get(
+ f"http://127.0.0.1:{port}/{self.shutdown_password}/shutdown"
+ )
def cleanup(self):
"""
diff --git a/cli/poetry.lock b/cli/poetry.lock
index a9a030ad..c51e1d62 100644
--- a/cli/poetry.lock
+++ b/cli/poetry.lock
@@ -1,32 +1,33 @@
[[package]]
-name = "atomicwrites"
-version = "1.4.0"
-description = "Atomic file writes."
category = "dev"
+description = "Atomic file writes."
+marker = "sys_platform == \"win32\""
+name = "atomicwrites"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.4.0"
[[package]]
-name = "attrs"
-version = "21.2.0"
-description = "Classes Without Boilerplate"
category = "dev"
+description = "Classes Without Boilerplate"
+name = "attrs"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "21.2.0"
[package.extras]
-dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
+dev = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"]
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"]
-tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
-tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
+tests = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"]
+tests_no_zope = ["coverage (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"]
[[package]]
-name = "bidict"
-version = "0.21.2"
-description = "The bidirectional mapping library for Python."
category = "main"
+description = "The bidirectional mapping library for Python."
+name = "bidict"
optional = false
python-versions = ">=3.6"
+version = "0.21.2"
[package.extras]
coverage = ["coverage (<6)", "pytest-cov (<3)"]
@@ -36,56 +37,67 @@ precommit = ["pre-commit (<3)"]
test = ["hypothesis (<6)", "py (<2)", "pytest (<7)", "pytest-benchmark (>=3.2.0,<4)", "sortedcollections (<2)", "sortedcontainers (<3)", "Sphinx (<4)", "sphinx-autodoc-typehints (<2)"]
[[package]]
-name = "certifi"
-version = "2021.5.30"
-description = "Python package for providing Mozilla's CA Bundle."
category = "main"
+description = "Python package for providing Mozilla's CA Bundle."
+name = "certifi"
optional = false
python-versions = "*"
+version = "2021.5.30"
[[package]]
-name = "chardet"
-version = "4.0.0"
+category = "main"
+description = "Foreign Function Interface for Python calling C code."
+name = "cffi"
+optional = false
+python-versions = "*"
+version = "1.14.6"
+
+[package.dependencies]
+pycparser = "*"
+
+[[package]]
+category = "main"
description = "Universal encoding detector for Python 2 and 3"
-category = "main"
+name = "chardet"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "4.0.0"
[[package]]
-name = "click"
-version = "7.1.2"
+category = "main"
description = "Composable command line interface toolkit"
-category = "main"
+name = "click"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "7.1.2"
[[package]]
-name = "colorama"
-version = "0.4.4"
+category = "main"
description = "Cross-platform colored terminal text."
-category = "main"
+name = "colorama"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "0.4.4"
[[package]]
-name = "dnspython"
-version = "1.16.0"
-description = "DNS toolkit"
category = "main"
+description = "DNS toolkit"
+name = "dnspython"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.16.0"
[package.extras]
DNSSEC = ["pycryptodome", "ecdsa (>=0.13)"]
IDNA = ["idna (>=2.1)"]
[[package]]
-name = "eventlet"
-version = "0.31.0"
-description = "Highly concurrent networking library"
category = "main"
+description = "Highly concurrent networking library"
+name = "eventlet"
optional = false
python-versions = "*"
+version = "0.31.0"
[package.dependencies]
dnspython = ">=1.15.0,<2.0.0"
@@ -93,18 +105,18 @@ greenlet = ">=0.3"
six = ">=1.10.0"
[[package]]
-name = "flask"
-version = "1.1.4"
-description = "A simple framework for building complex web applications."
category = "main"
+description = "A simple framework for building complex web applications."
+name = "flask"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "1.1.4"
[package.dependencies]
-click = ">=5.1,<8.0"
-itsdangerous = ">=0.24,<2.0"
Jinja2 = ">=2.10.1,<3.0"
Werkzeug = ">=0.15,<2.0"
+click = ">=5.1,<8.0"
+itsdangerous = ">=0.24,<2.0"
[package.extras]
dev = ["pytest", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-issues"]
@@ -112,86 +124,79 @@ docs = ["sphinx", "pallets-sphinx-themes", "sphinxcontrib-log-cabinet", "sphinx-
dotenv = ["python-dotenv"]
[[package]]
-name = "flask-httpauth"
-version = "4.4.0"
-description = "Basic and Digest HTTP authentication for Flask routes"
category = "main"
-optional = false
-python-versions = "*"
-
-[package.dependencies]
-Flask = "*"
-
-[[package]]
-name = "flask-socketio"
-version = "5.0.1"
description = "Socket.IO integration for Flask applications"
-category = "main"
+name = "flask-socketio"
optional = false
python-versions = "*"
+version = "5.0.1"
[package.dependencies]
Flask = ">=0.9"
python-socketio = ">=5.0.2"
[[package]]
-name = "greenlet"
-version = "1.1.0"
-description = "Lightweight in-process concurrent programming"
category = "main"
+description = "Lightweight in-process concurrent programming"
+name = "greenlet"
optional = false
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
+version = "1.1.0"
[package.extras]
docs = ["sphinx"]
[[package]]
-name = "idna"
-version = "2.10"
-description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
+description = "Internationalized Domain Names in Applications (IDNA)"
+name = "idna"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.10"
[[package]]
-name = "importlib-metadata"
-version = "4.4.0"
-description = "Read metadata from Python packages"
category = "dev"
+description = "Read metadata from Python packages"
+marker = "python_version < \"3.8\""
+name = "importlib-metadata"
optional = false
python-versions = ">=3.6"
+version = "4.4.0"
[package.dependencies]
-typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""}
zipp = ">=0.5"
+[package.dependencies.typing-extensions]
+python = "<3.8"
+version = ">=3.6.4"
+
[package.extras]
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"]
[[package]]
-name = "iniconfig"
-version = "1.1.1"
-description = "iniconfig: brain-dead simple config-ini parsing"
category = "dev"
+description = "iniconfig: brain-dead simple config-ini parsing"
+name = "iniconfig"
optional = false
python-versions = "*"
+version = "1.1.1"
[[package]]
-name = "itsdangerous"
-version = "1.1.0"
-description = "Various helpers to pass data to untrusted environments and back."
category = "main"
+description = "Various helpers to pass data to untrusted environments and back."
+name = "itsdangerous"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.1.0"
[[package]]
-name = "jinja2"
-version = "2.11.3"
-description = "A very fast and expressive template engine."
category = "main"
+description = "A very fast and expressive template engine."
+name = "jinja2"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "2.11.3"
[package.dependencies]
MarkupSafe = ">=0.23"
@@ -200,122 +205,143 @@ MarkupSafe = ">=0.23"
i18n = ["Babel (>=0.8)"]
[[package]]
-name = "markupsafe"
-version = "2.0.1"
-description = "Safely add untrusted strings to HTML/XML markup."
category = "main"
+description = "Safely add untrusted strings to HTML/XML markup."
+name = "markupsafe"
optional = false
python-versions = ">=3.6"
+version = "2.0.1"
[[package]]
-name = "packaging"
-version = "20.9"
-description = "Core utilities for Python packages"
category = "dev"
+description = "Core utilities for Python packages"
+name = "packaging"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "20.9"
[package.dependencies]
pyparsing = ">=2.0.2"
[[package]]
-name = "pluggy"
-version = "0.13.1"
-description = "plugin and hook calling mechanisms for python"
category = "dev"
+description = "plugin and hook calling mechanisms for python"
+name = "pluggy"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "0.13.1"
[package.dependencies]
-importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = ">=0.12"
[package.extras]
dev = ["pre-commit", "tox"]
[[package]]
-name = "psutil"
-version = "5.8.0"
-description = "Cross-platform lib for process and system monitoring in Python."
category = "main"
+description = "Cross-platform lib for process and system monitoring in Python."
+name = "psutil"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "5.8.0"
[package.extras]
test = ["ipaddress", "mock", "unittest2", "enum34", "pywin32", "wmi"]
[[package]]
-name = "py"
-version = "1.10.0"
+category = "dev"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
-category = "dev"
+name = "py"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.10.0"
[[package]]
-name = "pycryptodome"
-version = "3.10.1"
-description = "Cryptographic library for Python"
-category = "main"
-optional = false
-python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
-
-[[package]]
-name = "pyparsing"
-version = "2.4.7"
-description = "Python parsing module"
-category = "dev"
-optional = false
-python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
-
-[[package]]
-name = "pysocks"
-version = "1.7.1"
-description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information."
category = "main"
+description = "C parser in Python"
+name = "pycparser"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "2.20"
[[package]]
-name = "pytest"
-version = "6.2.4"
-description = "pytest: simple powerful testing with Python"
-category = "dev"
+category = "main"
+description = "Python binding to the Networking and Cryptography (NaCl) library"
+name = "pynacl"
optional = false
-python-versions = ">=3.6"
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.4.0"
[package.dependencies]
-atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
+cffi = ">=1.4.1"
+six = "*"
+
+[package.extras]
+docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"]
+tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)", "hypothesis (>=3.27.0)"]
+
+[[package]]
+category = "dev"
+description = "Python parsing module"
+name = "pyparsing"
+optional = false
+python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+version = "2.4.7"
+
+[[package]]
+category = "main"
+description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information."
+name = "pysocks"
+optional = false
+python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.7.1"
+
+[[package]]
+category = "dev"
+description = "pytest: simple powerful testing with Python"
+name = "pytest"
+optional = false
+python-versions = ">=3.6"
+version = "6.2.4"
+
+[package.dependencies]
+atomicwrites = ">=1.0"
attrs = ">=19.2.0"
-colorama = {version = "*", markers = "sys_platform == \"win32\""}
-importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
+colorama = "*"
iniconfig = "*"
packaging = "*"
pluggy = ">=0.12,<1.0.0a1"
py = ">=1.8.2"
toml = "*"
+[package.dependencies.importlib-metadata]
+python = "<3.8"
+version = ">=0.12"
+
[package.extras]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
[[package]]
-name = "python-engineio"
-version = "4.2.0"
-description = "Engine.IO server"
category = "main"
+description = "Engine.IO server"
+name = "python-engineio"
optional = false
python-versions = "*"
+version = "4.2.0"
[package.extras]
asyncio_client = ["aiohttp (>=3.4)"]
client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"]
[[package]]
-name = "python-socketio"
-version = "5.3.0"
-description = "Socket.IO server"
category = "main"
+description = "Socket.IO server"
+name = "python-socketio"
optional = false
python-versions = "*"
+version = "5.3.0"
[package.dependencies]
bidict = ">=0.21.0"
@@ -326,105 +352,114 @@ asyncio_client = ["aiohttp (>=3.4)", "websockets (>=7.0)"]
client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"]
[[package]]
-name = "requests"
-version = "2.25.1"
-description = "Python HTTP for Humans."
category = "main"
+description = "Python HTTP for Humans."
+name = "requests"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "2.25.1"
[package.dependencies]
certifi = ">=2017.4.17"
chardet = ">=3.0.2,<5"
idna = ">=2.5,<3"
-PySocks = {version = ">=1.5.6,<1.5.7 || >1.5.7", optional = true, markers = "extra == \"socks\""}
urllib3 = ">=1.21.1,<1.27"
+[package.dependencies.PySocks]
+optional = true
+version = ">=1.5.6,<1.5.7 || >1.5.7"
+
[package.extras]
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
-socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
+socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"]
[[package]]
-name = "six"
-version = "1.16.0"
-description = "Python 2 and 3 compatibility utilities"
category = "main"
+description = "Python 2 and 3 compatibility utilities"
+name = "six"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
+version = "1.16.0"
[[package]]
-name = "stem"
-version = "1.8.0"
-description = "Stem is a Python controller library that allows applications to interact with Tor (https://www.torproject.org/)."
category = "main"
+description = ""
+name = "stem"
optional = false
python-versions = "*"
+version = "1.8.1"
+
+[package.source]
+reference = "de3d03a03c7ee57c74c80e9c63cb88072d833717"
+type = "git"
+url = "https://github.com/onionshare/stem.git"
[[package]]
-name = "toml"
-version = "0.10.2"
-description = "Python Library for Tom's Obvious, Minimal Language"
category = "dev"
+description = "Python Library for Tom's Obvious, Minimal Language"
+name = "toml"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
+version = "0.10.2"
[[package]]
-name = "typing-extensions"
-version = "3.10.0.0"
-description = "Backported and Experimental Type Hints for Python 3.5+"
category = "dev"
+description = "Backported and Experimental Type Hints for Python 3.5+"
+marker = "python_version < \"3.8\""
+name = "typing-extensions"
optional = false
python-versions = "*"
+version = "3.10.0.0"
[[package]]
-name = "unidecode"
-version = "1.2.0"
-description = "ASCII transliterations of Unicode text"
category = "main"
+description = "ASCII transliterations of Unicode text"
+name = "unidecode"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
+version = "1.2.0"
[[package]]
-name = "urllib3"
-version = "1.26.5"
-description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
+description = "HTTP library with thread-safe connection pooling, file post, and more."
+name = "urllib3"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
+version = "1.26.5"
[package.extras]
brotli = ["brotlipy (>=0.6.0)"]
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
-socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
+socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"]
[[package]]
-name = "werkzeug"
-version = "1.0.1"
-description = "The comprehensive WSGI web application library."
category = "main"
+description = "The comprehensive WSGI web application library."
+name = "werkzeug"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
+version = "1.0.1"
[package.extras]
dev = ["pytest", "pytest-timeout", "coverage", "tox", "sphinx", "pallets-sphinx-themes", "sphinx-issues"]
watchdog = ["watchdog"]
[[package]]
-name = "zipp"
-version = "3.4.1"
-description = "Backport of pathlib-compatible object wrapper for zip files"
category = "dev"
+description = "Backport of pathlib-compatible object wrapper for zip files"
+marker = "python_version < \"3.8\""
+name = "zipp"
optional = false
python-versions = ">=3.6"
+version = "3.4.1"
[package.extras]
docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"]
testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "pytest-enabler", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
[metadata]
-lock-version = "1.1"
+content-hash = "181891640e59dac730905019444d42ef8e99da0c34c96fb8a616781661bae537"
python-versions = "^3.6"
-content-hash = "b33fc47db907e6db7cb254b5cac34b0d9558547418e8074280063159b291766a"
[metadata.files]
atomicwrites = [
@@ -443,6 +478,53 @@ certifi = [
{file = "certifi-2021.5.30-py2.py3-none-any.whl", hash = "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"},
{file = "certifi-2021.5.30.tar.gz", hash = "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee"},
]
+cffi = [
+ {file = "cffi-1.14.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:22b9c3c320171c108e903d61a3723b51e37aaa8c81255b5e7ce102775bd01e2c"},
+ {file = "cffi-1.14.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:f0c5d1acbfca6ebdd6b1e3eded8d261affb6ddcf2186205518f1428b8569bb99"},
+ {file = "cffi-1.14.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:99f27fefe34c37ba9875f224a8f36e31d744d8083e00f520f133cab79ad5e819"},
+ {file = "cffi-1.14.6-cp27-cp27m-win32.whl", hash = "sha256:55af55e32ae468e9946f741a5d51f9896da6b9bf0bbdd326843fec05c730eb20"},
+ {file = "cffi-1.14.6-cp27-cp27m-win_amd64.whl", hash = "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224"},
+ {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7"},
+ {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33"},
+ {file = "cffi-1.14.6-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534"},
+ {file = "cffi-1.14.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a"},
+ {file = "cffi-1.14.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5"},
+ {file = "cffi-1.14.6-cp35-cp35m-win32.whl", hash = "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca"},
+ {file = "cffi-1.14.6-cp35-cp35m-win_amd64.whl", hash = "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218"},
+ {file = "cffi-1.14.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9dc245e3ac69c92ee4c167fbdd7428ec1956d4e754223124991ef29eb57a09d"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a8661b2ce9694ca01c529bfa204dbb144b275a31685a075ce123f12331be790b"},
+ {file = "cffi-1.14.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b315d709717a99f4b27b59b021e6207c64620790ca3e0bde636a6c7f14618abb"},
+ {file = "cffi-1.14.6-cp36-cp36m-win32.whl", hash = "sha256:80b06212075346b5546b0417b9f2bf467fea3bfe7352f781ffc05a8ab24ba14a"},
+ {file = "cffi-1.14.6-cp36-cp36m-win_amd64.whl", hash = "sha256:a9da7010cec5a12193d1af9872a00888f396aba3dc79186604a09ea3ee7c029e"},
+ {file = "cffi-1.14.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4373612d59c404baeb7cbd788a18b2b2a8331abcc84c3ba40051fcd18b17a4d5"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:f10afb1004f102c7868ebfe91c28f4a712227fe4cb24974350ace1f90e1febbf"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:fd4305f86f53dfd8cd3522269ed7fc34856a8ee3709a5e28b2836b2db9d4cd69"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d6169cb3c6c2ad50db5b868db6491a790300ade1ed5d1da29289d73bbe40b56"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d4b68e216fc65e9fe4f524c177b54964af043dde734807586cf5435af84045c"},
+ {file = "cffi-1.14.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33791e8a2dc2953f28b8d8d300dde42dd929ac28f974c4b4c6272cb2955cb762"},
+ {file = "cffi-1.14.6-cp37-cp37m-win32.whl", hash = "sha256:0c0591bee64e438883b0c92a7bed78f6290d40bf02e54c5bf0978eaf36061771"},
+ {file = "cffi-1.14.6-cp37-cp37m-win_amd64.whl", hash = "sha256:8eb687582ed7cd8c4bdbff3df6c0da443eb89c3c72e6e5dcdd9c81729712791a"},
+ {file = "cffi-1.14.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ba6f2b3f452e150945d58f4badd92310449876c4c954836cfb1803bdd7b422f0"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:64fda793737bc4037521d4899be780534b9aea552eb673b9833b01f945904c2e"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:9f3e33c28cd39d1b655ed1ba7247133b6f7fc16fa16887b120c0c670e35ce346"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26bb2549b72708c833f5abe62b756176022a7b9a7f689b571e74c8478ead51dc"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb687a11f0a7a1839719edd80f41e459cc5366857ecbed383ff376c4e3cc6afd"},
+ {file = "cffi-1.14.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d2ad4d668a5c0645d281dcd17aff2be3212bc109b33814bbb15c4939f44181cc"},
+ {file = "cffi-1.14.6-cp38-cp38-win32.whl", hash = "sha256:487d63e1454627c8e47dd230025780e91869cfba4c753a74fda196a1f6ad6548"},
+ {file = "cffi-1.14.6-cp38-cp38-win_amd64.whl", hash = "sha256:c33d18eb6e6bc36f09d793c0dc58b0211fccc6ae5149b808da4a62660678b156"},
+ {file = "cffi-1.14.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:06c54a68935738d206570b20da5ef2b6b6d92b38ef3ec45c5422c0ebaf338d4d"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:f174135f5609428cc6e1b9090f9268f5c8935fddb1b25ccb8255a2d50de6789e"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f3ebe6e73c319340830a9b2825d32eb6d8475c1dac020b4f0aa774ee3b898d1c"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c8d896becff2fa653dc4438b54a5a25a971d1f4110b32bd3068db3722c80202"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4922cd707b25e623b902c86188aca466d3620892db76c0bdd7b99a3d5e61d35f"},
+ {file = "cffi-1.14.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c9e005e9bd57bc987764c32a1bee4364c44fdc11a3cc20a40b93b444984f2b87"},
+ {file = "cffi-1.14.6-cp39-cp39-win32.whl", hash = "sha256:eb9e2a346c5238a30a746893f23a9535e700f8192a68c07c0258e7ece6ff3728"},
+ {file = "cffi-1.14.6-cp39-cp39-win_amd64.whl", hash = "sha256:818014c754cd3dba7229c0f5884396264d51ffb87ec86e927ef0be140bfdb0d2"},
+ {file = "cffi-1.14.6.tar.gz", hash = "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"},
+]
chardet = [
{file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"},
{file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"},
@@ -467,10 +549,6 @@ flask = [
{file = "Flask-1.1.4-py2.py3-none-any.whl", hash = "sha256:c34f04500f2cbbea882b1acb02002ad6fe6b7ffa64a6164577995657f50aed22"},
{file = "Flask-1.1.4.tar.gz", hash = "sha256:0fbeb6180d383a9186d0d6ed954e0042ad9f18e0e8de088b2b419d526927d196"},
]
-flask-httpauth = [
- {file = "Flask-HTTPAuth-4.4.0.tar.gz", hash = "sha256:bcaaa7a35a3cba0b2eafd4f113b3016bf70eb78087456d96484c3c18928b813a"},
- {file = "Flask_HTTPAuth-4.4.0-py2.py3-none-any.whl", hash = "sha256:d9131122cdc5709dda63790f6e9b3142d8101447d424b0b95ffd4ee279f49539"},
-]
flask-socketio = [
{file = "Flask-SocketIO-5.0.1.tar.gz", hash = "sha256:5c4319f5214ada20807857dc8fdf3dc7d2afe8d6dd38f5c516c72e2be47d2227"},
{file = "Flask_SocketIO-5.0.1-py2.py3-none-any.whl", hash = "sha256:5d9a4438bafd806c5a3b832e74b69758781a8ee26fb6c9b1dbdda9b4fced432e"},
@@ -547,12 +625,22 @@ jinja2 = [
{file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"},
]
markupsafe = [
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"},
+ {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"},
+ {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"},
{file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"},
@@ -561,14 +649,21 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"},
+ {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"},
{file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"},
{file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"},
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"},
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"},
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"},
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"},
{file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"},
+ {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"},
{file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"},
{file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"},
{file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"},
@@ -578,6 +673,9 @@ markupsafe = [
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"},
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"},
{file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"},
+ {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"},
{file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"},
{file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"},
{file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"},
@@ -624,37 +722,29 @@ py = [
{file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"},
{file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"},
]
-pycryptodome = [
- {file = "pycryptodome-3.10.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1c5e1ca507de2ad93474be5cfe2bfa76b7cf039a1a32fc196f40935944871a06"},
- {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:6260e24d41149268122dd39d4ebd5941e9d107f49463f7e071fd397e29923b0c"},
- {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:3f840c49d38986f6e17dbc0673d37947c88bc9d2d9dba1c01b979b36f8447db1"},
- {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:2dea65df54349cdfa43d6b2e8edb83f5f8d6861e5cf7b1fbc3e34c5694c85e27"},
- {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:e61e363d9a5d7916f3a4ce984a929514c0df3daf3b1b2eb5e6edbb131ee771cf"},
- {file = "pycryptodome-3.10.1-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:2603c98ae04aac675fefcf71a6c87dc4bb74a75e9071ae3923bbc91a59f08d35"},
- {file = "pycryptodome-3.10.1-cp27-cp27m-win32.whl", hash = "sha256:38661348ecb71476037f1e1f553159b80d256c00f6c0b00502acac891f7116d9"},
- {file = "pycryptodome-3.10.1-cp27-cp27m-win_amd64.whl", hash = "sha256:1723ebee5561628ce96748501cdaa7afaa67329d753933296321f0be55358dce"},
- {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:77997519d8eb8a4adcd9a47b9cec18f9b323e296986528186c0e9a7a15d6a07e"},
- {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:99b2f3fc51d308286071d0953f92055504a6ffe829a832a9fc7a04318a7683dd"},
- {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:e0a4d5933a88a2c98bbe19c0c722f5483dc628d7a38338ac2cb64a7dbd34064b"},
- {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:d3d6958d53ad307df5e8469cc44474a75393a434addf20ecd451f38a72fe29b8"},
- {file = "pycryptodome-3.10.1-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:a8eb8b6ea09ec1c2535bf39914377bc8abcab2c7d30fa9225eb4fe412024e427"},
- {file = "pycryptodome-3.10.1-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:31c1df17b3dc5f39600a4057d7db53ac372f492c955b9b75dd439f5d8b460129"},
- {file = "pycryptodome-3.10.1-cp35-abi3-manylinux1_i686.whl", hash = "sha256:a3105a0eb63eacf98c2ecb0eb4aa03f77f40fbac2bdde22020bb8a536b226bb8"},
- {file = "pycryptodome-3.10.1-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:a92d5c414e8ee1249e850789052608f582416e82422502dc0ac8c577808a9067"},
- {file = "pycryptodome-3.10.1-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:60386d1d4cfaad299803b45a5bc2089696eaf6cdd56f9fc17479a6f89595cfc8"},
- {file = "pycryptodome-3.10.1-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:501ab36aae360e31d0ec370cf5ce8ace6cb4112060d099b993bc02b36ac83fb6"},
- {file = "pycryptodome-3.10.1-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:fc7489a50323a0df02378bc2fff86eb69d94cc5639914346c736be981c6a02e7"},
- {file = "pycryptodome-3.10.1-cp35-abi3-win32.whl", hash = "sha256:9b6f711b25e01931f1c61ce0115245a23cdc8b80bf8539ac0363bdcf27d649b6"},
- {file = "pycryptodome-3.10.1-cp35-abi3-win_amd64.whl", hash = "sha256:7fd519b89585abf57bf47d90166903ec7b43af4fe23c92273ea09e6336af5c07"},
- {file = "pycryptodome-3.10.1-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:09c1555a3fa450e7eaca41ea11cd00afe7c91fef52353488e65663777d8524e0"},
- {file = "pycryptodome-3.10.1-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:758949ca62690b1540dfb24ad773c6da9cd0e425189e83e39c038bbd52b8e438"},
- {file = "pycryptodome-3.10.1-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:e3bf558c6aeb49afa9f0c06cee7fb5947ee5a1ff3bd794b653d39926b49077fa"},
- {file = "pycryptodome-3.10.1-pp27-pypy_73-win32.whl", hash = "sha256:f977cdf725b20f6b8229b0c87acb98c7717e742ef9f46b113985303ae12a99da"},
- {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6d2df5223b12437e644ce0a3be7809471ffa71de44ccd28b02180401982594a6"},
- {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:98213ac2b18dc1969a47bc65a79a8fca02a414249d0c8635abb081c7f38c91b6"},
- {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:12222a5edc9ca4a29de15fbd5339099c4c26c56e13c2ceddf0b920794f26165d"},
- {file = "pycryptodome-3.10.1-pp36-pypy36_pp73-win32.whl", hash = "sha256:6bbf7fee7b7948b29d7e71fcacf48bac0c57fb41332007061a933f2d996f9713"},
- {file = "pycryptodome-3.10.1.tar.gz", hash = "sha256:3e2e3a06580c5f190df843cdb90ea28d61099cf4924334d5297a995de68e4673"},
+pycparser = [
+ {file = "pycparser-2.20-py2.py3-none-any.whl", hash = "sha256:7582ad22678f0fcd81102833f60ef8d0e57288b6b5fb00323d101be910e35705"},
+ {file = "pycparser-2.20.tar.gz", hash = "sha256:2d475327684562c3a96cc71adf7dc8c4f0565175cf86b6d7a404ff4c771f15f0"},
+]
+pynacl = [
+ {file = "PyNaCl-1.4.0-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff"},
+ {file = "PyNaCl-1.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514"},
+ {file = "PyNaCl-1.4.0-cp27-cp27m-win32.whl", hash = "sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574"},
+ {file = "PyNaCl-1.4.0-cp27-cp27m-win_amd64.whl", hash = "sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80"},
+ {file = "PyNaCl-1.4.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-macosx_10_10_x86_64.whl", hash = "sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-win32.whl", hash = "sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634"},
+ {file = "PyNaCl-1.4.0-cp35-abi3-win_amd64.whl", hash = "sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6"},
+ {file = "PyNaCl-1.4.0-cp35-cp35m-win32.whl", hash = "sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4"},
+ {file = "PyNaCl-1.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25"},
+ {file = "PyNaCl-1.4.0-cp36-cp36m-win32.whl", hash = "sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4"},
+ {file = "PyNaCl-1.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6"},
+ {file = "PyNaCl-1.4.0-cp37-cp37m-win32.whl", hash = "sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f"},
+ {file = "PyNaCl-1.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f"},
+ {file = "PyNaCl-1.4.0-cp38-cp38-win32.whl", hash = "sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96"},
+ {file = "PyNaCl-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420"},
+ {file = "PyNaCl-1.4.0.tar.gz", hash = "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505"},
]
pyparsing = [
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
@@ -685,9 +775,7 @@ six = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
-stem = [
- {file = "stem-1.8.0.tar.gz", hash = "sha256:a0b48ea6224e95f22aa34c0bc3415f0eb4667ddeae3dfb5e32a6920c185568c2"},
-]
+stem = []
toml = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
diff --git a/cli/pyproject.toml b/cli/pyproject.toml
index 51405d3d..e0c0f55f 100644
--- a/cli/pyproject.toml
+++ b/cli/pyproject.toml
@@ -19,18 +19,17 @@ classifiers = [
python = "^3.6"
click = "*"
flask = "1.1.4"
-flask-httpauth = "*"
flask-socketio = "5.0.1"
psutil = "*"
-pycryptodome = "*"
pysocks = "*"
requests = {extras = ["socks"], version = "*"}
-stem = "*"
unidecode = "*"
urllib3 = "*"
eventlet = "*"
setuptools = "*"
+pynacl = "^1.4.0"
colorama = "*"
+stem = {git = "https://github.com/onionshare/stem.git", rev = "1.8.1"}
[tool.poetry.dev-dependencies]
pytest = "*"
diff --git a/cli/tests/test_cli_web.py b/cli/tests/test_cli_web.py
index f8c96f9c..f2b1af62 100644
--- a/cli/tests/test_cli_web.py
+++ b/cli/tests/test_cli_web.py
@@ -48,7 +48,6 @@ def web_obj(temp_dir, common_obj, mode, num_files=0):
common_obj.settings = Settings(common_obj)
mode_settings = ModeSettings(common_obj)
web = Web(common_obj, False, mode_settings, mode)
- web.generate_password()
web.running = True
web.cleanup_filenames == []
@@ -75,23 +74,13 @@ class TestWeb:
web = web_obj(temp_dir, common_obj, "share", 3)
assert web.mode == "share"
with web.app.test_client() as c:
- # Load / without auth
+ # Load /
res = c.get("/")
res.get_data()
- assert res.status_code == 401
-
- # Load / with invalid auth
- res = c.get("/", headers=self._make_auth_headers("invalid"))
- res.get_data()
- assert res.status_code == 401
-
- # Load / with valid auth
- res = c.get("/", headers=self._make_auth_headers(web.password))
- res.get_data()
assert res.status_code == 200
# Download
- res = c.get("/download", headers=self._make_auth_headers(web.password))
+ res = c.get("/download")
res.get_data()
assert res.status_code == 200
assert (
@@ -107,7 +96,7 @@ class TestWeb:
with web.app.test_client() as c:
# Download the first time
- res = c.get("/download", headers=self._make_auth_headers(web.password))
+ res = c.get("/download")
res.get_data()
assert res.status_code == 200
assert (
@@ -127,7 +116,7 @@ class TestWeb:
with web.app.test_client() as c:
# Download the first time
- res = c.get("/download", headers=self._make_auth_headers(web.password))
+ res = c.get("/download")
res.get_data()
assert res.status_code == 200
assert (
@@ -141,18 +130,8 @@ class TestWeb:
assert web.mode == "receive"
with web.app.test_client() as c:
- # Load / without auth
- res = c.get("/")
- res.get_data()
- assert res.status_code == 401
-
- # Load / with invalid auth
- res = c.get("/", headers=self._make_auth_headers("invalid"))
- res.get_data()
- assert res.status_code == 401
-
# Load / with valid auth
- res = c.get("/", headers=self._make_auth_headers(web.password))
+ res = c.get("/",)
res.get_data()
assert res.status_code == 200
@@ -171,7 +150,7 @@ class TestWeb:
)
with web.app.test_client() as c:
- res = c.get("/", headers=self._make_auth_headers(web.password))
+ res = c.get("/")
res.get_data()
assert res.status_code == 200
@@ -180,7 +159,6 @@ class TestWeb:
buffered=True,
content_type="multipart/form-data",
data={"file[]": (BytesIO(b"THIS IS A TEST FILE"), "new_york.jpg")},
- headers=self._make_auth_headers(web.password),
)
res.get_data()
assert res.status_code == 200
@@ -202,7 +180,6 @@ class TestWeb:
buffered=True,
content_type="multipart/form-data",
data={"text": "you know just sending an anonymous message"},
- headers=self._make_auth_headers(web.password),
)
content = res.get_data()
assert res.status_code == 200
@@ -237,7 +214,6 @@ class TestWeb:
"file[]": (BytesIO(b"THIS IS A TEST FILE"), "new_york.jpg"),
"text": "you know just sending an anonymous message",
},
- headers=self._make_auth_headers(web.password),
)
content = res.get_data()
assert res.status_code == 200
@@ -270,7 +246,6 @@ class TestWeb:
buffered=True,
content_type="multipart/form-data",
data={"file[]": (BytesIO(b"THIS IS A TEST FILE"), "new_york.jpg")},
- headers=self._make_auth_headers(web.password),
)
content = res.get_data()
assert res.status_code == 200
@@ -303,7 +278,6 @@ class TestWeb:
buffered=True,
content_type="multipart/form-data",
data={},
- headers=self._make_auth_headers(web.password),
)
content = res.get_data()
assert res.status_code == 200
@@ -326,26 +300,6 @@ class TestWeb:
res.get_data()
assert res.status_code == 200
- def test_public_mode_off(self, temp_dir, common_obj):
- web = web_obj(temp_dir, common_obj, "receive")
- web.settings.set("general", "public", False)
-
- with web.app.test_client() as c:
- # Load / without auth
- res = c.get("/")
- res.get_data()
- assert res.status_code == 401
-
- # But static resources should work without auth
- res = c.get(f"{web.static_url_path}/css/style.css")
- res.get_data()
- assert res.status_code == 200
-
- # Load / with valid auth
- res = c.get("/", headers=self._make_auth_headers(web.password))
- res.get_data()
- assert res.status_code == 200
-
def test_cleanup(self, common_obj, temp_dir_1024, temp_file_1024):
web = web_obj(temp_dir_1024, common_obj, "share", 3)
@@ -356,12 +310,6 @@ class TestWeb:
assert os.path.exists(temp_dir_1024) is False
assert web.cleanup_filenames == []
- def _make_auth_headers(self, password):
- auth = base64.b64encode(b"onionshare:" + password.encode()).decode()
- h = Headers()
- h.add("Authorization", "Basic " + auth)
- return h
-
class TestZipWriterDefault:
@pytest.mark.parametrize(
@@ -450,8 +398,7 @@ def live_server(web):
proc.start()
url = "http://127.0.0.1:{}".format(port)
- auth = base64.b64encode(b"onionshare:" + web.password.encode()).decode()
- req = Request(url, headers={"Authorization": "Basic {}".format(auth)})
+ req = Request(url)
attempts = 20
while True:
@@ -509,7 +456,7 @@ class TestRangeRequests:
url = "/download"
with web.app.test_client() as client:
- resp = client.get(url, headers=self._make_auth_headers(web.password))
+ resp = client.get(url)
assert resp.headers["ETag"].startswith('"sha256:')
assert resp.headers["Accept-Ranges"] == "bytes"
assert resp.headers.get("Last-Modified") is not None
@@ -524,7 +471,7 @@ class TestRangeRequests:
contents = f.read()
with web.app.test_client() as client:
- resp = client.get(url, headers=self._make_auth_headers(web.password))
+ resp = client.get(url)
assert resp.status_code == 200
assert resp.data == contents
@@ -536,7 +483,7 @@ class TestRangeRequests:
contents = f.read()
with web.app.test_client() as client:
- headers = self._make_auth_headers(web.password)
+ headers = Headers()
headers.extend({"Range": "bytes=0-10"})
resp = client.get(url, headers=headers)
assert resp.status_code == 206
@@ -572,7 +519,7 @@ class TestRangeRequests:
contents = f.read()
with web.app.test_client() as client:
- headers = self._make_auth_headers(web.password)
+ headers = Headers()
resp = client.get(url, headers=headers)
assert resp.status_code == 200
@@ -587,7 +534,7 @@ class TestRangeRequests:
url = "/download"
with web.app.test_client() as client:
- headers = self._make_auth_headers(web.password)
+ headers = Headers()
resp = client.get(url, headers=headers)
assert resp.status_code == 200
last_mod = resp.headers["Last-Modified"]
@@ -602,7 +549,7 @@ class TestRangeRequests:
url = "/download"
with web.app.test_client() as client:
- headers = self._make_auth_headers(web.password)
+ headers = Headers()
resp = client.get(url, headers=headers)
assert resp.status_code == 200
@@ -621,11 +568,6 @@ class TestRangeRequests:
resp = client.get(url, headers=headers)
assert resp.status_code == 206
- def _make_auth_headers(self, password):
- auth = base64.b64encode(b"onionshare:" + password.encode()).decode()
- h = Headers()
- h.add("Authorization", "Basic " + auth)
- return h
@pytest.mark.skipif(sys.platform != "Linux", reason="requires Linux")
@check_unsupported("curl", ["--version"])
@@ -638,12 +580,9 @@ class TestRangeRequests:
with live_server(web) as url:
# Debugging help from `man curl`, on error 33
# 33 HTTP range error. The range "command" didn't work.
- auth_header = self._make_auth_headers(web.password)
subprocess.check_call(
[
"curl",
- "-H",
- str(auth_header).strip(),
"--output",
str(download),
"--continue-at",
@@ -663,12 +602,9 @@ class TestRangeRequests:
download.write("x" * 10)
with live_server(web) as url:
- auth_header = self._make_auth_headers(web.password)
subprocess.check_call(
[
"wget",
- "--header",
- str(auth_header).strip(),
"--continue",
"-O",
str(download),
diff --git a/desktop/src/onionshare/resources/locale/af.json b/desktop/src/onionshare/resources/locale/af.json
index c9e641f5..1e154ed3 100644
--- a/desktop/src/onionshare/resources/locale/af.json
+++ b/desktop/src/onionshare/resources/locale/af.json
@@ -22,12 +22,9 @@
"gui_receive_stop_server": "Staak Ontvangmodus",
"gui_receive_stop_server_autostop_timer": "Staak Ontvangmodus ({} oorblywend)",
"gui_copy_url": "Kopieer Adres",
- "gui_copy_hidservauth": "Kopieer HidServAuth",
"gui_canceled": "Gekanselleer",
"gui_copied_url_title": "OnionShare-adres Gekopieer",
"gui_copied_url": "OnionShare-adres na knipbord gekopieer",
- "gui_copied_hidservauth_title": "HidServAuth Gekopieer",
- "gui_copied_hidservauth": "HidServAuth-reël na knipbord gekopieer",
"gui_waiting_to_start": "Geskeduleer om oor {} te begin. Klik om te kanselleer.",
"gui_please_wait": "Begin… Klik om te kanselleer.",
"gui_quit_title": "Nie so haastig nie",
@@ -35,14 +32,12 @@
"gui_receive_quit_warning": "U is besig om lêers te ontvang. Is u seker u wil OnionShare afsluit?",
"gui_quit_warning_quit": "Sluit Af",
"gui_quit_warning_dont_quit": "Kanselleer",
- "error_rate_limit": "Iemand het te veel verkeerde raaiskote met u wagwoord probeer, daarom het OnionShare die bediener gestaak. Begin weer deel en stuur ’n nuwe adres aan die ontvanger.",
"zip_progress_bar_format": "Samepersing: %p%",
"error_stealth_not_supported": "U benodig ten minste Tor 0.2.6.1-alfa (of TorBrowser 6.5) en python3-stem 1.5.0 om kliënt-magtiging te gebruik.",
"error_ephemeral_not_supported": "OnionShare vereis ten minste Tor 0.2.7.1 en python3-stem 1.4.0.",
"gui_settings_window_title": "Instellings",
"gui_settings_whats_this": "Wat is dit?",
"gui_settings_stealth_option": "Gebruik kliëntmagtiging",
- "gui_settings_stealth_hidservauth_string": "Deur u privaat sleutel vir herbruik bewaar te hê kan u nou klik om u HidServAuth te kopieer.",
"gui_settings_autoupdate_label": "Soek na nuwe weergawe",
"gui_settings_autoupdate_option": "Laat my weet wanneer ’n nuwe weergawe beskikbaar is",
"gui_settings_autoupdate_timestamp": "Laas gesoek: {}",
@@ -114,7 +109,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Die outo-stoptyd kan nie dieselfde of vroeër as die outo-begintyd wees nie. Pas dit aan om te begin deel.",
"share_via_onionshare": "Deel d.m.v. OnionShare",
"gui_connect_to_tor_for_onion_settings": "Koppel aan Tor om uidiensinstellings te sien",
- "gui_use_legacy_v2_onions_checkbox": "Gebruik argaïese adresse",
"gui_save_private_key_checkbox": "Gebruik ’n blywende adres",
"gui_share_url_description": "Enigeen met hierdie OnionShare-adres kan u lêers d.m.v. die Tor Browser aflaai: ",
"gui_website_url_description": "Enigeen met hierdie OnionShare-adres kan u webwerf d.m.v. die Tor Browser besoek: ",
diff --git a/desktop/src/onionshare/resources/locale/am.json b/desktop/src/onionshare/resources/locale/am.json
index b787a617..9a93c31f 100644
--- a/desktop/src/onionshare/resources/locale/am.json
+++ b/desktop/src/onionshare/resources/locale/am.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -63,14 +60,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "ተወው",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/ar.json b/desktop/src/onionshare/resources/locale/ar.json
index 0c0daeb5..83e88c28 100644
--- a/desktop/src/onionshare/resources/locale/ar.json
+++ b/desktop/src/onionshare/resources/locale/ar.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "أوقف طور التلقّي (باقي {})",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "نسخ العنوان",
- "gui_copy_hidservauth": "نسخ مُصادقة الخدمة المخفية",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "تم الإلغاء",
"gui_copied_url_title": "OnionShare تمّ نسخ عنوان",
"gui_copied_url": "تمّ نسخ عوان اونينشير إلى الحافظة",
- "gui_copied_hidservauth_title": "تم نسخ مُصادقة الخدمة المخفية",
- "gui_copied_hidservauth": "تم نسخ سطر مصادقة الخدمة المخفية إلى الحافظة",
"gui_please_wait": "جاري البدء… اضغط هنا للإلغاء.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "يجري حالبا تلقّي ملفات. أمتأكد أنك تريد إنهاء OnionShare؟",
"gui_quit_warning_quit": "أنهِ",
"gui_quit_warning_dont_quit": "ألغِ",
- "error_rate_limit": "أجرى شخص ما محاولات كثيرة خاطئة لتخمين كلمة السر، لذلك فقد تمّ إيقاف الخادم. عاوِد المُشاركة و أرسل إلى المتلقّي عنوان المشاركة الجديد.",
"zip_progress_bar_format": "جاري الضغط: %p%",
"error_stealth_not_supported": "لاستعمال استيثاق العميل تلزمك إصدارة تور 0.2.9.1-alpha أو (متصفّح تور 6.5) و python3-stem الإصدارة 1.5.0، أو ما بعدها.",
"error_ephemeral_not_supported": "يتطلّب OnionShare كلّا من إصدارة تور 0.2.7.1 و الإصدارة 1.4.0 من python3-stem.",
"gui_settings_window_title": "الإعدادات",
"gui_settings_whats_this": "ما هذا؟",
"gui_settings_stealth_option": "فعّل استيثاق العميل",
- "gui_settings_stealth_hidservauth_string": "بحفظ مفتاحك السّرّيّ لاستعماله لاحقًا صار بوسعك النقر هنا لنسخ HidServAuth.",
"gui_settings_autoupdate_label": "تحقق من وجود إصدار الجديد",
"gui_settings_autoupdate_option": "أخطرني عند وجود إصدارة أحدث",
"gui_settings_autoupdate_timestamp": "تاريخ آخر تحقُق: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "بلغ مؤقِّت الإيقاف أجله قبل اشتغال الخادوم. أنشئ مشاركة جديدة.",
"gui_server_autostop_timer_expired": "انتهى وقت الايقاف التلقائي للمشاركة. من فضلك عدّله للبدء بالمشاركة.",
"share_via_onionshare": "شارك باستعمال OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "استخدم صيغة العناوين التاريخية",
"gui_save_private_key_checkbox": "استخدم عنوانًا دائمًا",
"gui_share_url_description": "أيّ شخص لديه مسار OnionShare هذا سيكون بوسعه تنزيل تلك الملفات باستعمال متصفّح تور: ",
"gui_receive_url_description": "أيّ شخص لديه مسار OnionShare هذا سيكون بوسعه رفع ملفات إلى حاسوبك باستعمال متصفّح تور: ",
@@ -248,7 +242,6 @@
"mode_settings_receive_data_dir_browse_button": "تصفح",
"mode_settings_receive_data_dir_label": "حفظ الملفات إلى",
"mode_settings_share_autostop_sharing_checkbox": "إيقاف المشاركة بعد إرسال الملفات ( قم بإلغاء التحديد للسماح بتنزيل الملفات الفردية)",
- "mode_settings_client_auth_checkbox": "استخدم ترخيص العميل",
"mode_settings_legacy_checkbox": "استخدم عنوانًا قديمًا (النسخة الثانية من خدمة onion، لا ينصح بها)",
"mode_settings_autostop_timer_checkbox": "إيقاف خدمة Onion في ميعاد مجدول",
"mode_settings_autostart_timer_checkbox": "بدء خدمة Onion في ميعاد مجدول",
@@ -283,4 +276,4 @@
"gui_color_mode_changed_notice": "يُرجى إعادة تشغيل OnionShare من أجل تطبيق المظهر باللون الجديد.",
"gui_open_folder_error": "فشل فتح ملف باستخدام xdg-open. الملف هنا: {}",
"gui_chat_url_description": "أي شخص يوجد معه عنوان OnionShare يمكنه الانضمام إلى غرفة المحادثة هذه باستخدام متصفح تور Tor Browser"
-}
\ No newline at end of file
+}
diff --git a/desktop/src/onionshare/resources/locale/bg.json b/desktop/src/onionshare/resources/locale/bg.json
index 9abe5623..76feab06 100644
--- a/desktop/src/onionshare/resources/locale/bg.json
+++ b/desktop/src/onionshare/resources/locale/bg.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "Спрете получаващия режим ({} остават)",
"gui_receive_stop_server_autostop_timer_tooltip": "Автоматично спиращият таймер спира в {}",
"gui_copy_url": "Копирайте адрес",
- "gui_copy_hidservauth": "Копирайте HidServAuth",
"gui_downloads": "Свалете история",
"gui_no_downloads": "Още няма изтегляния",
"gui_canceled": "Отменен",
"gui_copied_url_title": "OnionShare адресът е копиран",
"gui_copied_url": "OnionShare адресът е копиран към клипборда",
- "gui_copied_hidservauth_title": "HidServAuth е копиран",
- "gui_copied_hidservauth": "HidServAuth редът е копиран към клипборда",
"gui_please_wait": "Започва... кликни за отменяне.",
"gui_download_upload_progress_complete": "%p%, {0:s} изтече.",
"gui_download_upload_progress_starting": "{0:s}, %p% (изчисляване)",
@@ -63,14 +60,12 @@
"gui_receive_quit_warning": "Намирате се в процес на получаване на файлове. Сигурни ли сте, че искате да спрете OnionShare?",
"gui_quit_warning_quit": "Изход",
"gui_quit_warning_dont_quit": "Отказ",
- "error_rate_limit": "Някой е направил прекалено много грешни опити за адреса Ви, което означава, че може да се опитват да го отгатнат, така че OnionShare спря сървъра. Стартирайте споделянето отново и изпратете нов адрес на получателя за споделяне.",
"zip_progress_bar_format": "Компресира: %p%",
"error_stealth_not_supported": "За да използвате ауторизация на клиента Ви трябва поне Tor 0.2.9.1-alpha (или на браузъра 6.5) и python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare изисква поне Tor 0.2.7.1 и python3-stem 1.4.0.",
"gui_settings_window_title": "Настройки",
"gui_settings_whats_this": "Какво е това?",
"gui_settings_stealth_option": "Използвайте клиент ауторизация (наследствен)",
- "gui_settings_stealth_hidservauth_string": "След като Вашия частен ключ бе запазен за повторна употреба, можете сега да кликнете, за да копирате Вашия HidServAuth.",
"gui_settings_autoupdate_label": "Провери за нова версия",
"gui_settings_autoupdate_option": "Уведоми ме, когато е налице нова версия",
"gui_settings_autoupdate_timestamp": "Последна проверка: {}",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "Автоматично спиращият таймер спря преди сървърът да стартира.\nМоля направете нов дял.",
"gui_server_autostop_timer_expired": "Автоматично спиращият таймер спря.\nМоля актуализирайте за да започнете споделяне.",
"share_via_onionshare": "Споделете го чрез OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Използвайте стари адреси",
"gui_save_private_key_checkbox": "Използвайте постоянни адреси (стари)",
"gui_share_url_description": "Всеки с този OnionShare адрес може да свали Вашите файлове използвайки Тор браузера: ",
"gui_receive_url_description": "Всеки с този OnionShare адрес може да качи файлове на Вашия компютър, използвайки Тор браузера: ",
diff --git a/desktop/src/onionshare/resources/locale/bn.json b/desktop/src/onionshare/resources/locale/bn.json
index 519ed878..0f87ef3f 100644
--- a/desktop/src/onionshare/resources/locale/bn.json
+++ b/desktop/src/onionshare/resources/locale/bn.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "রিসিভ মোড বন্ধ করো({} বাকি)",
"gui_receive_stop_server_autostop_timer_tooltip": "টাইমার অনুযায়ী অটোমেটিক বন্ধ হবে {}-তে",
"gui_copy_url": "এড্রেস কপি করো",
- "gui_copy_hidservauth": "হিডসার্ভঅথ কপি করো",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "বাতিল করা হয়েছে",
"gui_copied_url_title": "OnionShare ঠিকানা কপি করা হয়েছে",
"gui_copied_url": "OnionShare ঠিকানাটি ক্লিপবোর্ডে কপি করা হয়েছে",
- "gui_copied_hidservauth_title": "HidServAuth কপি করা হয়েছে",
- "gui_copied_hidservauth": "HidServAuth লাইনটি ক্লিপবোর্ডে কপি করা হয়েছে",
"gui_please_wait": "চালু করছি… বাতিল করতে এখানে ক্লিক করো।",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -63,7 +60,6 @@
"gui_receive_quit_warning": "আপনি ফাইল গ্রহণের প্রক্রিয়ার মধ্যে আছেন। আপনি কি আসলেই OnionShare বন্ধ করতে চান?",
"gui_quit_warning_quit": "প্রস্থান করো",
"gui_quit_warning_dont_quit": "বাতিল",
- "error_rate_limit": "কেউ একজন অসংখ্যবার তোমার পাসওয়ার্ডটি অনুমান করার ব্যর্থ চেষ্টা করেছে, তাই OnionShare নিরাপত্তার জন্য সার্ভার বন্ধ করে দিয়েছে। তাই, নতুন করে আবার তোমার ফাইল(গুলো)শেয়ার করো এবং প্রাপককে নতুন এড্রেসটি দিন।",
"zip_progress_bar_format": "কমপ্রেস করছি: %p%",
"error_stealth_not_supported": "ক্লায়েন্ট অথোরাইজেশন ব্যবহার করার জন্য, তোমার অন্তত Tor 0.2.9.1-alpha (or Tor Browser 6.5) এবং python3-stem 1.5.0 দুটোই থাকতে হবে।",
"error_ephemeral_not_supported": "OnionShare ব্যবহার করার জন্য Tor 0.2.9.1-alpha (or Tor Browser 6.5) এবং python3-stem 1.5.0 দুটোই থাকতে হবে।",
@@ -135,7 +131,6 @@
"gui_server_started_after_autostop_timer": "সার্ভার শুরু হওয়ার আগেই স্বয়ংক্রিয়-বন্ধ ঘড়ির সময় শেষ হয়ে গেছে। অনুগ্রহ করে আবার নতুনভাবে শেয়ার করো।",
"gui_server_autostop_timer_expired": "অটো-স্টপ টাইমারের সময় ইতিমধ্যেই শেষ হয়ে গিয়েছে। দয়া করে, শেয়ারিং শুরু করতে নতুনভাবে সময় সেট করো।",
"share_via_onionshare": "OnionShare এর মাধমে শেয়ার করো",
- "gui_use_legacy_v2_onions_checkbox": "লেগাসি ঠিকানা ব্যবহার করো",
"gui_save_private_key_checkbox": "একটি স্থায়ী ঠিকানা ব্যবহার করো",
"gui_share_url_description": "যার কাছেই এই ঠিকানা থাকবে সে ই টর ব্রাউজার ব্যবহার করে এই OnionShare ঠিকানায় গিয়ে যে কেউ আপনার ফাইল(গুলি) ডাউনলোড করতে পারবে:",
"gui_receive_url_description": "যার কাছেই এই ঠিকানা থাকবে সে ই টর ব্রাউজার ব্যবহার করে এই OnionShare ঠিকানায় গিয়ে যে কেউ আপনার কম্পিউটারে ফাইল আপলোড করতে পারবে:",
@@ -243,7 +238,6 @@
"gui_new_tab_receive_description": "তোমার কম্পিউটারকে একটি অনলাইন ড্রপবক্স বানাও। অন্যরা টর ব্রাউজার ব্যবহার করে তোমার কম্পিউটারে ফাইল পাঠাতে পারবে।",
"gui_new_tab_share_description": "অন্য কাউকে পাঠাতে তোমার কম্পিউটারের ফাইল নির্বাচন করো. তুমি যাকে বা যাদের কাছে ফাইল পাঠাতে চাও তাকে বা তাদেরকে তোমার কাছ থেকে ফাইল ডাউনলোড করতে টর ব্রাউজার ব্যবহার করতে হবে।",
"mode_settings_share_autostop_sharing_checkbox": "ফাইল পাঠানোর পর শেয়ার করা বন্ধ করো (স্বতন্ত্র ফাইল ডাউনলোড এর মঞ্জুরি দিতে টিক চিহ্ন তুলে দাও)",
- "mode_settings_client_auth_checkbox": "ক্লায়েন্ট অথোরাইজেশন ব্যবহার করো",
"mode_settings_autostop_timer_checkbox": "নির্ধারিত সময়ে অনিওন সেবা বন্ধ করো",
"mode_settings_autostart_timer_checkbox": "নির্ধারিত সময়ে অনিওন সেবা শুরু করো",
"mode_settings_persistent_checkbox": "এই ট্যাব সংরক্ষণ করো, এবং যখন আমি অনিওনশেয়ার খুলব তখন এটি স্বয়ংক্রিয়ভাবে খুলো",
diff --git a/desktop/src/onionshare/resources/locale/ca.json b/desktop/src/onionshare/resources/locale/ca.json
index 0015a5ba..6eb57f3b 100644
--- a/desktop/src/onionshare/resources/locale/ca.json
+++ b/desktop/src/onionshare/resources/locale/ca.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Atura el mode de recepció (queden {})",
"gui_receive_stop_server_autostop_timer_tooltip": "El temporitzador acaba a {}",
"gui_copy_url": "Copia l'adreça",
- "gui_copy_hidservauth": "Copia el HidServAuth",
"gui_downloads": "Historial de descàrregues",
"gui_no_downloads": "No n'hi ha cap",
"gui_canceled": "S'ha cancel·lat",
"gui_copied_url_title": "S'ha copiat l'adreça OnionShare",
"gui_copied_url": "S'ha copiat l'adreça OnionShare al porta-retalls",
- "gui_copied_hidservauth_title": "S'ha copiat el HidServAuth",
- "gui_copied_hidservauth": "S'ha copiat la línia HidServAuth al porta-retalls",
"gui_please_wait": "S'està iniciant… Feu clic per a cancel·lar.",
"gui_download_upload_progress_complete": "Han passat %p%, {0:s}.",
"gui_download_upload_progress_starting": "{0:s}, %p% (s'està calculant)",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Encara s'estan rebent fitxers. Segur que voleu sortir de l'OnionShare?",
"gui_quit_warning_quit": "Surt",
"gui_quit_warning_dont_quit": "Cancel·la",
- "error_rate_limit": "Algú ha fet massa intents incorrectes intentant endevinar la vostra contrasenya. Per això l'OnionShare ha aturat el servidor. Torneu a començar el procés i envieu una adreça nova al receptor.",
"zip_progress_bar_format": "S'està comprimint: %p%",
"error_stealth_not_supported": "Per a fer servir l'autorització de client, necessiteu versions iguals o superiors a Tor 0.2.9.1-alpha (o Tor Browser 6.5) i python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare necessita almenys les versions Tor 0.2.7.1 i python3-stem 1.4.0.",
"gui_settings_window_title": "Paràmetres",
"gui_settings_whats_this": "Què és això?",
"gui_settings_stealth_option": "Fes servir autorització de client",
- "gui_settings_stealth_hidservauth_string": "Ara que ja heu desat la clau privada per a reutilitzar-la, podeu fer clic per a copiar el HidServAuth.",
"gui_settings_autoupdate_label": "Comprova si hi ha versions noves",
"gui_settings_autoupdate_option": "Notifica'm si hi ha una actualització disponible",
"gui_settings_autoupdate_timestamp": "Última comprovació: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "El temporitzador de finalització automàtica ha acabat abans que s'iniciés el servidor. Torneu a compartir-ho.",
"gui_server_autostop_timer_expired": "El temporitzador de finalització automàtica ja s'ha acabat. Ajusteu-lo per a poder compartir.",
"share_via_onionshare": "Comparteix-ho amb l'OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Fes servir adreces amb un format antic",
"gui_save_private_key_checkbox": "Fes servir una adreça persistent",
"gui_share_url_description": "Qualsevol persona amb aquesta adreça d'OnionShare pot baixar els vostres fitxers fent servir el Navegador Tor: ",
"gui_receive_url_description": "Qualsevol persona amb aquesta adreça d'OnionShare pot pujar fitxers al vostre ordinador fent servir el Navegador Tor: ",
@@ -227,7 +221,6 @@
"hours_first_letter": "h",
"minutes_first_letter": "min",
"seconds_first_letter": "s",
- "invalid_password_guess": "Intent de contrasenya incorrecte",
"gui_website_url_description": "Qualsevol persona amb aquesta adreça d'OnionShare pot visitar el vostre lloc web fent servir el Navegador Tor: ",
"gui_mode_website_button": "Publica el lloc web",
"systray_site_loaded_title": "S'ha carregat el lloc web",
@@ -250,7 +243,6 @@
"mode_settings_receive_data_dir_browse_button": "Navega",
"mode_settings_receive_data_dir_label": "Desa els fitxers a",
"mode_settings_share_autostop_sharing_checkbox": "Atura la compartició després que s'hagin enviat els fitxers (desmarqueu-ho per a permetre baixar fitxers individuals)",
- "mode_settings_client_auth_checkbox": "Usa autorització del client",
"mode_settings_legacy_checkbox": "Usa una adreça antiga (servei ceba v2, no recomanat)",
"mode_settings_autostop_timer_checkbox": "Atura el servei ceba a una hora programada",
"mode_settings_autostart_timer_checkbox": "Inicia el servei ceba a una hora programada",
diff --git a/desktop/src/onionshare/resources/locale/ckb.json b/desktop/src/onionshare/resources/locale/ckb.json
index 43f84d3f..8289918c 100644
--- a/desktop/src/onionshare/resources/locale/ckb.json
+++ b/desktop/src/onionshare/resources/locale/ckb.json
@@ -24,17 +24,13 @@
"gui_receive_stop_server_autostop_timer": "Mod ya wergirtinê betal bike ({} maye)",
"gui_receive_flatpak_data_dir": "Ji ber tu Onionshare bi rêya Flatpak bar kir, pêwîste tu belge di dosyayek di nav ~/OnionShare qeyd bikî.",
"gui_copy_url": "Malper kopî bike",
- "gui_copy_hidservauth": "HidServAuth kopî bike",
"gui_canceled": "Betal bû",
"gui_copied_url_title": "Malpera OnionShare kopî bû",
"gui_copied_url": "Malpera OnionShare lis ser taxtê kopî bû",
- "gui_copied_hidservauth_title": "HidServAuth kopî bû",
- "gui_copied_hidservauth": " HidServAuth xet li ser taxtê kopî bû",
"gui_show_url_qr_code": "QR kod nîşan bide",
"gui_qr_code_dialog_title": "OnionShare QR kod",
"gui_waiting_to_start": "Pilankirî ye di {} destpê bike. Bitkîne ji bo betal bike.",
"gui_please_wait": "Destpê dike...Bitikîne ji bo betal bike.",
- "error_rate_limit": "Kesekî ji bo texmîn kirna şîfre gelek hewldanên nerast pêk anî, ji ber wê OnionShare weşan betal kir. Weşan ji nû ve destpê bike û malpera parvekirinê ji nû ve ji bo pêwendiyê xwe re bişîne.",
"zip_progress_bar_format": "Dewisandin %p%",
"gui_settings_window_title": "Ayar",
"gui_settings_autoupdate_label": "Ji bo versyonekî nû kontrol bike",
@@ -168,7 +164,6 @@
"mode_settings_autostart_timer_checkbox": "Servîsa onion di wextekî ayarkirî despê bike",
"mode_settings_autostop_timer_checkbox": "Servîsa onion di wextekî ayarkirî biseknîne",
"mode_settings_legacy_checkbox": "Malperekî kêrhatî bişxulîne(servîsa onion v2 nayê pêsniyar kirin)",
- "mode_settings_client_auth_checkbox": "Rastbûyîna muşterî kontrol bike",
"mode_settings_share_autostop_sharing_checkbox": "Parvekirin piştî name haitn şandin biseknîne (Ji bo destûra berjêrkirina nameyên yekane tikandin derbixe)",
"mode_settings_receive_data_dir_label": "Nameyan li qeyd bike",
"mode_settings_receive_data_dir_browse_button": "Bigere",
diff --git a/desktop/src/onionshare/resources/locale/cs.json b/desktop/src/onionshare/resources/locale/cs.json
index d5c7511a..fbe9846a 100644
--- a/desktop/src/onionshare/resources/locale/cs.json
+++ b/desktop/src/onionshare/resources/locale/cs.json
@@ -20,11 +20,9 @@
"gui_share_start_server": "Spustit sdílení",
"gui_share_stop_server": "Zastavit sdílení",
"gui_copy_url": "Kopírovat URL",
- "gui_copy_hidservauth": "Kopírovat HidServAuth",
"gui_downloads": "Historie stahování",
"gui_canceled": "Zrušeno",
"gui_copied_url": "URL zkopírováno do schránky",
- "gui_copied_hidservauth": "HidServAuth zkopírováno do schránky",
"gui_please_wait": "Spouštění... Klikněte pro zrušení.",
"gui_download_upload_progress_complete": "%p%, Uplynulý čas: {0:s}",
"gui_download_upload_progress_starting": "{0:s}, %p% (Computing ETA)",
@@ -33,7 +31,6 @@
"gui_share_quit_warning": "Jste si jistí, že chcete odejít? URL, kterou sdílíte poté nebude existovat.",
"gui_quit_warning_quit": "Zavřít",
"gui_quit_warning_dont_quit": "Zůstat",
- "error_rate_limit": "Útočník možná zkouší uhodnout vaši URL. Abychom tomu předešli, OnionShare automaticky zastavil server. Pro sdílení souborů ho musíte spustit znovu a sdílet novou URL.",
"zip_progress_bar_format": "Zpracovávám soubory: %p%",
"error_stealth_not_supported": "K autorizaci klienta potřebujete alespoň Tor 0.2.9.1-alpha (or Tor Browser 6.5) a python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare vyžaduje nejméně Tor 0.2.7.1 a nejméně python3-stem 1.4.0.",
@@ -78,11 +75,9 @@
"gui_receive_start_server": "Spustit mód přijímání",
"gui_receive_stop_server": "Zastavit přijímání",
"gui_receive_stop_server_autostop_timer": "Zastavit mód přijímání ({} zbývá)",
- "gui_copied_hidservauth_title": "Zkopírovaný HidServAuth token",
"gui_copied_url_title": "OnionShare Address zkopírována",
"gui_quit_title": "Ne tak rychle",
"gui_settings_stealth_option": "Autorizace klienta",
- "gui_settings_stealth_hidservauth_string": "Uložení priváního klíče pro znovu použití znamená, že teď můžete zkopírovat Váš HidServAuth.",
"gui_settings_autoupdate_label": "Kontrola nové verze",
"gui_settings_autoupdate_option": "Upozornit na dostupnost nové verze",
"gui_settings_autoupdate_timestamp": "Poslední kontrola {}",
diff --git a/desktop/src/onionshare/resources/locale/da.json b/desktop/src/onionshare/resources/locale/da.json
index 4bbdc94e..d24f70e7 100644
--- a/desktop/src/onionshare/resources/locale/da.json
+++ b/desktop/src/onionshare/resources/locale/da.json
@@ -33,11 +33,9 @@
"gui_share_start_server": "Begynd at dele",
"gui_share_stop_server": "Stop deling",
"gui_copy_url": "Kopiér adresse",
- "gui_copy_hidservauth": "Kopiér HidServAuth",
"gui_downloads": "Downloadhistorik",
"gui_canceled": "Annulleret",
"gui_copied_url": "OnionShare-adressen blev kopieret til udklipsholderen",
- "gui_copied_hidservauth": "HidServAuth-linjen blev kopieret til udklipsholderen",
"gui_please_wait": "Starter ... klik for at annullere.",
"gui_download_upload_progress_complete": ".",
"gui_download_upload_progress_starting": "{0:s}, %p% (udregner anslået ankomsttid)",
@@ -46,13 +44,11 @@
"gui_share_quit_warning": "Du er ved at afsende filer. Er du sikker på, at du vil afslutte OnionShare?",
"gui_quit_warning_quit": "Afslut",
"gui_quit_warning_dont_quit": "Annuller",
- "error_rate_limit": "Nogen har forsøgt at gætte din adgangskode for mange gange, så OnionShare har stoppet serveren. Begynd at dele igen og send en ny adresse til modtageren for at dele.",
"zip_progress_bar_format": "Komprimerer: %p%",
"error_stealth_not_supported": "For at bruge klientautentifikation skal du have mindst Tor 0.2.9.1-alpha (eller Tor Browser 6.5) og python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare kræver mindst både Tor 0.2.7.1 og python3-stem 1.4.0.",
"gui_settings_window_title": "Indstillinger",
"gui_settings_stealth_option": "Brug klientautentifikation",
- "gui_settings_stealth_hidservauth_string": "Ved at have gemt din private nøgle til at blive brugt igen, betyder det at du nu kan klikke for at kopiere din HidServAuth.",
"gui_settings_autoupdate_label": "Søg efter ny version",
"gui_settings_autoupdate_option": "Giv mig besked når der findes en ny version",
"gui_settings_autoupdate_timestamp": "Sidste søgning: {}",
@@ -113,7 +109,6 @@
"share_via_onionshare": "Del via OnionShare",
"gui_save_private_key_checkbox": "Brug en vedvarende adresse",
"gui_copied_url_title": "Kopierede OnionShare-adresse",
- "gui_copied_hidservauth_title": "Kopierede HidServAuth",
"gui_quit_title": "Klap lige hesten",
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Brug indbyggede meek_lite (Azure) udskiftelige transporter",
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Brug indbyggede meek_lite (Azure) udskiftelige transporter (kræver obfs4proxy)",
@@ -145,7 +140,6 @@
"gui_no_downloads": "Ingen downloads endnu",
"error_tor_protocol_error_unknown": "Der opstod en ukendt fejl med Tor",
"error_invalid_private_key": "Den private nøgletype understøttes ikke",
- "gui_use_legacy_v2_onions_checkbox": "Brug udgåede adresser",
"gui_status_indicator_share_stopped": "Klar til at dele",
"gui_status_indicator_share_working": "Starter …",
"gui_status_indicator_share_started": "Deler",
@@ -230,7 +224,6 @@
"hours_first_letter": "t",
"minutes_first_letter": "m",
"seconds_first_letter": "s",
- "invalid_password_guess": "Ugyldigt adgangskodegæt",
"gui_website_url_description": "Alle med OnionShare-adressen kan besøge dit websted med Tor Browser: ",
"gui_mode_website_button": "Udgiv websted",
"gui_website_mode_no_files": "Der er endnu ikke delt noget websted",
@@ -244,7 +237,6 @@
"gui_new_tab_receive_description": "Brug din computer som en online-dropbox. Andre vil kunne bruge Tor Browser til at sende filer til din computer.",
"mode_settings_share_autostop_sharing_checkbox": "Stop deling efter filerne er blevet sendt (fravælg for at gøre det muligt at downloade individuelle filer)",
"mode_settings_legacy_checkbox": "Brug en udgået adresse (v2 oniontjeneste, anbefales ikke)",
- "mode_settings_client_auth_checkbox": "Brug klientautentifikation",
"mode_settings_autostop_timer_checkbox": "Stop oniontjeneste på det planlagte tidspunkt",
"mode_settings_autostart_timer_checkbox": "Start oniontjeneste på det planlagte tidspunkt",
"mode_settings_persistent_checkbox": "Gem fanebladet og åbn det automatisk når jeg åbner OnionShare",
diff --git a/desktop/src/onionshare/resources/locale/de.json b/desktop/src/onionshare/resources/locale/de.json
index 4f04dd5b..518a7113 100644
--- a/desktop/src/onionshare/resources/locale/de.json
+++ b/desktop/src/onionshare/resources/locale/de.json
@@ -34,9 +34,7 @@
"systray_download_completed_message": "Der Benutzer hat deine Dateien heruntergeladen",
"systray_download_canceled_title": "OnionShare Download abgebrochen",
"systray_download_canceled_message": "Der Benutzer hat den Download abgebrochen",
- "gui_copy_hidservauth": "HidServAuth kopieren",
"gui_canceled": "Abgebrochen",
- "gui_copied_hidservauth_title": "HidServAuth kopiert",
"gui_quit_warning_quit": "Beenden",
"gui_quit_warning_dont_quit": "Abbrechen",
"gui_settings_window_title": "Einstellungen",
@@ -83,7 +81,6 @@
"gui_receive_stop_server_autostop_timer_tooltip": "Zeit läuft in {} ab",
"gui_no_downloads": "Bisher keine Downloads",
"gui_copied_url_title": "OnionShare-Adresse kopiert",
- "gui_copied_hidservauth": "HidServAuth-Zeile in die Zwischenablage kopiert",
"gui_download_upload_progress_complete": "%p%, {0:s} vergangen.",
"gui_download_upload_progress_starting": "{0:s}, %p% (berechne)",
"gui_download_upload_progress_eta": "{0:s}, Voraussichtliche Dauer: {1:s}, %p%",
@@ -91,7 +88,6 @@
"gui_quit_title": "Nicht so schnell",
"gui_share_quit_warning": "Du versendest gerade Dateien. Bist du sicher, dass du OnionShare beenden willst?",
"gui_receive_quit_warning": "Du empfängst gerade Dateien. Bist du sicher, dass du OnionShare beenden willst?",
- "error_rate_limit": "Jemand hat zu viele falsche Versuche gemacht, dein Passwort zu erraten, deswegen hat OnionShare die Freigabe gestoppt. Starte die Freigabe erneut und sende dem Empfänger eine neue OnionShare-Adresse.",
"zip_progress_bar_format": "Komprimiere: %p%",
"error_stealth_not_supported": "Um die Client-Authorisierung zu nutzen, benötigst du mindestens Tor 0.2.9.1-alpha (oder Tor Browser 6.5) und python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare benötigt mindestens sowohl Tor 0.2.7.1 als auch python3-stem 1.4.0.",
@@ -128,7 +124,6 @@
"gui_tor_connection_error_settings": "Versuche in den Einstellungen zu ändern, wie sich OnionShare mit dem Tor-Netzwerk verbindet.",
"gui_tor_connection_canceled": "Konnte keine Verbindung zu Tor herstellen.\n\nStelle sicher, dass du mit dem Internet verbunden bist, öffne OnionShare erneut und richte die Verbindung zu Tor ein.",
"share_via_onionshare": "Teilen über OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Nutze das alte Adressformat",
"gui_save_private_key_checkbox": "Nutze eine gleichbleibende Adresse",
"gui_share_url_description": "Jeder mit dieser OnionShare-Adresse kann deine Dateien mit dem Tor Browserherunterladen: ",
"gui_receive_url_description": "Jeder mit dieser OnionShare-Adresse kann mit dem Tor Browser Dateien auf deinen Computer hochladen: ",
@@ -171,7 +166,6 @@
"gui_settings_language_changed_notice": "Starte OnionShare neu, damit die neue Sprache übernommen wird.",
"help_config": "Ort deiner eigenen JSON Konfigurationsdatei (optional)",
"timeout_upload_still_running": "Warte bis Upload vollständig ist",
- "gui_settings_stealth_hidservauth_string": "Da dein privater Schlüssel jetzt gespeichert wurde, um ihn später erneut zu nutzen, kannst du jetzt klicken, um deinen HidServAuth zu kopieren.",
"gui_settings_connection_type_bundled_option": "Die integrierte Tor-Version von OnionShare nutzen",
"settings_error_socket_file": "Kann nicht mittels des Tor-Controller-Socket {} verbinden.",
"gui_server_started_after_autostop_timer": "Die Zeit ist abgelaufen, bevor der Server gestartet werden konnte. Bitte starte einen erneuten Teilvorgang.",
@@ -227,7 +221,6 @@
"hours_first_letter": "h",
"minutes_first_letter": "m",
"seconds_first_letter": "s",
- "invalid_password_guess": "Ungültige Passwortratschläge",
"gui_website_url_description": "Jeder mit dieser OnionShare-Adresse kann deine Webseite mit dem Tor Browseransehen: ",
"gui_mode_website_button": "Webseite veröffentlichen",
"systray_site_loaded_title": "Webseite geladen",
@@ -245,7 +238,6 @@
"mode_settings_website_disable_csp_checkbox": "Content-Security-Policy-Header deaktivieren (ermöglicht es, Ressourcen von Drittanbietern auf deiner Onion-Webseite einzubinden)",
"mode_settings_receive_data_dir_browse_button": "Durchsuchen",
"mode_settings_receive_data_dir_label": "Dateien speichern unter",
- "mode_settings_client_auth_checkbox": "Benutze Client-Authorisierung",
"mode_settings_legacy_checkbox": "Benutze ein veraltetes Adressformat (Onion-Dienste-Adressformat v2, nicht empfohlen)",
"mode_settings_autostop_timer_checkbox": "Onion-Dienst zu einem festgelegten Zeitpunkt stoppen",
"mode_settings_autostart_timer_checkbox": "Onion-Dienst zu einem festgelegten Zeitpunkt starten",
@@ -305,4 +297,4 @@
"gui_status_indicator_chat_scheduled": "Geplant…",
"gui_status_indicator_chat_working": "Startet…",
"gui_status_indicator_chat_stopped": "Bereit zum Chatten"
-}
\ No newline at end of file
+}
diff --git a/desktop/src/onionshare/resources/locale/el.json b/desktop/src/onionshare/resources/locale/el.json
index 173982a4..25649b4b 100644
--- a/desktop/src/onionshare/resources/locale/el.json
+++ b/desktop/src/onionshare/resources/locale/el.json
@@ -62,7 +62,6 @@
"gui_receive_quit_warning": "Αυτή τη στιγμή παραλαμβάνονται αρχείων. Είστε σίγουρος/η πώς θέλετε να κλείσετε το OnionShare;",
"gui_quit_warning_quit": "Έξοδος",
"gui_quit_warning_dont_quit": "Ακύρωση",
- "error_rate_limit": "Κάποιος/α προσπάθησε να μαντέψει τον κωδικό σας πολλές φορές. Για αυτό, το OnionShare τερματίστηκε αυτόματα. Πρέπει να ξεκινήσετε πάλι τον διαμοιρασμό και να στείλετε στον/ην παραλήπτη/τρια μια νέα διεύθυνση για να διαμοιραστούν αρχεία και μηνύματα μαζί σας.",
"zip_progress_bar_format": "Γίνεται συμπίεση: %p%",
"error_stealth_not_supported": "Για τη χρήση εξουσιοδότησης πελάτη, χρειάζεστε τουλάχιστον το Tor 0.2.9.1-alpha (ή τον Tor Browser 6.5) και το python3-stem 1.5.0.",
"error_ephemeral_not_supported": "Το OnionShare απαιτεί τουλάχιστον το Tor 0.2.7.1 και το python3-stem 1.4.0.",
@@ -134,7 +133,6 @@
"gui_server_started_after_autostop_timer": "Το χρονόμετρο αυτόματης διακοπής τελείωσε πριν την εκκίνηση του server. Παρακαλώ κάντε ένα νέο διαμοιρασμό.",
"gui_server_autostop_timer_expired": "Το χρονόμετρο αυτόματης διακοπής έχει ήδη τελειώσει. Παρακαλώ ρυθμίστε το για να ξεκινήσετε το διαμοιρασμό.",
"share_via_onionshare": "Μοιραστείτε μέσω OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Χρήση \"παραδοσιακών\" διευθύνσεων",
"gui_save_private_key_checkbox": "Χρήση μόνιμης διεύθυνσης",
"gui_share_url_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare μπορεί να κατεβάσει τα αρχεία σας χρησιμοποιώντας το Tor Browser: ",
"gui_receive_url_description": "Οποιοσδήποτε με αυτή τη διεύθυνση OnionShare, μπορεί να ανεβάσει αρχεία στον υπολογιστή σας χρησιμοποιώντας το Tor Browser: ",
@@ -243,7 +241,6 @@
"mode_settings_receive_data_dir_browse_button": "Επιλογή",
"mode_settings_receive_data_dir_label": "Αποθήκευση αρχείων σε",
"mode_settings_share_autostop_sharing_checkbox": "Τερματισμός κοινής χρήσης με την ολοκλήρωση αρχείων (αποεπιλέξτε για λήψη μεμονωμένων αρχείων)",
- "mode_settings_client_auth_checkbox": "Χρήση εξουσιοδότησης πελάτη",
"mode_settings_legacy_checkbox": "Χρήση παλαιάς διεύθυνσης (δεν προτείνεται η χρήση υπηρεσία v2 onion)",
"mode_settings_autostop_timer_checkbox": "Προγραμματισμένος τερματισμός",
"mode_settings_autostart_timer_checkbox": "Προγραμματισμένη εκκίνηση",
@@ -293,4 +290,4 @@
"gui_status_indicator_chat_scheduled": "Δρομολόγηση…",
"gui_status_indicator_chat_working": "Εκκίνηση…",
"gui_status_indicator_chat_stopped": "Έτοιμο για συνομιλία"
-}
\ No newline at end of file
+}
diff --git a/desktop/src/onionshare/resources/locale/en.json b/desktop/src/onionshare/resources/locale/en.json
index 3a5c2ecd..e7eba1cb 100644
--- a/desktop/src/onionshare/resources/locale/en.json
+++ b/desktop/src/onionshare/resources/locale/en.json
@@ -24,18 +24,19 @@
"gui_receive_stop_server_autostop_timer": "Stop Receive Mode ({} remaining)",
"gui_receive_flatpak_data_dir": "Because you installed OnionShare using Flatpak, you must save files to a folder in ~/OnionShare.",
"gui_copy_url": "Copy Address",
- "gui_copy_hidservauth": "Copy HidServAuth",
+ "gui_copy_client_auth": "Copy Private Key",
"gui_canceled": "Canceled",
"gui_copied_url_title": "Copied OnionShare Address",
"gui_copied_url": "OnionShare address copied to clipboard",
- "gui_copied_hidservauth_title": "Copied HidServAuth",
- "gui_copied_hidservauth": "HidServAuth line copied to clipboard",
+ "gui_copied_client_auth_title": "Copied Private Key",
+ "gui_copied_client_auth": "Private Key copied to clipboard",
"gui_show_url_qr_code": "Show QR Code",
"gui_qr_code_dialog_title": "OnionShare QR Code",
+ "gui_qr_label_url_title": "OnionShare Address",
+ "gui_qr_label_auth_string_title": "Private Key",
"gui_waiting_to_start": "Scheduled to start in {}. Click to cancel.",
"gui_please_wait_no_button": "Starting…",
"gui_please_wait": "Starting… Click to cancel.",
- "error_rate_limit": "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.",
"zip_progress_bar_format": "Compressing: %p%",
"gui_settings_window_title": "Settings",
"gui_settings_autoupdate_label": "Check for new version",
@@ -85,11 +86,16 @@
"gui_server_autostop_timer_expired": "The auto-stop timer already ran out. Please adjust it to start sharing.",
"gui_server_autostart_timer_expired": "The scheduled time has already passed. Please adjust it to start sharing.",
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "The auto-stop time can't be the same or earlier than the auto-start time. Please adjust it to start sharing.",
+ "gui_server_doesnt_support_stealth": "Sorry, this version of Tor doesn't support stealth (Client Authentication). Please try with a newer version of Tor, or use 'public' mode if it doesn't need to be private.",
"share_via_onionshare": "Share via OnionShare",
- "gui_share_url_description": "Anyone with this OnionShare address can download your files using the Tor Browser: ",
- "gui_website_url_description": "Anyone with this OnionShare address can visit your website using the Tor Browser: ",
- "gui_receive_url_description": "Anyone with this OnionShare address can upload files to your computer using the Tor Browser: ",
- "gui_chat_url_description": "Anyone with this OnionShare address can join this chat room using the Tor Browser: ",
+ "gui_share_url_description": "Anyone with this OnionShare address and private key can download your files using the Tor Browser: ",
+ "gui_share_url_public_description": "Anyone with this OnionShare address can download your files using the Tor Browser: ",
+ "gui_website_url_description": "Anyone with this OnionShare address and private key can visit your website using the Tor Browser: ",
+ "gui_website_url_public_description": "Anyone with this OnionShare address can visit your website using the Tor Browser: ",
+ "gui_receive_url_description": "Anyone with this OnionShare address and private key can upload files to your computer using the Tor Browser: ",
+ "gui_receive_url_public_description": "Anyone with this OnionShare address can upload files to your computer using the Tor Browser: ",
+ "gui_chat_url_description": "Anyone with this OnionShare address and private key can join this chat room using the Tor Browser: ",
+ "gui_chat_url_public_description": "Anyone with this OnionShare address can join this chat room using the Tor Browser: ",
"gui_url_label_persistent": "This share will not auto-stop.
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_onetime": "This share will stop after first completion.",
@@ -176,11 +182,9 @@
"mode_settings_advanced_toggle_hide": "Hide advanced settings",
"mode_settings_title_label": "Custom title",
"mode_settings_persistent_checkbox": "Save this tab, and automatically open it when I open OnionShare",
- "mode_settings_public_checkbox": "Don't use a password",
+ "mode_settings_public_checkbox": "This is a public OnionShare service (disables private key)",
"mode_settings_autostart_timer_checkbox": "Start onion service at scheduled time",
"mode_settings_autostop_timer_checkbox": "Stop onion service at scheduled time",
- "mode_settings_legacy_checkbox": "Use a legacy address (v2 onion service, not recommended)",
- "mode_settings_client_auth_checkbox": "Use client authorization",
"mode_settings_share_autostop_sharing_checkbox": "Stop sharing after files have been sent (uncheck to allow downloading individual files)",
"mode_settings_receive_data_dir_label": "Save files to",
"mode_settings_receive_data_dir_browse_button": "Browse",
@@ -207,4 +211,4 @@
"error_port_not_available": "OnionShare port not available",
"history_receive_read_message_button": "Read Message",
"error_tor_protocol_error": "There was an error with Tor: {}"
-}
\ No newline at end of file
+}
diff --git a/desktop/src/onionshare/resources/locale/eo.json b/desktop/src/onionshare/resources/locale/eo.json
index ea3cef9c..9f450275 100644
--- a/desktop/src/onionshare/resources/locale/eo.json
+++ b/desktop/src/onionshare/resources/locale/eo.json
@@ -20,11 +20,9 @@
"gui_share_start_server": "Komenci kundividon",
"gui_share_stop_server": "Ĉesigi kundividon",
"gui_copy_url": "Kopii URL",
- "gui_copy_hidservauth": "Kopii HidServAuth",
"gui_downloads": "Elŝutoj:",
"gui_canceled": "Nuligita",
"gui_copied_url": "URL kopiita en tondujon",
- "gui_copied_hidservauth": "Copied HidServAuth line to clipboard",
"gui_please_wait": "Bonvolu atendi...",
"gui_download_upload_progress_complete": "%p%, Tempo pasinta: {0:s}",
"gui_download_upload_progress_starting": "{0:s}, %p% (Computing ETA)",
@@ -33,7 +31,6 @@
"gui_share_quit_warning": "Ĉu vi certas ke vi volas foriri?\nLa URL, kiun vi kundividas ne plu ekzistos.",
"gui_quit_warning_quit": "Foriri",
"gui_quit_warning_dont_quit": "Ne foriri",
- "error_rate_limit": "Iu atankanto povas provi diveni vian URL. Por eviti tion, OnionShare aŭtomate haltis la servilon. Por kundividi la dosierojn vi devas starti ĝin denove kaj kundividi la novan URL.",
"zip_progress_bar_format": "Compressing files: %p%",
"error_stealth_not_supported": "To create stealth onion services, you need at least Tor 0.2.9.1-alpha (or Tor Browser 6.5) and at least python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare postulas almenaŭ Tor 0.2.7.1 kaj almenaŭ python3-stem 1.4.0.",
diff --git a/desktop/src/onionshare/resources/locale/es.json b/desktop/src/onionshare/resources/locale/es.json
index bc30af46..7b04a9e2 100644
--- a/desktop/src/onionshare/resources/locale/es.json
+++ b/desktop/src/onionshare/resources/locale/es.json
@@ -28,16 +28,13 @@
"help_stealth": "Usar autorización de cliente (avanzada)",
"help_config": "Ubicación del archivo de configuración JSON personalizado (opcional)",
"gui_copied_url_title": "Dirección OnionShare Copiada",
- "gui_copied_hidservauth": "Línea HidServAuth copiada al portapapeles",
"gui_please_wait": "Comenzando… Clic para cancelar.",
"gui_quit_title": "No tan rápido",
- "error_rate_limit": "Alguien ha intentado adivinar tu contraseña demasiadas veces, por lo que OnionShare ha detenido al servidor. Inicia la compartición de nuevo y envía una dirección nueva al receptor.",
"zip_progress_bar_format": "Comprimiendo: %p%",
"error_stealth_not_supported": "Para utilizar autorización de cliente, necesitas al menos Tor 0.2.9.1-alpha (o Navegador Tor 6.5) y python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare necesita por lo menos Tor 0.2.7.1 y python3-stem 1.4.0.",
"gui_settings_window_title": "Configuración",
"gui_settings_stealth_option": "Utilizar autorización de cliente",
- "gui_settings_stealth_hidservauth_string": "Habiendo guardado tu clave privada para reutilizarla, ahora puedes hacer clic para copiar tu HidServAuth.",
"gui_settings_autoupdate_label": "Comprobar nuevas versiones",
"gui_settings_autoupdate_option": "Notifícame cuando haya una versión nueva disponible",
"gui_settings_autoupdate_check_button": "Comprobar Nueva Versión",
@@ -66,10 +63,8 @@
"gui_receive_stop_server": "Detener Modo de Recepción",
"gui_receive_stop_server_autostop_timer": "Detener Modo de Recepción (quedan {})",
"gui_receive_stop_server_autostop_timer_tooltip": "El temporizador de parada automática termina en {}",
- "gui_copy_hidservauth": "Copiar HidServAuth",
"gui_no_downloads": "Ninguna Descarga Todavía",
"gui_canceled": "Cancelado",
- "gui_copied_hidservauth_title": "HidServAuth Copiada",
"settings_error_unknown": "No se puede conectar al controlador Tor porque tu configuración no tiene sentido.",
"settings_error_automatic": "No se puede conectar al controlador Tor. ¿Se está ejecutando el Navegador Tor (disponible en torproject.org) en segundo plano?",
"settings_error_socket_port": "No se puede conectar al controlador Tor en {}:{}.",
@@ -98,7 +93,6 @@
"gui_server_started_after_autostop_timer": "El temporizador de parada automática expiró antes de que se iniciara el servidor. Por favor crea un recurso compartido nuevo.",
"gui_server_autostop_timer_expired": "El temporizador de parada automática ya expiró. Por favor ajústalo para comenzar a compartir.",
"share_via_onionshare": "Compartir con OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Usar direcciones obsoletas",
"gui_save_private_key_checkbox": "Usar una dirección persistente",
"gui_share_url_description": "Cualquiera con esta dirección OnionShare puede descargar tus archivos usando el Navegador Tor: ",
"gui_receive_url_description": "Cualquiera con esta dirección OnionShare puede cargar archivos a tu equipo usando el Navegador Tor: ",
@@ -231,7 +225,6 @@
"hours_first_letter": "h",
"minutes_first_letter": "m",
"seconds_first_letter": "s",
- "invalid_password_guess": "Intento de contraseña incorrecto",
"gui_website_url_description": "Cualquiera con esta dirección OnionShare puede visitar tu sitio web usando el Navegador Tor: ",
"gui_mode_website_button": "Publicar sitio web",
"systray_site_loaded_title": "Sitio web cargado",
@@ -247,7 +240,6 @@
"systray_individual_file_downloaded_message": "Archivo individual {} visto",
"gui_settings_csp_header_disabled_option": "Deshabilitar encabezado de Política de Seguridad de Contenido",
"gui_settings_website_label": "Configuración de sitio web",
- "mode_settings_client_auth_checkbox": "Utilizar autorización de cliente",
"mode_settings_legacy_checkbox": "Usar una dirección obsoleta (servicio cebolla v2, no recomendado)",
"mode_settings_autostop_timer_checkbox": "Detener el servicio cebolla a una hora determinada",
"mode_settings_autostart_timer_checkbox": "Iniciar el servicio cebolla a una hora determinada",
diff --git a/desktop/src/onionshare/resources/locale/fa.json b/desktop/src/onionshare/resources/locale/fa.json
index 5fe578e0..2c27c998 100644
--- a/desktop/src/onionshare/resources/locale/fa.json
+++ b/desktop/src/onionshare/resources/locale/fa.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "توقف حالت دریافت ({} باقیمانده)",
"gui_receive_stop_server_autostop_timer_tooltip": "تایمر توقف خودکار در {} به پایان می رسد",
"gui_copy_url": "کپی آدرس",
- "gui_copy_hidservauth": "کپی HidServAuth",
"gui_downloads": "دانلود تاریخچه",
"gui_no_downloads": "",
"gui_canceled": "لغو شده",
"gui_copied_url_title": "آدرس OnionShare کپی شد",
"gui_copied_url": "آدرس OnionShare بر کلیپ بورد کپی شد",
- "gui_copied_hidservauth_title": "HidServAuth کپی شد",
- "gui_copied_hidservauth": "خط HidServAuth بر کلیپ بورد کپی شد",
"gui_please_wait": "در حال آغاز... برای لغو کلیک کنید.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "شما در پروسه دریافت پرونده هستید. مطمئنید که میخواهید از OnionShare خارج شوید؟",
"gui_quit_warning_quit": "خروج",
"gui_quit_warning_dont_quit": "لغو",
- "error_rate_limit": "شخصی تعداد زیادی تلاش ناموفق برای حدس زدن گذرواژه شما داشته است، بنابراین OnionShare کارساز را متوقف کرده است. همرسانی را دوباره آغاز کنید و به گیرنده، یک نشانی جدید برای همرسانی بفرستید.",
"zip_progress_bar_format": "فشرده سازی: %p%",
"error_stealth_not_supported": "برای استفاده از احراز هویت کلاینت، شما نیاز به داشتن Tor 0.2.9.1-alpha (یا مرورگر Tor 6.5) و python3-stem 1.5.0 دارید.",
"error_ephemeral_not_supported": "OnionShare حداقل به Tor 0.2.7.1 و python3-stem 1.4.0 نیاز دارد.",
"gui_settings_window_title": "تنظیمات",
"gui_settings_whats_this": "این چیست؟",
"gui_settings_stealth_option": "استفاده از احراز هویت کلاینت",
- "gui_settings_stealth_hidservauth_string": "ذخیره کردن کلید خصوصی برای استفاده دوباره، بدین معناست که الان میتوانید برای کپی HidServAuth کلیک کنید.",
"gui_settings_autoupdate_label": "بررسی برای نسخه جدید",
"gui_settings_autoupdate_option": "زمانی که نسخه جدید موجود بود من را خبر کن",
"gui_settings_autoupdate_timestamp": "آخرین بررسی: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "زمانسنج توقف خودکار، قبل از آغاز کارساز به پایان رسید. لطفا یک همرسانی جدید درست کنید.",
"gui_server_autostop_timer_expired": "زمانسنج توقف خودکار به پایان رسید. لطفا برای آغاز همرسانی آن را تنظیم کنید.",
"share_via_onionshare": "همرسانی با OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "استفاده از آدرسهای بازمانده",
"gui_save_private_key_checkbox": "استفاده از یک آدرس پایا",
"gui_share_url_description": "هرکس با این آدرس OnionShare میتواند روی کامپیوتر شما پرونده بارگیری کند از طریق مرورگر تور: ",
"gui_receive_url_description": "هرکس با این آدرس OnionShare میتواند روی کامپیوتر شما پرونده بارگذاری کند از طریق مرورگر تور: ",
diff --git a/desktop/src/onionshare/resources/locale/fi.json b/desktop/src/onionshare/resources/locale/fi.json
index e7020b3c..657be06c 100644
--- a/desktop/src/onionshare/resources/locale/fi.json
+++ b/desktop/src/onionshare/resources/locale/fi.json
@@ -41,23 +41,18 @@
"gui_receive_stop_server": "Lopeta vastaanottotila",
"gui_receive_stop_server_autostop_timer": "Lopeta vastaanottotila ({} jäljellä)",
"gui_receive_stop_server_autostop_timer_tooltip": "Auto-stop ajastin loppuu kello {}",
- "gui_copy_hidservauth": "Kopioi HidServAuth",
"gui_copied_url_title": "Kopioi OnionShare-osoite",
- "gui_copied_hidservauth_title": "HidServAuth kopioitu",
- "gui_copied_hidservauth": "HidServAuth-rivi kopioitu leikepöydälle",
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "Ei niin nopeasti",
"gui_share_quit_warning": "Olet lähettämässä tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
"gui_receive_quit_warning": "Olet vastaanottamassa tiedostoja. Haluatko varmasti lopettaa OnionSharen?",
"gui_quit_warning_quit": "Lopeta",
"gui_quit_warning_dont_quit": "Peruuta",
- "error_rate_limit": "Joku on yrittänyt arvata salasanasi väärin liian monta kertaa, joten OnionShare on pysäyttänyt palvelimen. Aloita jakaminen uudelleen ja lähetä vastaanottajalle uusi osoite jatkaaksesi jakamista.",
"error_stealth_not_supported": "Asiakasvaltuuden käyttämiseen tarvitaan ainakin Tor 0.2.9.1-alpha (tai Tor Browser 6.5) ja python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionSharen käyttö vaatii ainakin Tor 0.2.7.1 ja python3-stem 1.4.0.",
"gui_settings_window_title": "Asetukset",
"gui_settings_whats_this": "Mikä tämä on?",
"gui_settings_stealth_option": "Käytä asiakaslupaa",
- "gui_settings_stealth_hidservauth_string": "Nyt kun olet tallentanut yksityisen avaimesi uudelleenkäyttöä varten, voit kopioida HidServAuth-osoitteesi napista.",
"gui_settings_autoupdate_label": "Tarkista päivitykset",
"gui_settings_autoupdate_option": "Ilmoita minulle, kun uusi versio on saatavilla",
"gui_settings_autoupdate_timestamp": "Viimeksi tarkistettu: {}",
@@ -124,7 +119,6 @@
"gui_server_autostop_timer_expired": "Automaattinen pysäytysajastin päättyi jo.\nSäädä se jaon aloittamiseksi.",
"share_via_onionshare": "Jaa OnionSharella",
"gui_connect_to_tor_for_onion_settings": "Yhdistä Tor-verkkoon nähdäksesi onion palvelun asetukset",
- "gui_use_legacy_v2_onions_checkbox": "Käytä vanhoja osoitteita",
"gui_save_private_key_checkbox": "Käytä pysyviä osoitteita",
"gui_share_url_description": "Kaikki joilla on tämä OnionShare-osoite voivat ladata tiedostojasi käyttämällä Tor-selainta: ",
"gui_receive_url_description": "Kaikki joilla on tämä OnionShare-osoite voivat lähettäätiedostoja tietokoneellesi käyttämällä Tor-selainta: ",
@@ -222,7 +216,6 @@
"gui_new_tab_tooltip": "Avaa uusi välilehti",
"gui_new_tab": "Uusi välilehti",
"mode_settings_website_disable_csp_checkbox": "Poista 'Sisällön suojauskäytännön' otsikko käytöstä (mahdollistaa kolmansien osapuolien resurssien käytön nettisivussasi)",
- "mode_settings_client_auth_checkbox": "Käytä asiakkaan valtuutusta",
"mode_settings_legacy_checkbox": "Käytä vanhaa osoitetta (v2 onion-palvelu, ei suositella)",
"mode_settings_autostop_timer_checkbox": "Lopeta onion-palvelu tiettyyn kellon aikaan",
"mode_settings_autostart_timer_checkbox": "Aloita onion-palvelu tiettyyn kellon aikaan",
diff --git a/desktop/src/onionshare/resources/locale/fr.json b/desktop/src/onionshare/resources/locale/fr.json
index 8c4bf20a..5ac2c6d0 100644
--- a/desktop/src/onionshare/resources/locale/fr.json
+++ b/desktop/src/onionshare/resources/locale/fr.json
@@ -22,7 +22,6 @@
"gui_share_start_server": "Commencer le partage",
"gui_share_stop_server": "Arrêter le partage",
"gui_copy_url": "Copier l’adresse",
- "gui_copy_hidservauth": "Copier HidServAuth",
"gui_downloads": "Historique de téléchargement",
"gui_canceled": "Annulé",
"gui_copied_url": "L’adresse OnionShare a été copiée dans le presse-papiers",
@@ -38,7 +37,6 @@
"not_a_readable_file": "{0:s} n’est pas un fichier lisible.",
"timeout_download_still_running": "En attente de la fin du téléchargement",
"systray_download_completed_message": "La personne a terminé de télécharger vos fichiers",
- "gui_copied_hidservauth_title": "HidServAuth a été copié",
"gui_settings_window_title": "Paramètres",
"gui_settings_autoupdate_timestamp": "Dernière vérification : {}",
"gui_settings_close_after_first_download_option": "Arrêter le partage après l’envoi des fichiers",
@@ -58,7 +56,6 @@
"connecting_to_tor": "Connexion au réseau Tor",
"help_config": "Emplacement du fichier personnalisé de configuration JSON (facultatif)",
"large_filesize": "Avertissement : L’envoi d’un partage volumineux peut prendre des heures",
- "gui_copied_hidservauth": "La ligne HidServAuth a été copiée dans le presse-papiers",
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"zip_progress_bar_format": "Compression : %p %",
"error_ephemeral_not_supported": "OnionShare exige au moins et Tor 0.2.7.1 et python3-stem 1.4.0.",
@@ -152,18 +149,15 @@
"gui_download_upload_progress_complete": "%p%, {0:s} écoulées.",
"gui_download_upload_progress_starting": "{0:s}, %p% (estimation)",
"gui_download_upload_progress_eta": "{0:s}, Fin : {1:s}, %p%",
- "error_rate_limit": "Quelqu’un a effectué trop de tentatives infructueuses pour deviner votre mot de passe, c’est pourquoi OnionShare a arrêté le serveur. Redémarrez le partage et envoyez au destinataire une nouvelle adresse afin de partager.",
"error_stealth_not_supported": "Pour utiliser l’autorisation client, Tor 0.2.9.1-alpha (ou le Navigateur Tor 6.5) et python3-stem 1.5.0 ou versions ultérieures sont exigés.",
"gui_settings_stealth_option": "Utiliser l’autorisation du client",
"timeout_upload_still_running": "En attente de la fin de l'envoi",
- "gui_settings_stealth_hidservauth_string": "L’enregistrement de votre clé privée pour réutilisation signifie que vous pouvez maintenant cliquer pour copier votre HidServAuth.",
"gui_settings_autoupdate_check_button": "Vérifier la présence d’une nouvelle version",
"settings_test_success": "Vous êtes connecté au contrôleur Tor.\n\nVersion de Tor : {}\nPrend en charge les services onion éphémères : {}.\nPrend en charge l’authentification client : {}.\nPrend en charge la nouvelle génération d’adresses .onion : {}.",
"update_error_check_error": "Impossible de vérifier l’existence d’une mise à jour : peut-être n’êtes-vous pas connecté à Tor ou le site Web d’OnionShare est-il hors service ?",
"update_error_invalid_latest_version": "Impossible de vérifier la présence d’une mise à jour : le site Web d’OnionShare indique que la version la plus récente est la « {} » qui n’est pas reconnue…",
"gui_tor_connection_ask": "Ouvrir les paramètres pour résoudre le problème de connexion à Tor ?",
"gui_tor_connection_canceled": "Impossible de se connecter à Tor.\n\nAssurez-vous d’être connecté à Internet, puis rouvrez OnionShare et configurez sa connexion à Tor.",
- "gui_use_legacy_v2_onions_checkbox": "Utiliser les adresses héritées",
"info_in_progress_uploads_tooltip": "{} envoi(s) en cours",
"info_completed_uploads_tooltip": "{} envoi(s) terminé(s)",
"error_cannot_create_downloads_dir": "Impossible de créer le dossier du mode réception : {}",
@@ -233,7 +227,6 @@
"systray_website_started_title": "Début du partage du site Web",
"systray_website_started_message": "Quelqu’un visite votre site Web",
"gui_website_mode_no_files": "Aucun site Web n’a encore été partagé",
- "invalid_password_guess": "La tentative de mot de passe est invalide",
"gui_mode_website_button": "Publier un site Web",
"incorrect_password": "Le mot de passe est erroné",
"gui_settings_individual_downloads_label": "Décocher pour permettre le téléchargement de fichiers individuels",
@@ -258,7 +251,6 @@
"mode_settings_receive_data_dir_browse_button": "Parcourir",
"mode_settings_receive_data_dir_label": "Enregistrer les fichiers dans",
"mode_settings_share_autostop_sharing_checkbox": "Cesser le partage une fois que les fichiers ont été envoyés (décocher afin de permettre le téléchargement de fichiers individuels)",
- "mode_settings_client_auth_checkbox": "Utiliser l’autorisation du client",
"mode_settings_legacy_checkbox": "Utiliser une ancienne adresse (service onion v2, non recommandée)",
"mode_settings_public_checkbox": "Ne pas utiliser un mot de passe",
"mode_settings_persistent_checkbox": "Enregistrer cet onglet et l’ouvrir automatiquement quand j’ouvre OnionShare",
diff --git a/desktop/src/onionshare/resources/locale/ga.json b/desktop/src/onionshare/resources/locale/ga.json
index 76e9d64a..3ff5f404 100644
--- a/desktop/src/onionshare/resources/locale/ga.json
+++ b/desktop/src/onionshare/resources/locale/ga.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Stop an Mód Glactha ({} fágtha)",
"gui_receive_stop_server_autostop_timer_tooltip": "Amadóir uathstoptha caite {}",
"gui_copy_url": "Cóipeáil an Seoladh",
- "gui_copy_hidservauth": "Cóipeáil HidServAuth",
"gui_downloads": "Stair Íoslódála",
"gui_no_downloads": "Níl aon rud íoslódáilte agat fós",
"gui_canceled": "Curtha ar ceal",
"gui_copied_url_title": "Cóipeáladh an Seoladh OnionShare",
"gui_copied_url": "Cóipeáladh an seoladh OnionShare go dtí an ghearrthaisce",
- "gui_copied_hidservauth_title": "Cóipeáladh HidServAuth",
- "gui_copied_hidservauth": "Cóipeáladh an líne HidServAuth go dtí an ghearrthaisce",
"gui_please_wait": "Ag tosú... Cliceáil lena chur ar ceal.",
"gui_download_upload_progress_complete": "%[%, {0:s} caite.",
"gui_download_upload_progress_starting": "{0:s}, %p% (á áireamh)",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Tá tú le linn roinnt comhad a íoslódáil. An bhfuil tú cinnte gur mhaith leat OnionShare a scor?",
"gui_quit_warning_quit": "Scoir",
"gui_quit_warning_dont_quit": "Cealaigh",
- "error_rate_limit": "Rinne duine éigin an iomarca iarrachtaí míchearta ar d'fhocal faire, agus dá bharr sin stop OnionShare an freastalaí. Tosaigh ag comhroinnt arís agus cuir seoladh nua chuig an bhfaighteoir.",
"zip_progress_bar_format": "Á chomhbhrú: %p%",
"error_stealth_not_supported": "Chun údarú cliaint a úsáid, teastaíonn uait Tor 0.2.9.1-alpha (nó Brabhsálaí 6.5) agus python3-stem 1.5.0.",
"error_ephemeral_not_supported": "Teastaíonn uait ar a laghad Tor 0.2.7.1 agus python3-stem 1.4.0 chun OnionShare a úsáid.",
"gui_settings_window_title": "Socruithe",
"gui_settings_whats_this": "Cad é seo",
"gui_settings_stealth_option": "Úsáid údarú cliaint",
- "gui_settings_stealth_hidservauth_string": "Toisc gur shábháil tú d'eochair phríobháideach, anois is féidir leat cliceáil chun an HidServAuth a chóipeáil.",
"gui_settings_autoupdate_label": "Lorg nuashonruithe",
"gui_settings_autoupdate_option": "Cuir in iúl dom nuair a bheidh leagan nua ar fáil",
"gui_settings_autoupdate_timestamp": "Seiceáilte: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "Bhí an t-amadóir uathstoptha caite sular thosaigh an freastalaí. Caithfidh tú comhroinnt nua a chruthú.",
"gui_server_autostop_timer_expired": "Tá an t-amadóir uathstoptha caite cheana. Caithfidh tú é a athshocrú sular féidir leat comhaid a chomhroinnt.",
"share_via_onionshare": "Comhroinn trí OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Úsáid seoltaí sean-nóis",
"gui_save_private_key_checkbox": "Úsáid seoladh seasmhach",
"gui_share_url_description": "Tá aon duine a bhfuil an seoladh OnionShare aige/aici in ann do chuid comhad a íoslódáil le Brabhsálaí Tor: ",
"gui_receive_url_description": "Tá aon duine a bhfuil an seoladh OnionShare aige/aici in ann comhaid a uaslódáil go dtí do ríomhaire le Brabhsálaí Tor: ",
diff --git a/desktop/src/onionshare/resources/locale/gl.json b/desktop/src/onionshare/resources/locale/gl.json
index 67b095cc..a0e18619 100644
--- a/desktop/src/onionshare/resources/locale/gl.json
+++ b/desktop/src/onionshare/resources/locale/gl.json
@@ -24,17 +24,13 @@
"gui_receive_stop_server_autostop_timer": "Deter o modo Recepción ({} restante)",
"gui_receive_flatpak_data_dir": "Debido a que instalaches OnionShare usando Flatpk, tes que gardar os ficheiros nun cartafol dentro de ~/OnionShare.",
"gui_copy_url": "Copiar enderezo",
- "gui_copy_hidservauth": "Copiar HidServAuth",
"gui_canceled": "Cancelado",
"gui_copied_url_title": "Enderezo de OnionShare copiado",
"gui_copied_url": "Enderezo OnionShare copiado ó portapapeis",
- "gui_copied_hidservauth_title": "HidServAuth copiado",
- "gui_copied_hidservauth": "Liña HidServAuth copiada ó portapapeis",
"gui_show_url_qr_code": "Mostrar código QR",
"gui_qr_code_dialog_title": "Código QR OnionShare",
"gui_waiting_to_start": "Programado para comezar en {}. Fai clic para cancelar.",
"gui_please_wait": "Iniciando... Fai click para cancelar.",
- "error_rate_limit": "Alguén fixo demasiados intentos errados para adiviñar o teu contrasinal, polo que OnionShare detivo o servidor. Comeza a compartir de novo e envía ao destinatario un novo enderezo para compartir.",
"zip_progress_bar_format": "Comprimindo: %p%",
"gui_settings_window_title": "Axustes",
"gui_settings_autoupdate_label": "Comproba se hai nova versión",
@@ -169,7 +165,6 @@
"mode_settings_autostart_timer_checkbox": "Iniciar o servizo onion na hora programada",
"mode_settings_autostop_timer_checkbox": "Deter o servizo onion na hora programada",
"mode_settings_legacy_checkbox": "Usar enderezos antigos (servizo onion v2, non recomendado)",
- "mode_settings_client_auth_checkbox": "Usar autorización do cliente",
"mode_settings_share_autostop_sharing_checkbox": "Deixar de compartir unha vez enviado o ficheiro (desmarca para permitir a descarga de ficheiros individuais)",
"mode_settings_receive_data_dir_label": "Gardar ficheiros en",
"mode_settings_receive_data_dir_browse_button": "Navegar",
diff --git a/desktop/src/onionshare/resources/locale/gu.json b/desktop/src/onionshare/resources/locale/gu.json
index 15c7790d..313f17d8 100644
--- a/desktop/src/onionshare/resources/locale/gu.json
+++ b/desktop/src/onionshare/resources/locale/gu.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -63,14 +60,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/he.json b/desktop/src/onionshare/resources/locale/he.json
index c0965d19..ee941304 100644
--- a/desktop/src/onionshare/resources/locale/he.json
+++ b/desktop/src/onionshare/resources/locale/he.json
@@ -47,14 +47,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "העתק כתובת",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "מבוטל",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -65,14 +62,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "יציאה",
"gui_quit_warning_dont_quit": "ביטול",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "הגדרות",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "בדיקה לאיתור גרסה חדשה",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -138,7 +133,6 @@
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/hi.json b/desktop/src/onionshare/resources/locale/hi.json
index 8efb9301..7cc230c8 100644
--- a/desktop/src/onionshare/resources/locale/hi.json
+++ b/desktop/src/onionshare/resources/locale/hi.json
@@ -36,12 +36,9 @@
"gui_receive_stop_server_autostop_timer": "रिसीव मोड बंद करें ({} remaining)",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "पता कॉपी करें",
- "gui_copy_hidservauth": "HidServAuth कॉपी करें",
"gui_canceled": "रद्द हो गया",
"gui_copied_url_title": "OnionShare पता कॉपी हो गया",
"gui_copied_url": "OnionShare पता क्लिपबोर्ड में कॉपी हो गया",
- "gui_copied_hidservauth_title": "HidServAuth कॉपी हो गया",
- "gui_copied_hidservauth": "HidServAuth लाइन क्लिपबोर्ड में कॉपी हो गया",
"gui_please_wait": "शुरू हो रहा है... रद्द करने के लिए क्लिक करें।",
"version_string": "",
"gui_quit_title": "इतनी तेज़ी से नहीं",
@@ -49,14 +46,12 @@
"gui_receive_quit_warning": "आप अभी फाइलों को प्राप्त रहे हैं। क्या आप वाकई OnionShare को बंद करना चाहते हैं?",
"gui_quit_warning_quit": "छोड़ें",
"gui_quit_warning_dont_quit": "रद्द करें",
- "error_rate_limit": "किसी ने आपके पासवर्ड का अंदाज़ा लगाने के लिए कई सारे गलत प्रयास किए हैं, इसीलिए OnionShare ने सर्वर रोक दिया है। साझा पुनः शुरू करें और साझा करने के लिए भेजनेवाले व्यक्ति को एक नया पता साझा करें।",
"zip_progress_bar_format": "कॉम्प्रेस हो रहा है: %p%",
"error_stealth_not_supported": "क्लाइंट सत्यापन उपयोग करने के लिए, आपको कम से कम Tor 0.2.9.1-alpha (या Tor Browser 6.5) और python3-stem 1.5.0 दोनों चाहिए।",
"error_ephemeral_not_supported": "OnionShare को कम से कम Tor 0.2.7.1 और python3-stem 1.4.0 की आवश्यकता है।",
"gui_settings_window_title": "सेटिंग्स",
"gui_settings_whats_this": "यह क्या है",
"gui_settings_stealth_option": "क्लाइंट सत्यापन उपयोग करें",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "नए संस्करण की जांच करें",
"gui_settings_autoupdate_option": "जब कोई नया संस्करण आए तो मुझे सूचित करें",
"gui_settings_autoupdate_timestamp": "अंतिम जांच: {}",
@@ -123,7 +118,6 @@
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/hr.json b/desktop/src/onionshare/resources/locale/hr.json
index 29252c1d..07093047 100644
--- a/desktop/src/onionshare/resources/locale/hr.json
+++ b/desktop/src/onionshare/resources/locale/hr.json
@@ -22,12 +22,9 @@
"gui_receive_stop_server": "Prekini modus primanja",
"gui_receive_stop_server_autostop_timer": "Prekini modus primanja ({} preostalo)",
"gui_copy_url": "Kopiraj adresu",
- "gui_copy_hidservauth": "Kopiraj HidServAuth",
"gui_canceled": "Prekinuto",
"gui_copied_url_title": "OnionShare adresa je kopirana",
"gui_copied_url": "OnionShare adresa je kopirana u međuspremnik",
- "gui_copied_hidservauth_title": "HidServAuth kopirano",
- "gui_copied_hidservauth": "HidServAuth redak je kopiran u međuspremnik",
"gui_waiting_to_start": "Planirano pokretanje za {}. Pritisni za prekid.",
"gui_please_wait": "Pokretanje … Pritisni za prekid.",
"gui_quit_title": "Ne tako brzo",
@@ -35,14 +32,12 @@
"gui_receive_quit_warning": "Proces primanja datoteka je u tijeku. Zaista želiš zatvoriti OnionShare?",
"gui_quit_warning_quit": "Izađi",
"gui_quit_warning_dont_quit": "Odustani",
- "error_rate_limit": "Netko je prečesto pokušao pogoditi tvoju lozinku, pa je OnionShare zaustavio poslužitelja. Ponovo pokreni dijeljenje i primatelju pošalji novu adresu za dijeljenje.",
"zip_progress_bar_format": "Komprimiranje: %p %",
"error_stealth_not_supported": "Za korištenje autorizacije klijenta, potrebni su barem Tor 0.2.9.1-alpha (ili Tor Browser 6.5) i python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare zahtijeva barem Tor 0.2.7.1 i python3-stem 1.4.0.",
"gui_settings_window_title": "Postavke",
"gui_settings_whats_this": "Što je ovo?",
"gui_settings_stealth_option": "Koristi autorizaciju klijenta",
- "gui_settings_stealth_hidservauth_string": "Budući da je privatni ključ spremljen za ponovnu upotrebu, znači da sada možeš kopirati tvoj HidServAuth.",
"gui_settings_autoupdate_label": "Traži nove verzije",
"gui_settings_autoupdate_option": "Obavijesti me o novim verzijama",
"gui_settings_autoupdate_timestamp": "Zadnja provjera: {}",
@@ -114,7 +109,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Vrijeme za automatsko prekidanje ne može biti isto kao vrijeme za automatsko pokretanje ili ranije. Za pokretanje dijeljenja, podesi vrijeme.",
"share_via_onionshare": "Dijeli putem OnionSharea",
"gui_connect_to_tor_for_onion_settings": "Poveži se s Torom za prikaz postavki Onion usluge",
- "gui_use_legacy_v2_onions_checkbox": "Koristi stare adrese",
"gui_save_private_key_checkbox": "Koristi trajnu adresu",
"gui_share_url_description": "Svatko s ovom OnionShare adresom može preuzeti tvoje datoteke koristeći Tor preglednik: ",
"gui_website_url_description": "Svatko s ovom OnionShare adresom može posjetiti tvoju web-stranicu koristeći Tor preglednik: ",
@@ -184,7 +178,6 @@
"mode_settings_receive_data_dir_browse_button": "Pregledaj",
"mode_settings_receive_data_dir_label": "Spremi datoteke u",
"mode_settings_share_autostop_sharing_checkbox": "Prekini dijeljenje nakon što se datoteke pošalju (deaktiviraj za preuzimanje pojedinačnih datoteka)",
- "mode_settings_client_auth_checkbox": "Koristi autorizaciju klijenta",
"mode_settings_legacy_checkbox": "Koristi stare adrese (v2 onion usluge, ne preporučuje se)",
"mode_settings_autostop_timer_checkbox": "Prekini onion uslugu u planirano vrijeme",
"mode_settings_autostart_timer_checkbox": "Pokreni onion uslugu u planirano vrijeme",
diff --git a/desktop/src/onionshare/resources/locale/hu.json b/desktop/src/onionshare/resources/locale/hu.json
index 7d0f6766..3a725427 100644
--- a/desktop/src/onionshare/resources/locale/hu.json
+++ b/desktop/src/onionshare/resources/locale/hu.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Fogadó mód leállítása ({} van hátra)",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "Cím másolása",
- "gui_copy_hidservauth": "HidServAuth másolása",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Megszakítva",
"gui_copied_url_title": "OnionShare-cím másolva",
"gui_copied_url": "OnionShare-cím a vágólapra másolva",
- "gui_copied_hidservauth_title": "HidServAuth másolva",
- "gui_copied_hidservauth": "HidServAuth-sor a vágólapra másolva",
"gui_please_wait": "Indítás... Kattints a megszakításhoz.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "A fájlok fogadása folyamatban van. Biztosan kilépsz az OnionShare-ből?",
"gui_quit_warning_quit": "Kilépés",
"gui_quit_warning_dont_quit": "Mégse",
- "error_rate_limit": "Valaki túl sokszor próbálta meg beírni a jelszavad, ezért az OnionShare leállította a szervert. Kezdj el újra megosztani és küldj új megosztási címet a fogadó félnek.",
"zip_progress_bar_format": "Tömörítés: %p%",
"error_stealth_not_supported": "A kliens-hitelesítés használatához szükséged van legalább ezekre: Tor 0.2.9.1-alpha (vagy Tor Browser 6.5) és python3-stem 1.5.0.",
"error_ephemeral_not_supported": "Az OnionShare minimális követelményei: Tor 0.2.7.1 és python3-stem 1.4.0.",
"gui_settings_window_title": "Beállítások",
"gui_settings_whats_this": "Mi ez?",
"gui_settings_stealth_option": "Kliens-hitelesítés használata",
- "gui_settings_stealth_hidservauth_string": "Mivel elmentetted a titkos kulcsodat, mostantól kattintással másolhatod a HivServAuth-odat.",
"gui_settings_autoupdate_label": "Új verzió keresése",
"gui_settings_autoupdate_option": "Értesítést kérek, ha új verzió érhető el",
"gui_settings_autoupdate_timestamp": "Utoljára ellenőrizve: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/id.json b/desktop/src/onionshare/resources/locale/id.json
index f4c299c5..55af7794 100644
--- a/desktop/src/onionshare/resources/locale/id.json
+++ b/desktop/src/onionshare/resources/locale/id.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Menghentikan Mode Menerima ({}d tersisa)",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "Salin Alamat",
- "gui_copy_hidservauth": "Salin HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Dibatalkan",
"gui_copied_url_title": "Alamat OnionShare disalin",
"gui_copied_url": "Alamat OnionShare disalin ke papan klip",
- "gui_copied_hidservauth_title": "HidServAuth disalin",
- "gui_copied_hidservauth": "Baris HidServAuth disalin ke papan klip",
"gui_please_wait": "Memulai... Klik untuk membatalkan.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Anda sedang dalam proses menerima berkas. Apakah Anda yakin ingin menghentikan OnionShare?",
"gui_quit_warning_quit": "Keluar",
"gui_quit_warning_dont_quit": "Batal",
- "error_rate_limit": "Seseorang berusaha berulang kali untuk menebak kata sandi Anda, jadi OnionShare telah menghentikan server. Mulailah berbagi lagi dan kirim penerima alamat baru untuk dibagikan.",
"zip_progress_bar_format": "Mengompresi: %p%",
"error_stealth_not_supported": "Untuk menggunakan otorisasi klien, Anda perlu setidaknya Tor 0.2.9.1-alpha (atau Tor Browser 6.5) dan python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare memerlukan setidaknya Tor 0.2.7.1 dan python3-stem 1.4.0.",
"gui_settings_window_title": "Pengaturan",
"gui_settings_whats_this": "Apakah ini?",
"gui_settings_stealth_option": "Gunakan otorisasi klien",
- "gui_settings_stealth_hidservauth_string": "Telah menyimpan kunci privat Anda untuk digunakan kembali, berarti Anda dapat klik untuk menyalin HidServAuth Anda.",
"gui_settings_autoupdate_label": "Periksa versi terbaru",
"gui_settings_autoupdate_option": "Beritahu saya ketika versi baru tersedia",
"gui_settings_autoupdate_timestamp": "Terakhir diperiksa: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "Timer berhenti otomatis habis sebelum server dimulai. Silakan buat pembagian baru.",
"gui_server_autostop_timer_expired": "Timer berhenti otomatis sudah habis. Silakan sesuaikan untuk mulai berbagi.",
"share_via_onionshare": "Bagikan via OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "Siapa saja dengan alamat OnionShare ini dapat mengunduh berkas Anda menggunakan Tor Browser:",
"gui_receive_url_description": "Siapa saja dengan alamat OnionShare ini dapat mengunggah berkas ke komputer Anda menggunakan Tor Browser:",
@@ -217,7 +211,6 @@
"mode_settings_receive_data_dir_browse_button": "Telusur",
"mode_settings_receive_data_dir_label": "Simpan file ke",
"mode_settings_share_autostop_sharing_checkbox": "Berhenti berbagi setelah file dikirim (hapus centang untuk memperbolehkan mengunduh file individual)",
- "mode_settings_client_auth_checkbox": "Gunakan otorisasi klien",
"mode_settings_legacy_checkbox": "Gunakan alamat legacy (layanan onion v2, tidak disarankan)",
"mode_settings_autostop_timer_checkbox": "Hentikan layanan onion pada waktu yang dijadwalkan",
"mode_settings_autostart_timer_checkbox": "Mulai layanan onion pada waktu yang dijadwalkan",
diff --git a/desktop/src/onionshare/resources/locale/is.json b/desktop/src/onionshare/resources/locale/is.json
index bdbc0e6b..5ceb7896 100644
--- a/desktop/src/onionshare/resources/locale/is.json
+++ b/desktop/src/onionshare/resources/locale/is.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Hætta í móttökuham ({} eftir)",
"gui_receive_stop_server_autostop_timer_tooltip": "Sjálfvirk niðurtalning endar {}",
"gui_copy_url": "Afrita vistfang",
- "gui_copy_hidservauth": "Afrita HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Hætt við",
"gui_copied_url_title": "Afritaði OnionShare-vistfang",
"gui_copied_url": "OnionShare-vistfang afritað á klippispjald",
- "gui_copied_hidservauth_title": "Afritaði HidServAuth",
- "gui_copied_hidservauth": "HidServAuth-lína afrituð á klippispjald",
"gui_please_wait": "Ræsi... Smelltu til að hætta við.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Þú ert að taka á móti skrám. Ertu viss um að þú viljir hætta í OnionShare?",
"gui_quit_warning_quit": "Hætta",
"gui_quit_warning_dont_quit": "Hætta við",
- "error_rate_limit": "Einhver hefur gert of margar rangar tilraunir til að giska á lykilorðið þitt, þannig að OnionShare hefur stöðvað þjóninn. Byrjaðu deiling aftur og sendu viðtakandanum nýtt vistfang til deilingar.",
"zip_progress_bar_format": "Þjappa: %p%",
"error_stealth_not_supported": "Til að nota biðlaraauðkenningu þarf a.m.k. bæði Tor 0.2.9.1-Alpha (eða Tor Browser 6,5) og python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare krefst a.m.k. bæði Tor 0.2.7.1 og python3-stem 1.4.0.",
"gui_settings_window_title": "Stillingar",
"gui_settings_whats_this": "Hvað er þetta?",
"gui_settings_stealth_option": "Nota auðkenningu biðlaraforrits",
- "gui_settings_stealth_hidservauth_string": "Ef þú hefur vistað einkalykil til endurnotkunar, þýðir að þú getur nú smellt til að afrita HidServAuth.",
"gui_settings_autoupdate_label": "Athuga með nýja útgáfu",
"gui_settings_autoupdate_option": "Láta vita þegar ný útgáfa er tiltæk",
"gui_settings_autoupdate_timestamp": "Síðast athugað: {}",
@@ -133,7 +128,6 @@
"gui_tor_connection_lost": "Aftengt frá Tor.",
"gui_server_autostop_timer_expired": "Sjálfvirkri niðurtalningu er þegar lokið. Lagaðu hana til að hefja deilingu.",
"share_via_onionshare": "Deila með OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Nota eldri vistföng",
"gui_save_private_key_checkbox": "Nota viðvarandi vistföng",
"gui_share_url_description": "Hver sem er með þetta OnionShare vistfang getur sótt skrárnar þínar með því að nota Tor-vafrann: ",
"gui_receive_url_description": "Hver sem er með þetta OnionShare vistfang getur sent skrár inn á tölvuna þína með því að nota Tor-vafrann: ",
@@ -226,7 +220,6 @@
"hours_first_letter": "klst",
"minutes_first_letter": "mín",
"seconds_first_letter": "sek",
- "invalid_password_guess": "Ógilt lykilorð",
"gui_website_url_description": "Hver sem er með þetta OnionShare vistfang getur skoðað vefsvæðið þitt með því að nota Tor-vafrann: ",
"gui_mode_website_button": "Birta vefsvæði",
"gui_website_mode_no_files": "Ennþá hefur engu vefsvæði verið deilt",
@@ -256,7 +249,6 @@
"mode_settings_advanced_toggle_show": "Birta ítarlegar stillingar",
"gui_new_tab_tooltip": "Opna nýjan flipa",
"gui_new_tab_receive_button": "Taka á móti skrám",
- "mode_settings_client_auth_checkbox": "Nota auðkenningu biðlaraforrits",
"mode_settings_advanced_toggle_hide": "Fela ítarlegar stillingar",
"gui_quit_warning_cancel": "Hætta við",
"gui_close_tab_warning_title": "Ertu viss?",
diff --git a/desktop/src/onionshare/resources/locale/it.json b/desktop/src/onionshare/resources/locale/it.json
index 1adee18b..56463b14 100644
--- a/desktop/src/onionshare/resources/locale/it.json
+++ b/desktop/src/onionshare/resources/locale/it.json
@@ -48,11 +48,8 @@
"gui_receive_stop_server": "Arresta modalità Ricezione",
"gui_receive_stop_server_autostop_timer": "Interrompi la ricezione ({} rimanenti)",
"gui_receive_stop_server_autostop_timer_tooltip": "Il timer termina tra {}",
- "gui_copy_hidservauth": "Copia HidServAuth",
"gui_no_downloads": "Ancora nessun Download",
"gui_copied_url_title": "Indirizzo OnionShare copiato",
- "gui_copied_hidservauth_title": "HidServAuth copiato",
- "gui_copied_hidservauth": "Linea HidServAuth copiata negli appunti",
"gui_download_upload_progress_complete": "%p%, {0:s} trascorsi.",
"gui_download_upload_progress_starting": "{0:s}, %p% (calcolato)",
"gui_download_upload_progress_eta": "{0:s}, Terminando in: {1:s}, %p%",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Stai ricevendo dei file, vuoi davvero terminare OnionShare?",
"gui_quit_warning_quit": "Esci",
"gui_quit_warning_dont_quit": "Annulla",
- "error_rate_limit": "Qualcuno ha tentato troppe volte di indovinare la tua password, così OnionShare ha fermato il server. Riavvia la condivisione e invia al tuo contatto il nuovo indirizzo per condividere.",
"error_stealth_not_supported": "Per usare l'opzione \"client auth\" hai bisogno almeno della versione di Tor 0.2.9.1-alpha (o Tor Browser 6.5) con python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare richiede almeno Tor 0.2.7.1 e python3-stem 1.4.0.",
"gui_settings_window_title": "Impostazioni",
"gui_settings_whats_this": "Cos'è questo?",
"help_receive": "Ricevi le condivisioni invece di inviarle",
"gui_settings_stealth_option": "Usa l'autorizzazione client (legacy)",
- "gui_settings_stealth_hidservauth_string": "Avendo salvato la tua chiave privata per il riutilizzo, puoi cliccare per copiare il tuo HidServAuth.",
"gui_settings_autoupdate_label": "Verifica se c'è una nuova versione",
"gui_settings_autoupdate_option": "Avvisami quando è disponibile una nuova versione",
"gui_settings_autoupdate_timestamp": "Ultimo controllo: {}",
@@ -140,7 +135,6 @@
"gui_server_autostop_timer_expired": "Il timer di arresto automatico è già scaduto. Si prega di modificarlo per iniziare la condivisione.",
"share_via_onionshare": "Condividi via OnionShare",
"gui_connect_to_tor_for_onion_settings": "Connetti a Tor per vedere le impostazioni del servizio onion",
- "gui_use_legacy_v2_onions_checkbox": "Usa gli indirizzi legacy",
"gui_save_private_key_checkbox": "Usa un indirizzo persistente",
"gui_share_url_description": "1 Tutti2 con questo l'indirizzo di OnionShare possono 3 scaricare4 i tuoi file usando 5 il Browser Tor6: 7",
"gui_receive_url_description": "1 Tutti2 con questo indirizzo OnionShare possono 3 caricare4 file nel tuo computer usando 5 Tor Browser6: 7",
@@ -266,7 +260,6 @@
"gui_close_tab_warning_website_description": "Stai ospitando un sito web. Sei sicuro di voler chiudere questa scheda?",
"mode_settings_website_disable_csp_checkbox": "Non inviare l'intestazione della Politica sulla Sicurezza dei Contenuti (consente al sito web di utilizzare risorse di terze parti)",
"mode_settings_receive_data_dir_browse_button": "Naviga",
- "mode_settings_client_auth_checkbox": "Usa l'autorizzazione del client",
"mode_settings_autostop_timer_checkbox": "Interrompere il servizio onion all'ora pianificata",
"mode_settings_autostart_timer_checkbox": "Avviare il servizio onion all'ora pianificata",
"mode_settings_persistent_checkbox": "Salva questa scheda e aprirla automaticamente quando apro OnionShare",
diff --git a/desktop/src/onionshare/resources/locale/ja.json b/desktop/src/onionshare/resources/locale/ja.json
index 4235ff87..6f7d0cff 100644
--- a/desktop/src/onionshare/resources/locale/ja.json
+++ b/desktop/src/onionshare/resources/locale/ja.json
@@ -47,14 +47,11 @@
"gui_receive_stop_server_autostop_timer": "受信モードを停止(残り {} 秒)",
"gui_receive_stop_server_autostop_timer_tooltip": "{}に自動停止します",
"gui_copy_url": "アドレスをコピー",
- "gui_copy_hidservauth": "HidServAuthをコピー",
"gui_downloads": "ダウンロード履歴",
"gui_no_downloads": "まだダウンロードがありません",
"gui_canceled": "キャンセルされました",
"gui_copied_url_title": "OnionShareのアドレスをコピーしました",
"gui_copied_url": "OnionShareのアドレスをクリップボードへコピーしました",
- "gui_copied_hidservauth_title": "HidServAuthをコピーしました",
- "gui_copied_hidservauth": "HidServAuthの行をクリップボードへコピーしました",
"gui_please_wait": "実行中… クリックでキャンセルします。",
"gui_download_upload_progress_complete": "%p%、 経過時間 ({0:s})。",
"gui_download_upload_progress_starting": "{0:s}, %p% (計算中)",
@@ -65,14 +62,12 @@
"gui_receive_quit_warning": "ファイルを受信中です。本当にOnionShareを終了しますか?",
"gui_quit_warning_quit": "終了",
"gui_quit_warning_dont_quit": "キャンセル",
- "error_rate_limit": "誰かが何度パスワードを推測しようとして試みるので、不正アクセスしようとする可能性があります。セキュリティーのためにOnionShareはサーバーを停止しました。再び共有し始めて、受領者に新しいアドレスを送って下さい。",
"zip_progress_bar_format": "圧縮中: %p%",
"error_stealth_not_supported": "クライアント認証を使用するのに、少なくともTor 0.2.9.1-alpha (それともTor Browser 6.5)とpython3-stem 1.5.0が必要です。",
"error_ephemeral_not_supported": "OnionShareは少なくともTor 0.2.7.1とpython3-stem 1.4.0が必要です。",
"gui_settings_window_title": "設定",
"gui_settings_whats_this": "これは何ですか?",
"gui_settings_stealth_option": "クライアント認証を使用",
- "gui_settings_stealth_hidservauth_string": "秘密鍵を保存したので、クリックしてHidServAuthをコピーできます。",
"gui_settings_autoupdate_label": "更新バージョンの有無をチェックする",
"gui_settings_autoupdate_option": "更新通知を起動します",
"gui_settings_autoupdate_timestamp": "前回にチェックした時: {}",
@@ -138,7 +133,6 @@
"gui_server_autostop_timer_expired": "自動停止タイマーはすでにタイムアウトしています。共有し始めるにはタイマーを調整して下さい。",
"share_via_onionshare": "OnionShareで共有する",
"gui_connect_to_tor_for_onion_settings": "onionサービス設定を見るのにTorと接続して下さい",
- "gui_use_legacy_v2_onions_checkbox": "レガシーアドレスを使用する",
"gui_save_private_key_checkbox": "永続的アドレスを使用する",
"gui_share_url_description": "このOnionShareアドレスを持つ限り誰でもはTor Browserを利用してこのファイルをダウンロードできます:",
"gui_receive_url_description": "このOnionShareアドレスを持つ限り誰でもはTor Browserを利用してこのPCにファイルをアップロードできます:",
@@ -238,7 +232,6 @@
"mode_settings_receive_data_dir_browse_button": "閲覧",
"mode_settings_receive_data_dir_label": "保存するファイルの位置",
"mode_settings_share_autostop_sharing_checkbox": "ファイル送信が終了したら共有を停止(個別ファイルのダウンロードを許可するにはチェックマークを消す)",
- "mode_settings_client_auth_checkbox": "クライアント認証を利用",
"mode_settings_legacy_checkbox": "レガシーアドレスを利用する(v2 onionサービス、非推奨)",
"mode_settings_autostop_timer_checkbox": "指定の日時にonionサービスを停止する",
"mode_settings_autostart_timer_checkbox": "指定の日時にonionサービスを起動する",
diff --git a/desktop/src/onionshare/resources/locale/ka.json b/desktop/src/onionshare/resources/locale/ka.json
index 9c41ed9f..87d5c0c5 100644
--- a/desktop/src/onionshare/resources/locale/ka.json
+++ b/desktop/src/onionshare/resources/locale/ka.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "პროგრამის დატოვება",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/km.json b/desktop/src/onionshare/resources/locale/km.json
index 44dfde5a..11b3cdb3 100644
--- a/desktop/src/onionshare/resources/locale/km.json
+++ b/desktop/src/onionshare/resources/locale/km.json
@@ -21,12 +21,9 @@
"gui_receive_stop_server": "",
"gui_receive_stop_server_autostop_timer": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_waiting_to_start": "",
"gui_please_wait": "",
"gui_quit_title": "",
@@ -34,14 +31,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -111,7 +106,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "",
"share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/ko.json b/desktop/src/onionshare/resources/locale/ko.json
index adda3a69..76c0c814 100644
--- a/desktop/src/onionshare/resources/locale/ko.json
+++ b/desktop/src/onionshare/resources/locale/ko.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "취소 된",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -63,14 +60,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "종료",
"gui_quit_warning_dont_quit": "취소",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "설정",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/lg.json b/desktop/src/onionshare/resources/locale/lg.json
index 96b5a0d1..13e70fdf 100644
--- a/desktop/src/onionshare/resources/locale/lg.json
+++ b/desktop/src/onionshare/resources/locale/lg.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -63,14 +60,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/lt.json b/desktop/src/onionshare/resources/locale/lt.json
index f3e76e9b..c8aa9e93 100644
--- a/desktop/src/onionshare/resources/locale/lt.json
+++ b/desktop/src/onionshare/resources/locale/lt.json
@@ -30,7 +30,6 @@
"gui_copied_hidservauth": "HidServAuth eilutė nukopijuota į iškarpinę",
"gui_waiting_to_start": "Planuojama pradėti {}. Spustelėkite , jei norite atšaukti.",
"gui_please_wait": "Pradedama… Spustelėkite norėdami atsisakyti.",
- "error_rate_limit": "Kažkas padarė per daug klaidingų bandymų atspėti jūsų slaptažodį, todėl „OnionShare“ sustabdė serverį. Vėl pradėkite bendrinti ir nusiųskite gavėjui naują bendrinimo adresą.",
"zip_progress_bar_format": "Glaudinama: %p%",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
@@ -109,7 +108,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Automatinio sustabdymo laikas negali būti toks pat arba ankstesnis už automatinio paleidimo laiką. Sureguliuokite jį, kad galėtumėte pradėti dalytis.",
"share_via_onionshare": "Bendrinti per OnionShare",
"gui_connect_to_tor_for_onion_settings": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "Visi, turintys šį OnionShare adresą gali atsisiųsti jūsų failus, naudodamiesi Tor Naršykle: ",
"gui_website_url_description": "Kiekvienas, turintis šį „OnionShare“ adresą, gali apsilankyti jūsų svetainėje naudodamas „Tor“ naršyklę: ",
@@ -200,7 +198,6 @@
"mode_settings_autostart_timer_checkbox": "Pradėti onion paslaugos paleidimą suplanuotu laiku",
"mode_settings_autostop_timer_checkbox": "Sustabdyti onion paslaugos paleidimą suplanuotu laiku",
"mode_settings_legacy_checkbox": "Naudoti senąjį adresą (nerekomenduojama naudoti v2 onion paslaugos)",
- "mode_settings_client_auth_checkbox": "Naudoti kliento autorizavimą",
"mode_settings_share_autostop_sharing_checkbox": "Sustabdyti dalijimąsi po to, kai failai buvo išsiųsti (atžymėkite, jei norite leisti atsisiųsti atskirus failus)",
"mode_settings_receive_data_dir_label": "Įrašyti failus į",
"mode_settings_receive_data_dir_browse_button": "Naršyti",
diff --git a/desktop/src/onionshare/resources/locale/mk.json b/desktop/src/onionshare/resources/locale/mk.json
index b389c2a0..a264021f 100644
--- a/desktop/src/onionshare/resources/locale/mk.json
+++ b/desktop/src/onionshare/resources/locale/mk.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "Излези",
"gui_quit_warning_dont_quit": "Откажи",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "Поставки",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/ms.json b/desktop/src/onionshare/resources/locale/ms.json
index 8fda843a..371c61b7 100644
--- a/desktop/src/onionshare/resources/locale/ms.json
+++ b/desktop/src/onionshare/resources/locale/ms.json
@@ -36,12 +36,9 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"version_string": "",
"gui_quit_title": "",
@@ -49,14 +46,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "Keluar",
"gui_quit_warning_dont_quit": "Batal",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "Tetapan",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -123,7 +118,6 @@
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/nb_NO.json b/desktop/src/onionshare/resources/locale/nb_NO.json
index f2ee1477..33825216 100644
--- a/desktop/src/onionshare/resources/locale/nb_NO.json
+++ b/desktop/src/onionshare/resources/locale/nb_NO.json
@@ -45,13 +45,10 @@
"gui_receive_stop_server_autostop_timer": "Stopp mottaksmodus ({} gjenstår)",
"gui_receive_stop_server_autostop_timer_tooltip": "Tidsavbruddsuret går ut {}",
"gui_copy_url": "Kopier nettadresse",
- "gui_copy_hidservauth": "Kopier HidServAuth",
"gui_downloads": "Nedlastingshistorikk",
"gui_no_downloads": "Ingen nedlastinger enda.",
"gui_canceled": "Avbrutt",
"gui_copied_url_title": "Kopierte OnionShare-adressen",
- "gui_copied_hidservauth_title": "Kopierte HidServAuth",
- "gui_copied_hidservauth": "HidServAuth-linje kopiert til utklippstavle",
"gui_please_wait": "Starter… Klikk for å avbryte.",
"gui_download_upload_progress_complete": "%p%, {0:s} forløpt.",
"gui_download_upload_progress_starting": "{0:s}, %p% (regner ut)",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Du har ikke fått alle filene enda. Er du sikker på at du ønsker å avslutte OnionShare?",
"gui_quit_warning_quit": "Avslutt",
"gui_quit_warning_dont_quit": "Avbryt",
- "error_rate_limit": "Noen har prøvd å gjette passordet ditt for mange ganger, så OnionShare har derfor stoppet tjeneren. Start deling igjen, og send mottakeren en ny adresse å dele.",
"zip_progress_bar_format": "Pakker sammen: %p%",
"error_stealth_not_supported": "For å bruke klientidentitetsbekreftelse, trenger du minst Tor 0.2.9.1-alpha (eller Tor-Browser 6.5) og python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare krever minst både Tor 0.2.7.1 og pything3-stem 1.4.0.",
"gui_settings_window_title": "Innstillinger",
"gui_settings_whats_this": "Hva er dette?",
"gui_settings_stealth_option": "Bruk klientidentifisering",
- "gui_settings_stealth_hidservauth_string": "Siden du har lagret din private nøkkel for gjenbruk, kan du nå klikke for å kopiere din HidServAuth-linje.",
"gui_settings_autoupdate_label": "Se etter ny versjon",
"gui_settings_autoupdate_option": "Gi meg beskjed når en ny versjon er tilgjengelig",
"gui_settings_autoupdate_timestamp": "Sist sjekket: {}",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "Tidsavbruddsuret gikk ut før tjeneren startet. Lag en ny deling.",
"gui_server_autostop_timer_expired": "Tidsavbruddsuret har gått ut allerede. Juster det for å starte deling.",
"share_via_onionshare": "Del via OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Bruk gammeldagse adresser",
"gui_save_private_key_checkbox": "Bruk en vedvarende adresse",
"gui_share_url_description": "Alle som har denne OnionShare-adressen kan Laste ned filene dine ved bruk av Tor-Browser: ",
"gui_receive_url_description": "Alle som har denne OnionShare-adressen kan Laste opp filer til din datamaskin ved bruk av Tor-Browser: ",
@@ -238,7 +232,6 @@
"systray_website_started_title": "Starter deling av nettside",
"systray_website_started_message": "Noen besøker din nettside",
"gui_website_mode_no_files": "Ingen nettside delt enda",
- "invalid_password_guess": "Feil passord",
"incorrect_password": "Feil passord",
"gui_settings_individual_downloads_label": "Forby nedlasting av enkeltfiler",
"history_requests_tooltip": "{} vevforespørsler",
@@ -278,7 +271,6 @@
"gui_open_folder_error": "Klarte ikke å åpne mappe med xdg-open. Filen er her: {}",
"gui_receive_flatpak_data_dir": "Fordi du har installert OnionShare som Flatpak må du lagre filer til en mappe i ~/OnionShare.",
"mode_settings_share_autostop_sharing_checkbox": "Stopp deling etter at filer er sendt (fravelg for å tillate nedlasting av individuelle filer)",
- "mode_settings_client_auth_checkbox": "Bruk klient-identitetsgodkjennelse",
"gui_close_tab_warning_persistent_description": "Denne fanen er vedvarende. Hvis du lukker den vil du miste onion-adressen den bruker. Er du sikker på at du vil lukke den?",
"gui_tab_name_chat": "Prat",
"gui_tab_name_website": "Nettside",
diff --git a/desktop/src/onionshare/resources/locale/nl.json b/desktop/src/onionshare/resources/locale/nl.json
index 32e8f204..ed70622a 100644
--- a/desktop/src/onionshare/resources/locale/nl.json
+++ b/desktop/src/onionshare/resources/locale/nl.json
@@ -31,11 +31,9 @@
"gui_delete": "Verwijder",
"gui_choose_items": "Kies",
"gui_copy_url": "Kopieer URL",
- "gui_copy_hidservauth": "Kopieer HidServAuth",
"gui_downloads": "Download Geschiedenis",
"gui_canceled": "Afgebroken",
"gui_copied_url": "OnionShare adres gekopieerd naar klembord",
- "gui_copied_hidservauth": "HidServAuth regel gekopieerd naar klembord",
"gui_please_wait": "Aan het starten... Klik om te annuleren.",
"gui_download_upload_progress_complete": "%p%, {0:s} verstreken.",
"gui_download_upload_progress_starting": "{0:s}, %p% (berekenen)",
@@ -44,7 +42,6 @@
"gui_share_quit_warning": "Je bent in het proces van bestanden versturen. Weet je zeker dat je OnionShare af wilt sluiten?",
"gui_quit_warning_quit": "Afsluiten",
"gui_quit_warning_dont_quit": "Annuleren",
- "error_rate_limit": "Iemand heeft teveel incorrecte pogingen gedaan om je wachwoord te raden. Daarom heeft OnionShare de server gestopt. Herstart het delen en stuur de ontvanger een nieuw adres.",
"zip_progress_bar_format": "Comprimeren: %p%",
"error_stealth_not_supported": "Om client authorization te gebruiken heb je op zijn minst zowel Tor 0.2.9.1-alpha (of Tor Browser 6.5) en python3-stem 1.5.0 nodig.",
"error_ephemeral_not_supported": "OnionShare vereist minstens zowel Tor 0.2.7.1 als python3-stem 1.4.0.",
@@ -116,11 +113,9 @@
"gui_receive_stop_server_autostop_timer_tooltip": "Auto-stop timer stopt bij {}",
"gui_no_downloads": "Nog Geen Downloads",
"gui_copied_url_title": "Gekopieerd OnionShare Adres",
- "gui_copied_hidservauth_title": "HidServAuth gekopieerd",
"gui_quit_title": "Niet zo snel",
"gui_receive_quit_warning": "Je bent in het proces van bestanden ontvangen. Weet je zeker dat je OnionShare af wilt sluiten?",
"gui_settings_whats_this": "1Wat is dit?2",
- "gui_settings_stealth_hidservauth_string": "Je privésleutel is voor hergebruik opgeslagen. Je kunt nu klikken om je HidServAuth te kopiëren.",
"gui_settings_general_label": "Algemene instellingen",
"gui_settings_tor_bridges": "Tor bridge ondersteuning",
"gui_settings_tor_bridges_no_bridges_radio_option": "Gebruik geen bridges",
@@ -136,7 +131,6 @@
"error_tor_protocol_error_unknown": "Er was een onbekende fout met Tor",
"error_invalid_private_key": "Dit type privésleutel wordt niet ondersteund",
"gui_tor_connection_lost": "De verbinding met Tor is verbroken.",
- "gui_use_legacy_v2_onions_checkbox": "Gebruik ouderwetse adressen",
"gui_save_private_key_checkbox": "Gebruik een vast adres",
"gui_share_url_description": "1Iedereen2 met dit OnionShare-adres kan je bestanden 3binnenhalen4 met de 5Tor Browser6: ",
"gui_receive_url_description": "Iedereen met dit OnionShare adres kan bestanden op je computer plaatsen met de Tor Browser: ",
@@ -259,7 +253,6 @@
"mode_settings_website_disable_csp_checkbox": "Stuur geen Content Security Policy header (hiermee kan uw website bronnen van derden gebruiken)",
"mode_settings_receive_data_dir_browse_button": "Blader",
"mode_settings_receive_data_dir_label": "Bewaar bestanden in",
- "mode_settings_client_auth_checkbox": "Gebruik client authorisatie",
"mode_settings_autostop_timer_checkbox": "Stop onion service op een geplande tijd",
"mode_settings_autostart_timer_checkbox": "Start onion service op een geplande tijd",
"mode_settings_persistent_checkbox": "Bewaar dit tabblad en open het automatisch wanneer ik OnionShare open",
diff --git a/desktop/src/onionshare/resources/locale/pa.json b/desktop/src/onionshare/resources/locale/pa.json
index 165e297b..766e3a02 100644
--- a/desktop/src/onionshare/resources/locale/pa.json
+++ b/desktop/src/onionshare/resources/locale/pa.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "ਬਾਹਰ",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/pl.json b/desktop/src/onionshare/resources/locale/pl.json
index 2ef34565..1a2f17a6 100644
--- a/desktop/src/onionshare/resources/locale/pl.json
+++ b/desktop/src/onionshare/resources/locale/pl.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Zatrzymaj tryb odbierania (pozostało {})",
"gui_receive_stop_server_autostop_timer_tooltip": "Czas upływa za {}",
"gui_copy_url": "Kopiuj adres załącznika",
- "gui_copy_hidservauth": "Kopiuj HidServAuth",
"gui_downloads": "Historia pobierania",
"gui_no_downloads": "Nie pobrano jeszcze niczego",
"gui_canceled": "Anulowano",
"gui_copied_url_title": "Skopiowano adres URL OnionShare",
"gui_copied_url": "Adres URL OnionShare został skopiowany do schowka",
- "gui_copied_hidservauth_title": "Skopiowano HidServAuth",
- "gui_copied_hidservauth": "Linijka HidServAuth została skopiowana do schowka",
"gui_please_wait": "Rozpoczynam... Kliknij, aby zatrzymać.",
"gui_download_upload_progress_complete": "%p%, {0:s} upłynęło.",
"gui_download_upload_progress_starting": "{0:s}, %p% (obliczam)",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Odbierasz teraz pliki. Jesteś pewien, że chcesz wyjść z OnionShare?",
"gui_quit_warning_quit": "Wyjście",
"gui_quit_warning_dont_quit": "Anuluj",
- "error_rate_limit": "Ktoś zbyt często próbował odczytać Twój adres, co może oznaczać, że ktoś próbuje go odgadnąć, zatem OnionShare zatrzymał serwer. Rozpocznij udostępnianie ponownie i wyślij odbiorcy nowy adres aby udostępniać Twoje pliki.",
"zip_progress_bar_format": "Kompresuję: %p%",
"error_stealth_not_supported": "Aby skorzystać z autoryzacji klienta wymagana jest wersja programu Tor 0.2.9.1-alpha lub nowsza, bądź Tor Browser w wersji 6.5 lub nowszej oraz python3-stem w wersji 1.5 lub nowszej.",
"error_ephemeral_not_supported": "OnionShare wymaga programu Tor w wersji 0.2.7.1 lub nowszej oraz python3-stem w wersji 1.4.0 lub nowszej.",
"gui_settings_window_title": "Ustawienia",
"gui_settings_whats_this": "Co to jest?",
"gui_settings_stealth_option": "Użyj autoryzacji klienta",
- "gui_settings_stealth_hidservauth_string": "Po zapisaniu klucza prywatnego do ponownego użycia, możesz teraz kliknąć, aby skopiować HidServAuth.",
"gui_settings_autoupdate_label": "Sprawdź nową wersję",
"gui_settings_autoupdate_option": "Poinformuj mnie, kiedy nowa wersja programu będzie dostępna",
"gui_settings_autoupdate_timestamp": "Ostatnie sprawdzenie aktualizacji: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "Czasomierz automatycznego rozpoczęcia wygasł przed uruchomieniem serwera. Utwórz nowy udział.",
"gui_server_autostop_timer_expired": "Czasomierz automatycznego rozpoczęcia wygasł. Dostosuj go, aby rozpocząć udostępnianie.",
"share_via_onionshare": "Udostępniaj przez OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Użyj starszych adresów",
"gui_save_private_key_checkbox": "Użyj stałego adresu",
"gui_share_url_description": "Każdy z tym adresem OnionShare może pobrać Twoje pliki za pomocą przeglądarki Tor Browser: ",
"gui_receive_url_description": "Każdy z tym adresem OnionShare może przesyłać pliki na komputer za pomocą przeglądarki Tor Browser: ",
@@ -265,7 +259,6 @@
"mode_settings_receive_data_dir_browse_button": "Przeglądaj",
"mode_settings_receive_data_dir_label": "Zapisz pliki do",
"mode_settings_share_autostop_sharing_checkbox": "Zatrzymaj udostępnianie po wysłaniu plików (usuń zaznaczenie, aby umożliwić pobieranie pojedynczych plików)",
- "mode_settings_client_auth_checkbox": "Użyj autoryzacji klienta",
"mode_settings_legacy_checkbox": "Użyj starszego adresu (onion service v2, niezalecane)",
"mode_settings_autostop_timer_checkbox": "Zatrzymaj usługę cebulową w zaplanowanym czasie",
"mode_settings_autostart_timer_checkbox": "Uruchomienie usługi cebulowej w zaplanowanym czasie",
diff --git a/desktop/src/onionshare/resources/locale/pt_BR.json b/desktop/src/onionshare/resources/locale/pt_BR.json
index bc7fe0c7..ebbef428 100644
--- a/desktop/src/onionshare/resources/locale/pt_BR.json
+++ b/desktop/src/onionshare/resources/locale/pt_BR.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Parar o Modo Recepção ({} para terminar)",
"gui_receive_stop_server_autostop_timer_tooltip": "O cronômetro automático termina às {}",
"gui_copy_url": "Copiar endereço",
- "gui_copy_hidservauth": "Copiar HidServAuth",
"gui_downloads": "Histórico de download",
"gui_no_downloads": "Nenhum download por enquanto",
"gui_canceled": "Cancelado",
"gui_copied_url_title": "O endereço OnionShare foi copiado",
"gui_copied_url": "O endereço OnionShare foi copiado para a área de transferência",
- "gui_copied_hidservauth_title": "O HidServAuth foi copiado",
- "gui_copied_hidservauth": "A linha HidServAuth foi copiada na área de transferência",
"gui_please_wait": "Começando... Clique para cancelar.",
"gui_download_upload_progress_complete": "%p%, {0:s} decorridos.",
"gui_download_upload_progress_starting": "{0:s}, %p% (calculando)",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "O recebimento dos seus arquivos ainda não terminou. Você tem certeza de que quer sair do OnionShare?",
"gui_quit_warning_quit": "Sair",
"gui_quit_warning_dont_quit": "Cancelar",
- "error_rate_limit": "Alguém tentou por várias vezes adivinhar sua senha. Por isso, o OnionShare interrompeu o servidor. Comece o compartilhamento novamente e envie um novo endereço ao seu destinatário para compartilhar.",
"zip_progress_bar_format": "Comprimindo: %p%",
"error_stealth_not_supported": "Para usar uma autorização de cliente, você precisa ao menos de Tor 0.2.9.1-alpha (ou Navegador Tor 6.5) e de python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare requer ao menos Tor 0.2.7.1 e python3-stem 1.4.0.",
"gui_settings_window_title": "Configurações",
"gui_settings_whats_this": "O que é isso?",
"gui_settings_stealth_option": "Usar autorização de cliente",
- "gui_settings_stealth_hidservauth_string": "Após salvar a sua chave privada para reutilização, você pode clicar para copiar o seu HidServAuth.",
"gui_settings_autoupdate_label": "Procurar por uma nova versão",
"gui_settings_autoupdate_option": "Notificar-me quando uma nova versão estiver disponível",
"gui_settings_autoupdate_timestamp": "Última verificação: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "O cronômetro de parada automática acabou antes que o servidor fosse iniciado. Por favor, faça um novo compartilhamento.",
"gui_server_autostop_timer_expired": "O cronômetro já esgotou. Por favor, ajuste-o para começar a compartilhar.",
"share_via_onionshare": "Compartilhar via OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Usar endereços do tipo antigo",
"gui_save_private_key_checkbox": "Usar o mesmo endereço",
"gui_share_url_description": "Qualquer pessoa com este endereço do OnionShare pode baixar seus arquivos usando o Tor Browser: ",
"gui_receive_url_description": "Qualquer pessoa com este endereço do OnionShare pode carregar arquivos no seu computador usando o Tor Browser: ",
@@ -239,7 +233,6 @@
"mode_settings_receive_data_dir_browse_button": "Navegar",
"mode_settings_receive_data_dir_label": "Salvar arquivos em",
"mode_settings_share_autostop_sharing_checkbox": "Interrompa o compartilhamento após o envio dos arquivos (desmarque para permitir o download de arquivos individuais)",
- "mode_settings_client_auth_checkbox": "Usar autorização de cliente",
"mode_settings_legacy_checkbox": "Usar um endereço herdado (serviço de onion v2, não recomendado)",
"mode_settings_autostop_timer_checkbox": "Interromper o serviço de onion na hora programada",
"mode_settings_autostart_timer_checkbox": "Iniciar serviço de onion na hora programada",
diff --git a/desktop/src/onionshare/resources/locale/pt_PT.json b/desktop/src/onionshare/resources/locale/pt_PT.json
index 44c5c067..a699a5f3 100644
--- a/desktop/src/onionshare/resources/locale/pt_PT.json
+++ b/desktop/src/onionshare/resources/locale/pt_PT.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Parar Modo de Receber ({} restantes)",
"gui_receive_stop_server_autostop_timer_tooltip": "O cronómetro automático de parar a partilha termina em {}",
"gui_copy_url": "Copiar Endereço",
- "gui_copy_hidservauth": "Copiar HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Cancelado",
"gui_copied_url_title": "Endereço OnionShare Copiado",
"gui_copied_url": "O endereço OnionShare foi copiado para área de transferência",
- "gui_copied_hidservauth_title": "HidServAuth Copiado",
- "gui_copied_hidservauth": "Linha HidServAuth copiada para a área de transferência",
"gui_please_wait": "A iniciar… Clique para cancelar.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Ainda não recebeu todos os seus ficheiros. Tem a certeza que que deseja sair do OnionShare?",
"gui_quit_warning_quit": "Sair",
"gui_quit_warning_dont_quit": "Cancelar",
- "error_rate_limit": "Alguém tentou por várias vezes adivinhar a sua palavra-passe, por isso OnionShare parou o servidor. Inicie novamente a partilha e envie um novo endereço ao destinatário para partilhar.",
"zip_progress_bar_format": "A comprimir: %p%",
"error_stealth_not_supported": "Para utilizar uma autorização de cliente, precisa pelo menos do Tor 0.2.9.1-alpha (ou do Tor Browser 6.5) e do python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare requer pelo menos do Tor 0.2.7.1 e do python3-stem 1.4.0.",
"gui_settings_window_title": "Configurações",
"gui_settings_whats_this": "O que é isto?",
"gui_settings_stealth_option": "Utilizar autorização de cliente",
- "gui_settings_stealth_hidservauth_string": "Depois de guardar a sua chave privada para reutilização, pode clicar para copiar o seu HidServAuth.",
"gui_settings_autoupdate_label": "Procurar por nova versão",
"gui_settings_autoupdate_option": "Notificar-me quando estiver disponível uma nova versão",
"gui_settings_autoupdate_timestamp": "Última verificação: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "O cronómetro de paragem automática atingiu o tempo limite antes do servidor iniciar. Crie uma nova partilha.",
"gui_server_autostop_timer_expired": "O cronómetro de paragem automática expirou. Por favor, ajuste-o para começar a partilhar.",
"share_via_onionshare": "Partilhar via OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Usar endereços antigos",
"gui_save_private_key_checkbox": "Usar um endereço persistente",
"gui_share_url_description": "Qualquer pessoa com este endereço do OnionShare pode descarregar os seus ficheiros utilizando o Tor Browser: ",
"gui_receive_url_description": "Qualquer pessoa com este endereço do OnionShare pode enviar ficheiros para o seu computador utilizando o Tor Browser: ",
@@ -255,7 +249,6 @@
"mode_settings_receive_data_dir_browse_button": "Navegar",
"mode_settings_receive_data_dir_label": "Guardar ficheiros para",
"mode_settings_share_autostop_sharing_checkbox": "Parar a partilha de ficheiros após terem sido enviados (desmarque para permitir o descarregamento de ficheiros individuais)",
- "mode_settings_client_auth_checkbox": "Utilizar autorização do cliente",
"mode_settings_legacy_checkbox": "Utilize um endereço de herança (serviço onion v2, não é recomendado)",
"mode_settings_persistent_checkbox": "Guarda esta aba e abre-a automaticamente quando eu inicio o OnionShare",
"gui_quit_warning_description": "A partilha está ativa em algumas das suas abas. Se sair, todas as abas serão fechadas. Tem a certeza que pretende sair?",
diff --git a/desktop/src/onionshare/resources/locale/ro.json b/desktop/src/onionshare/resources/locale/ro.json
index d4e43f04..35dcedbf 100644
--- a/desktop/src/onionshare/resources/locale/ro.json
+++ b/desktop/src/onionshare/resources/locale/ro.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "Opriți modul de primire (au rămas {})",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "Copiere adresă",
- "gui_copy_hidservauth": "Copiere HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Anulat",
"gui_copied_url_title": "Adresă OnionShare copiată",
"gui_copied_url": "Adresa OnionShare a fost copiată în memoria clipboard",
- "gui_copied_hidservauth_title": "Am copiat HidServAuth",
- "gui_copied_hidservauth": "Linia HidServAuth a fost copiată în clipboard",
"gui_please_wait": "Începem ... Faceți clic pentru a anula.",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "Sunteți în proces de primire fișiere. Sigur vreți să închideți OnionShare?",
"gui_quit_warning_quit": "Închidere",
"gui_quit_warning_dont_quit": "Anulare",
- "error_rate_limit": "Cineva a făcut prea multe încercări greșite pentru a ghici parola, astfel încât OnionShare a oprit serverul. Începeți partajarea din nou și trimiteți destinatarului o nouă adresă de partajat.",
"zip_progress_bar_format": "Compresare: %p%",
"error_stealth_not_supported": "Pentru a folosi autorizarea clientului, aveți nevoie de versiunile minim Tor 0.2.9.1-alfa (sau Tor Browser 6.5) cât și de python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare are nevoie de minim versiunea Tor 0.2.7.1 cât și de Python3-stem 1.4.0.",
"gui_settings_window_title": "Setari",
"gui_settings_whats_this": "Ce este asta?",
"gui_settings_stealth_option": "Utilizați autorizarea clientului",
- "gui_settings_stealth_hidservauth_string": "După ce v-ați salvat cheia privată pentru reutilizare, înseamnă că puteți face clic acum pentru a copia HidServAuth.",
"gui_settings_autoupdate_label": "Verificați dacă există o versiune nouă",
"gui_settings_autoupdate_option": "Anunțați-mă când este disponibilă o nouă versiune",
"gui_settings_autoupdate_timestamp": "Ultima verificare: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "Cronometrul de oprire automată a expirat înainte de pornirea serverului. Vă rugăm să faceți o nouă partajare.",
"gui_server_autostop_timer_expired": "Timpul pentru cronometrul auto-stop a expirat deja. Vă rugăm să îl modificați pentru a începe distribuirea.",
"share_via_onionshare": "Partajați prin OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Folosire adrese moștenite",
"gui_save_private_key_checkbox": "Folosiți o adresă persistentă",
"gui_share_url_description": "Oricine are această adresă OnionShare poate descărca fișierele dvs. folosind Tor Browser: ",
"gui_receive_url_description": "Oricine are această adresă OnionShare poate încărca fișiere pe computerul dvs. folosind Tor Browser: ",
diff --git a/desktop/src/onionshare/resources/locale/ru.json b/desktop/src/onionshare/resources/locale/ru.json
index 47e7e4d1..967e87b6 100644
--- a/desktop/src/onionshare/resources/locale/ru.json
+++ b/desktop/src/onionshare/resources/locale/ru.json
@@ -66,12 +66,9 @@
"gui_receive_stop_server": "Выключить режим получения",
"gui_receive_stop_server_autostop_timer": "Выключить Режим Получения (осталось {})",
"gui_receive_stop_server_autostop_timer_tooltip": "Время таймера истекает в {}",
- "gui_copy_hidservauth": "Скопировать строку HidServAuth",
"gui_downloads": "История скачиваний",
"gui_no_downloads": "Скачиваний пока нет ",
"gui_copied_url_title": "Адрес OnionShare скопирован",
- "gui_copied_hidservauth_title": "Строка HidServAuth скопирована",
- "gui_copied_hidservauth": "Строка HidServAuth скопирована в буфер обмена",
"gui_please_wait": "Запуск... Для отмены нажмите здесь.",
"gui_download_upload_progress_complete": "%p%, прошло {0:s}.",
"gui_download_upload_progress_starting": "{0:s}, %p% (вычисляем)",
@@ -80,13 +77,11 @@
"gui_quit_title": "Не так быстро",
"gui_share_quit_warning": "Идёт процесс отправки файлов. Уверены, что хотите завершить работу OnionShare?",
"gui_receive_quit_warning": "Идёт процесс получения файлов. Уверены, что хотите завершить работу OnionShare?",
- "error_rate_limit": "Кто-то совершил слишком много попыток отгадать Ваш пароль, в связи с чем OnionShare остановил сервер. Отправьте Ваши данные повторно и перешлите получателю новый адрес.",
"zip_progress_bar_format": "Сжатие: %p%",
"error_stealth_not_supported": "Для использования авторизации клиента необходимы как минимум версии Tor 0.2.9.1-alpha (или Tor Browser 6.5) и библиотеки python3-stem 1.5.0.",
"error_ephemeral_not_supported": "Для работы OnionShare необходимы как минимум версии Tor 0.2.7.1 и библиотеки python3-stem 1.4.0.",
"gui_settings_whats_this": "Что это?",
"gui_settings_stealth_option": "Использовать авторизацию клиента",
- "gui_settings_stealth_hidservauth_string": "Сохранили Ваш приватный ключ для повторного использования.\nНажмите сюда, чтобы скопировать строку HidServAuth.",
"gui_settings_autoupdate_label": "Проверить наличие новой версии",
"gui_settings_autoupdate_option": "Уведомить меня, когда будет доступна новая версия",
"gui_settings_autoupdate_timestamp": "Последняя проверка: {}",
@@ -141,7 +136,6 @@
"gui_server_started_after_autostop_timer": "Время стоп-таймера истекло до того, как сервер был запущен. Пожалуйста, отправьте файлы заново.",
"gui_server_autostop_timer_expired": "Время стоп-таймера истекло. Пожалуйста, отрегулируйте его для начала отправки.",
"share_via_onionshare": "Поделиться через OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Используйте устаревшие адреса",
"gui_save_private_key_checkbox": "Используйте постоянный адрес",
"gui_share_url_description": "Кто угодно c этим адресом OnionShare может скачать Ваши файлы при помощи Tor Browser: ",
"gui_receive_url_description": "Кто угодно c этим адресом OnionShare может загрузить файлы на ваш компьютер с помощьюTor Browser: ",
@@ -240,7 +234,6 @@
"mode_settings_receive_data_dir_browse_button": "Обзор файлов",
"mode_settings_receive_data_dir_label": "Сохранять файлы в",
"mode_settings_share_autostop_sharing_checkbox": "Закрыть доступ к файлам после их отправки (отмените чтобы разрешить скачивание отдельных файлов)",
- "mode_settings_client_auth_checkbox": "Использовать авторизацию клиента",
"mode_settings_legacy_checkbox": "Использовать устаревшую версию адресов (версия 2 сервиса Тор, не рукомендуем)",
"mode_settings_autostop_timer_checkbox": "Отключить сервис onion в назначенное время",
"mode_settings_autostart_timer_checkbox": "Запустить сервис onion в назначенное время",
diff --git a/desktop/src/onionshare/resources/locale/si.json b/desktop/src/onionshare/resources/locale/si.json
index b55cde27..cb15cc72 100644
--- a/desktop/src/onionshare/resources/locale/si.json
+++ b/desktop/src/onionshare/resources/locale/si.json
@@ -24,17 +24,13 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_flatpak_data_dir": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_show_url_qr_code": "",
"gui_qr_code_dialog_title": "",
"gui_waiting_to_start": "",
"gui_please_wait": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"gui_settings_window_title": "",
"gui_settings_autoupdate_label": "",
@@ -170,7 +166,6 @@
"mode_settings_autostart_timer_checkbox": "",
"mode_settings_autostop_timer_checkbox": "",
"mode_settings_legacy_checkbox": "",
- "mode_settings_client_auth_checkbox": "",
"mode_settings_share_autostop_sharing_checkbox": "",
"mode_settings_receive_data_dir_label": "",
"mode_settings_receive_data_dir_browse_button": "",
diff --git a/desktop/src/onionshare/resources/locale/sk.json b/desktop/src/onionshare/resources/locale/sk.json
index a3690db3..8ee83a28 100644
--- a/desktop/src/onionshare/resources/locale/sk.json
+++ b/desktop/src/onionshare/resources/locale/sk.json
@@ -24,18 +24,14 @@
"gui_receive_stop_server_autostop_timer": "Zastaviť režim prijímania (zostáva {})",
"gui_receive_flatpak_data_dir": "Pretože ste nainštalovali OnionShare pomocou Flatpak, musíte uložiť súbory do priečinka v ~/OnionShare.",
"gui_copy_url": "Kopírovať adresu",
- "gui_copy_hidservauth": "Kopírovať HidServAuth",
"gui_canceled": "Zrušené",
"gui_copied_url_title": "Skopírovaná OnionShare adresa",
"gui_copied_url": "OnionShare adresa bola skopírovaná do schránky",
- "gui_copied_hidservauth_title": "Skopírovaný HidServAuth",
- "gui_copied_hidservauth": "HidServAuth riadok bol skopírovaný do schránky",
"gui_show_url_qr_code": "Zobraziť QR kód",
"gui_qr_code_dialog_title": "OnionShare QR kód",
"gui_qr_code_description": "Naskenujte tento QR kód pomocou čítačky QR, napríklad fotoaparátom na telefóne, aby ste mohli jednoduchšie zdieľať adresu OnionShare s niekým.",
"gui_waiting_to_start": "Naplánované spustenie o {}. Kliknutím zrušíte.",
"gui_please_wait": "Spúšťa sa... Kliknutím zrušíte.",
- "error_rate_limit": "Niekto urobil príliš veľa zlých pokusov uhádnuť vaše heslo, takže OnionShare zastavil server. Začnite znova zdieľať a odošlite príjemcovi novú adresu na zdieľanie.",
"zip_progress_bar_format": "Komprimovanie: %p%",
"gui_settings_window_title": "Nastavenia",
"gui_settings_autoupdate_label": "Skontrolovať novú verziu",
@@ -169,7 +165,6 @@
"mode_settings_autostart_timer_checkbox": "Spustiť onion službu v plánovanom čase",
"mode_settings_autostop_timer_checkbox": "Zastaviť onion službu v plánovanom čase",
"mode_settings_legacy_checkbox": "Použiť staršiu adresu (v2 onion služba, neodporúča sa)",
- "mode_settings_client_auth_checkbox": "Použiť autorizáciu klienta",
"mode_settings_share_autostop_sharing_checkbox": "Po odoslaní súborov zastaviť zdieľanie (zrušením začiarknutia povolíte sťahovanie jednotlivých súborov)",
"mode_settings_receive_data_dir_label": "Uložiť súbory do",
"mode_settings_receive_data_dir_browse_button": "Prechádzať",
diff --git a/desktop/src/onionshare/resources/locale/sl.json b/desktop/src/onionshare/resources/locale/sl.json
index 70e04baa..52f14cce 100644
--- a/desktop/src/onionshare/resources/locale/sl.json
+++ b/desktop/src/onionshare/resources/locale/sl.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "Odpovedan",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "Izhod",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/sn.json b/desktop/src/onionshare/resources/locale/sn.json
index 4ee1a03b..81b46cba 100644
--- a/desktop/src/onionshare/resources/locale/sn.json
+++ b/desktop/src/onionshare/resources/locale/sn.json
@@ -47,14 +47,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -65,14 +62,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -138,7 +133,6 @@
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/sr_Latn.json b/desktop/src/onionshare/resources/locale/sr_Latn.json
index d94fe024..da986f48 100644
--- a/desktop/src/onionshare/resources/locale/sr_Latn.json
+++ b/desktop/src/onionshare/resources/locale/sr_Latn.json
@@ -22,12 +22,9 @@
"gui_receive_stop_server": "Prekini režim primanja",
"gui_receive_stop_server_autostop_timer": "Prekini režim primanja ({} preostalo)",
"gui_copy_url": "Kopiraj adresu",
- "gui_copy_hidservauth": "Kopiraj HidServAuth",
"gui_canceled": "Obustavljeno",
"gui_copied_url_title": "Kopirana OnionShare adresa",
"gui_copied_url": "OnionShare adresa kopirana u privremenu memoriju",
- "gui_copied_hidservauth_title": "Kopiran HidServAuth",
- "gui_copied_hidservauth": "HidServAuth linija kopirana u privremenu memoriju",
"gui_waiting_to_start": "Planirano da počne u {}. Klikni da obustaviš.",
"gui_please_wait": "Počinje… Klikni da obustaviš.",
"gui_quit_title": "Ne tako brzo",
@@ -35,14 +32,12 @@
"gui_receive_quit_warning": "Proces primanja datoteka u toku. Jeste li sigurni da želite da zaustavite OnionShare?",
"gui_quit_warning_quit": "Izađi",
"gui_quit_warning_dont_quit": "Odustani",
- "error_rate_limit": "Neko je načinio suviše pogrešnih pokušaja da pogodi tvoju lozinku, tako da je OnionShare zaustavio server. Počni deljenje ponovo i pošalji primaocu novu adresu za deljenje.",
"zip_progress_bar_format": "Komprimujem: %p%",
"error_stealth_not_supported": "Da bi koristion klijen autorizaciju, potrebni su ti barem Tor 0.2.9.1-alpha (ili Tor Browser 6.5) i python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare zahteva barem Tor 0.2.7.1 i python3-stem 1.4.0.",
"gui_settings_window_title": "Podešavanja",
"gui_settings_whats_this": "Šta je ovo?",
"gui_settings_stealth_option": "Koristi klijent autorizaciju",
- "gui_settings_stealth_hidservauth_string": "Ako si sačuvao svoj privatni ključ za ponovnu upotrenu, sada možeš kliknuti da iskopiraš svoj HidServAuth.",
"gui_settings_autoupdate_label": "Proveri da li postoji nova verzija",
"gui_settings_autoupdate_option": "Obavesti me kada nova verzija bude na raspolaganju",
"gui_settings_autoupdate_timestamp": "Poslednja provera: {}",
@@ -114,7 +109,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Vreme automatskog zaustavljanja ne može biti isto ili ranije od vremena početka automatskog pokretanja. Podesi ga da bi započelo deljenje.",
"share_via_onionshare": "Deljenje pomoću OnionShare",
"gui_connect_to_tor_for_onion_settings": "Poveži se sa Torom da bi video postavke onion servisa",
- "gui_use_legacy_v2_onions_checkbox": "Koristi nasleđene adrese",
"gui_save_private_key_checkbox": "Koristi trajnu adresu",
"gui_share_url_description": "Svako sa ovom OnionShare sdresom može preuzeti tvoje datoteke koristeći Tor Browser: ",
"gui_website_url_description": "Svako sa ovom OnionShare adresom može posetiti tvoju veb-stranicu koristeći Tor Browser: ",
@@ -192,7 +186,6 @@
"gui_close_tab_warning_persistent_description": "Ovaj jezičak je postojan. Ako ga zatvorite, izgubićete onion adresu koju koristite. Da li ste sigurni da želite zatvoriti?",
"mode_settings_receive_data_dir_browse_button": "Pronađi",
"mode_settings_receive_data_dir_label": "Sačuvaj fajlove u",
- "mode_settings_client_auth_checkbox": "Koristi klijentsku autorizaciju",
"mode_settings_legacy_checkbox": "Koristite zastarelu adresu (v2 onion servis, nije preporučeno)",
"mode_settings_autostop_timer_checkbox": "Zaustavi onion servis u planirano vreme",
"mode_settings_autostart_timer_checkbox": "Pokreni onion servis u planirano vreme",
diff --git a/desktop/src/onionshare/resources/locale/sv.json b/desktop/src/onionshare/resources/locale/sv.json
index a3c97704..2c01abe5 100644
--- a/desktop/src/onionshare/resources/locale/sv.json
+++ b/desktop/src/onionshare/resources/locale/sv.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "Stoppa mottagningsläge ({} kvarstår)",
"gui_receive_stop_server_autostop_timer_tooltip": "Automatiska stopp-tidtagaren avslutar vid {}",
"gui_copy_url": "Kopiera adress",
- "gui_copy_hidservauth": "Kopiera HidServAuth",
"gui_downloads": "Nedladdningshistorik",
"gui_no_downloads": "Inga Nedladdningar Än",
"gui_canceled": "Avbruten",
"gui_copied_url_title": "OnionShare-adress kopierad",
"gui_copied_url": "OnionShare-adress kopierad till urklipp",
- "gui_copied_hidservauth_title": "HidServAuth kopierad",
- "gui_copied_hidservauth": "HidServAuth-rad kopierad till urklipp",
"gui_please_wait": "Startar... klicka för att avbryta.",
"gui_download_upload_progress_complete": "%p%, {0:s} förflutit.",
"gui_download_upload_progress_starting": "{0:s}, %p% (beräknar)",
@@ -63,14 +60,12 @@
"gui_receive_quit_warning": "Du håller på att ta emot filer. Är du säker på att du vill avsluta OnionShare?",
"gui_quit_warning_quit": "Avsluta",
"gui_quit_warning_dont_quit": "Avbryt",
- "error_rate_limit": "Någon har gjort för många felförsök att gissa ditt lösenord, därför har OnionShare stoppat servern. Starta delning igen och skicka mottagaren en ny adress att dela.",
"zip_progress_bar_format": "Komprimerar: %p%",
"error_stealth_not_supported": "För att använda klientauktorisering behöver du minst både Tor 0.2.9.1-alpha (eller Tor Browser 6.5) och python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare kräver minst både Tor 0.2.7.1 och python3-stem 1.4.0.",
"gui_settings_window_title": "Inställningar",
"gui_settings_whats_this": "Vad är det här?",
"gui_settings_stealth_option": "Använd klientauktorisering",
- "gui_settings_stealth_hidservauth_string": "Efter att ha sparat din privata nyckel för återanvändning, innebär det att du nu kan klicka för att kopiera din HidServAuth.",
"gui_settings_autoupdate_label": "Sök efter ny version",
"gui_settings_autoupdate_option": "Meddela mig när en ny version är tillgänglig",
"gui_settings_autoupdate_timestamp": "Senast kontrollerad: {}",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "Tiden för den automatiska stopp-tidtagaren löpte ut innan servern startades.\nVänligen gör en ny delning.",
"gui_server_autostop_timer_expired": "Den automatiska stopp-tidtagaren har redan löpt ut. Vänligen justera den för att starta delning.",
"share_via_onionshare": "Dela med OnionShare",
- "gui_use_legacy_v2_onions_checkbox": "Använd äldre adresser",
"gui_save_private_key_checkbox": "Använd en beständig adress",
"gui_share_url_description": "Alla med denna OnionShare-adress kan hämta dina filer med Tor Browser: ",
"gui_receive_url_description": "Alla med denna OnionShare-adress kan ladda upp filer till din dator med Tor Browser: ",
@@ -226,7 +220,6 @@
"hours_first_letter": "t",
"minutes_first_letter": "m",
"seconds_first_letter": "s",
- "invalid_password_guess": "Ogiltig lösenordsgissning",
"gui_website_url_description": "Alla med denna OnionShare-adress kan besöka din webbplats med Tor Browser: ",
"gui_mode_website_button": "Publicera webbplats",
"systray_site_loaded_title": "Webbplats inläst",
@@ -247,7 +240,6 @@
"mode_settings_receive_data_dir_browse_button": "Bläddra",
"mode_settings_receive_data_dir_label": "Spara filer till",
"mode_settings_share_autostop_sharing_checkbox": "Stoppa delning efter att filer har skickats (avmarkera för att tillåta hämtning av enskilda filer)",
- "mode_settings_client_auth_checkbox": "Använd klientauktorisering",
"mode_settings_legacy_checkbox": "Använd en äldre adress (v2-oniontjänst, rekommenderas inte)",
"mode_settings_autostart_timer_checkbox": "Starta oniontjänsten vid schemalagd tid",
"mode_settings_autostop_timer_checkbox": "Stoppa oniontjänsten vid schemalagd tid",
diff --git a/desktop/src/onionshare/resources/locale/sw.json b/desktop/src/onionshare/resources/locale/sw.json
index 74707f3c..31eb72c5 100644
--- a/desktop/src/onionshare/resources/locale/sw.json
+++ b/desktop/src/onionshare/resources/locale/sw.json
@@ -21,12 +21,9 @@
"gui_receive_stop_server": "",
"gui_receive_stop_server_autostop_timer": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_waiting_to_start": "",
"gui_please_wait": "",
"gui_quit_title": "",
@@ -34,14 +31,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -111,7 +106,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "",
"share_via_onionshare": "",
"gui_connect_to_tor_for_onion_settings": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/te.json b/desktop/src/onionshare/resources/locale/te.json
index 541625f8..d1784090 100644
--- a/desktop/src/onionshare/resources/locale/te.json
+++ b/desktop/src/onionshare/resources/locale/te.json
@@ -21,12 +21,9 @@
"gui_receive_stop_server": "స్వీకరించు రీతిని ఆపివేయి",
"gui_receive_stop_server_autostop_timer": "స్వీకరించు రీతిని ఆపివేయి ({} మిగిలినది)",
"gui_copy_url": "జాల చిరునామాను నకలు తీయి",
- "gui_copy_hidservauth": "HidServAuth నకలు తీయి",
"gui_canceled": "రద్దు చేయబడినది",
"gui_copied_url_title": "OnionShare జాల చిరునామా నకలు తీయబడినది",
"gui_copied_url": "OnionShare జాల చిరునామా క్లిప్బోర్డునకు నకలు తీయబడినది",
- "gui_copied_hidservauth_title": "HidServAuth నకలు తీయబడినది",
- "gui_copied_hidservauth": "HidServAuth పంక్తి క్లిప్బోర్డునకు నకలు తీయబడినది",
"gui_waiting_to_start": "ఇంకా {}లో మొదలగునట్లు అమర్చబడినది. రద్దుచేయుటకై ఇక్కడ నొక్కు.",
"gui_please_wait": "మొదలుపెట్టబడుతుంది... రద్దు చేయుటకై ఇక్కడ నొక్కు.",
"gui_quit_title": "అంత త్వరగా కాదు",
@@ -34,14 +31,12 @@
"gui_receive_quit_warning": "మీరు దస్త్రాలను స్వీకరించే క్రమంలో ఉన్నారు. మీరు నిశ్చయంగా ఇప్పుడు OnionShareని విడిచి వెళ్ళాలనుకుంటున్నారా?",
"gui_quit_warning_quit": "నిష్క్రమించు",
"gui_quit_warning_dont_quit": "రద్దుచేయి",
- "error_rate_limit": "ఎవరో మీ జాల చిరునామాతో చాలా సరికాని సంకేతశబ్దాలు వాడారు, బహుశా వారు దానిని ఊహించడానికి ప్రయత్నిస్తుండవచ్చు, కనుక OnionShare సర్వరును ఆపివేసింది. మరల పంచుకోవడం మొదలుపెట్టి మీ గ్రహీతలకు ఆ కొత్త జాల చిరునామాను పంపండి.",
"zip_progress_bar_format": "కుదించబడుతున్నది: %p%",
"error_stealth_not_supported": "ఉపయోక్త ధ్రువీకరణను వాడుటకై కనీసం Tor 0.2.9.1-alpha (లేదా Tor Browser 6.5), python3-stem 1.5.0 ఈ రెండూ ఉండాలి.",
"error_ephemeral_not_supported": "OnionShare పనిచేయాలంటే Tor 0.2.7.1 మరియు python-3-stem 1.4.0, ఈ రెండూ ఉండాలి.",
"gui_settings_window_title": "అమరికలు",
"gui_settings_whats_this": "ఇది ఏమిటి?",
"gui_settings_stealth_option": "ఉపయోక్త ధ్రువీకరణను వాడు",
- "gui_settings_stealth_hidservauth_string": "మరల వాడుటకై మీ ప్రైవేటు కీని భద్రపరచడం వలన మీరు ఇక్కడ నొక్కడం ద్వారా మీ HidServAuth నకలు తీయవచ్చు.",
"gui_settings_autoupdate_label": "కొత్త రూపాంతరం కోసం సరిచూడు",
"gui_settings_autoupdate_option": "కొత్త రూపాంతరం వస్తే నాకు తెలియచేయి",
"gui_settings_autoupdate_timestamp": "ఇంతకుముందు సరిచూసినది: {}",
@@ -111,7 +106,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "స్వయంచాలక ఆగు సమయం అనేది స్వయంచాలక ప్రారంభ సమయంతో సమానంగా లేదా అంతకు ముందు ఉండకూడదు. పంచుకోవడం ప్రారంభించడం కొరకు దయచేసి దానిని నవీకరించండి.",
"share_via_onionshare": "OnionShare చేయి",
"gui_connect_to_tor_for_onion_settings": "Onion సేవా అమరికలను చూచుటకు Torతో అనుసంధానించు",
- "gui_use_legacy_v2_onions_checkbox": "పాత చిరునామాలు వాడు",
"gui_save_private_key_checkbox": "ఒక నిరంతర చిరునామాను వాడు",
"gui_share_url_description": "ఈOnionShare చిరునామా గల ఎవరైనా మీ దస్త్రాలను Tor విహారిణితో దింపుకోవచ్చు: ",
"gui_receive_url_description": "ఈOnionShare చిరునామా గల ఎవరైనా మీ దస్త్రాలను Tor విహారిణితో ఎక్కించుకోవచ్చు:",
diff --git a/desktop/src/onionshare/resources/locale/tr.json b/desktop/src/onionshare/resources/locale/tr.json
index e00c3aba..e67436dc 100644
--- a/desktop/src/onionshare/resources/locale/tr.json
+++ b/desktop/src/onionshare/resources/locale/tr.json
@@ -41,23 +41,18 @@
"gui_receive_stop_server": "Alma Modunu Durdur",
"gui_receive_stop_server_autostop_timer": "Alma Modunu Durdur ({} kaldı)",
"gui_receive_stop_server_autostop_timer_tooltip": "Otomatik durdurma zamanlayıcısı {} sonra biter",
- "gui_copy_hidservauth": "HidServAuth Kopyala",
"gui_copied_url_title": "OnionShare Adresi Kopyalandı",
- "gui_copied_hidservauth_title": "HidServAuth Kopyalandı",
- "gui_copied_hidservauth": "HidServAuth satırı panoya kopyalandı",
"version_string": "OnionShare {0:s} | https://onionshare.org/",
"gui_quit_title": "Çok hızlı değil",
"gui_share_quit_warning": "Dosya gönderiyorsunuz. OnionShare uygulamasından çıkmak istediğinize emin misiniz?",
"gui_receive_quit_warning": "Dosya alıyorsunuz. OnionShare uygulamasından çıkmak istediğinize emin misiniz?",
"gui_quit_warning_quit": "Çık",
"gui_quit_warning_dont_quit": "İptal",
- "error_rate_limit": "Birisi parolanızı tahmin etmek için çok fazla yanlış girişimde bulundu, bu yüzden OnionShare sunucuyu durdurdu. Paylaşmayı tekrar başlatın ve alıcıya paylaşmanın yeni bir adresini gönderin.",
"error_stealth_not_supported": "İstemci kimlik doğrulamasını kullanmak için, en az Tor 0.2.9.1-alpha (ya da Tor Browser 6.5) ve python3-stem 1.5.0 sürümleri gereklidir.",
"error_ephemeral_not_supported": "OnionShare için en az Tor 0.2.7.1 ve python3-stem 1.4.0 sürümleri gereklidir.",
"gui_settings_window_title": "Ayarlar",
"gui_settings_whats_this": "Bu nedir?",
"gui_settings_stealth_option": "İstemci kimlik doğrulaması kullanılsın",
- "gui_settings_stealth_hidservauth_string": "Özel anahtarınızı yeniden kullanmak üzere kaydettiğinizden, tıklayarak HidServAuth verinizi kopyalabilirsiniz.",
"gui_settings_autoupdate_label": "Yeni sürümü denetle",
"gui_settings_autoupdate_option": "Yeni bir sürüm olduğunda bana haber ver",
"gui_settings_autoupdate_timestamp": "Son denetleme: {}",
@@ -124,7 +119,6 @@
"gui_server_autostop_timer_expired": "Otomatik durma sayacı zaten sona ermiş. Paylaşmaya başlamak için sayacı ayarlayın.",
"share_via_onionshare": "OnionShare ile paylaş",
"gui_connect_to_tor_for_onion_settings": "Onion hizmet ayarlarını görmek için Tor bağlantısı kurun",
- "gui_use_legacy_v2_onions_checkbox": "Eski adresler kullanılsın",
"gui_save_private_key_checkbox": "Kalıcı bir adres kullanılsın",
"gui_share_url_description": "Bu OnionShare adresine sahip olan herkesTor Browser kullanarak dosyalarınızı indirebilir: ",
"gui_receive_url_description": "Bu OnionShare adresine sahip olan herkesTor Browser kullanarak dosyaları bilgisayarınıza yükleyebilir: ",
@@ -197,7 +191,6 @@
"hours_first_letter": "s",
"minutes_first_letter": "d",
"seconds_first_letter": "sn",
- "invalid_password_guess": "Geçersiz parola tahmini",
"gui_website_url_description": "Bu OnionShare adresine sahip olan herkesTor Browser kullanarak web sitenizi ziyaret edebilir: ",
"gui_mode_website_button": "Web Sitesini Yayınla",
"gui_website_mode_no_files": "Henüz Bir Web Sitesi Paylaşılmadı",
@@ -210,7 +203,6 @@
"mode_settings_receive_data_dir_browse_button": "Göz at",
"mode_settings_receive_data_dir_label": "Dosyaları şuraya kaydet",
"mode_settings_share_autostop_sharing_checkbox": "Dosyalar gönderildikten sonra paylaşmayı durdur (dosyaların tek tek indirilmesine izin vermek için işareti kaldırın)",
- "mode_settings_client_auth_checkbox": "İstemci kimlik doğrulaması kullan",
"mode_settings_legacy_checkbox": "Eski bir adres kullan (v2 onion hizmeti, tavsiye edilmez)",
"mode_settings_autostop_timer_checkbox": "Onion hizmetini zamanlanan saatte durdur",
"mode_settings_autostart_timer_checkbox": "Onion hizmetini zamanlanan saatte başlat",
diff --git a/desktop/src/onionshare/resources/locale/uk.json b/desktop/src/onionshare/resources/locale/uk.json
index cf971be0..1d2a6bbf 100644
--- a/desktop/src/onionshare/resources/locale/uk.json
+++ b/desktop/src/onionshare/resources/locale/uk.json
@@ -21,12 +21,9 @@
"gui_receive_stop_server": "Зупинити режим отримання",
"gui_receive_stop_server_autostop_timer": "Зупинити режим отримання ({} залишилось)",
"gui_copy_url": "Копіювати Адресу",
- "gui_copy_hidservauth": "Копіювати HidServAuth",
"gui_canceled": "Скасовано",
"gui_copied_url_title": "Адресу OnionShare копійовано",
"gui_copied_url": "Адресу OnionShare копійовано до буферу обміну",
- "gui_copied_hidservauth_title": "Скопійовано HidServAuth",
- "gui_copied_hidservauth": "Рядок HidServAuth копійовано до буфера обміну",
"gui_waiting_to_start": "Заплановано почати за {}. Натисніть для скасування.",
"gui_please_wait": "Початок... Натисніть для скасування.",
"gui_quit_title": "Не так швидко",
@@ -34,14 +31,12 @@
"gui_receive_quit_warning": "Відбувається отримання файлів. Ви впевнені, що бажаєте вийти з OnionShare?",
"gui_quit_warning_quit": "Вийти",
"gui_quit_warning_dont_quit": "Відміна",
- "error_rate_limit": "Хтось здійснив забагато невдалих спроб під'єднатися до вашого сервера, тому OnionShare зупинив сервер. Почніть надсилання знову й надішліть одержувачу нову адресу надсилання.",
"zip_progress_bar_format": "Стиснення: %p%",
"error_stealth_not_supported": "Для авторизації клієнта, вам потрібні принаймні Tor 0.2.9.1-alpha(або Tor Browser 6.5) і python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare потребує принаймні Tor 0.2.7.1 і python3-stem 1.4.0.",
"gui_settings_window_title": "Налаштування",
"gui_settings_whats_this": "Що це?",
"gui_settings_stealth_option": "Використовувати авторизацію клієнта",
- "gui_settings_stealth_hidservauth_string": "Зберігши свій закритий ключ для повторного користування, ви можете копіювати HidServAuth.",
"gui_settings_autoupdate_label": "Перевірити наявність оновлень",
"gui_settings_autoupdate_option": "Повідомляти про наявність нової версії",
"gui_settings_autoupdate_timestamp": "Попередня перевірка: {}",
@@ -111,7 +106,6 @@
"gui_autostop_timer_cant_be_earlier_than_autostart_timer": "Час автоспину не може бути однаковим або ранішим за час автоматичного запуску. Налаштуйте його, щоб почати надсилання.",
"share_via_onionshare": "Поділитися через OnionShare",
"gui_connect_to_tor_for_onion_settings": "З'єднайтеся з Tor, щоб побачити параметри служби onion",
- "gui_use_legacy_v2_onions_checkbox": "Використовувати застарілі адреси",
"gui_save_private_key_checkbox": "Використовувати постійну адресу",
"gui_share_url_description": "Будь-хто, за допомогою цієї адреси, може завантажити ваші файли, через Tor Browser: ",
"gui_receive_url_description": "Будь-хто, за допомогою цієї адреси, може завантажити файли до вашого комп'ютера через Tor Browser: ",
@@ -187,7 +181,6 @@
"mode_settings_website_disable_csp_checkbox": "Не надсилати заголовок політики безпеки вмісту (дозволяє вебсайту застосовувати сторонні ресурси)",
"mode_settings_receive_data_dir_label": "Зберігати файли до",
"mode_settings_share_autostop_sharing_checkbox": "Закрити доступ, коли файли надіслано (приберіть позначку, щоб дозволити завантаження окремих файлів)",
- "mode_settings_client_auth_checkbox": "Застосовувати авторизацію клієнта",
"mode_settings_legacy_checkbox": "Користуватися застарілою адресою (служба onion v2, не рекомендовано)",
"mode_settings_autostop_timer_checkbox": "Зупинити службу onion у запланований час",
"mode_settings_autostart_timer_checkbox": "Запускати службу onion у запланований час",
diff --git a/desktop/src/onionshare/resources/locale/wo.json b/desktop/src/onionshare/resources/locale/wo.json
index 89d732b3..e0f37715 100644
--- a/desktop/src/onionshare/resources/locale/wo.json
+++ b/desktop/src/onionshare/resources/locale/wo.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/yo.json b/desktop/src/onionshare/resources/locale/yo.json
index fdd6dbea..5da034d1 100644
--- a/desktop/src/onionshare/resources/locale/yo.json
+++ b/desktop/src/onionshare/resources/locale/yo.json
@@ -45,14 +45,11 @@
"gui_receive_stop_server_autostop_timer": "",
"gui_receive_stop_server_autostop_timer_tooltip": "",
"gui_copy_url": "",
- "gui_copy_hidservauth": "",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "",
"gui_copied_url_title": "",
"gui_copied_url": "",
- "gui_copied_hidservauth_title": "",
- "gui_copied_hidservauth": "",
"gui_please_wait": "",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -63,14 +60,12 @@
"gui_receive_quit_warning": "",
"gui_quit_warning_quit": "",
"gui_quit_warning_dont_quit": "",
- "error_rate_limit": "",
"zip_progress_bar_format": "",
"error_stealth_not_supported": "",
"error_ephemeral_not_supported": "",
"gui_settings_window_title": "",
"gui_settings_whats_this": "",
"gui_settings_stealth_option": "",
- "gui_settings_stealth_hidservauth_string": "",
"gui_settings_autoupdate_label": "",
"gui_settings_autoupdate_option": "",
"gui_settings_autoupdate_timestamp": "",
@@ -135,7 +130,6 @@
"gui_server_started_after_autostop_timer": "",
"gui_server_autostop_timer_expired": "",
"share_via_onionshare": "",
- "gui_use_legacy_v2_onions_checkbox": "",
"gui_save_private_key_checkbox": "",
"gui_share_url_description": "",
"gui_receive_url_description": "",
diff --git a/desktop/src/onionshare/resources/locale/zh_Hans.json b/desktop/src/onionshare/resources/locale/zh_Hans.json
index d14b5754..c3a91d20 100644
--- a/desktop/src/onionshare/resources/locale/zh_Hans.json
+++ b/desktop/src/onionshare/resources/locale/zh_Hans.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "停止接收模式(还剩 {} 秒)",
"gui_receive_stop_server_autostop_timer_tooltip": "在{}自动停止",
"gui_copy_url": "复制地址",
- "gui_copy_hidservauth": "复制 HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "已取消",
"gui_copied_url_title": "已复制 OnionShare 地址",
"gui_copied_url": "OnionShare 地址已复制到剪贴板",
- "gui_copied_hidservauth_title": "已复制 HidServAuth",
- "gui_copied_hidservauth": "HidServAuth 行已复制到剪贴板",
"gui_please_wait": "正在开启……点击以取消。",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "您有文件在接收中……确定要退出 OnionShare 吗?",
"gui_quit_warning_quit": "退出",
"gui_quit_warning_dont_quit": "取消",
- "error_rate_limit": "有人发出了过多错误请求来猜测您的地址,因此 OinionShare 已停止服务。请重新开启共享并且向接收人发送新的共享地址。",
"zip_progress_bar_format": "压缩中:%p%",
"error_stealth_not_supported": "要使用客户端认证,最低版本要求是:Tor 0.2.9.1-alpha(或 Tor Browser 6.5)和 python3-stem 1.5.0。",
"error_ephemeral_not_supported": "OnionShare 最低版本要求为 Tor 0.2.7.1 和 python3-stem 1.4.0。",
"gui_settings_window_title": "设置",
"gui_settings_whats_this": "这是什么?",
"gui_settings_stealth_option": "使用客户端认证",
- "gui_settings_stealth_hidservauth_string": "已保存您的私钥用于重复使用,这意味着您现在可以点击以复制您的 HidServAuth。",
"gui_settings_autoupdate_label": "检查新版本",
"gui_settings_autoupdate_option": "新版本可用时通知我",
"gui_settings_autoupdate_timestamp": "上次检查更新时间:{}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "在服务器启动之前,自动停止的定时器的计时已到。请建立一个新的共享。",
"gui_server_autostop_timer_expired": "自动停止的定时器计时已到。请对其调整以开始共享。",
"share_via_onionshare": "通过 OnionShare 共享",
- "gui_use_legacy_v2_onions_checkbox": "使用老式地址",
"gui_save_private_key_checkbox": "使用长期地址",
"gui_share_url_description": "任何人只要有这个 OnionShare 地址,都可以用 Tor Browser 来下载您的文件:",
"gui_receive_url_description": "任何人只要有这个 OnionShare 地址,都可以用 Tor Browser 向您的电脑上传文件:",
@@ -238,7 +232,6 @@
"mode_settings_receive_data_dir_browse_button": "浏览",
"mode_settings_receive_data_dir_label": "保存文件到",
"mode_settings_share_autostop_sharing_checkbox": "文件传送完后停止共享(取消选中可允许下载单个文件)",
- "mode_settings_client_auth_checkbox": "使用客户端认证",
"mode_settings_legacy_checkbox": "使用旧地址(v2 onion服务,不推荐)",
"mode_settings_autostop_timer_checkbox": "定时停止onion服务",
"mode_settings_autostart_timer_checkbox": "定时起动onion服务",
diff --git a/desktop/src/onionshare/resources/locale/zh_Hant.json b/desktop/src/onionshare/resources/locale/zh_Hant.json
index b6158c59..29203837 100644
--- a/desktop/src/onionshare/resources/locale/zh_Hant.json
+++ b/desktop/src/onionshare/resources/locale/zh_Hant.json
@@ -44,14 +44,11 @@
"gui_receive_stop_server_autostop_timer": "停止接收模式 (剩餘{}秒)",
"gui_receive_stop_server_autostop_timer_tooltip": "計數器將在{}停止",
"gui_copy_url": "複製地址",
- "gui_copy_hidservauth": "複製HidServAuth",
"gui_downloads": "",
"gui_no_downloads": "",
"gui_canceled": "已取消",
"gui_copied_url_title": "已複製OnionShare地址",
"gui_copied_url": "OnionShare地址已複製到剪貼簿",
- "gui_copied_hidservauth_title": "已複製HidServAuth",
- "gui_copied_hidservauth": "HidServAuth已複製到剪貼簿",
"gui_please_wait": "啟動中...點擊以取消。",
"gui_download_upload_progress_complete": "",
"gui_download_upload_progress_starting": "",
@@ -62,14 +59,12 @@
"gui_receive_quit_warning": "仍在接收檔案,您確定要結束OnionShare嗎?",
"gui_quit_warning_quit": "結束",
"gui_quit_warning_dont_quit": "取消",
- "error_rate_limit": "有人嘗試猜測您的密碼太多次,因此OnionShare已經停止服務。再次啟動分享並傳送新的地址給接收者以開始分享。",
"zip_progress_bar_format": "壓縮中: %p%",
"error_stealth_not_supported": "為了使用客戶端認證, 您至少需要 Tor 0.2.9.1-alpha (或 Tor Browser 6.5) 以及 python3-stem 1.5.0.",
"error_ephemeral_not_supported": "OnionShare 需要至少 Tor 0.2.7.1 以及 python3-stem 1.4.0.",
"gui_settings_window_title": "設定",
"gui_settings_whats_this": "這是什麼?",
"gui_settings_stealth_option": "使用客戶端認證",
- "gui_settings_stealth_hidservauth_string": "已經將您的私鑰存起來以便使用,代表您現在可以點選以複製您的HidSerAuth。",
"gui_settings_autoupdate_label": "檢查新版本",
"gui_settings_autoupdate_option": "當有新版本的時候提醒我",
"gui_settings_autoupdate_timestamp": "上一次檢查時間: {}",
@@ -134,7 +129,6 @@
"gui_server_started_after_autostop_timer": "在服務器啓動之前,自動停止的定時器的計時已到。請建立一個新的共享。",
"gui_server_autostop_timer_expired": "自動停止計時器時間已到。請調整它來開始分享。",
"share_via_onionshare": "使用OnionShare分享",
- "gui_use_legacy_v2_onions_checkbox": "使用傳統地址",
"gui_save_private_key_checkbox": "使用永久地址",
"gui_share_url_description": "任何人只要擁有這個地址就可以下載你的檔案經由Tor Browser: ",
"gui_receive_url_description": "任何人只要擁有這個地址就可以上傳檔案到你的電腦經由Tor Browser: ",
@@ -270,7 +264,6 @@
"gui_rendezvous_cleanup": "等待Tor电路关闭,以确保文檔传输成功。\n\n這可能需要幾分鐘。",
"mode_settings_website_disable_csp_checkbox": "取消內容安全政策(Content Security Policy)信頭(允許您的網站使用三方資源)",
"mode_settings_share_autostop_sharing_checkbox": "檔案傳送完後停止共享(取消選中可允許下載單個檔案)",
- "mode_settings_client_auth_checkbox": "使用者端認證",
"mode_settings_legacy_checkbox": "使用舊地址(v2 onion服務,不推薦)",
"mode_settings_autostop_timer_checkbox": "定時停止onion服務",
"mode_settings_autostart_timer_checkbox": "定時起動onion服務",
diff --git a/desktop/src/onionshare/tab/mode/__init__.py b/desktop/src/onionshare/tab/mode/__init__.py
index aeecaf66..1e7121bb 100644
--- a/desktop/src/onionshare/tab/mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/__init__.py
@@ -246,13 +246,25 @@ class Mode(QtWidgets.QWidget):
self.start_onion_thread()
def start_onion_thread(self, obtain_onion_early=False):
- self.common.log("Mode", "start_server", "Starting an onion thread")
- self.obtain_onion_early = obtain_onion_early
- self.onion_thread = OnionThread(self)
- self.onion_thread.success.connect(self.starting_server_step2.emit)
- self.onion_thread.success_early.connect(self.starting_server_early.emit)
- self.onion_thread.error.connect(self.starting_server_error.emit)
- self.onion_thread.start()
+ # If we tried to start with Client Auth and our Tor is too old to support it,
+ # bail out early
+ if (
+ not self.server_status.local_only
+ and not self.app.onion.supports_stealth
+ and not self.settings.get("general", "public")
+ ):
+ self.stop_server()
+ self.start_server_error(
+ strings._("gui_server_doesnt_support_stealth")
+ )
+ else:
+ self.common.log("Mode", "start_server", "Starting an onion thread")
+ self.obtain_onion_early = obtain_onion_early
+ self.onion_thread = OnionThread(self)
+ self.onion_thread.success.connect(self.starting_server_step2.emit)
+ self.onion_thread.success_early.connect(self.starting_server_early.emit)
+ self.onion_thread.error.connect(self.starting_server_error.emit)
+ self.onion_thread.start()
def start_scheduled_service(self, obtain_onion_early=False):
# We start a new OnionThread with the saved scheduled key from settings
@@ -438,15 +450,6 @@ class Mode(QtWidgets.QWidget):
"""
pass
- def handle_request_rate_limit(self, event):
- """
- Handle REQUEST_RATE_LIMIT event.
- """
- self.stop_server()
- Alert(
- self.common, strings._("error_rate_limit"), QtWidgets.QMessageBox.Critical
- )
-
def handle_request_progress(self, event):
"""
Handle REQUEST_PROGRESS event.
diff --git a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py b/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
index fe3e69f1..e7a17ce7 100644
--- a/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/chat_mode/__init__.py
@@ -130,7 +130,6 @@ class ChatMode(Mode):
"""
# Reset web counters
self.web.chat_mode.cur_history_id = 0
- self.web.reset_invalid_passwords()
def start_server_step2_custom(self):
"""
diff --git a/desktop/src/onionshare/tab/mode/mode_settings_widget.py b/desktop/src/onionshare/tab/mode/mode_settings_widget.py
index 9f55dbaf..0e80023e 100644
--- a/desktop/src/onionshare/tab/mode/mode_settings_widget.py
+++ b/desktop/src/onionshare/tab/mode/mode_settings_widget.py
@@ -129,28 +129,6 @@ class ModeSettingsWidget(QtWidgets.QScrollArea):
autostop_timer_layout.addWidget(self.autostop_timer_checkbox)
autostop_timer_layout.addWidget(self.autostop_timer_widget)
- # Legacy address
- self.legacy_checkbox = QtWidgets.QCheckBox()
- self.legacy_checkbox.clicked.connect(self.legacy_checkbox_clicked)
- self.legacy_checkbox.clicked.connect(self.update_ui)
- self.legacy_checkbox.setText(strings._("mode_settings_legacy_checkbox"))
- if self.settings.get("general", "legacy"):
- self.legacy_checkbox.setCheckState(QtCore.Qt.Checked)
- else:
- self.legacy_checkbox.setCheckState(QtCore.Qt.Unchecked)
-
- # Client auth
- self.client_auth_checkbox = QtWidgets.QCheckBox()
- self.client_auth_checkbox.clicked.connect(self.client_auth_checkbox_clicked)
- self.client_auth_checkbox.clicked.connect(self.update_ui)
- self.client_auth_checkbox.setText(
- strings._("mode_settings_client_auth_checkbox")
- )
- if self.settings.get("general", "client_auth"):
- self.client_auth_checkbox.setCheckState(QtCore.Qt.Checked)
- else:
- self.client_auth_checkbox.setCheckState(QtCore.Qt.Unchecked)
-
# Toggle advanced settings
self.toggle_advanced_button = QtWidgets.QPushButton()
self.toggle_advanced_button.clicked.connect(self.toggle_advanced_clicked)
@@ -165,8 +143,6 @@ class ModeSettingsWidget(QtWidgets.QScrollArea):
advanced_layout.addLayout(title_layout)
advanced_layout.addLayout(autostart_timer_layout)
advanced_layout.addLayout(autostop_timer_layout)
- advanced_layout.addWidget(self.legacy_checkbox)
- advanced_layout.addWidget(self.client_auth_checkbox)
self.advanced_widget = QtWidgets.QWidget()
self.advanced_widget.setLayout(advanced_layout)
self.advanced_widget.hide()
@@ -200,28 +176,6 @@ class ModeSettingsWidget(QtWidgets.QScrollArea):
strings._("mode_settings_advanced_toggle_show")
)
- # Client auth is only a legacy option
- if self.client_auth_checkbox.isChecked():
- self.legacy_checkbox.setChecked(True)
- self.legacy_checkbox.setEnabled(False)
- else:
- self.legacy_checkbox.setEnabled(True)
- if self.legacy_checkbox.isChecked():
- self.client_auth_checkbox.show()
- else:
- self.client_auth_checkbox.hide()
-
- # If the server has been started in the past, prevent changing legacy option
- if self.settings.get("onion", "private_key"):
- if self.legacy_checkbox.isChecked():
- # If using legacy, disable legacy and client auth options
- self.legacy_checkbox.setEnabled(False)
- self.client_auth_checkbox.setEnabled(False)
- else:
- # If using v3, hide legacy and client auth options
- self.legacy_checkbox.hide()
- self.client_auth_checkbox.hide()
-
def title_editing_finished(self):
if self.title_lineedit.text().strip() == "":
self.title_lineedit.setText("")
@@ -283,14 +237,6 @@ class ModeSettingsWidget(QtWidgets.QScrollArea):
else:
self.autostop_timer_widget.hide()
- def legacy_checkbox_clicked(self):
- self.settings.set("general", "legacy", self.legacy_checkbox.isChecked())
-
- def client_auth_checkbox_clicked(self):
- self.settings.set(
- "general", "client_auth", self.client_auth_checkbox.isChecked()
- )
-
def toggle_advanced_clicked(self):
if self.advanced_widget.isVisible():
self.advanced_widget.hide()
diff --git a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
index d07b5ffc..e9f6b2ce 100644
--- a/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/receive_mode/__init__.py
@@ -296,7 +296,6 @@ class ReceiveMode(Mode):
"""
# Reset web counters
self.web.receive_mode.cur_history_id = 0
- self.web.reset_invalid_passwords()
# Hide and reset the uploads if we have previously shared
self.reset_info_counters()
diff --git a/desktop/src/onionshare/tab/mode/share_mode/__init__.py b/desktop/src/onionshare/tab/mode/share_mode/__init__.py
index 4056d92e..5d3e3c35 100644
--- a/desktop/src/onionshare/tab/mode/share_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/share_mode/__init__.py
@@ -219,7 +219,6 @@ class ShareMode(Mode):
"""
# Reset web counters
self.web.share_mode.cur_history_id = 0
- self.web.reset_invalid_passwords()
# Hide and reset the downloads if we have previously shared
self.reset_info_counters()
diff --git a/desktop/src/onionshare/tab/mode/website_mode/__init__.py b/desktop/src/onionshare/tab/mode/website_mode/__init__.py
index 577ea28e..a50d15b9 100644
--- a/desktop/src/onionshare/tab/mode/website_mode/__init__.py
+++ b/desktop/src/onionshare/tab/mode/website_mode/__init__.py
@@ -210,7 +210,6 @@ class WebsiteMode(Mode):
"""
# Reset web counters
self.web.website_mode.visit_count = 0
- self.web.reset_invalid_passwords()
# Hide and reset the downloads if we have previously shared
self.reset_info_counters()
diff --git a/desktop/src/onionshare/tab/server_status.py b/desktop/src/onionshare/tab/server_status.py
index ba5ff165..3d4c723d 100644
--- a/desktop/src/onionshare/tab/server_status.py
+++ b/desktop/src/onionshare/tab/server_status.py
@@ -38,7 +38,7 @@ class ServerStatus(QtWidgets.QWidget):
server_canceled = QtCore.Signal()
button_clicked = QtCore.Signal()
url_copied = QtCore.Signal()
- hidservauth_copied = QtCore.Signal()
+ client_auth_copied = QtCore.Signal()
STATUS_STOPPED = 0
STATUS_WORKING = 1
@@ -95,8 +95,8 @@ class ServerStatus(QtWidgets.QWidget):
self.common.gui.css["server_status_url_buttons"]
)
self.copy_url_button.clicked.connect(self.copy_url)
- self.copy_hidservauth_button = QtWidgets.QPushButton(
- strings._("gui_copy_hidservauth")
+ self.copy_client_auth_button = QtWidgets.QPushButton(
+ strings._("gui_copy_client_auth")
)
self.show_url_qr_code_button = QtWidgets.QPushButton(
strings._("gui_show_url_qr_code")
@@ -109,14 +109,14 @@ class ServerStatus(QtWidgets.QWidget):
self.common.gui.css["server_status_url_buttons"]
)
- self.copy_hidservauth_button.setStyleSheet(
+ self.copy_client_auth_button.setStyleSheet(
self.common.gui.css["server_status_url_buttons"]
)
- self.copy_hidservauth_button.clicked.connect(self.copy_hidservauth)
+ self.copy_client_auth_button.clicked.connect(self.copy_client_auth)
url_buttons_layout = QtWidgets.QHBoxLayout()
url_buttons_layout.addWidget(self.copy_url_button)
+ url_buttons_layout.addWidget(self.copy_client_auth_button)
url_buttons_layout.addWidget(self.show_url_qr_code_button)
- url_buttons_layout.addWidget(self.copy_hidservauth_button)
url_buttons_layout.addStretch()
url_layout = QtWidgets.QVBoxLayout()
@@ -173,21 +173,41 @@ class ServerStatus(QtWidgets.QWidget):
info_image = GuiCommon.get_resource_path("images/info.png")
if self.mode == self.common.gui.MODE_SHARE:
- self.url_description.setText(
- strings._("gui_share_url_description").format(info_image)
- )
+ if self.settings.get("general", "public"):
+ self.url_description.setText(
+ strings._("gui_share_url_public_description").format(info_image)
+ )
+ else:
+ self.url_description.setText(
+ strings._("gui_share_url_description").format(info_image)
+ )
elif self.mode == self.common.gui.MODE_WEBSITE:
- self.url_description.setText(
- strings._("gui_website_url_description").format(info_image)
- )
+ if self.settings.get("general", "public"):
+ self.url_description.setText(
+ strings._("gui_website_url_public_description").format(info_image)
+ )
+ else:
+ self.url_description.setText(
+ strings._("gui_website_url_description").format(info_image)
+ )
elif self.mode == self.common.gui.MODE_RECEIVE:
- self.url_description.setText(
- strings._("gui_receive_url_description").format(info_image)
- )
+ if self.settings.get("general", "public"):
+ self.url_description.setText(
+ strings._("gui_receive_url_public_description").format(info_image)
+ )
+ else:
+ self.url_description.setText(
+ strings._("gui_receive_url_description").format(info_image)
+ )
elif self.mode == self.common.gui.MODE_CHAT:
- self.url_description.setText(
- strings._("gui_chat_url_description").format(info_image)
- )
+ if self.settings.get("general", "public"):
+ self.url_description.setText(
+ strings._("gui_chat_url_public_description").format(info_image)
+ )
+ else:
+ self.url_description.setText(
+ strings._("gui_chat_url_description").format(info_image)
+ )
# Show a Tool Tip explaining the lifecycle of this URL
if self.settings.get("persistent", "enabled"):
@@ -213,10 +233,10 @@ class ServerStatus(QtWidgets.QWidget):
self.show_url_qr_code_button.show()
- if self.settings.get("general", "client_auth"):
- self.copy_hidservauth_button.show()
+ if self.settings.get("general", "public"):
+ self.copy_client_auth_button.hide()
else:
- self.copy_hidservauth_button.hide()
+ self.copy_client_auth_button.show()
def update(self):
"""
@@ -230,10 +250,6 @@ class ServerStatus(QtWidgets.QWidget):
self.common.settings.load()
self.show_url()
- if not self.settings.get("onion", "password"):
- self.settings.set("onion", "password", self.web.password)
- self.settings.save()
-
if self.settings.get("general", "autostop_timer"):
self.server_button.setToolTip(
strings._("gui_stop_server_autostop_timer_tooltip").format(
@@ -246,7 +262,7 @@ class ServerStatus(QtWidgets.QWidget):
self.url_description.hide()
self.url.hide()
self.copy_url_button.hide()
- self.copy_hidservauth_button.hide()
+ self.copy_client_auth_button.hide()
self.show_url_qr_code_button.hide()
self.mode_settings_widget.update_ui()
@@ -395,7 +411,11 @@ class ServerStatus(QtWidgets.QWidget):
"""
Show a QR code of the onion URL.
"""
- self.qr_code_dialog = QRCodeDialog(self.common, self.get_url())
+ if self.settings.get("general", "public"):
+ self.qr_code_dialog = QRCodeDialog(self.common, self.get_url())
+ else:
+ # Make a QR Code for the ClientAuth too
+ self.qr_code_dialog = QRCodeDialog(self.common, self.get_url(), self.app.auth_string)
def start_server(self):
"""
@@ -453,21 +473,18 @@ class ServerStatus(QtWidgets.QWidget):
self.url_copied.emit()
- def copy_hidservauth(self):
+ def copy_client_auth(self):
"""
- Copy the HidServAuth line to the clipboard.
+ Copy the ClientAuth private key line to the clipboard.
"""
clipboard = self.qtapp.clipboard()
clipboard.setText(self.app.auth_string)
- self.hidservauth_copied.emit()
+ self.client_auth_copied.emit()
def get_url(self):
"""
Returns the OnionShare URL.
"""
- if self.settings.get("general", "public"):
- url = f"http://{self.app.onion_host}"
- else:
- url = f"http://onionshare:{self.web.password}@{self.app.onion_host}"
+ url = f"http://{self.app.onion_host}"
return url
diff --git a/desktop/src/onionshare/tab/tab.py b/desktop/src/onionshare/tab/tab.py
index 09982de9..5d9bb077 100644
--- a/desktop/src/onionshare/tab/tab.py
+++ b/desktop/src/onionshare/tab/tab.py
@@ -275,7 +275,7 @@ class Tab(QtWidgets.QWidget):
self.share_mode.start_server_finished.connect(self.clear_message)
self.share_mode.server_status.button_clicked.connect(self.clear_message)
self.share_mode.server_status.url_copied.connect(self.copy_url)
- self.share_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth)
+ self.share_mode.server_status.client_auth_copied.connect(self.copy_client_auth)
self.change_title.emit(self.tab_id, strings._("gui_tab_name_share"))
@@ -310,8 +310,8 @@ class Tab(QtWidgets.QWidget):
self.receive_mode.start_server_finished.connect(self.clear_message)
self.receive_mode.server_status.button_clicked.connect(self.clear_message)
self.receive_mode.server_status.url_copied.connect(self.copy_url)
- self.receive_mode.server_status.hidservauth_copied.connect(
- self.copy_hidservauth
+ self.receive_mode.server_status.client_auth_copied.connect(
+ self.copy_client_auth
)
self.change_title.emit(self.tab_id, strings._("gui_tab_name_receive"))
@@ -347,8 +347,8 @@ class Tab(QtWidgets.QWidget):
self.website_mode.start_server_finished.connect(self.clear_message)
self.website_mode.server_status.button_clicked.connect(self.clear_message)
self.website_mode.server_status.url_copied.connect(self.copy_url)
- self.website_mode.server_status.hidservauth_copied.connect(
- self.copy_hidservauth
+ self.website_mode.server_status.client_auth_copied.connect(
+ self.copy_client_auth
)
self.change_title.emit(self.tab_id, strings._("gui_tab_name_website"))
@@ -382,7 +382,7 @@ class Tab(QtWidgets.QWidget):
self.chat_mode.start_server_finished.connect(self.clear_message)
self.chat_mode.server_status.button_clicked.connect(self.clear_message)
self.chat_mode.server_status.url_copied.connect(self.copy_url)
- self.chat_mode.server_status.hidservauth_copied.connect(self.copy_hidservauth)
+ self.chat_mode.server_status.client_auth_copied.connect(self.copy_client_auth)
self.change_title.emit(self.tab_id, strings._("gui_tab_name_chat"))
@@ -531,9 +531,6 @@ class Tab(QtWidgets.QWidget):
elif event["type"] == Web.REQUEST_STARTED:
mode.handle_request_started(event)
- elif event["type"] == Web.REQUEST_RATE_LIMIT:
- mode.handle_request_rate_limit(event)
-
elif event["type"] == Web.REQUEST_PROGRESS:
mode.handle_request_progress(event)
@@ -581,11 +578,6 @@ class Tab(QtWidgets.QWidget):
f"{strings._('other_page_loaded')}: {event['path']}"
)
- if event["type"] == Web.REQUEST_INVALID_PASSWORD:
- self.status_bar.showMessage(
- f"[#{mode.web.invalid_passwords_count}] {strings._('incorrect_password')}: {event['data']}"
- )
-
mode.timer_callback()
def copy_url(self):
@@ -597,14 +589,15 @@ class Tab(QtWidgets.QWidget):
strings._("gui_copied_url_title"), strings._("gui_copied_url")
)
- def copy_hidservauth(self):
+ def copy_client_auth(self):
"""
- When the stealth onion service HidServAuth gets copied to the clipboard, display this in the status bar.
+ When the onion service's ClientAuth private key gets copied to
+ the clipboard, display this in the status bar.
"""
- self.common.log("Tab", "copy_hidservauth")
+ self.common.log("Tab", "copy_client_auth")
self.system_tray.showMessage(
- strings._("gui_copied_hidservauth_title"),
- strings._("gui_copied_hidservauth"),
+ strings._("gui_copied_client_auth_title"),
+ strings._("gui_copied_client_auth"),
)
def clear_message(self):
diff --git a/desktop/src/onionshare/threads.py b/desktop/src/onionshare/threads.py
index c9a3dba4..b02c6f21 100644
--- a/desktop/src/onionshare/threads.py
+++ b/desktop/src/onionshare/threads.py
@@ -65,14 +65,9 @@ class OnionThread(QtCore.QThread):
# Make a new static URL path for each new share
self.mode.web.generate_static_url_path()
- # Choose port and password early, because we need them to exist in advance for scheduled shares
+ # Choose port early, because we need them to exist in advance for scheduled shares
if not self.mode.app.port:
self.mode.app.choose_port()
- if not self.mode.settings.get("general", "public"):
- if not self.mode.web.password:
- self.mode.web.generate_password(
- self.mode.settings.get("onion", "password")
- )
try:
if self.mode.obtain_onion_early:
diff --git a/desktop/src/onionshare/widgets.py b/desktop/src/onionshare/widgets.py
index c239d03a..ec4d5ddc 100644
--- a/desktop/src/onionshare/widgets.py
+++ b/desktop/src/onionshare/widgets.py
@@ -130,20 +130,47 @@ class QRCodeDialog(QtWidgets.QDialog):
A dialog showing a QR code.
"""
- def __init__(self, common, text):
+ def __init__(self, common, url, auth_string=None):
super(QRCodeDialog, self).__init__()
self.common = common
- self.text = text
self.common.log("QrCode", "__init__")
- self.qr_label = QtWidgets.QLabel(self)
- self.qr_label.setPixmap(qrcode.make(self.text, image_factory=Image).pixmap())
+ self.qr_label_url = QtWidgets.QLabel(self)
+ self.qr_label_url.setPixmap(qrcode.make(url, image_factory=Image).pixmap())
+ self.qr_label_url.setScaledContents(True)
+ self.qr_label_url.setFixedSize(350, 350)
+ self.qr_label_url_title = QtWidgets.QLabel(self)
+ self.qr_label_url_title.setText(strings._("gui_qr_label_url_title"))
+ self.qr_label_url_title.setAlignment(QtCore.Qt.AlignCenter)
self.setWindowTitle(strings._("gui_qr_code_dialog_title"))
self.setWindowIcon(QtGui.QIcon(GuiCommon.get_resource_path("images/logo.png")))
- layout = QtWidgets.QVBoxLayout(self)
- layout.addWidget(self.qr_label)
+ layout = QtWidgets.QHBoxLayout(self)
+ url_layout = QtWidgets.QVBoxLayout(self)
+ url_layout.addWidget(self.qr_label_url_title)
+ url_layout.addWidget(self.qr_label_url)
+
+ url_code_with_label = QtWidgets.QWidget()
+ url_code_with_label.setLayout(url_layout)
+ layout.addWidget(url_code_with_label)
+
+ if auth_string:
+ self.qr_label_auth_string = QtWidgets.QLabel(self)
+ self.qr_label_auth_string.setPixmap(qrcode.make(auth_string, image_factory=Image).pixmap())
+ self.qr_label_auth_string.setScaledContents(True)
+ self.qr_label_auth_string.setFixedSize(350, 350)
+ self.qr_label_auth_string_title = QtWidgets.QLabel(self)
+ self.qr_label_auth_string_title.setText(strings._("gui_qr_label_auth_string_title"))
+ self.qr_label_auth_string_title.setAlignment(QtCore.Qt.AlignCenter)
+
+ auth_string_layout = QtWidgets.QVBoxLayout(self)
+ auth_string_layout.addWidget(self.qr_label_auth_string_title)
+ auth_string_layout.addWidget(self.qr_label_auth_string)
+
+ auth_string_code_with_label = QtWidgets.QWidget()
+ auth_string_code_with_label.setLayout(auth_string_layout)
+ layout.addWidget(auth_string_code_with_label)
self.exec_()
diff --git a/desktop/tests/gui_base_test.py b/desktop/tests/gui_base_test.py
index acaa9739..ac2dfc54 100644
--- a/desktop/tests/gui_base_test.py
+++ b/desktop/tests/gui_base_test.py
@@ -191,30 +191,13 @@ class GuiBaseTest(unittest.TestCase):
# Upload a file
files = {"file[]": open(self.tmpfiles[0], "rb")}
url = f"http://127.0.0.1:{tab.app.port}/upload"
- if tab.settings.get("general", "public"):
- requests.post(url, files=files)
- else:
- requests.post(
- url,
- files=files,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().web.password
- ),
- )
+ requests.post(url, files=files)
QtTest.QTest.qWait(2000, self.gui.qtapp)
if type(tab.get_mode()) == ShareMode:
# Download files
url = f"http://127.0.0.1:{tab.app.port}/download"
- if tab.settings.get("general", "public"):
- requests.get(url)
- else:
- requests.get(
- url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().web.password
- ),
- )
+ requests.get(url)
QtTest.QTest.qWait(2000, self.gui.qtapp)
# Indicator should be visible, have a value of "1"
@@ -273,13 +256,6 @@ class GuiBaseTest(unittest.TestCase):
except requests.exceptions.ConnectionError:
self.assertTrue(False)
- def have_a_password(self, tab):
- """Test that we have a valid password"""
- if not tab.settings.get("general", "public"):
- self.assertRegex(tab.get_mode().server_status.web.password, r"(\w+)-(\w+)")
- else:
- self.assertIsNone(tab.get_mode().server_status.web.password, r"(\w+)-(\w+)")
-
def add_button_visible(self, tab):
"""Test that the add button should be visible"""
if platform.system() == "Darwin":
@@ -304,13 +280,7 @@ class GuiBaseTest(unittest.TestCase):
tab.get_mode().server_status.copy_url_button.click()
clipboard = tab.common.gui.qtapp.clipboard()
- if tab.settings.get("general", "public"):
- self.assertEqual(clipboard.text(), f"http://127.0.0.1:{tab.app.port}")
- else:
- self.assertEqual(
- clipboard.text(),
- f"http://onionshare:{tab.get_mode().server_status.web.password}@127.0.0.1:{tab.app.port}",
- )
+ self.assertEqual(clipboard.text(), f"http://127.0.0.1:{tab.app.port}")
def have_show_qr_code_button(self, tab):
"""Test that the Show QR Code URL button is shown and that it loads a QR Code Dialog"""
@@ -343,16 +313,7 @@ class GuiBaseTest(unittest.TestCase):
"""Test that the web page contains a string"""
url = f"http://127.0.0.1:{tab.app.port}/"
- if tab.settings.get("general", "public"):
- r = requests.get(url)
- else:
- r = requests.get(
- url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().web.password
- ),
- )
-
+ r = requests.get(url)
self.assertTrue(string in r.text)
def history_widgets_present(self, tab):
@@ -384,7 +345,7 @@ class GuiBaseTest(unittest.TestCase):
self.assertFalse(tab.get_mode().server_status.url.isVisible())
self.assertFalse(tab.get_mode().server_status.url_description.isVisible())
self.assertFalse(
- tab.get_mode().server_status.copy_hidservauth_button.isVisible()
+ tab.get_mode().server_status.copy_client_auth_button.isVisible()
)
def web_server_is_stopped(self, tab):
@@ -465,6 +426,21 @@ class GuiBaseTest(unittest.TestCase):
# We should have timed out now
self.assertEqual(tab.get_mode().server_status.status, 0)
+ def clientauth_is_visible(self, tab):
+ """Test that the ClientAuth button is visible and that the clipboard contains its contents"""
+ self.assertTrue(
+ tab.get_mode().server_status.copy_client_auth_button.isVisible()
+ )
+ tab.get_mode().server_status.copy_client_auth_button.click()
+ clipboard = tab.common.gui.qtapp.clipboard()
+ self.assertEqual(clipboard.text(), "E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA")
+
+ def clientauth_is_not_visible(self, tab):
+ """Test that the ClientAuth button is not visible"""
+ self.assertFalse(
+ tab.get_mode().server_status.copy_client_auth_button.isVisible()
+ )
+
def hit_405(self, url, expected_resp, data = {}, methods = [] ):
"""Test various HTTP methods and the response"""
for method in methods:
diff --git a/desktop/tests/test_gui_chat.py b/desktop/tests/test_gui_chat.py
index 15ecaa44..246a4494 100644
--- a/desktop/tests/test_gui_chat.py
+++ b/desktop/tests/test_gui_chat.py
@@ -11,15 +11,7 @@ class TestChat(GuiBaseTest):
def view_chat(self, tab):
"""Test that we can view the chat room"""
url = f"http://127.0.0.1:{tab.app.port}/"
- if tab.settings.get("general", "public"):
- r = requests.get(url)
- else:
- r = requests.get(
- url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
+ r = requests.get(url)
QtTest.QTest.qWait(500, self.gui.qtapp)
self.assertTrue("Chat requires JavaScript" in r.text)
@@ -31,16 +23,7 @@ class TestChat(GuiBaseTest):
"""Test that we can change our username"""
url = f"http://127.0.0.1:{tab.app.port}/update-session-username"
data = {"username": "oniontest"}
- if tab.settings.get("general", "public"):
- r = requests.post(url, json=data)
- else:
- r = requests.post(
- url,
- json=data,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
+ r = requests.post(url, json=data)
QtTest.QTest.qWait(500, self.gui.qtapp)
jsonResponse = r.json()
@@ -53,7 +36,6 @@ class TestChat(GuiBaseTest):
self.server_status_indicator_says_starting(tab)
self.server_is_started(tab, startup_time=500)
self.web_server_is_running(tab)
- self.have_a_password(tab)
self.url_description_shown(tab)
self.have_copy_url_button(tab)
self.have_show_qr_code_button(tab)
diff --git a/desktop/tests/test_gui_receive.py b/desktop/tests/test_gui_receive.py
index b523b0fa..af04a914 100644
--- a/desktop/tests/test_gui_receive.py
+++ b/desktop/tests/test_gui_receive.py
@@ -23,28 +23,10 @@ class TestReceive(GuiBaseTest):
files = {"file[]": open(file_to_upload, "rb")}
url = f"http://127.0.0.1:{tab.app.port}/upload"
- if tab.settings.get("general", "public"):
+ requests.post(url, files=files)
+ if identical_files_at_once:
+ # Send a duplicate upload to test for collisions
requests.post(url, files=files)
- if identical_files_at_once:
- # Send a duplicate upload to test for collisions
- requests.post(url, files=files)
- else:
- requests.post(
- url,
- files=files,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().web.password
- ),
- )
- if identical_files_at_once:
- # Send a duplicate upload to test for collisions
- requests.post(
- url,
- files=files,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().web.password
- ),
- )
QtTest.QTest.qWait(1000, self.gui.qtapp)
@@ -74,16 +56,7 @@ class TestReceive(GuiBaseTest):
files = {"file[]": open(self.tmpfile_test, "rb")}
url = f"http://127.0.0.1:{tab.app.port}/upload"
- if tab.settings.get("general", "public"):
- r = requests.post(url, files=files)
- else:
- r = requests.post(
- url,
- files=files,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().web.password
- ),
- )
+ r = requests.post(url, files=files)
def accept_dialog():
window = tab.common.gui.qtapp.activeWindow()
@@ -100,16 +73,7 @@ class TestReceive(GuiBaseTest):
QtTest.QTest.qWait(2000, self.gui.qtapp)
url = f"http://127.0.0.1:{tab.app.port}/upload"
- if tab.settings.get("general", "public"):
- requests.post(url, data={"text": message})
- else:
- requests.post(
- url,
- data={"text": message},
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().web.password
- ),
- )
+ requests.post(url, data={"text": message})
QtTest.QTest.qWait(1000, self.gui.qtapp)
@@ -134,12 +98,6 @@ class TestReceive(GuiBaseTest):
self.assertTrue(exists)
- def try_without_auth_in_non_public_mode(self, tab):
- r = requests.post(f"http://127.0.0.1:{tab.app.port}/upload")
- self.assertEqual(r.status_code, 401)
- r = requests.get(f"http://127.0.0.1:{tab.app.port}/close")
- self.assertEqual(r.status_code, 401)
-
# 'Grouped' tests follow from here
def run_all_receive_mode_setup_tests(self, tab):
@@ -151,7 +109,6 @@ class TestReceive(GuiBaseTest):
self.server_status_indicator_says_starting(tab)
self.server_is_started(tab)
self.web_server_is_running(tab)
- self.have_a_password(tab)
self.url_description_shown(tab)
self.have_copy_url_button(tab)
self.have_show_qr_code_button(tab)
@@ -160,8 +117,6 @@ class TestReceive(GuiBaseTest):
def run_all_receive_mode_tests(self, tab):
"""Submit files and messages in receive mode and stop the share"""
self.run_all_receive_mode_setup_tests(tab)
- if not tab.settings.get("general", "public"):
- self.try_without_auth_in_non_public_mode(tab)
self.upload_file(tab, self.tmpfile_test, "test.txt")
self.history_widgets_present(tab)
self.counter_incremented(tab, 1)
diff --git a/desktop/tests/test_gui_share.py b/desktop/tests/test_gui_share.py
index 531e456f..b7a66a81 100644
--- a/desktop/tests/test_gui_share.py
+++ b/desktop/tests/test_gui_share.py
@@ -72,15 +72,7 @@ class TestShare(GuiBaseTest):
def download_share(self, tab):
"""Test that we can download the share"""
url = f"http://127.0.0.1:{tab.app.port}/download"
- if tab.settings.get("general", "public"):
- r = requests.get(url)
- else:
- r = requests.get(
- url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
+ r = requests.get(url)
tmp_file = tempfile.NamedTemporaryFile("wb", delete=False)
tmp_file.write(r.content)
@@ -99,40 +91,16 @@ class TestShare(GuiBaseTest):
"""
url = f"http://127.0.0.1:{tab.app.port}"
download_file_url = f"http://127.0.0.1:{tab.app.port}/test.txt"
- if tab.settings.get("general", "public"):
- r = requests.get(url)
- else:
- r = requests.get(
- url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
+ r = requests.get(url)
if tab.settings.get("share", "autostop_sharing"):
self.assertFalse('a href="/test.txt"' in r.text)
- if tab.settings.get("general", "public"):
- r = requests.get(download_file_url)
- else:
- r = requests.get(
- download_file_url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
+ r = requests.get(download_file_url)
self.assertEqual(r.status_code, 404)
self.download_share(tab)
else:
self.assertTrue('a href="test.txt"' in r.text)
- if tab.settings.get("general", "public"):
- r = requests.get(download_file_url)
- else:
- r = requests.get(
- download_file_url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
+ r = requests.get(download_file_url)
tmp_file = tempfile.NamedTemporaryFile("wb", delete=False)
tmp_file.write(r.content)
@@ -144,34 +112,6 @@ class TestShare(GuiBaseTest):
QtTest.QTest.qWait(500, self.gui.qtapp)
- def hit_401(self, tab):
- """Test that the server stops after too many 401s, or doesn't when in public mode"""
- # In non-public mode, get ready to accept the dialog
- if not tab.settings.get("general", "public"):
-
- def accept_dialog():
- window = tab.common.gui.qtapp.activeWindow()
- if window:
- window.close()
-
- QtCore.QTimer.singleShot(1000, accept_dialog)
-
- # Make 20 requests with guessed passwords
- url = f"http://127.0.0.1:{tab.app.port}/"
- for _ in range(20):
- password_guess = self.gui.common.build_password()
- requests.get(
- url, auth=requests.auth.HTTPBasicAuth("onionshare", password_guess)
- )
-
- # In public mode, we should still be running (no rate-limiting)
- if tab.settings.get("general", "public"):
- self.web_server_is_running(tab)
-
- # In non-public mode, we should be shut down (rate-limiting)
- else:
- self.web_server_is_stopped(tab)
-
def set_autostart_timer(self, tab, timer):
"""Test that the timer can be set"""
schedule = QtCore.QDateTime.currentDateTime().addSecs(timer)
@@ -241,7 +181,6 @@ class TestShare(GuiBaseTest):
self.mode_settings_widget_is_hidden(tab)
self.server_is_started(tab, startup_time)
self.web_server_is_running(tab)
- self.have_a_password(tab)
self.url_description_shown(tab)
self.have_copy_url_button(tab)
self.have_show_qr_code_button(tab)
@@ -490,24 +429,6 @@ class TestShare(GuiBaseTest):
self.close_all_tabs()
- def test_persistent_password(self):
- """
- Test a large download
- """
- tab = self.new_share_tab()
- tab.get_mode().mode_settings_widget.persistent_checkbox.click()
-
- self.run_all_common_setup_tests()
- self.run_all_share_mode_setup_tests(tab)
- self.run_all_share_mode_started_tests(tab)
- password = tab.get_mode().server_status.web.password
- self.run_all_share_mode_download_tests(tab)
- self.run_all_share_mode_started_tests(tab)
- self.assertEqual(tab.get_mode().server_status.web.password, password)
- self.run_all_share_mode_download_tests(tab)
-
- self.close_all_tabs()
-
def test_autostop_timer(self):
"""
Test the autostop timer
@@ -570,45 +491,33 @@ class TestShare(GuiBaseTest):
self.close_all_tabs()
- def test_401_triggers_ratelimit(self):
+ def test_client_auth(self):
"""
- Rate limit should be triggered
+ Test the ClientAuth is received from the backend,
+ that the widget is visible in the UI and that the
+ clipboard contains the ClientAuth string
"""
tab = self.new_share_tab()
-
- def accept_dialog():
- window = tab.common.gui.qtapp.activeWindow()
- if window:
- window.close()
-
- tab.get_mode().autostop_sharing_checkbox.click()
+ tab.get_mode().mode_settings_widget.toggle_advanced_button.click()
self.run_all_common_setup_tests()
- self.run_all_share_mode_tests(tab)
- self.hit_401(tab)
+ self.run_all_share_mode_setup_tests(tab)
+ self.run_all_share_mode_started_tests(tab)
+ self.clientauth_is_visible(tab)
self.close_all_tabs()
- def test_401_public_skips_ratelimit(self):
- """
- Public mode should skip the rate limit
- """
+ # Now try in public mode
tab = self.new_share_tab()
-
- def accept_dialog():
- window = tab.common.gui.qtapp.activeWindow()
- if window:
- window.close()
-
- tab.get_mode().autostop_sharing_checkbox.click()
tab.get_mode().mode_settings_widget.public_checkbox.click()
-
self.run_all_common_setup_tests()
- self.run_all_share_mode_tests(tab)
- self.hit_401(tab)
+ self.run_all_share_mode_setup_tests(tab)
+ self.run_all_share_mode_started_tests(tab)
+ self.clientauth_is_not_visible(tab)
self.close_all_tabs()
+
def test_405_page_returned_for_invalid_methods(self):
"""
Our custom 405 page should return for invalid methods
@@ -621,6 +530,7 @@ class TestShare(GuiBaseTest):
self.run_all_common_setup_tests()
self.run_all_share_mode_setup_tests(tab)
self.run_all_share_mode_started_tests(tab)
+
url = f"http://127.0.0.1:{tab.app.port}/"
self.hit_405(url, expected_resp="OnionShare: 405 Method Not Allowed", data = {'foo':'bar'}, methods = ["put", "post", "delete", "options"])
self.history_widgets_present(tab)
diff --git a/desktop/tests/test_gui_website.py b/desktop/tests/test_gui_website.py
index f526756a..d7a75ed6 100644
--- a/desktop/tests/test_gui_website.py
+++ b/desktop/tests/test_gui_website.py
@@ -11,32 +11,14 @@ class TestWebsite(GuiBaseTest):
def view_website(self, tab):
"""Test that we can download the share"""
url = f"http://127.0.0.1:{tab.app.port}/"
- if tab.settings.get("general", "public"):
- r = requests.get(url)
- else:
- r = requests.get(
- url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
-
+ r = requests.get(url)
QtTest.QTest.qWait(500, self.gui.qtapp)
self.assertTrue("This is a test website hosted by OnionShare" in r.text)
def check_csp_header(self, tab):
"""Test that the CSP header is present when enabled or vice versa"""
url = f"http://127.0.0.1:{tab.app.port}/"
- if tab.settings.get("general", "public"):
- r = requests.get(url)
- else:
- r = requests.get(
- url,
- auth=requests.auth.HTTPBasicAuth(
- "onionshare", tab.get_mode().server_status.web.password
- ),
- )
-
+ r = requests.get(url)
QtTest.QTest.qWait(500, self.gui.qtapp)
if tab.settings.get("website", "disable_csp"):
self.assertFalse("Content-Security-Policy" in r.headers)
@@ -63,7 +45,6 @@ class TestWebsite(GuiBaseTest):
self.add_remove_buttons_hidden(tab)
self.server_is_started(tab, startup_time)
self.web_server_is_running(tab)
- self.have_a_password(tab)
self.url_description_shown(tab)
self.have_copy_url_button(tab)
self.have_show_qr_code_button(tab)
diff --git a/docs/source/advanced.rst b/docs/source/advanced.rst
index 5f3e6cd7..96f7141b 100644
--- a/docs/source/advanced.rst
+++ b/docs/source/advanced.rst
@@ -16,23 +16,23 @@ When a tab is saved a purple pin icon appears to the left of its server status.
.. image:: _static/screenshots/advanced-save-tabs.png
When you quit OnionShare and then open it again, your saved tabs will start opened.
-You'll have to manually start each service, but when you do they will start with the same OnionShare address and password.
+You'll have to manually start each service, but when you do they will start with the same OnionShare address and private key.
If you save a tab, a copy of that tab's onion service secret key will be stored on your computer with your OnionShare settings.
-.. _turn_off_passwords:
+.. _turn_off_private_key:
-Turn Off Passwords
-------------------
+Turn Off Private Key
+--------------------
-By default, all OnionShare services are protected with the username ``onionshare`` and a randomly-generated password.
-If someone takes 20 wrong guesses at the password, your onion service is automatically stopped to prevent a brute force attack against the OnionShare service.
+By default, all OnionShare services are protected with a private key, which Tor calls Client Authentication.
+
+When browsing to an OnionShare service in Tor Browser, Tor Browser will prompt for the private key to be entered.
Sometimes you might want your OnionShare service to be accessible to the public, like if you want to set up an OnionShare receive service so the public can securely and anonymously send you files.
-In this case, it's better to disable the password altogether.
-If you don't do this, someone can force your server to stop just by making 20 wrong guesses of your password, even if they know the correct password.
+In this case, it's better to disable the private key altogether.
-To turn off the password for any tab, just check the "Don't use a password" box before starting the server. Then the server will be public and won't have a password.
+To turn off the private key for any tab, check the "This is a public OnionShare service (disables private key)" box before starting the server. Then the server will be public and won't need a private key to view in Tor Browser.
.. _custom_titles:
@@ -106,11 +106,14 @@ You can browse the command-line documentation by running ``onionshare --help``::
│ https://onionshare.org/ │
╰───────────────────────────────────────────╯
- usage: onionshare-cli [-h] [--receive] [--website] [--chat] [--local-only] [--connect-timeout SECONDS] [--config FILENAME]
- [--persistent FILENAME] [--title TITLE] [--public] [--auto-start-timer SECONDS]
- [--auto-stop-timer SECONDS] [--legacy] [--client-auth] [--no-autostop-sharing] [--data-dir data_dir]
- [--webhook-url webhook_url] [--disable-text] [--disable-files] [--disable_csp] [-v]
- [filename ...]
+ usage: onionshare-cli [-h] [--receive] [--website] [--chat] [--local-only]
+ [--connect-timeout SECONDS] [--config FILENAME]
+ [--persistent FILENAME] [--title TITLE] [--public]
+ [--auto-start-timer SECONDS] [--auto-stop-timer SECONDS]
+ [--no-autostop-sharing] [--data-dir data_dir]
+ [--webhook-url webhook_url] [--disable-text]
+ [--disable-files] [--disable_csp] [-v]
+ [filename [filename ...]]
positional arguments:
filename List of files or folders to share
@@ -122,44 +125,29 @@ You can browse the command-line documentation by running ``onionshare --help``::
--chat Start chat server
--local-only Don't use Tor (only for development)
--connect-timeout SECONDS
- Give up connecting to Tor after a given amount of seconds (default: 120)
+ Give up connecting to Tor after a given amount of
+ seconds (default: 120)
--config FILENAME Filename of custom global settings
--persistent FILENAME Filename of persistent session
--title TITLE Set a title
- --public Don't use a password
+ --public Don't use a private key
--auto-start-timer SECONDS
- Start onion service at scheduled time (N seconds from now)
+ Start onion service at scheduled time (N seconds
+ from now)
--auto-stop-timer SECONDS
- Stop onion service at schedule time (N seconds from now)
- --legacy Use legacy address (v2 onion service, not recommended)
- --client-auth Use client authorization (requires --legacy)
- --no-autostop-sharing Share files: Continue sharing after files have been sent (default is to stop sharing)
- --data-dir data_dir Receive files: Save files received to this directory
+ Stop onion service at schedule time (N seconds
+ from now)
+ --no-autostop-sharing Share files: Continue sharing after files have
+ been sent (default is to stop sharing)
+ --data-dir data_dir Receive files: Save files received to this
+ directory
--webhook-url webhook_url
- Receive files: URL to receive webhook notifications
+ Receive files: URL to receive webhook
+ notifications
--disable-text Receive files: Disable receiving text messages
--disable-files Receive files: Disable receiving files
- --disable_csp Publish website: Disable Content Security Policy header (allows your website to use third-party
+ --disable_csp Publish website: Disable Content Security Policy
+ header (allows your website to use third-party
resources)
- -v, --verbose Log OnionShare errors to stdout, and web errors to disk
-
-Legacy Addresses
-----------------
-
-OnionShare uses v3 Tor onion services by default.
-These are modern onion addresses that have 56 characters, for example::
-
- uf3wmtpbstcupvrrsetrtct7qcmnqvdcsxqzxthxbx2y7tidatxye7id.onion
-
-OnionShare still has support for v2 onion addresses, the old type of onion addresses that have 16 characters, for example::
-
- lc7j6u55vhrh45eq.onion
-
-OnionShare calls v2 onion addresses "legacy addresses", and they are not recommended, as v3 onion addresses are more secure.
-
-To use legacy addresses, before starting a server click "Show advanced settings" from its tab and check the "Use a legacy address (v2 onion service, not recommended)" box.
-In legacy mode you can optionally turn on Tor client authentication.
-Once you start a server in legacy mode you cannot remove legacy mode in that tab.
-Instead you must start a separate service in a separate tab.
-
-Tor Project plans to `completely deprecate v2 onion services `_ on October 15, 2021, and legacy onion services will be removed from OnionShare before then.
+ -v, --verbose Log OnionShare errors to stdout, and web errors to
+ disk
diff --git a/docs/source/develop.rst b/docs/source/develop.rst
index fc6f0c92..5b08c921 100644
--- a/docs/source/develop.rst
+++ b/docs/source/develop.rst
@@ -63,57 +63,54 @@ This prints a lot of helpful messages to the terminal, such as when certain obje
│ 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
+ [Aug 28 2021 10:32:39] Settings.__init__
+ [Aug 28 2021 10:32:39] Settings.load
+ [Aug 28 2021 10:32:39] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=wordlist.txt
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=wordlist.txt, path=/home/user/git/onionshare/cli/onionshare_cli/resources/wordlist.txt
+ [Aug 28 2021 10:32:39] ModeSettings.load: creating /home/user/.config/onionshare/persistent/dreamy-stiffen-moving.json
+ [Aug 28 2021 10:32:39] ModeSettings.set: updating dreamy-stiffen-moving: general.title = None
+ [Aug 28 2021 10:32:39] ModeSettings.set: updating dreamy-stiffen-moving: general.public = False
+ [Aug 28 2021 10:32:39] ModeSettings.set: updating dreamy-stiffen-moving: general.autostart_timer = 0
+ [Aug 28 2021 10:32:39] ModeSettings.set: updating dreamy-stiffen-moving: general.autostop_timer = 0
+ [Aug 28 2021 10:32:39] ModeSettings.set: updating dreamy-stiffen-moving: share.autostop_sharing = True
+ [Aug 28 2021 10:32:39] Web.__init__: is_gui=False, mode=share
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=static
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=static, path=/home/user/git/onionshare/cli/onionshare_cli/resources/static
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=templates
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=templates, path=/home/user/git/onionshare/cli/onionshare_cli/resources/templates
+ [Aug 28 2021 10:32:39] Web.generate_static_url_path: new static_url_path is /static_3tix3w3s5feuzlhii3zwqb2gpq
+ [Aug 28 2021 10:32:39] ShareModeWeb.init
+ [Aug 28 2021 10:32:39] Onion.__init__
+ [Aug 28 2021 10:32:39] Onion.connect
+ [Aug 28 2021 10:32:39] Settings.__init__
+ [Aug 28 2021 10:32:39] Settings.load
+ [Aug 28 2021 10:32:39] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
+ [Aug 28 2021 10:32:39] Onion.connect: tor_data_directory_name=/home/user/.config/onionshare/tmp/tmppb7kvf4k
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=torrc_template
+ [Aug 28 2021 10:32:39] Common.get_resource_path: filename=torrc_template, path=/home/user/git/onionshare/cli/onionshare_cli/resources/torrc_template
Connecting to the Tor network: 100% - Done
- [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==
+ [Aug 28 2021 10:32:56] Onion.connect: Connected to tor 0.4.6.7
+ [Aug 28 2021 10:32:56] Settings.load
+ [Aug 28 2021 10:32:56] Settings.load: Trying to load /home/user/.config/onionshare/onionshare.json
+ [Aug 28 2021 10:32:56] OnionShare.__init__
+ [Aug 28 2021 10:32:56] OnionShare.start_onion_service
+ [Aug 28 2021 10:32:56] Onion.start_onion_service: port=17609
+ [Aug 28 2021 10:32:56] Onion.start_onion_service: key_type=NEW, key_content=ED25519-V3
+ [Aug 28 2021 10:33:03] ModeSettings.set: updating dreamy-stiffen-moving: general.service_id = sobp4rklarkz34mcog3pqtkb4t5bvyxv3dazvsqmfyhw4imqj446ffqd
+ [Aug 28 2021 10:33:03] ModeSettings.set: updating dreamy-stiffen-moving: onion.private_key = sFiznwaPWJdKmFXumdDLkJGdUUdjI/0TWo+l/QEZiE/XoVogjK9INNoz2Tf8vmpe66ssa85En+5w6F2kKyTstA==
+ [Aug 28 2021 10:33:03] ModeSettings.set: updating dreamy-stiffen-moving: onion.client_auth_priv_key = YL6YIEMZS6J537Y5ZKEA2Z6IIQEWFK2CMGTWK5G3DGGUREHJSJNQ
+ [Aug 28 2021 10:33:03] ModeSettings.set: updating dreamy-stiffen-moving: onion.client_auth_pub_key = 5HUL6RCPQ5VEFDOHCSRAHPFIB74EHVFJO6JJHDP76EDWVRJE2RJQ
Compressing files.
- [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)
+ [Aug 28 2021 10:33:03] ShareModeWeb.init
+ [Aug 28 2021 10:33:03] ShareModeWeb.set_file_info_custom
+ [Aug 28 2021 10:33:03] ShareModeWeb.build_zipfile_list
+ [Aug 28 2021 10:33:03] Web.start: port=17609
+ * Running on http://127.0.0.1:17609/ (Press CTRL+C to quit)
- Give this address to the recipient:
- http://onionshare:tipping-colonize@omxjamkys6diqxov7lxru2upromdprxjuq3czdhen6hrshzd4sll2iyd.onion
+ Give this address and private key to the recipient:
+ http://sobp4rklarkz34mcog3pqtkb4t5bvyxv3dazvsqmfyhw4imqj446ffqd.onion
+ Private key: YL6YIEMZS6J537Y5ZKEA2Z6IIQEWFK2CMGTWK5G3DGGUREHJSJNQ
Press Ctrl+C to stop the server
@@ -153,18 +150,19 @@ You can do this with the ``--local-only`` flag. For example::
│ https://onionshare.org/ │
╰───────────────────────────────────────────╯
- * Running on http://127.0.0.1:17617/ (Press CTRL+C to quit)
+ * Running on http://127.0.0.1:17621/ (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:ended-blah@127.0.0.1:17617
+ Give this address and private key to the sender:
+ http://127.0.0.1:17621
+ Private key: E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA
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.
+In this case, you load the URL ``http://127.0.0.1:17621`` in a normal web-browser like Firefox, instead of using the Tor Browser. The Private key is not actually needed in local-only mode, so you can ignore it.
Contributing Translations
-------------------------
@@ -186,4 +184,4 @@ Status of Translations
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
-.. image:: https://hosted.weblate.org/widgets/onionshare/-/translations/multi-auto.svg
\ No newline at end of file
+.. image:: https://hosted.weblate.org/widgets/onionshare/-/translations/multi-auto.svg
diff --git a/docs/source/features.rst b/docs/source/features.rst
index 7c3368f9..0c72809b 100644
--- a/docs/source/features.rst
+++ b/docs/source/features.rst
@@ -5,14 +5,20 @@ How OnionShare Works
Web servers are started locally on your computer and made accessible to other people as `Tor `_ `onion services `_.
-By default, OnionShare web addresses are protected with a random password. A typical OnionShare address might look something like this::
+By default, OnionShare web addresses are protected with a private key (Client Authentication). A typical OnionShare address might look something like this::
- http://onionshare:constrict-purity@by4im3ir5nsvygprmjq74xwplrkdgt44qmeapxawwikxacmr3dqzyjad.onion
+ http://by4im3ir5nsvygprmjq74xwplrkdgt44qmeapxawwikxacmr3dqzyjad.onion
-You're responsible for securely sharing that URL using a communication channel of your choice like in an encrypted chat message, or using something less secure like unencrypted e-mail, depending on your `threat model `_.
+And the Private key might look something like this::
+
+ EM6UK3LFM7PFLX63DVZIUQQPW5JV5KO6PB3TP3YNA4OLB3OH7AQA
+
+You're responsible for securely sharing that URL, and the private key, using a communication channel of your choice like in an encrypted chat message, or using something less secure like unencrypted e-mail, depending on your `threat model `_.
The people you send the URL to then copy and paste it into their `Tor Browser `_ to access the OnionShare service.
+Tor Browser will then prompt for the private key in an authentication dialog, which the person can also then copy and paste in.
+
If you run OnionShare on your laptop to send someone files, and then suspend it before the files are sent, the service will not be available until your laptop is unsuspended and on the Internet again. OnionShare works best when working with people in real-time.
Because your own computer is the web server, *no third party can access anything that happens in OnionShare*, not even the developers of OnionShare. It's completely private. And because OnionShare is based on Tor onion services too, it also protects your anonymity. See the :doc:`security design ` for more info.
@@ -39,7 +45,7 @@ When you're ready to share, click the "Start sharing" button. You can always cli
Now that you have a OnionShare, copy the address and send it to the person you want to receive the files. If the files need to stay secure, or the person is otherwise exposed to danger, use an encrypted messaging app.
-That person then must load the address in Tor Browser. After logging in with the random password included in the web address, the files can be downloaded directly from your computer by clicking the "Download Files" link in the corner.
+That person then must load the address in Tor Browser. After logging in with the private key, the files can be downloaded directly from your computer by clicking the "Download Files" link in the corner.
.. image:: _static/screenshots/share-torbrowser.png
@@ -88,7 +94,7 @@ Tips for running a receive service
If you want to host your own anonymous dropbox using OnionShare, it's recommended you do so on a separate, dedicated computer always powered on and connected to the Internet, and not on the one you use on a regular basis.
-If you intend to put the OnionShare address on your website or social media profiles, save the tab (see :ref:`save_tabs`) and run it as a public service (see :ref:`turn_off_passwords`). It's also a good idea to give it a custom title (see :ref:`custom_titles`).
+If you intend to put the OnionShare address on your website or social media profiles, save the tab (see :ref:`save_tabs`) and run it as a public service (see :ref:`turn_off_private_key`). It's also a good idea to give it a custom title (see :ref:`custom_titles`).
Host a Website
--------------
@@ -118,7 +124,7 @@ Tips for running a website service
If you want to host a long-term website using OnionShare (meaning not something to quickly show someone something), it's recommended you do it on a separate, dedicated computer always powered on and connected to the Internet, and not on the one you use on a regular basis.
Save the tab (see :ref:`save_tabs`) so you can resume the website with the same address if you close OnionShare and re-open it later.
-If your website is intended for the public, you should run it as a public service (see :ref:`turn_off_passwords`).
+If your website is intended for the public, you should run it as a public service (see :ref:`turn_off_private_key`).
Chat Anonymously
----------------
diff --git a/docs/source/security.rst b/docs/source/security.rst
index b56c7ff8..93ed3bce 100644
--- a/docs/source/security.rst
+++ b/docs/source/security.rst
@@ -14,11 +14,11 @@ What OnionShare protects against
**Anonymity of OnionShare users are protected by Tor.** OnionShare and Tor Browser protect the anonymity of the users. As long as the OnionShare user anonymously communicates the OnionShare address with the Tor Browser users, the Tor Browser users and eavesdroppers can't learn the identity of the OnionShare user.
-**If an attacker learns about the onion service, it still can't access anything.** Prior attacks against the Tor network to enumerate onion services allowed the attacker to discover private .onion addresses. If an attack discovers a private OnionShare address, a password will be prevent them from accessing it (unless the OnionShare user chooses to turn it off and make it public). The password is generated by choosing two random words from a list of 6800 words, making 6800², or about 46 million possible passwords. Only 20 wrong guesses can be made before OnionShare stops the server, preventing brute force attacks against the password.
+**If an attacker learns about the onion service, it still can't access anything.** Prior attacks against the Tor network to enumerate onion services allowed the attacker to discover private .onion addresses. If an attack discovers a private OnionShare address, but not the private key used for Client Authentication, they will be prevented from accessing it (unless the OnionShare user chooses to turn off the private key and make it public - see :ref:`turn_off_private_key`).
What OnionShare doesn't protect against
---------------------------------------
-**Communicating the OnionShare address might not be secure.** Communicating the OnionShare address to people is the responsibility of the OnionShare user. If sent insecurely (such as through an email message monitored by an attacker), an eavesdropper can tell that OnionShare is being used. If the eavesdropper loads the address in Tor Browser while the service is still up, they can access it. To avoid this, the address must be communicateed securely, via encrypted text message (probably with disappearing messages enabled), encrypted email, or in person. This isn't necessary when using OnionShare for something that isn't secret.
+**Communicating the OnionShare address and private key might not be secure.** Communicating the OnionShare address to people is the responsibility of the OnionShare user. If sent insecurely (such as through an email message monitored by an attacker), an eavesdropper can tell that OnionShare is being used. If the eavesdropper loads the address in Tor Browser while the service is still up, they can access it. To avoid this, the address must be communicateed securely, via encrypted text message (probably with disappearing messages enabled), encrypted email, or in person. This isn't necessary when using OnionShare for something that isn't secret.
-**Communicating the OnionShare address might not be anonymous.** Extra precautions must be taken to ensure the OnionShare address is communicated anonymously. A new email or chat account, only accessed over Tor, can be used to share the address. This isn't necessary unless anonymity is a goal.
+**Communicating the OnionShare address and private key might not be anonymous.** Extra precautions must be taken to ensure the OnionShare address is communicated anonymously. A new email or chat account, only accessed over Tor, can be used to share the address. This isn't necessary unless anonymity is a goal.
diff --git a/flatpak/org.onionshare.OnionShare.yaml b/flatpak/org.onionshare.OnionShare.yaml
index f09c80c5..f2ca9dcf 100644
--- a/flatpak/org.onionshare.OnionShare.yaml
+++ b/flatpak/org.onionshare.OnionShare.yaml
@@ -172,33 +172,6 @@ modules:
- type: file
url: https://files.pythonhosted.org/packages/10/27/a33329150147594eff0ea4c33c2036c0eadd933141055be0ff911f7f8d04/Werkzeug-1.0.1.tar.gz
sha256: 6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c
- - name: python3-flask-httpauth
- buildsystem: simple
- build-commands:
- - pip3 install --exists-action=i --no-index --find-links="file://${PWD}" --prefix=${FLATPAK_DEST}
- "flask-httpauth"
- sources:
- - type: file
- url: https://files.pythonhosted.org/packages/4f/e7/65300e6b32e69768ded990494809106f87da1d436418d5f1367ed3966fd7/Jinja2-2.11.3.tar.gz
- sha256: a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6
- - type: file
- url: https://files.pythonhosted.org/packages/27/6f/be940c8b1f1d69daceeb0032fee6c34d7bd70e3e649ccac0951500b4720e/click-7.1.2.tar.gz
- sha256: d2b5255c7c6349bc1bd1e59e08cd12acbbd63ce649f2588755783aa94dfb6b1a
- - type: file
- url: https://files.pythonhosted.org/packages/2d/6a/e458a74c909899d136aa76cb4d707f0f600fba6ca0d603de681e8fcac91f/Flask-HTTPAuth-4.2.0.tar.gz
- sha256: 8c7e49e53ce7dc14e66fe39b9334e4b7ceb8d0b99a6ba1c3562bb528ef9da84a
- - type: file
- url: https://files.pythonhosted.org/packages/b9/2e/64db92e53b86efccfaea71321f597fa2e1b2bd3853d8ce658568f7a13094/MarkupSafe-1.1.1.tar.gz
- sha256: 29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b
- - type: file
- url: https://files.pythonhosted.org/packages/68/1a/f27de07a8a304ad5fa817bbe383d1238ac4396da447fa11ed937039fa04b/itsdangerous-1.1.0.tar.gz
- sha256: 321b033d07f2a4136d3ec762eac9f16a10ccd60f53c0c91af90217ace7ba1f19
- - type: file
- url: https://files.pythonhosted.org/packages/4e/0b/cb02268c90e67545a0e3a37ea1ca3d45de3aca43ceb7dbf1712fb5127d5d/Flask-1.1.2.tar.gz
- sha256: 4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060
- - type: file
- url: https://files.pythonhosted.org/packages/10/27/a33329150147594eff0ea4c33c2036c0eadd933141055be0ff911f7f8d04/Werkzeug-1.0.1.tar.gz
- sha256: 6c80b1e5ad3665290ea39320b91e1be1e0d5f60652b964a3070216de83d2e47c
- name: python3-flask-socketio
buildsystem: simple
build-commands:
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index e1c79e7e..fc1795e8 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -117,7 +117,6 @@ parts:
- poetry
- click
- flask
- - flask-httpauth
- flask-socketio == 5.0.1
- pycryptodome
- psutil