Merge branch 'develop' into censorship
2
.github/workflows/codeql-analysis.yml
vendored
@ -47,7 +47,7 @@ jobs:
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
@ -110,7 +110,7 @@
|
||||
## 1.3
|
||||
|
||||
* Major UI redesign, introducing many UX improvements
|
||||
* Client-side web interfact redesigned
|
||||
* Client-side web interface redesigned
|
||||
* New feature: Support for meek_lite pluggable transports (Amazon and Azure) - not yet ready for Windows or macOS, sorry
|
||||
* New feature: Support for custom obfs4 and meek_lite bridges (again, meek_lite not available on Windows/macOS yet)
|
||||
* New feature: Ability to cancel share before it starts
|
||||
|
8
LICENSE
@ -6,7 +6,7 @@ Copyright (C) 2014-2021 Micah Lee, et al. <micah@micahflee.com>
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@ -650,7 +650,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
@ -669,11 +669,11 @@ might be different; for a GUI interface, you would use an "about box".
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
|
@ -163,7 +163,7 @@ This will create `desktop/macOS/OnionShare.dmg`, signed and notarized.
|
||||
|
||||
## Source package
|
||||
|
||||
To make a source package, run `./build-source.sh $TAG`, where `$TAG` is the the name of the signed git tag, e.g. `v2.1`.
|
||||
To make a source package, run `./build-source.sh $TAG`, where `$TAG` is the name of the signed git tag, e.g. `v2.1`.
|
||||
|
||||
This will create `dist/onionshare-$VERSION.tar.gz`.
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
# Usage
|
||||
display_usage() {
|
||||
echo "Usage: $0 [tag]"
|
||||
echo "Usage: $0 [tag]"
|
||||
}
|
||||
|
||||
if [ $# -lt 1 ]
|
||||
@ -46,13 +46,13 @@ then
|
||||
echo "Tag does not verify"
|
||||
exit 1
|
||||
fi
|
||||
cat ../verify.txt |grep "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73"
|
||||
cat ../verify.txt | grep "using RSA key 927F419D7EC82C2F149C1BD1403C2657CD994F73"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Tag signed with wrong key"
|
||||
exit 1
|
||||
fi
|
||||
cat ../verify.txt |grep "^gpg: Good signature from"
|
||||
cat ../verify.txt | grep "^gpg: Good signature from"
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Tag verification missing 'Good signature from'"
|
||||
|
@ -59,28 +59,13 @@ pip install --user onionshare-cli
|
||||
|
||||
#### Set path
|
||||
|
||||
When you install programs with pip and use the --user flag, it installs them into ~/.local/bin, which isn't in your path by default. To add ~/.local/bin to your path automatically for the next time you reopen the terminal or source your shell configuration file, do the following:
|
||||
When you install programs with pip and use the `--user` flag, it installs them into *~/.local/bin*, which isn't in your path by default. To add *~/.local/bin* to your path automatically for the next time you reopen the terminal or source your shell configuration file, do the following:
|
||||
|
||||
First, discover what shell you are using:
|
||||
Apply the path to your shell file:
|
||||
|
||||
```sh
|
||||
echo $SHELL
|
||||
```
|
||||
|
||||
Then apply the path to your shell file:
|
||||
|
||||
bash:
|
||||
|
||||
```sh
|
||||
echo "PATH=\$PATH:~/.local/bin" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
zsh:
|
||||
|
||||
```sh
|
||||
echo "PATH=\$PATH:~/.local/bin" >> ~/.zshrc
|
||||
source ~/.zshrc
|
||||
printf "PATH=\$PATH:~/.local/bin\n" >> ~/.${SHELL##*/}rc
|
||||
. ~/.${SHELL##*/}rc
|
||||
```
|
||||
|
||||
#### Usage
|
||||
|
@ -150,7 +150,13 @@ def main(cwd=None):
|
||||
action="store_true",
|
||||
dest="disable_csp",
|
||||
default=False,
|
||||
help="Publish website: Disable Content Security Policy header (allows your website to use third-party resources)",
|
||||
help="Publish website: Disable the default Content Security Policy header (allows your website to use third-party resources)",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--custom_csp",
|
||||
metavar="custom_csp",
|
||||
default=None,
|
||||
help="Publish website: Set a custom Content Security Policy header",
|
||||
)
|
||||
# Other
|
||||
parser.add_argument(
|
||||
@ -189,6 +195,7 @@ def main(cwd=None):
|
||||
disable_text = args.disable_text
|
||||
disable_files = args.disable_files
|
||||
disable_csp = bool(args.disable_csp)
|
||||
custom_csp = args.custom_csp
|
||||
verbose = bool(args.verbose)
|
||||
|
||||
# Verbose mode?
|
||||
@ -234,7 +241,15 @@ def main(cwd=None):
|
||||
mode_settings.set("receive", "disable_text", disable_text)
|
||||
mode_settings.set("receive", "disable_files", disable_files)
|
||||
if mode == "website":
|
||||
mode_settings.set("website", "disable_csp", disable_csp)
|
||||
if disable_csp and custom_csp:
|
||||
print("You cannot disable the CSP and set a custom one. Either set --disable-csp or --custom-csp but not both.")
|
||||
sys.exit()
|
||||
if disable_csp:
|
||||
mode_settings.set("website", "disable_csp", True)
|
||||
mode_settings.set("website", "custom_csp", None)
|
||||
if custom_csp:
|
||||
mode_settings.set("website", "custom_csp", custom_csp)
|
||||
mode_settings.set("website", "disable_csp", False)
|
||||
else:
|
||||
# See what the persistent mode was
|
||||
mode = mode_settings.get("persistent", "mode")
|
||||
|
@ -25,21 +25,46 @@ from .meek import MeekNotRunning
|
||||
class CensorshipCircumvention(object):
|
||||
"""
|
||||
Connect to the Tor Moat APIs to retrieve censorship
|
||||
circumvention recommendations, over the Meek client.
|
||||
circumvention recommendations or the latest bridges.
|
||||
|
||||
We support reaching this API over Tor, or Meek
|
||||
(domain fronting) if Tor is not connected.
|
||||
"""
|
||||
|
||||
def __init__(self, common, meek, domain_fronting=True):
|
||||
def __init__(self, common, meek=None, onion=None):
|
||||
"""
|
||||
Set up the CensorshipCircumvention object to hold
|
||||
common and meek objects.
|
||||
"""
|
||||
self.common = common
|
||||
self.meek = meek
|
||||
self.common.log("CensorshipCircumvention", "__init__")
|
||||
|
||||
# Bail out if we requested domain fronting but we can't use meek
|
||||
if domain_fronting and not self.meek.meek_proxies:
|
||||
raise MeekNotRunning()
|
||||
self.api_proxies = {}
|
||||
if meek:
|
||||
self.meek = meek
|
||||
if not self.meek.meek_proxies:
|
||||
raise MeekNotRunning()
|
||||
else:
|
||||
self.common.log(
|
||||
"CensorshipCircumvention",
|
||||
"__init__",
|
||||
"Using Meek with CensorShipCircumvention API",
|
||||
)
|
||||
self.api_proxies = self.meek.meek_proxies
|
||||
if onion:
|
||||
self.onion = onion
|
||||
if not self.onion.is_authenticated:
|
||||
return False
|
||||
else:
|
||||
self.common.log(
|
||||
"CensorshipCircumvention",
|
||||
"__init__",
|
||||
"Using Tor with CensorShipCircumvention API",
|
||||
)
|
||||
(socks_address, socks_port) = self.onion.get_tor_socks_port()
|
||||
self.api_proxies = {
|
||||
"http": f"socks5h://{socks_address}:{socks_port}",
|
||||
"https": f"socks5h://{socks_address}:{socks_port}",
|
||||
}
|
||||
|
||||
def request_map(self, country=False):
|
||||
"""
|
||||
@ -52,6 +77,8 @@ class CensorshipCircumvention(object):
|
||||
Note that this API endpoint doesn't return actual bridges,
|
||||
it just returns the recommended bridge type countries.
|
||||
"""
|
||||
if not self.api_proxies:
|
||||
return False
|
||||
endpoint = "https://bridges.torproject.org/moat/circumvention/map"
|
||||
data = {}
|
||||
if country:
|
||||
@ -61,7 +88,7 @@ class CensorshipCircumvention(object):
|
||||
endpoint,
|
||||
json=data,
|
||||
headers={"Content-Type": "application/vnd.api+json"},
|
||||
proxies=self.meek.meek_proxies,
|
||||
proxies=self.api_proxies,
|
||||
)
|
||||
if r.status_code != 200:
|
||||
self.common.log(
|
||||
@ -95,6 +122,8 @@ class CensorshipCircumvention(object):
|
||||
Optionally, a list of transports can be specified in order to
|
||||
return recommended settings for just that transport type.
|
||||
"""
|
||||
if not self.api_proxies:
|
||||
return False
|
||||
endpoint = "https://bridges.torproject.org/moat/circumvention/settings"
|
||||
data = {}
|
||||
if country:
|
||||
@ -105,7 +134,7 @@ class CensorshipCircumvention(object):
|
||||
endpoint,
|
||||
json=data,
|
||||
headers={"Content-Type": "application/vnd.api+json"},
|
||||
proxies=self.meek.meek_proxies,
|
||||
proxies=self.api_proxies,
|
||||
)
|
||||
if r.status_code != 200:
|
||||
self.common.log(
|
||||
@ -142,11 +171,13 @@ class CensorshipCircumvention(object):
|
||||
"""
|
||||
Retrieves the list of built-in bridges from the Tor Project.
|
||||
"""
|
||||
if not self.api_proxies:
|
||||
return False
|
||||
endpoint = "https://bridges.torproject.org/moat/circumvention/builtin"
|
||||
r = requests.post(
|
||||
endpoint,
|
||||
headers={"Content-Type": "application/vnd.api+json"},
|
||||
proxies=self.meek.meek_proxies,
|
||||
proxies=self.api_proxies,
|
||||
)
|
||||
if r.status_code != 200:
|
||||
self.common.log(
|
||||
|
@ -55,7 +55,11 @@ class ModeSettings:
|
||||
"disable_text": False,
|
||||
"disable_files": False,
|
||||
},
|
||||
"website": {"disable_csp": False, "filenames": []},
|
||||
"website": {
|
||||
"disable_csp": False,
|
||||
"custom_csp": None,
|
||||
"filenames": []
|
||||
},
|
||||
"chat": {"room": "default"},
|
||||
}
|
||||
self._settings = {}
|
||||
|
@ -18,17 +18,19 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
"""
|
||||
|
||||
from .censorship import CensorshipCircumvention
|
||||
from .meek import Meek
|
||||
from stem.control import Controller
|
||||
from stem import ProtocolError, SocketClosed
|
||||
from stem.connection import MissingPassword, UnreadableCookieFile, AuthenticationFailure
|
||||
import base64
|
||||
import nacl.public
|
||||
import os
|
||||
import tempfile
|
||||
import subprocess
|
||||
import time
|
||||
import shlex
|
||||
import psutil
|
||||
import shlex
|
||||
import subprocess
|
||||
import tempfile
|
||||
import time
|
||||
import traceback
|
||||
|
||||
from distutils.version import LooseVersion as Version
|
||||
@ -258,9 +260,7 @@ class Onion(object):
|
||||
and cmdline[2] == self.tor_torrc
|
||||
):
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"connect",
|
||||
"found a stale tor process, killing it",
|
||||
"Onion", "connect", "found a stale tor process, killing it"
|
||||
)
|
||||
proc.terminate()
|
||||
proc.wait()
|
||||
@ -317,49 +317,75 @@ class Onion(object):
|
||||
)
|
||||
|
||||
with open(self.tor_torrc, "w") as f:
|
||||
self.common.log("Onion", "connect", "Writing torrc template file")
|
||||
f.write(torrc_template)
|
||||
|
||||
# Bridge support
|
||||
if self.settings.get("bridges_enabled"):
|
||||
f.write("\nUseBridges 1\n")
|
||||
if self.settings.get("bridges_type") == "built-in":
|
||||
if self.settings.get("bridges_builtin_pt") == "obfs4":
|
||||
with open(
|
||||
self.common.get_resource_path("torrc_template-obfs4")
|
||||
) as o:
|
||||
f.write(o.read())
|
||||
elif self.settings.get("bridges_builtin_pt") == "meek-azure":
|
||||
with open(
|
||||
self.common.get_resource_path(
|
||||
"torrc_template-meek_lite_azure"
|
||||
use_torrc_bridge_templates = False
|
||||
builtin_bridge_type = self.settings.get("bridges_builtin_pt")
|
||||
# Use built-inbridges stored in settings, if they are there already.
|
||||
# They are probably newer than that of our hardcoded copies.
|
||||
if self.settings.get("bridges_builtin"):
|
||||
try:
|
||||
for line in self.settings.get("bridges_builtin")[
|
||||
builtin_bridge_type
|
||||
]:
|
||||
if line.strip() != "":
|
||||
f.write(f"Bridge {line}\n")
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"connect",
|
||||
"Wrote in the built-in bridges from OnionShare settings",
|
||||
)
|
||||
) as o:
|
||||
f.write(o.read())
|
||||
elif self.settings.get("bridges_builtin_pt") == "snowflake":
|
||||
with open(
|
||||
self.common.get_resource_path(
|
||||
"torrc_template-snowflake"
|
||||
)
|
||||
) as o:
|
||||
f.write(o.read())
|
||||
|
||||
except KeyError:
|
||||
# Somehow we had built-in bridges in our settings, but
|
||||
# not for this bridge type. Fall back to using the hard-
|
||||
# coded templates.
|
||||
use_torrc_bridge_templates = True
|
||||
else:
|
||||
use_torrc_bridge_templates = True
|
||||
if use_torrc_bridge_templates:
|
||||
if builtin_bridge_type == "obfs4":
|
||||
with open(
|
||||
self.common.get_resource_path(
|
||||
"torrc_template-obfs4"
|
||||
)
|
||||
) as o:
|
||||
f.write(o.read())
|
||||
elif builtin_bridge_type == "meek-azure":
|
||||
with open(
|
||||
self.common.get_resource_path(
|
||||
"torrc_template-meek_lite_azure"
|
||||
)
|
||||
) as o:
|
||||
f.write(o.read())
|
||||
elif builtin_bridge_type == "snowflake":
|
||||
with open(
|
||||
self.common.get_resource_path(
|
||||
"torrc_template-snowflake"
|
||||
)
|
||||
) as o:
|
||||
f.write(o.read())
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"connect",
|
||||
"Wrote in the built-in bridges from torrc templates",
|
||||
)
|
||||
elif self.settings.get("bridges_type") == "moat":
|
||||
for line in self.settings.get("bridges_moat").split("\n"):
|
||||
if line.strip() != "":
|
||||
f.write(f"Bridge {line}\n")
|
||||
f.write("\nUseBridges 1\n")
|
||||
|
||||
elif self.settings.get("bridges_type") == "custom":
|
||||
for line in self.settings.get("bridges_custom").split("\n"):
|
||||
if line.strip() != "":
|
||||
f.write(f"Bridge {line}\n")
|
||||
f.write("\nUseBridges 1\n")
|
||||
|
||||
# Execute a tor subprocess
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"connect",
|
||||
f"starting {self.tor_path} subprocess",
|
||||
)
|
||||
self.common.log("Onion", "connect", f"starting {self.tor_path} subprocess")
|
||||
start_ts = time.time()
|
||||
if self.common.platform == "Windows":
|
||||
# In Windows, hide console window when opening tor.exe subprocess
|
||||
@ -385,19 +411,11 @@ class Onion(object):
|
||||
)
|
||||
|
||||
# Wait for the tor controller to start
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"connect",
|
||||
f"tor pid: {self.tor_proc.pid}",
|
||||
)
|
||||
self.common.log("Onion", "connect", f"tor pid: {self.tor_proc.pid}")
|
||||
time.sleep(2)
|
||||
|
||||
# Connect to the controller
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"connect",
|
||||
"authenticating to tor controller",
|
||||
)
|
||||
self.common.log("Onion", "connect", "authenticating to tor controller")
|
||||
try:
|
||||
if (
|
||||
self.common.platform == "Windows"
|
||||
@ -638,6 +656,14 @@ class Onion(object):
|
||||
# https://trac.torproject.org/projects/tor/ticket/28619
|
||||
self.supports_v3_onions = self.tor_version >= Version("0.3.5.7")
|
||||
|
||||
# Now that we are connected to Tor, if we are using built-in bridges,
|
||||
# update them with the latest copy available from the Tor API
|
||||
if (
|
||||
self.settings.get("bridges_enabled")
|
||||
and self.settings.get("bridges_type") == "built-in"
|
||||
):
|
||||
self.update_builtin_bridges()
|
||||
|
||||
def is_authenticated(self):
|
||||
"""
|
||||
Returns True if the Tor connection is still working, or False otherwise.
|
||||
@ -881,3 +907,68 @@ class Onion(object):
|
||||
return ("127.0.0.1", 9150)
|
||||
else:
|
||||
return (self.settings.get("socks_address"), self.settings.get("socks_port"))
|
||||
|
||||
def update_builtin_bridges(self):
|
||||
"""
|
||||
Use the CensorshipCircumvention API to fetch the latest built-in bridges
|
||||
and update them in settings.
|
||||
"""
|
||||
builtin_bridges = False
|
||||
meek = None
|
||||
# Try obtaining bridges over Tor, if we're connected to it.
|
||||
if self.is_authenticated:
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"update_builtin_bridges",
|
||||
"Updating the built-in bridges. Trying over Tor first",
|
||||
)
|
||||
self.censorship_circumvention = CensorshipCircumvention(
|
||||
self.common, None, self
|
||||
)
|
||||
builtin_bridges = self.censorship_circumvention.request_builtin_bridges()
|
||||
|
||||
if not builtin_bridges:
|
||||
# Tor was not running or it failed to hit the Tor API.
|
||||
# Fall back to using Meek (domain-fronting).
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"update_builtin_bridges",
|
||||
"Updating the built-in bridges. Trying via Meek (no Tor)",
|
||||
)
|
||||
meek = Meek(self.common)
|
||||
meek.start()
|
||||
self.censorship_circumvention = CensorshipCircumvention(
|
||||
self.common, meek, None
|
||||
)
|
||||
builtin_bridges = self.censorship_circumvention.request_builtin_bridges()
|
||||
meek.cleanup()
|
||||
|
||||
if builtin_bridges:
|
||||
# If we got to this point, we have bridges
|
||||
self.common.log(
|
||||
"Onion",
|
||||
"update_builtin_bridges",
|
||||
f"Obtained bridges: {builtin_bridges}",
|
||||
)
|
||||
if builtin_bridges["meek"]:
|
||||
# Meek bridge needs to be defined as "meek_lite", not "meek",
|
||||
# for it to work with obfs4proxy.
|
||||
# We also refer to this bridge type as 'meek-azure' in our settings.
|
||||
# So first, rename the key in the dict
|
||||
builtin_bridges["meek-azure"] = builtin_bridges.pop("meek")
|
||||
new_meek_bridges = []
|
||||
# Now replace the values. They also need the url/front params appended
|
||||
for item in builtin_bridges["meek-azure"]:
|
||||
newline = item.replace("meek", "meek_lite")
|
||||
new_meek_bridges.append(
|
||||
f"{newline} url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com"
|
||||
)
|
||||
builtin_bridges["meek-azure"] = new_meek_bridges
|
||||
# Save the new settings
|
||||
self.settings.set("bridges_builtin", builtin_bridges)
|
||||
self.settings.save()
|
||||
else:
|
||||
self.common.log(
|
||||
"Onion", "update_builtin_bridges", "Error getting built-in bridges"
|
||||
)
|
||||
return False
|
||||
|
@ -40,9 +40,6 @@ class OnionShare(object):
|
||||
self.onion_host = None
|
||||
self.port = None
|
||||
|
||||
# files and dirs to delete on shutdown
|
||||
self.cleanup_filenames = []
|
||||
|
||||
# do not use tor -- for development
|
||||
self.local_only = local_only
|
||||
|
||||
@ -75,7 +72,9 @@ 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"
|
||||
self.auth_string = (
|
||||
"E2GOT5LTUTP3OAMRCRXO4GSH6VKJEUOXZQUC336SRKAHTTT5OVSA"
|
||||
)
|
||||
return
|
||||
|
||||
self.onion_host = self.onion.start_onion_service(
|
||||
|
@ -320,15 +320,15 @@ div#uploads .upload .upload-status {
|
||||
}
|
||||
|
||||
div#uploads .upload input.cancel {
|
||||
color: #d0011b;
|
||||
color: #d0011b;
|
||||
border: 0;
|
||||
background: none;
|
||||
box-shadow: none;
|
||||
border-radius: 0px;
|
||||
cursor: pointer;
|
||||
font-family: sans-serif;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
font-family: sans-serif;
|
||||
font-size: 12px;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
float:right;
|
||||
}
|
||||
@ -398,4 +398,4 @@ a {
|
||||
|
||||
a:visited {
|
||||
color: #601ca0;
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ $(function () {
|
||||
// Store current username received from app context
|
||||
var current_username = $('#username').val();
|
||||
|
||||
// On browser connect, emit a socket event to be added to
|
||||
// On browser connect, emit a socket event to be added to
|
||||
// room and assigned random username
|
||||
socket.on('connect', function () {
|
||||
socket.emit('joined', {});
|
||||
@ -148,7 +148,7 @@ var getScrollDiffBefore = function () {
|
||||
|
||||
var scrollBottomMaybe = function (scrollDiff) {
|
||||
// Scrolls to bottom if the user is scrolled at bottom
|
||||
// if the user has scrolled upp, it wont scroll at bottom.
|
||||
// if the user has scrolled up, it won't scroll at bottom.
|
||||
// Note: when a user themselves send a message, it will still
|
||||
// scroll to the bottom even if they had scrolled up before.
|
||||
if (scrollDiff > 0) {
|
||||
|
@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<title>OnionShare: 403 Forbidden</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon" />
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
|
||||
</head>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<title>OnionShare: 404 Not Found</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
|
||||
</head>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<title>OnionShare: 405 Method Not Allowed</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
|
||||
</head>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<title>OnionShare: An error occurred</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link href="{{ static_url_path }}/img/favicon.ico" rel="icon" type="image/x-icon">
|
||||
<link rel="stylesheet" rel="subresource" type="text/css" href="{{ static_url_path }}/css/style.css" media="all">
|
||||
</head>
|
||||
|
@ -1,3 +1,2 @@
|
||||
# Enable built-in meek-azure bridge
|
||||
Bridge meek_lite 0.0.2.0:3 97700DFE9F483596DDA6264C4D7DF7641E1E39CE url=https://meek.azureedge.net/ front=ajax.aspnetcdn.com
|
||||
UseBridges 1
|
||||
|
@ -1,17 +1,16 @@
|
||||
# Enable built-in obfs4-bridge
|
||||
Bridge obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1
|
||||
Bridge obfs4 38.229.1.78:80 C8CBDB2464FC9804A69531437BCF2BE31FDD2EE4 cert=Hmyfd2ev46gGY7NoVxA9ngrPF2zCZtzskRTzoWXbxNkzeVnGFPWmrTtILRyqCTjHR+s9dg iat-mode=1
|
||||
Bridge obfs4 38.229.33.83:80 0BAC39417268B96B9F514E7F63FA6FBA1A788955 cert=VwEFpk9F/UN9JED7XpG1XOjm/O8ZCXK80oPecgWnNDZDv5pdkhq1OpbAH0wNqOT6H6BmRQ iat-mode=1
|
||||
Bridge obfs4 37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg iat-mode=0
|
||||
Bridge obfs4 85.31.186.98:443 011F2599C0E9B27EE74B353155E244813763C3E5 cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg iat-mode=0
|
||||
Bridge obfs4 85.31.186.26:443 91A6354697E6B02A386312F68D82CF86824D3606 cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw iat-mode=0
|
||||
Bridge obfs4 144.217.20.138:80 FB70B257C162BF1038CA669D568D76F5B7F0BABB cert=vYIV5MgrghGQvZPIi1tJwnzorMgqgmlKaB77Y3Z9Q/v94wZBOAXkW+fdx4aSxLVnKO+xNw iat-mode=0
|
||||
Bridge obfs4 193.11.166.194:27015 2D82C2E354D531A68469ADF7F878FA6060C6BACA cert=4TLQPJrTSaDffMK7Nbao6LC7G9OW/NHkUwIdjLSS3KYf0Nv4/nQiiI8dY2TcsQx01NniOg iat-mode=0
|
||||
Bridge obfs4 193.11.166.194:27020 86AC7B8D430DAC4117E9F42C9EAED18133863AAF cert=0LDeJH4JzMDtkJJrFphJCiPqKx7loozKN7VNfuukMGfHO0Z8OGdzHVkhVAOfo1mUdv9cMg iat-mode=0
|
||||
Bridge obfs4 193.11.166.194:27025 1AE2C08904527FEA90C4C4F8C1083EA59FBC6FAF cert=ItvYZzW5tn6v3G4UnQa6Qz04Npro6e81AP70YujmK/KXwDFPTs3aHXcHp4n8Vt6w/bv8cA iat-mode=0
|
||||
Bridge obfs4 209.148.46.65:443 74FAD13168806246602538555B5521A0383A1875 cert=ssH+9rP8dG2NLDN2XuFw63hIO/9MNNinLmxQDpVa+7kTOa9/m+tGWT1SmSYpQ9uTBGa6Hw iat-mode=0
|
||||
Bridge obfs4 85.31.186.98:443 011F2599C0E9B27EE74B353155E244813763C3E5 cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg iat-mode=0
|
||||
Bridge obfs4 146.57.248.225:22 10A6CD36A537FCE513A322361547444B393989F0 cert=K1gDtDAIcUfeLqbstggjIw2rtgIKqdIhUlHp82XRqNSq/mtAjp1BIC9vHKJ2FAEpGssTPw iat-mode=0
|
||||
Bridge obfs4 45.145.95.6:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
|
||||
Bridge obfs4 [2a0c:4d80:42:702::1]:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
|
||||
Bridge obfs4 85.31.186.26:443 91A6354697E6B02A386312F68D82CF86824D3606 cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw iat-mode=0
|
||||
Bridge obfs4 51.222.13.177:80 5EDAC3B810E12B01F6FD8050D2FD3E277B289A08 cert=2uplIpLQ0q9+0qMFrK5pkaYRDOe460LL9WHBvatgkuRr/SL31wBOEupaMMJ6koRE6Ld0ew iat-mode=0
|
||||
UseBridges 1
|
||||
Bridge obfs4 209.148.46.65:443 74FAD13168806246602538555B5521A0383A1875 cert=ssH+9rP8dG2NLDN2XuFw63hIO/9MNNinLmxQDpVa+7kTOa9/m+tGWT1SmSYpQ9uTBGa6Hw iat-mode=0
|
||||
Bridge obfs4 45.145.95.6:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
|
||||
Bridge obfs4 38.229.1.78:80 C8CBDB2464FC9804A69531437BCF2BE31FDD2EE4 cert=Hmyfd2ev46gGY7NoVxA9ngrPF2zCZtzskRTzoWXbxNkzeVnGFPWmrTtILRyqCTjHR+s9dg iat-mode=1
|
||||
Bridge obfs4 193.11.166.194:27025 1AE2C08904527FEA90C4C4F8C1083EA59FBC6FAF cert=ItvYZzW5tn6v3G4UnQa6Qz04Npro6e81AP70YujmK/KXwDFPTs3aHXcHp4n8Vt6w/bv8cA iat-mode=0
|
||||
Bridge obfs4 193.11.166.194:27020 86AC7B8D430DAC4117E9F42C9EAED18133863AAF cert=0LDeJH4JzMDtkJJrFphJCiPqKx7loozKN7VNfuukMGfHO0Z8OGdzHVkhVAOfo1mUdv9cMg iat-mode=0
|
||||
Bridge obfs4 37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg iat-mode=0
|
||||
Bridge obfs4 144.217.20.138:80 FB70B257C162BF1038CA669D568D76F5B7F0BABB cert=vYIV5MgrghGQvZPIi1tJwnzorMgqgmlKaB77Y3Z9Q/v94wZBOAXkW+fdx4aSxLVnKO+xNw iat-mode=0
|
||||
Bridge obfs4 192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ iat-mode=1
|
||||
Bridge obfs4 [2a0c:4d80:42:702::1]:27015 C5B7CD6946FF10C5B3E89691A7D3F2C122D2117C cert=TD7PbUO0/0k6xYHMPW3vJxICfkMZNdkRrb63Zhl5j9dW3iRGiCx0A7mPhe5T2EDzQ35+Zw iat-mode=0
|
||||
|
@ -1,3 +1 @@
|
||||
# Enable built-in snowflake bridge
|
||||
Bridge snowflake 192.0.2.3:1 2B280B23E1107BB62ABFC40DDCC8824814F80A72
|
||||
UseBridges 1
|
||||
Bridge snowflake 0.0.3.0:1 2B280B23E1107BB62ABFC40DDCC8824814F80A72
|
||||
|
@ -111,6 +111,7 @@ class Settings(object):
|
||||
"bridges_builtin_pt": "obfs4", # "obfs4", "meek-azure", or "snowflake"
|
||||
"bridges_moat": "",
|
||||
"bridges_custom": "",
|
||||
"bridges_builtin": {},
|
||||
"persistent_tabs": [],
|
||||
"locale": None, # this gets defined in fill_in_defaults()
|
||||
"theme": 0,
|
||||
|
@ -42,10 +42,11 @@ class SendBaseModeWeb:
|
||||
self.is_zipped = False
|
||||
self.download_filename = None
|
||||
self.download_filesize = None
|
||||
self.gzip_filename = None
|
||||
self.gzip_filesize = None
|
||||
self.zip_writer = None
|
||||
|
||||
# Store the tempfile objects here, so when they're garbage collected the files are deleted
|
||||
self.gzip_files = []
|
||||
|
||||
# If autostop_sharing, only allow one download at a time
|
||||
self.download_in_progress = False
|
||||
|
||||
@ -192,12 +193,15 @@ class SendBaseModeWeb:
|
||||
# gzip compress the individual file, if it hasn't already been compressed
|
||||
if use_gzip:
|
||||
if filesystem_path not in self.gzip_individual_files:
|
||||
gzip_filename = tempfile.mkstemp("wb+")[1]
|
||||
self._gzip_compress(filesystem_path, gzip_filename, 6, None)
|
||||
self.gzip_individual_files[filesystem_path] = gzip_filename
|
||||
self.gzip_files.append(
|
||||
tempfile.NamedTemporaryFile("wb+", dir=self.common.build_tmp_dir())
|
||||
)
|
||||
gzip_file = self.gzip_files[-1]
|
||||
self._gzip_compress(filesystem_path, gzip_file.name, 6, None)
|
||||
self.gzip_individual_files[filesystem_path] = gzip_file.name
|
||||
|
||||
# Make sure the gzip file gets cleaned up when onionshare stops
|
||||
self.web.cleanup_filenames.append(gzip_filename)
|
||||
# Cleanup this temp file
|
||||
self.web.cleanup_tempfiles.append(gzip_file)
|
||||
|
||||
file_to_download = self.gzip_individual_files[filesystem_path]
|
||||
filesize = os.path.getsize(self.gzip_individual_files[filesystem_path])
|
||||
|
@ -134,8 +134,12 @@ class ShareModeWeb(SendBaseModeWeb):
|
||||
The web app routes for sharing files
|
||||
"""
|
||||
|
||||
@self.web.app.route("/", defaults={"path": ""}, methods=["GET"], provide_automatic_options=False)
|
||||
@self.web.app.route("/<path:path>", methods=["GET"], provide_automatic_options=False)
|
||||
@self.web.app.route(
|
||||
"/", defaults={"path": ""}, methods=["GET"], provide_automatic_options=False
|
||||
)
|
||||
@self.web.app.route(
|
||||
"/<path:path>", methods=["GET"], provide_automatic_options=False
|
||||
)
|
||||
def index(path):
|
||||
"""
|
||||
Render the template for the onionshare landing page.
|
||||
@ -159,7 +163,9 @@ class ShareModeWeb(SendBaseModeWeb):
|
||||
|
||||
return self.render_logic(path)
|
||||
|
||||
@self.web.app.route("/download", methods=["GET"], provide_automatic_options=False)
|
||||
@self.web.app.route(
|
||||
"/download", methods=["GET"], provide_automatic_options=False
|
||||
)
|
||||
def download():
|
||||
"""
|
||||
Download the zip file.
|
||||
@ -183,7 +189,7 @@ class ShareModeWeb(SendBaseModeWeb):
|
||||
# and serve that
|
||||
use_gzip = self.should_use_gzip()
|
||||
if use_gzip:
|
||||
file_to_download = self.gzip_filename
|
||||
file_to_download = self.gzip_file.name
|
||||
self.filesize = self.gzip_filesize
|
||||
etag = self.gzip_etag
|
||||
else:
|
||||
@ -286,7 +292,9 @@ class ShareModeWeb(SendBaseModeWeb):
|
||||
if if_unmod:
|
||||
if_date = parse_date(if_unmod)
|
||||
if if_date and not if_date.tzinfo:
|
||||
if_date = if_date.replace(tzinfo=timezone.utc) # Compatible with Flask < 2.0.0
|
||||
if_date = if_date.replace(
|
||||
tzinfo=timezone.utc
|
||||
) # Compatible with Flask < 2.0.0
|
||||
if if_date and if_date > last_modified:
|
||||
abort(412)
|
||||
elif range_header is None:
|
||||
@ -459,7 +467,7 @@ class ShareModeWeb(SendBaseModeWeb):
|
||||
return self.web.error404(history_id)
|
||||
|
||||
def build_zipfile_list(self, filenames, processed_size_callback=None):
|
||||
self.common.log("ShareModeWeb", "build_zipfile_list")
|
||||
self.common.log("ShareModeWeb", "build_zipfile_list", f"filenames={filenames}")
|
||||
for filename in filenames:
|
||||
info = {
|
||||
"filename": filename,
|
||||
@ -484,23 +492,25 @@ class ShareModeWeb(SendBaseModeWeb):
|
||||
self.download_etag = make_etag(f)
|
||||
|
||||
# Compress the file with gzip now, so we don't have to do it on each request
|
||||
self.gzip_filename = tempfile.mkstemp("wb+")[1]
|
||||
self._gzip_compress(
|
||||
self.download_filename, self.gzip_filename, 6, processed_size_callback
|
||||
self.gzip_file = tempfile.NamedTemporaryFile(
|
||||
"wb+", dir=self.common.build_tmp_dir()
|
||||
)
|
||||
self.gzip_filesize = os.path.getsize(self.gzip_filename)
|
||||
with open(self.gzip_filename, "rb") as f:
|
||||
self._gzip_compress(
|
||||
self.download_filename, self.gzip_file.name, 6, processed_size_callback
|
||||
)
|
||||
self.gzip_filesize = os.path.getsize(self.gzip_file.name)
|
||||
with open(self.gzip_file.name, "rb") as f:
|
||||
self.gzip_etag = make_etag(f)
|
||||
|
||||
# Make sure the gzip file gets cleaned up when onionshare stops
|
||||
self.web.cleanup_filenames.append(self.gzip_filename)
|
||||
|
||||
self.is_zipped = False
|
||||
|
||||
# Cleanup this tempfile
|
||||
self.web.cleanup_tempfiles.append(self.gzip_file)
|
||||
|
||||
else:
|
||||
# Zip up the files and folders
|
||||
self.zip_writer = ZipWriter(
|
||||
self.common, processed_size_callback=processed_size_callback
|
||||
self.common, self.web, processed_size_callback=processed_size_callback
|
||||
)
|
||||
self.download_filename = self.zip_writer.zip_filename
|
||||
for info in self.file_info["files"]:
|
||||
@ -519,10 +529,6 @@ class ShareModeWeb(SendBaseModeWeb):
|
||||
with open(self.download_filename, "rb") as f:
|
||||
self.download_etag = make_etag(f)
|
||||
|
||||
# Make sure the zip file gets cleaned up when onionshare stops
|
||||
self.web.cleanup_filenames.append(self.zip_writer.zip_filename)
|
||||
self.web.cleanup_filenames.append(self.zip_writer.zip_temp_dir)
|
||||
|
||||
self.is_zipped = True
|
||||
|
||||
return True
|
||||
@ -535,17 +541,24 @@ class ZipWriter(object):
|
||||
filename.
|
||||
"""
|
||||
|
||||
def __init__(self, common, zip_filename=None, processed_size_callback=None):
|
||||
def __init__(
|
||||
self, common, web=None, zip_filename=None, processed_size_callback=None
|
||||
):
|
||||
self.common = common
|
||||
self.web = web
|
||||
self.cancel_compression = False
|
||||
|
||||
if zip_filename:
|
||||
self.zip_filename = zip_filename
|
||||
else:
|
||||
self.zip_temp_dir = tempfile.mkdtemp()
|
||||
self.zip_filename = (
|
||||
f"{self.zip_temp_dir}/onionshare_{self.common.random_string(4, 6)}.zip"
|
||||
self.zip_temp_dir = tempfile.TemporaryDirectory(
|
||||
dir=self.common.build_tmp_dir()
|
||||
)
|
||||
self.zip_filename = f"{self.zip_temp_dir.name}/onionshare_{self.common.random_string(4, 6)}.zip"
|
||||
|
||||
# Cleanup this temp dir
|
||||
if self.web:
|
||||
self.web.cleanup_tempdirs.append(self.zip_temp_dir)
|
||||
|
||||
self.z = zipfile.ZipFile(self.zip_filename, "w", allowZip64=True)
|
||||
self.processed_size_callback = processed_size_callback
|
||||
|
@ -155,7 +155,8 @@ class Web:
|
||||
self.socketio.init_app(self.app)
|
||||
self.chat_mode = ChatModeWeb(self.common, self)
|
||||
|
||||
self.cleanup_filenames = []
|
||||
self.cleanup_tempfiles = []
|
||||
self.cleanup_tempdirs = []
|
||||
|
||||
def get_mode(self):
|
||||
if self.mode == "share":
|
||||
@ -198,12 +199,20 @@ class Web:
|
||||
"""
|
||||
for header, value in self.security_headers:
|
||||
r.headers.set(header, value)
|
||||
|
||||
# Set a CSP header unless in website mode and the user has disabled it
|
||||
if not self.settings.get("website", "disable_csp") or self.mode != "website":
|
||||
r.headers.set(
|
||||
"Content-Security-Policy",
|
||||
"default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;",
|
||||
)
|
||||
default_csp = "default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;"
|
||||
if self.mode != "website" or (
|
||||
not self.settings.get("website", "disable_csp")
|
||||
and not self.settings.get("website", "custom_csp")
|
||||
):
|
||||
r.headers.set("Content-Security-Policy", default_csp)
|
||||
else:
|
||||
if self.settings.get("website", "custom_csp"):
|
||||
r.headers.set(
|
||||
"Content-Security-Policy",
|
||||
self.settings.get("website", "custom_csp"),
|
||||
)
|
||||
return r
|
||||
|
||||
@self.app.errorhandler(404)
|
||||
@ -380,14 +389,13 @@ class Web:
|
||||
"""
|
||||
self.common.log("Web", "cleanup")
|
||||
|
||||
# Cleanup files
|
||||
try:
|
||||
for filename in self.cleanup_filenames:
|
||||
if os.path.isfile(filename):
|
||||
os.remove(filename)
|
||||
elif os.path.isdir(filename):
|
||||
shutil.rmtree(filename)
|
||||
except Exception:
|
||||
# Don't crash if file is still in use
|
||||
pass
|
||||
self.cleanup_filenames = []
|
||||
# Close all of the tempfile.NamedTemporaryFile
|
||||
for file in self.cleanup_tempfiles:
|
||||
file.close()
|
||||
|
||||
# Clean up the tempfile.NamedTemporaryDirectory objects
|
||||
for dir in self.cleanup_tempdirs:
|
||||
dir.cleanup()
|
||||
|
||||
self.cleanup_tempfiles = []
|
||||
self.cleanup_tempdirs = []
|
||||
|
@ -37,7 +37,7 @@ def temp_dir():
|
||||
"""Creates a persistent temporary directory for the CLI tests to use"""
|
||||
global test_temp_dir
|
||||
if not test_temp_dir:
|
||||
test_temp_dir = tempfile.mkdtemp()
|
||||
test_temp_dir = tempfile.TemporaryDirectory()
|
||||
return test_temp_dir
|
||||
|
||||
|
||||
@ -47,10 +47,9 @@ def temp_dir_1024(temp_dir):
|
||||
particular size (1024 bytes).
|
||||
"""
|
||||
|
||||
new_temp_dir = tempfile.mkdtemp(dir=temp_dir)
|
||||
tmp_file, tmp_file_path = tempfile.mkstemp(dir=new_temp_dir)
|
||||
with open(tmp_file, "wb") as f:
|
||||
f.write(b"*" * 1024)
|
||||
new_temp_dir = tempfile.TemporaryDirectory(dir=temp_dir.name)
|
||||
tmp_file = tempfile.NamedTemporaryFile(dir=new_temp_dir.name)
|
||||
tmp_file.write(b"*" * 1024)
|
||||
return new_temp_dir
|
||||
|
||||
|
||||
@ -61,9 +60,8 @@ def temp_dir_1024_delete(temp_dir):
|
||||
the file inside) will be deleted after fixture usage.
|
||||
"""
|
||||
|
||||
with tempfile.TemporaryDirectory(dir=temp_dir) as new_temp_dir:
|
||||
tmp_file, tmp_file_path = tempfile.mkstemp(dir=new_temp_dir)
|
||||
with open(tmp_file, "wb") as f:
|
||||
with tempfile.TemporaryDirectory(dir=temp_dir.name) as new_temp_dir:
|
||||
with open(os.path.join(new_temp_dir, "file"), "wb") as f:
|
||||
f.write(b"*" * 1024)
|
||||
yield new_temp_dir
|
||||
|
||||
@ -72,9 +70,10 @@ def temp_dir_1024_delete(temp_dir):
|
||||
def temp_file_1024(temp_dir):
|
||||
"""Create a temporary file of a particular size (1024 bytes)."""
|
||||
|
||||
with tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) as tmp_file:
|
||||
tmp_file.write(b"*" * 1024)
|
||||
return tmp_file.name
|
||||
filename = os.path.join(temp_dir.name, "file")
|
||||
with open(filename, "wb") as f:
|
||||
f.write(b"*" * 1024)
|
||||
return filename
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@ -84,11 +83,11 @@ def temp_file_1024_delete(temp_dir):
|
||||
The temporary file will be deleted after fixture usage.
|
||||
"""
|
||||
|
||||
with tempfile.NamedTemporaryFile(dir=temp_dir, delete=False) as tmp_file:
|
||||
with tempfile.NamedTemporaryFile(dir=temp_dir.name, delete=False) as tmp_file:
|
||||
tmp_file.write(b"*" * 1024)
|
||||
tmp_file.flush()
|
||||
tmp_file.close()
|
||||
yield tmp_file.name
|
||||
yield tmp_file
|
||||
|
||||
|
||||
@pytest.fixture(scope="session")
|
||||
|
@ -34,6 +34,7 @@ class TestSettings:
|
||||
"bridges_builtin_pt": "obfs4",
|
||||
"bridges_moat": "",
|
||||
"bridges_custom": "",
|
||||
"bridges_builtin": {},
|
||||
"persistent_tabs": [],
|
||||
"theme": 0,
|
||||
"auto_connect": False,
|
||||
@ -55,7 +56,7 @@ class TestSettings:
|
||||
"socks_port": 9999,
|
||||
"use_stealth": True,
|
||||
}
|
||||
tmp_file, tmp_file_path = tempfile.mkstemp(dir=temp_dir)
|
||||
tmp_file, tmp_file_path = tempfile.mkstemp(dir=temp_dir.name)
|
||||
with open(tmp_file, "w") as f:
|
||||
json.dump(custom_settings, f)
|
||||
settings_obj.filename = tmp_file_path
|
||||
@ -70,7 +71,7 @@ class TestSettings:
|
||||
|
||||
def test_save(self, monkeypatch, temp_dir, settings_obj):
|
||||
settings_filename = "default_settings.json"
|
||||
new_temp_dir = tempfile.mkdtemp(dir=temp_dir)
|
||||
new_temp_dir = tempfile.mkdtemp(dir=temp_dir.name)
|
||||
settings_path = os.path.join(new_temp_dir, settings_filename)
|
||||
settings_obj.filename = settings_path
|
||||
settings_obj.save()
|
||||
|
@ -50,7 +50,8 @@ def web_obj(temp_dir, common_obj, mode, num_files=0):
|
||||
web = Web(common_obj, False, mode_settings, mode)
|
||||
web.running = True
|
||||
|
||||
web.cleanup_filenames == []
|
||||
web.cleanup_tempfiles == []
|
||||
web.cleanup_tempdirs == []
|
||||
web.app.testing = True
|
||||
|
||||
# Share mode
|
||||
@ -58,7 +59,9 @@ def web_obj(temp_dir, common_obj, mode, num_files=0):
|
||||
# Add files
|
||||
files = []
|
||||
for _ in range(num_files):
|
||||
with tempfile.NamedTemporaryFile(delete=False, dir=temp_dir) as tmp_file:
|
||||
with tempfile.NamedTemporaryFile(
|
||||
delete=False, dir=temp_dir.name
|
||||
) as tmp_file:
|
||||
tmp_file.write(b"*" * 1024)
|
||||
files.append(tmp_file.name)
|
||||
web.share_mode.set_file_info(files)
|
||||
@ -131,7 +134,9 @@ class TestWeb:
|
||||
|
||||
with web.app.test_client() as c:
|
||||
# Load / with valid auth
|
||||
res = c.get("/",)
|
||||
res = c.get(
|
||||
"/",
|
||||
)
|
||||
res.get_data()
|
||||
assert res.status_code == 200
|
||||
|
||||
@ -169,7 +174,7 @@ class TestWeb:
|
||||
def test_receive_mode_message_no_files(self, temp_dir, common_obj):
|
||||
web = web_obj(temp_dir, common_obj, "receive")
|
||||
|
||||
data_dir = os.path.join(temp_dir, "OnionShare")
|
||||
data_dir = os.path.join(temp_dir.name, "OnionShare")
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
|
||||
web.settings.set("receive", "data_dir", data_dir)
|
||||
@ -200,7 +205,7 @@ class TestWeb:
|
||||
def test_receive_mode_message_and_files(self, temp_dir, common_obj):
|
||||
web = web_obj(temp_dir, common_obj, "receive")
|
||||
|
||||
data_dir = os.path.join(temp_dir, "OnionShare")
|
||||
data_dir = os.path.join(temp_dir.name, "OnionShare")
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
|
||||
web.settings.set("receive", "data_dir", data_dir)
|
||||
@ -235,7 +240,7 @@ class TestWeb:
|
||||
def test_receive_mode_files_no_message(self, temp_dir, common_obj):
|
||||
web = web_obj(temp_dir, common_obj, "receive")
|
||||
|
||||
data_dir = os.path.join(temp_dir, "OnionShare")
|
||||
data_dir = os.path.join(temp_dir.name, "OnionShare")
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
|
||||
web.settings.set("receive", "data_dir", data_dir)
|
||||
@ -267,7 +272,7 @@ class TestWeb:
|
||||
def test_receive_mode_no_message_no_files(self, temp_dir, common_obj):
|
||||
web = web_obj(temp_dir, common_obj, "receive")
|
||||
|
||||
data_dir = os.path.join(temp_dir, "OnionShare")
|
||||
data_dir = os.path.join(temp_dir.name, "OnionShare")
|
||||
os.makedirs(data_dir, exist_ok=True)
|
||||
|
||||
web.settings.set("receive", "data_dir", data_dir)
|
||||
@ -300,15 +305,21 @@ class TestWeb:
|
||||
res.get_data()
|
||||
assert res.status_code == 200
|
||||
|
||||
def test_cleanup(self, common_obj, temp_dir_1024, temp_file_1024):
|
||||
def test_cleanup(self, common_obj, temp_dir_1024):
|
||||
web = web_obj(temp_dir_1024, common_obj, "share", 3)
|
||||
|
||||
web.cleanup_filenames = [temp_dir_1024, temp_file_1024]
|
||||
temp_file = tempfile.NamedTemporaryFile()
|
||||
temp_dir = tempfile.TemporaryDirectory()
|
||||
|
||||
web.cleanup_tempfiles = [temp_file]
|
||||
web.cleanup_tempdirs = [temp_dir]
|
||||
web.cleanup()
|
||||
|
||||
assert os.path.exists(temp_file_1024) is False
|
||||
assert os.path.exists(temp_dir_1024) is False
|
||||
assert web.cleanup_filenames == []
|
||||
assert os.path.exists(temp_file.name) is False
|
||||
assert os.path.exists(temp_dir.name) is False
|
||||
|
||||
assert web.cleanup_tempfiles == []
|
||||
assert web.cleanup_tempdirs == []
|
||||
|
||||
|
||||
class TestZipWriterDefault:
|
||||
@ -339,8 +350,10 @@ class TestZipWriterDefault:
|
||||
assert default_zw.processed_size_callback(None) is None
|
||||
|
||||
def test_add_file(self, default_zw, temp_file_1024_delete):
|
||||
default_zw.add_file(temp_file_1024_delete)
|
||||
zipfile_info = default_zw.z.getinfo(os.path.basename(temp_file_1024_delete))
|
||||
default_zw.add_file(temp_file_1024_delete.name)
|
||||
zipfile_info = default_zw.z.getinfo(
|
||||
os.path.basename(temp_file_1024_delete.name)
|
||||
)
|
||||
|
||||
assert zipfile_info.compress_type == zipfile.ZIP_DEFLATED
|
||||
assert zipfile_info.file_size == 1024
|
||||
@ -568,7 +581,6 @@ class TestRangeRequests:
|
||||
resp = client.get(url, headers=headers)
|
||||
assert resp.status_code == 206
|
||||
|
||||
|
||||
@pytest.mark.skipif(sys.platform != "linux", reason="requires Linux")
|
||||
@check_unsupported("curl", ["--version"])
|
||||
def test_curl(self, temp_dir, tmpdir, common_obj):
|
||||
|
@ -49,7 +49,7 @@ These instructions include adding folders to the path in Windows. To do this, go
|
||||
|
||||
Download Python 3.8.6, 32-bit (x86) from https://www.python.org/downloads/release/python-386/. I downloaded `python-3.8.6.exe`. When installing it, make sure to check the "Add Python 3.8 to PATH" checkbox on the first page of the installer.
|
||||
|
||||
Download and install 7-Zip from http://www.7-zip.org/download.html. I downloaded `7z1900.exe`. Add `C:\Program Files (x86)\7-Zip` to your path.
|
||||
Download and install 7-Zip from https://7-zip.org/download.html. I downloaded `7z1900.exe`. Add `C:\Program Files (x86)\7-Zip` to your path.
|
||||
|
||||
Install python dependencies:
|
||||
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
# Run OnionShare desktop, allowing you to use command-line arguments
|
||||
|
||||
SCRIPTS_DIR="$( cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )"
|
||||
cd $SCRIPTS_DIR
|
||||
SCRIPTS_DIR=$( cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )
|
||||
cd "$SCRIPTS_DIR"
|
||||
|
||||
cd ../src
|
||||
python -c "import onionshare; onionshare.main()" $@
|
||||
python -c "import onionshare; onionshare.main()" $@
|
||||
|
@ -534,7 +534,6 @@ class GuiCommon:
|
||||
return strings._("error_stealth_not_supported")
|
||||
elif type(e) is PortNotAvailable:
|
||||
return strings._("error_port_not_available")
|
||||
|
||||
return None
|
||||
|
||||
|
||||
|
@ -101,9 +101,9 @@
|
||||
"gui_settings_connection_type_automatic_option": "Versuche automatische Konfiguration mittels Tor Browser",
|
||||
"gui_settings_connection_type_test_button": "Verbindung zu Tor testen",
|
||||
"gui_settings_authenticate_label": "Authentifizierungseinstellungen für Tor",
|
||||
"gui_settings_tor_bridges": "Unterstützung für Tor-Bridges",
|
||||
"gui_settings_meek_lite_expensive_warning": "Achtung: Die „meek_lite“-Bridges sind für das Tor-Projekt sehr kostspielig.<br><br> Nutze sie nur, wenn du dich nicht direkt, per obfs4-Transport oder über andere, normale Bridges zum Tor-Netzwerk verbinden kannst.",
|
||||
"gui_settings_tor_bridges_invalid": "Keine der ausgewählten Bridges funktioniert.\nÜberprüfe sie oder gib andere an.",
|
||||
"gui_settings_tor_bridges": "Mittels einer Tor-Bridge verbinden?",
|
||||
"gui_settings_meek_lite_expensive_warning": "Achtung: Die „meek-azure“-Bridges sind für das Tor-Projekt sehr kostspielig.<br><br> Nutze sie nur, wenn du dich nicht direkt, per obfs4-Transport oder über andere, normale Bridges zum Tor-Netzwerk verbinden kannst.",
|
||||
"gui_settings_tor_bridges_invalid": "Keine der ausgewählten Bridges funktioniert. Überprüfe sie oder gib andere an.",
|
||||
"settings_error_unknown": "Kann nicht zum Tor-Controller verbinden, weil deine Einstellungen keinen Sinn ergeben.",
|
||||
"settings_error_automatic": "Kann nicht zum Tor-Controller verbinden. Läuft der Tor Browser (kann von https://www.torproject.org/ heruntergeladen werden) im Hintergrund?",
|
||||
"settings_error_socket_port": "Kann unter {}:{} nicht zum Tor-Controller verbinden.",
|
||||
@ -162,7 +162,7 @@
|
||||
"gui_upload_in_progress": "Upload gestartet {}",
|
||||
"gui_download_in_progress": "Download gestartet {}",
|
||||
"gui_open_folder_error_nautilus": "Kann den Ordner nicht öffnen, weil Nautilus nicht verfügbar ist. Die Datei ist hier: {}",
|
||||
"gui_settings_language_label": "Bevorzugte Sprache",
|
||||
"gui_settings_language_label": "Sprache",
|
||||
"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",
|
||||
@ -316,5 +316,30 @@
|
||||
"gui_qr_label_url_title": "OnionShare-Adresse",
|
||||
"gui_copied_client_auth": "Privater Schlüssel in die Zwischenablage kopiert",
|
||||
"gui_copied_client_auth_title": "Privater Schlüssel kopiert",
|
||||
"gui_copy_client_auth": "Privaten Schlüssel kopieren"
|
||||
"gui_copy_client_auth": "Privaten Schlüssel kopieren",
|
||||
"gui_dragdrop_sandbox_flatpak": "Um die Flatpak Sandbox sicherer zu machen, wird Drag und Drop nicht unterstützt. Bitte nutze stattdessen die Buttons \"Dateien hinzufügen\" und \"Ordner hinzufügen\".",
|
||||
"gui_tor_settings_window_title": "Tor Einstellungen",
|
||||
"gui_settings_controller_extras_label": "Tor Einstellungen",
|
||||
"gui_settings_bridge_use_checkbox": "Benutze eine Brigde",
|
||||
"gui_settings_bridge_radio_builtin": "Wähle eine eingebaute Bridge",
|
||||
"gui_settings_bridge_none_radio_option": "Keine Bridge verwenden",
|
||||
"gui_settings_bridge_moat_button": "Neue Bridge verwenden",
|
||||
"gui_settings_bridge_custom_placeholder": "Schreibe im Format adresse:port (eine pro Zeile)",
|
||||
"gui_settings_moat_bridges_invalid": "Du hast noch keine Bridge von torproject.org angefragt.",
|
||||
"gui_settings_stop_active_tabs_label": "Es laufen noch Services in deinen Tabs.\nDu musst alle Services beenden, bevor du die Tor Einstellungen ändern kannst.",
|
||||
"gui_settings_version_label": "Du verwendest OnionShare {}",
|
||||
"gui_settings_help_label": "Du benötigst Hilfe? Gehe zu <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
|
||||
"mode_settings_website_custom_csp_checkbox": "Sende einen benutzerdefinierten Content Security Policy header",
|
||||
"moat_contact_label": "Kontaktiere BridgeDB...",
|
||||
"moat_captcha_label": "Löse das CAPTCHA um eine Bridge zu laden.",
|
||||
"moat_captcha_placeholder": "Gib die Zeichen auf dem Bild ein",
|
||||
"moat_captcha_submit": "Absenden",
|
||||
"moat_captcha_reload": "Neu laden",
|
||||
"moat_bridgedb_error": "Fehler beim kontaktieren der BridgeDB.",
|
||||
"moat_captcha_error": "Die Lösung ist nicht korrekt. Bitte nochmal versuchen.",
|
||||
"mode_tor_not_connected_label": "OnionShare ist nicht mit dem Tor Netzwerk verbunden",
|
||||
"gui_settings_bridge_moat_radio_option": "Verwende eine Bridge von torproject.org",
|
||||
"moat_solution_empty_error": "Du musst die Zeichen auf dem Bild eingeben",
|
||||
"gui_settings_bridge_custom_radio_option": "Stelle eine Bridge aus einer dir bekannten vertraulichen Quelle bereit",
|
||||
"gui_settings_tor_bridges_label": "Brigdes helfen dir das Tor Netzwerk an Orten zu verwenden, wo es blockiert wird. Je nachdem wo du bist, funktioniert eine Bridge besser als eine andere."
|
||||
}
|
||||
|
@ -134,8 +134,8 @@
|
||||
"gui_server_autostop_timer_expired": "Το χρονόμετρο αυτόματης διακοπής έχει ήδη τελειώσει. Παρακαλώ ρυθμίστε το για να ξεκινήσετε το διαμοιρασμό.",
|
||||
"share_via_onionshare": "Μοιραστείτε μέσω OnionShare",
|
||||
"gui_save_private_key_checkbox": "Χρήση μόνιμης διεύθυνσης",
|
||||
"gui_share_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>κατεβάσει</b> τα αρχεία σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare, μπορεί να <b>ανεβάσει</b> αρχεία στον υπολογιστή σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_share_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να <b>κατεβάσει</b> τα αρχεία σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να <b>ανεβάσει</b> αρχεία στον υπολογιστή σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_url_label_persistent": "Αυτή η σελίδα διαμοιρασμού δεν θα πάψει να λειτουργεί αυτόματα.<br><br>Όσοι μοιράζονται αρχεία μαζί σας θα μπορέσουν να ξαναχρησιμοποιήσουν αυτή τη διεύθυνση αργότερα. (Για να χρησιμοποιήσετε διευθύνσεις μιας χρήσης, απενεργοποιήστε τη λειτουργία \"Χρήση μόνιμης διεύθυνσης\" στις Ρυθμίσεις.)",
|
||||
"gui_url_label_stay_open": "Αυτή η σελίδα διαμοιρασμού δεν θα πάψει να λειτουργεί αυτόματα.",
|
||||
"gui_url_label_onetime": "Αυτός ο διαμοιρασμός θα σταματήσει μετά την πρώτη λήψη.",
|
||||
@ -225,7 +225,7 @@
|
||||
"hours_first_letter": "ώ",
|
||||
"minutes_first_letter": "λ",
|
||||
"seconds_first_letter": "δ",
|
||||
"gui_website_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί <b>να επισκεφτεί</b> την ιστοσελίδα χρησιμοποιώντας τον <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_website_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί <b>να επισκεφτεί</b> την ιστοσελίδα σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_mode_website_button": "Δημοσίευση ιστοσελίδας",
|
||||
"gui_website_mode_no_files": "Δεν έχει γίνει διαμοιρασμός ιστοσελίδας ακόμα",
|
||||
"incorrect_password": "Λάθος κωδικός",
|
||||
@ -244,7 +244,7 @@
|
||||
"mode_settings_legacy_checkbox": "Χρήση παλαιάς διεύθυνσης (δεν προτείνεται η χρήση υπηρεσία v2 onion)",
|
||||
"mode_settings_autostop_timer_checkbox": "Προγραμματισμένος τερματισμός",
|
||||
"mode_settings_autostart_timer_checkbox": "Προγραμματισμένη εκκίνηση",
|
||||
"mode_settings_public_checkbox": "Χωρίς χρήση κωδικού πρόσβασης",
|
||||
"mode_settings_public_checkbox": "Δημόσια υπηρεσία OnionShare (απενεργοποιεί το ιδιωτικό κλειδί)",
|
||||
"mode_settings_persistent_checkbox": "Αποθήκευση της καρτέλας και αυτόματο άνοιγμά της με την έναρξη του OnionShare",
|
||||
"mode_settings_advanced_toggle_hide": "Απόκρυψη προχωρημένων ρυθμίσεων",
|
||||
"mode_settings_advanced_toggle_show": "Εμφάνιση προχωρημένων ρυθμίσεων",
|
||||
@ -279,7 +279,7 @@
|
||||
"error_port_not_available": "Η θύρα OnionShare δεν είναι διαθέσιμη",
|
||||
"gui_rendezvous_cleanup_quit_early": "Πρόωρη έξοδος",
|
||||
"gui_rendezvous_cleanup": "Αναμονή για τερματισμό των κυκλωμάτων του Tor για να βεβαιωθείτε ότι τα αρχεία σας έχουν μεταφερθεί με επιτυχία.\n\nΑυτό μπορεί να διαρκέσει λίγα λεπτά.",
|
||||
"gui_chat_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση του OnionShare μπορεί <b>να συμμετέχει στο δωμάτιο συνομιλίας</b> με χρήση του <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_chat_url_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare και το ιδιωτικό κλειδί μπορεί να <b>συμμετέχει στο δωμάτιο συνομιλίας</b> χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_color_mode_changed_notice": "Επανεκκινήστε το OnionShare για εφαρμοστεί το νέο χρώμα.",
|
||||
"history_receive_read_message_button": "Ανάγνωση μηνύματος",
|
||||
"mode_settings_receive_webhook_url_checkbox": "Χρήση ειδοποίησης webhook",
|
||||
@ -289,5 +289,25 @@
|
||||
"gui_status_indicator_chat_started": "Σε συνομιλία",
|
||||
"gui_status_indicator_chat_scheduled": "Δρομολόγηση…",
|
||||
"gui_status_indicator_chat_working": "Εκκίνηση…",
|
||||
"gui_status_indicator_chat_stopped": "Έτοιμο για συνομιλία"
|
||||
"gui_status_indicator_chat_stopped": "Έτοιμο για συνομιλία",
|
||||
"gui_copied_client_auth_title": "Το ιδιωτικό κλειδί αντιγράφηκε",
|
||||
"gui_qr_label_url_title": "Διεύθυνση OnionShare",
|
||||
"gui_reveal": "Εμφάνιση",
|
||||
"gui_hide": "Απόκρυψη",
|
||||
"gui_share_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>κατεβάσει</b> τα αρχεία σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_website_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί <b>να επισκεφθεί</b> την ιστοσελίδα σας χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_chat_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>συμμετέχει στο δωμάτιο συνομιλίας</b> χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_url_instructions_public_mode": "Στείλτε την παρακάτω διεύθυνση OnionShare:",
|
||||
"gui_settings_theme_label": "Θέμα",
|
||||
"gui_copy_client_auth": "Αντιγραφή ιδιωτικού κλειδιού",
|
||||
"gui_copied_client_auth": "Το ιδιωτικό κλειδί αντιγράφηκε στο πρόχειρο",
|
||||
"gui_qr_label_auth_string_title": "Ιδιωτικό κλειδί",
|
||||
"gui_please_wait_no_button": "Εκκίνηση…",
|
||||
"gui_server_doesnt_support_stealth": "Αυτή η έκδοση Tor, δεν υποστηρίζει το stealth (πιστοποίηση πελάτη). Παρακαλούμε δοκιμάστε με μια νεότερη έκδοση του Tor ή χρησιμοποιήστε τη λειτουργία 'δημόσιο' αν δεν χρειάζεται να είναι ιδιωτική.",
|
||||
"gui_receive_url_public_description": "<b>Οποιοσδήποτε</b> με αυτή τη διεύθυνση OnionShare μπορεί να <b>ανεβάσει</b> αρχεία στον υπολογιστή σας, χρησιμοποιώντας το <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_settings_theme_auto": "Αυτόματο",
|
||||
"gui_settings_theme_dark": "Σκοτεινό",
|
||||
"gui_url_instructions": "Αρχικά, στείλτε την παρακάτω διεύθυνση OnionShare:",
|
||||
"gui_settings_theme_light": "Φωτεινό",
|
||||
"gui_client_auth_instructions": "Στη συνέχεια, στείλτε το ιδιωτικό κλειδί για πρόσβαση στην υπηρεσία OnionShare:"
|
||||
}
|
||||
|
@ -207,7 +207,8 @@
|
||||
"mode_settings_receive_disable_text_checkbox": "Disable submitting text",
|
||||
"mode_settings_receive_disable_files_checkbox": "Disable uploading files",
|
||||
"mode_settings_receive_webhook_url_checkbox": "Use notification webhook",
|
||||
"mode_settings_website_disable_csp_checkbox": "Don't send Content Security Policy header (allows your website to use third-party resources)",
|
||||
"mode_settings_website_disable_csp_checkbox": "Don't send default Content Security Policy header (allows your website to use third-party resources)",
|
||||
"mode_settings_website_custom_csp_checkbox": "Send a custom Content Security Policy header",
|
||||
"gui_all_modes_transfer_finished_range": "Transferred {} - {}",
|
||||
"gui_all_modes_transfer_finished": "Transferred {}",
|
||||
"gui_all_modes_transfer_canceled_range": "Canceled {} - {}",
|
||||
@ -236,4 +237,4 @@
|
||||
"moat_captcha_error": "The solution is not correct. Please try again.",
|
||||
"moat_solution_empty_error": "You must enter the characters from the image",
|
||||
"mode_tor_not_connected_label": "OnionShare is not connected to the Tor network"
|
||||
}
|
||||
}
|
||||
|
@ -41,8 +41,8 @@
|
||||
"gui_settings_connection_type_bundled_option": "Usa la versión de Tor incorporada en OnionShare",
|
||||
"gui_settings_connection_type_automatic_option": "Intentar la configuración automática con el Navegador Tor",
|
||||
"gui_settings_connection_type_test_button": "Probar la conexión a Tor",
|
||||
"gui_settings_tor_bridges": "Soporte para puentes Tor",
|
||||
"gui_settings_tor_bridges_invalid": "No funciona ninguno de los puentes agregados.\nVuelve a comprobarlos o añade otros.",
|
||||
"gui_settings_tor_bridges": "¿Conectar usando un puente Tor?",
|
||||
"gui_settings_tor_bridges_invalid": "No funciona ninguno de los puentes que agregaste. Vuelve a comprobarlos o añade otros.",
|
||||
"settings_saved": "Ajustes guardados en {}",
|
||||
"give_this_url_receive": "Dele esta dirección al remitente:",
|
||||
"give_this_url_receive_stealth": "Entrega esta dirección y HidServAuth al remitente:",
|
||||
@ -143,7 +143,7 @@
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Usar transportes conectables obfs4 incorporados (requiere obfs4proxy)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Usar transportes conectables incorporados meek_lite (Azure)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Usar transportes conectables meek_lite (Azure) incorporados (requiere obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Advertencia: Los puentes meek_lite son muy costosos de correr para el Proyecto Tor.<br><br>Utilízalos solo si no puedes conectarte a Tor directamente, a través de transportes obfs4 u otros puentes normales.",
|
||||
"gui_settings_meek_lite_expensive_warning": "Advertencia: Los puentes meek-azure son muy costosos de mantener para el Proyecto Tor.<br><br>Utilízalos solo si no puedes conectarte a Tor directamente, a través de transportes obfs4 u otros puentes normales.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Usar puentes personalizados",
|
||||
"gui_settings_tor_bridges_custom_label": "Puedes obtener puentes en <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_button_save": "Guardar",
|
||||
@ -177,7 +177,7 @@
|
||||
"gui_upload_finished": "Subido {}",
|
||||
"gui_download_in_progress": "Descarga iniciada {}",
|
||||
"gui_open_folder_error_nautilus": "No se puede abrir la carpeta porque nautilus no está disponible. El archivo está aquí: {}",
|
||||
"gui_settings_language_label": "Idioma preferido",
|
||||
"gui_settings_language_label": "Idioma",
|
||||
"gui_settings_language_changed_notice": "Reinicia OnionShare para que se aplique el idioma nuevo.",
|
||||
"gui_upload_finished_range": "Cargado {} a {}",
|
||||
"timeout_upload_still_running": "Esperando a que se complete la subida",
|
||||
@ -265,7 +265,7 @@
|
||||
"gui_new_tab_tooltip": "Abrir una pestaña nueva",
|
||||
"gui_new_tab": "Nueva pestaña",
|
||||
"gui_new_tab_share_description": "Elige los archivos de tu ordenador para enviarlos a otra persona. La persona o personas a las que quieras enviar los archivos tendrán que usar el Tor Browser para descargarlos de ti.",
|
||||
"mode_settings_website_disable_csp_checkbox": "No enviar encabezado de Política de Seguridad de Contenido (permite que tu sitio web utilice recursos de terceros)",
|
||||
"mode_settings_website_disable_csp_checkbox": "No enviar encabezado predeterminado de Política de Seguridad de Contenido (permite que tu sitio web utilice recursos de terceros)",
|
||||
"mode_settings_receive_data_dir_browse_button": "Navegar",
|
||||
"mode_settings_receive_data_dir_label": "Guardar archivos en",
|
||||
"mode_settings_share_autostop_sharing_checkbox": "Dejar de compartir después de haber enviado archivos (desmarcar para permitir la descarga de archivos individuales)",
|
||||
@ -321,5 +321,30 @@
|
||||
"gui_settings_theme_dark": "Oscuro",
|
||||
"gui_settings_theme_light": "Claro",
|
||||
"gui_settings_theme_auto": "Automático",
|
||||
"gui_url_instructions_public_mode": "Envíe la siguiente dirección de OnionShare:"
|
||||
"gui_url_instructions_public_mode": "Envíe la siguiente dirección de OnionShare:",
|
||||
"gui_dragdrop_sandbox_flatpak": "Para hacer que la zona de prueba de Flatpak sea más segura, arrastrar y colocar no es soportado. En vez, usa los botones Agregar Archivos y Agregar Carpeta para navegar entre archivos.",
|
||||
"gui_tor_settings_window_title": "Configuraciones de Tor",
|
||||
"gui_settings_controller_extras_label": "Configuraciones de Tor",
|
||||
"gui_settings_tor_bridges_label": "Los puentes te ayudan a acceder a la red Tor en lugares donde Tor está bloqueado. Dependiendo de dónde estés, un puente podría funcionar mejor que otro.",
|
||||
"gui_settings_bridge_use_checkbox": "Usar un puente",
|
||||
"gui_settings_bridge_radio_builtin": "Seleccionar un puente incorporado",
|
||||
"gui_settings_bridge_none_radio_option": "No usar un puente",
|
||||
"gui_settings_bridge_moat_radio_option": "Solicita un puente desde torproject.org",
|
||||
"gui_settings_bridge_moat_button": "Solicitar un Nuevo Puente",
|
||||
"gui_settings_bridge_custom_radio_option": "Provee un puente del que te enteraste a través de una fuente confiable",
|
||||
"gui_settings_bridge_custom_placeholder": "tipea dirección:puerto (una por línea)",
|
||||
"gui_settings_moat_bridges_invalid": "Aún no has solicitado un puente desde torproject.org.",
|
||||
"gui_settings_stop_active_tabs_label": "Estos son servicios ejecutándose en algunas de tus pestañas.\nDebes detenerlos a todos para cambiar tus configuraciones de Tor.",
|
||||
"gui_settings_version_label": "Estás usando OnionShare {}",
|
||||
"gui_settings_help_label": "¿Necesitas ayuda? Mira <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
|
||||
"mode_settings_website_custom_csp_checkbox": "Enviar un encabezado personaizado de Política de Seguridad de Contenido",
|
||||
"moat_contact_label": "Contactando BridgeDB...",
|
||||
"moat_captcha_label": "Resuelve el CAPTCHA para solicitar un puente.",
|
||||
"moat_captcha_placeholder": "Ingresa los caracteres en la imagen",
|
||||
"moat_captcha_submit": "Enviar",
|
||||
"moat_captcha_reload": "Recargar",
|
||||
"moat_bridgedb_error": "Error contactando BridgeDB.",
|
||||
"moat_captcha_error": "La solución no es correcta. Por favor, inténtalo de nuevo.",
|
||||
"moat_solution_empty_error": "Debes ingresar los caracteres en la imagen",
|
||||
"mode_tor_not_connected_label": "OnionShare no está conectado a la red Tor"
|
||||
}
|
||||
|
@ -104,8 +104,8 @@
|
||||
"gui_tor_connection_lost": "Vous êtes déconnecté de Tor.",
|
||||
"share_via_onionshare": "Partager avec OnionShare",
|
||||
"gui_save_private_key_checkbox": "Utiliser une adresse persistante",
|
||||
"gui_share_url_description": "<b>Quiconque</b> possède cette adresse OnionShare peut <b>télécharger</b> vos fichiers en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Quiconque</b> possède cette adresse OnionShare peut <b>téléverser</b> des fichiers vers votre ordinateur en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_share_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et cette clé privée peut <b>télécharger</b> vos fichiers en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et de cette clé privée peut <b>téléverser</b> des fichiers vers votre ordinateur en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_url_label_persistent": "Ce partage ne s’arrêtera pas automatiquement.<br><br>Tout partage subséquent réutilisera l’adresse. (Pour des adresses qui ne peuvent être utilisées qu’une fois, désactivez « Utiliser une adresse persistante » dans les paramètres.)",
|
||||
"gui_url_label_stay_open": "Ce partage ne s’arrêtera pas automatiquement.",
|
||||
"gui_url_label_onetime": "Ce partage s’arrêtera une fois que le premier téléchargement sera terminé.",
|
||||
@ -221,7 +221,7 @@
|
||||
"hours_first_letter": "h",
|
||||
"minutes_first_letter": "min",
|
||||
"seconds_first_letter": "s",
|
||||
"gui_website_url_description": "<b>Quiconque</b> aura cette adresse OnionShare pourra <b>visiter</b> votre site Web en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_website_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et de cette clé privée peut <b>visiter</b> votre site Web en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"systray_site_loaded_title": "Le site Web a été chargé",
|
||||
"systray_site_loaded_message": "Le site Web OnionShare a été chargé",
|
||||
"systray_website_started_title": "Début du partage du site Web",
|
||||
@ -252,7 +252,7 @@
|
||||
"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_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_public_checkbox": "Ceci est un service OnionShare public (sans clé privée)",
|
||||
"mode_settings_persistent_checkbox": "Enregistrer cet onglet et l’ouvrir automatiquement quand j’ouvre OnionShare",
|
||||
"mode_settings_advanced_toggle_hide": "Cacher les paramètres avancés",
|
||||
"mode_settings_advanced_toggle_show": "Afficher les paramètres avancés",
|
||||
@ -283,7 +283,7 @@
|
||||
"gui_main_page_website_button": "Lancer l’hébergement",
|
||||
"gui_main_page_receive_button": "Lancer la réception",
|
||||
"gui_main_page_share_button": "Lancer le partage",
|
||||
"gui_chat_url_description": "Cette adresse OnionShare permet à <b>n’importe qui</b> de <b>se joindre à ce salon de discussion</b> avec le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_chat_url_description": "<b>Quiconque</b> disposant de cette adresse OnionShare et de cette clé privée peut <b>se joindre à ce salon de discussion</b> avec le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"error_port_not_available": "Le port OnionShare n’est pas accessible",
|
||||
"gui_rendezvous_cleanup_quit_early": "Fermer avant",
|
||||
"gui_rendezvous_cleanup": "En attente de la fermeture des circuits Tor pour être certain que vos fichiers ont été transférés avec succès.\n\nCela pourrait prendre quelques minutes.",
|
||||
@ -296,5 +296,25 @@
|
||||
"gui_status_indicator_chat_started": "En conversation",
|
||||
"gui_status_indicator_chat_scheduled": "Planifié…",
|
||||
"gui_status_indicator_chat_working": "Démarrage…",
|
||||
"gui_status_indicator_chat_stopped": "Prêt à dialoguer"
|
||||
"gui_status_indicator_chat_stopped": "Prêt à dialoguer",
|
||||
"gui_copied_client_auth_title": "Clé privée copiée",
|
||||
"gui_please_wait_no_button": "Démarrage…",
|
||||
"gui_copied_client_auth": "Clé privée copiée dans le presse-papiers",
|
||||
"gui_qr_label_url_title": "Adresse OnionShare",
|
||||
"gui_hide": "Cacher",
|
||||
"gui_qr_label_auth_string_title": "Clé privée",
|
||||
"gui_copy_client_auth": "Copier la clé privée",
|
||||
"gui_share_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>télécharger</b> vos fichiers en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_url_instructions": "Tout d'abord, envoyez l'adresse OnionShare ci-dessous :",
|
||||
"gui_settings_theme_light": "Clair",
|
||||
"gui_reveal": "Montrer",
|
||||
"gui_chat_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>se joindre à ce salon de discussion</b> en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_url_instructions_public_mode": "Envoyez l'adresse OnionShare ci-dessous :",
|
||||
"gui_settings_theme_label": "Thème",
|
||||
"gui_settings_theme_auto": "Automatique",
|
||||
"gui_settings_theme_dark": "Sombre",
|
||||
"gui_website_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>visiter</b> votre site Web en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_server_doesnt_support_stealth": "Désolé, cette version de Tor ne prend pas en charge la fonctionnalité \"stealth\" (le client d'authentification). Veuillez essayer avec une version plus récente de Tor, ou utilisez le mode 'public' s'il n'a pas besoin d'être privé.",
|
||||
"gui_receive_url_public_description": "<b>Quiconque</b> disposant de cette adresse OnionShare peut <b>téléverser</b> des fichiers vers votre ordinateur en utilisant le <b>Navigateur Tor</b> : <img src='{}' />",
|
||||
"gui_client_auth_instructions": "Ensuite, envoyez la clé privée pour autoriser l'accès à votre service OnionShare :"
|
||||
}
|
||||
|
@ -51,16 +51,16 @@
|
||||
"gui_settings_authenticate_no_auth_option": "Sen autenticación, ou autenticación por cookie",
|
||||
"gui_settings_authenticate_password_option": "Contrasinal",
|
||||
"gui_settings_password_label": "Contrasinal",
|
||||
"gui_settings_tor_bridges": "Soporte para ponte Tor",
|
||||
"gui_settings_tor_bridges": "Conectar usando unha ponte Tor?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "Non usar pontes",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Utilizar transporte engadido obfs4 incluído",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Utilizar transporte engadido obfs4 (require obfs4proxy) incluído",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Usar transporte engadido meek_lite (Azure) incluído",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Usar transporte engadido meek_lite (Azure) incluído (require obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Aviso: Ó Tor Project cóstalle moito executar pontes meek_lite.<br><br>Utilízao só se non podes conectar directamente con Tor, vía transporte obfs4 ou outras pontes habituais.",
|
||||
"gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure requiren moitos recursos do Proxecto Tor.<br><br>Utilízao só se non podes conectar directamente con Tor, vía transporte obfs4 ou outras pontes habituais.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Usar pontes personalizadas",
|
||||
"gui_settings_tor_bridges_custom_label": "Podes obter pontes en <a href=\"https://bridges.torproject.org/options\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_tor_bridges_invalid": "Ningunha das pontes engadidas funciona\nCompróbaas ou engade outras.",
|
||||
"gui_settings_tor_bridges_invalid": "Non funciona ningunha das pontes engadidas. Compróbaas ou engade outras.",
|
||||
"gui_settings_button_save": "Gardar",
|
||||
"gui_settings_button_cancel": "Cancelar",
|
||||
"gui_settings_button_help": "Axuda",
|
||||
@ -105,7 +105,7 @@
|
||||
"error_cannot_create_data_dir": "Non se puido crear o cartafol de datos OnionShare: {}",
|
||||
"gui_receive_mode_warning": "O modo Recepción permite que outras poidan subir ficheiros á túa computadora.<br><br><b>Potencialmente algúns ficheiros poderían tomar control sobre a túa computadora ó abrilos. Abre só elementos que recibas de xente de confianza, ou se realmente sabes o que fas.</b>",
|
||||
"gui_open_folder_error": "Fallou a apertura do cartafol con xdg-open. O ficheiro está aquí: {}",
|
||||
"gui_settings_language_label": "Idioma preferido",
|
||||
"gui_settings_language_label": "Idioma",
|
||||
"gui_settings_language_changed_notice": "Reinicia OnionShare para utilizar o idioma seleccionado.",
|
||||
"systray_menu_exit": "Saír",
|
||||
"systray_page_loaded_title": "Páxina cargada",
|
||||
@ -168,7 +168,7 @@
|
||||
"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",
|
||||
"mode_settings_website_disable_csp_checkbox": "Non enviar cabeceira Content Security Policy (permite ó teu sitio web usar recursos de terceiros)",
|
||||
"mode_settings_website_disable_csp_checkbox": "Non enviar cabeceira Content Security Policy (isto permite ao teu sitio web usar recursos de terceiros)",
|
||||
"gui_all_modes_transfer_finished_range": "Transferido {} - {}",
|
||||
"gui_all_modes_transfer_finished": "Transferido {}",
|
||||
"gui_all_modes_transfer_canceled_range": "Cancelado {} - {}",
|
||||
@ -216,5 +216,30 @@
|
||||
"gui_qr_label_url_title": "Enderezo OnionShare",
|
||||
"gui_copied_client_auth": "Chave privada copiada ao portapapeis",
|
||||
"gui_copied_client_auth_title": "Copiouse a chave privada",
|
||||
"gui_copy_client_auth": "Copiar Chave privada"
|
||||
"gui_copy_client_auth": "Copiar Chave privada",
|
||||
"gui_tor_settings_window_title": "Axustes Tor",
|
||||
"gui_settings_controller_extras_label": "Axustes Tor",
|
||||
"gui_settings_bridge_use_checkbox": "Usar unha ponte",
|
||||
"gui_settings_bridge_radio_builtin": "Elixe unha ponte prestablecida",
|
||||
"gui_settings_bridge_none_radio_option": "Non usar unha ponte",
|
||||
"gui_settings_bridge_moat_radio_option": "Solicitar unha ponte a torproject.org",
|
||||
"gui_settings_bridge_custom_radio_option": "Proporcionar unha ponte que coñeces e é da túa confianza",
|
||||
"gui_settings_bridge_custom_placeholder": "escribe enderezo:porto (un por liña)",
|
||||
"gui_settings_moat_bridges_invalid": "Aínda non solicitaches unha ponte a torproject.org",
|
||||
"gui_settings_version_label": "Estás utilizando OnionShare {}",
|
||||
"gui_settings_help_label": "Precisas axuda? Le <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
|
||||
"moat_captcha_label": "Completa o CAPTCHA para solicitar unha ponte.",
|
||||
"moat_captcha_placeholder": "Escribe os caracteres da imaxe",
|
||||
"moat_captcha_submit": "Enviar",
|
||||
"moat_captcha_reload": "Recargar",
|
||||
"moat_bridgedb_error": "Fallou a conexión a BridgeDB.",
|
||||
"moat_captcha_error": "A solución non é correcta. Inténtao outra vez.",
|
||||
"moat_solution_empty_error": "Debes escribir os caracteres que aparecen na imaxe",
|
||||
"mode_tor_not_connected_label": "OnionShare non está conectado á rede Tor",
|
||||
"gui_dragdrop_sandbox_flatpak": "Para facer aínda máis segura a instancia Flatpak, non hai soporte para arrastrar e soltar. Usa o botón Engadir Ficheiros e Engadir Cartafol para buscar ficheiros.",
|
||||
"gui_settings_bridge_moat_button": "Solicitar Nova Ponte",
|
||||
"gui_settings_stop_active_tabs_label": "Hai servizos en execución nalgunha das túas lapelas.\nDebes deter tódolos servizo para cambiar os axustes Tor.",
|
||||
"mode_settings_website_custom_csp_checkbox": "Envía cabeceira Content Security Policy personalizada",
|
||||
"gui_settings_tor_bridges_label": "As Pontes axúdanche a acceder á Rede Tor en lugares onde Tor está bloqueada. Dependendo de onde estés unha ponte podería funcionar mellor que outras.",
|
||||
"moat_contact_label": "Contactando BridgeDB..."
|
||||
}
|
||||
|
@ -274,5 +274,7 @@
|
||||
"gui_status_indicator_chat_started": "Mengobrol",
|
||||
"gui_status_indicator_chat_scheduled": "Menjadwalkan…",
|
||||
"gui_status_indicator_chat_working": "Memulai…",
|
||||
"gui_status_indicator_chat_stopped": "Siap untuk mengobrol"
|
||||
"gui_status_indicator_chat_stopped": "Siap untuk mengobrol",
|
||||
"gui_copied_client_auth_title": "Kunci Pribadi Disalin",
|
||||
"gui_copy_client_auth": "Salin Kunci Pribadi"
|
||||
}
|
||||
|
@ -86,16 +86,16 @@
|
||||
"gui_settings_authenticate_no_auth_option": "Engin auðkenning eða auðkenning með vefköku",
|
||||
"gui_settings_authenticate_password_option": "Lykilorð",
|
||||
"gui_settings_password_label": "Lykilorð",
|
||||
"gui_settings_tor_bridges": "Stuðningur við Tor-brýr",
|
||||
"gui_settings_tor_bridges": "Tengjast með Tor-brú?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "Ekki nota brýr",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Nota innbyggðar obfs4 'pluggable transport' tengileiðir",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Nota innbyggðar obfs4 'pluggable transport' tengileiðir (þarfnast obfs4proxy)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Nota innbyggðar meek_lite (Azure) 'pluggable transport' tengileiðir",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Nota innbyggðar meek_lite (Azure) 'pluggable transport' tengileiðir (þarfnast obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Aðvörun: Að reka meek_lite brýrnar er kostnaðarsamt fyrir Tor-verkefnið.<br><br>Ekki nota þær nema þér takist ekki að tengjast beint við Tor, með obfs4 tengileið, eða öðrum venjulegum brúm.",
|
||||
"gui_settings_meek_lite_expensive_warning": "Aðvörun: Að reka meek_azure brýrnar er kostnaðarsamt fyrir Tor-verkefnið.<br><br>Ekki nota þær nema þér takist ekki að tengjast beint við Tor, með obfs4 tengileið, eða öðrum venjulegum brúm.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Nota sérsniðnar brýr",
|
||||
"gui_settings_tor_bridges_custom_label": "Þú getur náð í brýr frá <a href=\"https://bridges.torproject.org/options?lang=is\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_tor_bridges_invalid": "Engar af brúnum sem þú bættir við virka.\nYfirfarðu þær eða bættu öðrum við.",
|
||||
"gui_settings_tor_bridges_invalid": "Engar af brúnum sem þú bættir við virka. Yfirfarðu þær eða bættu öðrum við.",
|
||||
"gui_settings_button_save": "Vista",
|
||||
"gui_settings_button_cancel": "Hætta við",
|
||||
"gui_settings_button_help": "Hjálp",
|
||||
@ -173,7 +173,7 @@
|
||||
"gui_upload_finished": "",
|
||||
"gui_download_in_progress": "",
|
||||
"gui_open_folder_error_nautilus": "Get ekki opnað möppu því nautilus er ekki til taks. Skráin er hér: {}",
|
||||
"gui_settings_language_label": "Umbeðið tungumál",
|
||||
"gui_settings_language_label": "Tungumál",
|
||||
"gui_settings_language_changed_notice": "Þú þarft að endurræsa OnionShare til að nýtt tungumál taki gildi.",
|
||||
"gui_add_files": "Bæta við skrám",
|
||||
"gui_add_folder": "Bæta við möppu",
|
||||
@ -234,7 +234,7 @@
|
||||
"gui_close_tab_warning_persistent_description": "Þessi flipi er viðvarandi. Ef þú lokar honum muntu tapa onion-vistfanginu sem hann er að nota. Ertu viss að þú viljir loka honum?",
|
||||
"gui_quit_warning_description": "Deiling er virk í sumum flipanna þinna. Ef þú hættir núna, lokast allir fliparnir. Ertu viss um að þú viljir hætta?",
|
||||
"mode_settings_share_autostop_sharing_checkbox": "Hætta að deila eftir að skrár hafa verið sendar (taka merkið úr reitnum til að leyfa niðurhal á stökum skrám)",
|
||||
"mode_settings_website_disable_csp_checkbox": "Gera haus fyrir öryggisstefnu efnis (Content Security Policy) óvirkan (gerir vefsvæðinu þínu kleift að nota tilföng frá utanaðkomandi aðilum)",
|
||||
"mode_settings_website_disable_csp_checkbox": "Gera sjálfgefinn haus fyrir öryggisstefnu efnis (Content Security Policy) óvirkan (gerir vefsvæðinu þínu kleift að nota tilföng frá utanaðkomandi aðilum)",
|
||||
"gui_close_tab_warning_share_description": "Þú ert að senda skrár. Ertu viss um að þú viljir loka þessum flipa?",
|
||||
"mode_settings_legacy_checkbox": "Nota eldri gerð vistfangs (onion-þjónusta af útgáfu 2, ekki mælt með því)",
|
||||
"gui_close_tab_warning_website_description": "Þú ert að hýsa vefsvæði. Ertu viss um að þú viljir loka þessum flipa?",
|
||||
@ -309,5 +309,30 @@
|
||||
"gui_qr_label_url_title": "OnionShare-vistfang",
|
||||
"gui_copied_client_auth": "Einkalykill afritaður á klippispjald",
|
||||
"gui_copied_client_auth_title": "Afritaði einkalykil",
|
||||
"gui_copy_client_auth": "Afrita einkalykil"
|
||||
"gui_copy_client_auth": "Afrita einkalykil",
|
||||
"gui_tor_settings_window_title": "Stillingar Tor",
|
||||
"gui_settings_controller_extras_label": "Stillingar Tor",
|
||||
"gui_settings_bridge_use_checkbox": "Nota brú",
|
||||
"gui_settings_bridge_radio_builtin": "Velja innbyggða brú",
|
||||
"gui_settings_bridge_none_radio_option": "Ekki nota brú",
|
||||
"gui_settings_tor_bridges_label": "Brýr hjálpa þér við að tengjast Tor-netinu þar sem lokað er á Tor. Það fer eftir því hvar þú ert hvaða brýr virka best, ein brú getur virkað betur en aðrar.",
|
||||
"mode_settings_website_custom_csp_checkbox": "Senda sérsniðinn haus fyrir öryggisstefnu efnis (Content Security Policy)",
|
||||
"moat_captcha_submit": "Senda inn",
|
||||
"gui_settings_bridge_moat_radio_option": "Biðja um brú frá torproject.org",
|
||||
"gui_settings_bridge_moat_button": "Biðja um nýja brú",
|
||||
"gui_settings_bridge_custom_radio_option": "Settu inn brúna sem þú heyrðir um hjá áreiðanlegum aðila",
|
||||
"gui_settings_bridge_custom_placeholder": "skrifaðu vistfang:gátt (eitt á hverja línu)",
|
||||
"gui_settings_moat_bridges_invalid": "Þú hefur ekki ennþá beðið um brú frá torproject.org.",
|
||||
"gui_settings_stop_active_tabs_label": "Það eru þjónustur að keyra í sumum flipanna þinna.\nÞú þarft að stöðva allar þjónustur til að breyta Tor-stillingunum þínum.",
|
||||
"gui_settings_version_label": "Þú ert að nota OnionShare {}",
|
||||
"gui_settings_help_label": "Þarftu aðstoð? Skoðaðu <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
|
||||
"moat_captcha_error": "Þetta er ekki rétt, reyndu aftur.",
|
||||
"moat_contact_label": "Hef samband við brúagagnagrunn...",
|
||||
"moat_captcha_label": "Leystu CAPTCHA-þraut til að biðja um brýr.",
|
||||
"moat_captcha_placeholder": "Settu inn stafina úr myndinni",
|
||||
"moat_solution_empty_error": "Þú verður að setja inn stafina úr myndinni",
|
||||
"moat_captcha_reload": "Endurhlaða",
|
||||
"moat_bridgedb_error": "Villa við að tengjast brúagagnagrunni.",
|
||||
"mode_tor_not_connected_label": "OnionShare er ekki tengt við Tor-netið",
|
||||
"gui_dragdrop_sandbox_flatpak": "Til að auka öryggi Flatpak sandkassans, er draga/sleppa ekki stutt. Notaðu frekar hnappana til að bæta við skrám og möppum."
|
||||
}
|
||||
|
@ -89,16 +89,16 @@
|
||||
"gui_settings_authenticate_no_auth_option": "認証なし、それともクッキー認証",
|
||||
"gui_settings_authenticate_password_option": "パスワード",
|
||||
"gui_settings_password_label": "パスワード",
|
||||
"gui_settings_tor_bridges": "Torブリッジサポート",
|
||||
"gui_settings_tor_bridges": "Torブリッジを利用して接続しますか?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "ブリッジを使用しない",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "組み込みのobs4 pluggable transportを使用する",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "組み込みのobs4 pluggable transportを使用する(obsf4proxy必要)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "組み込みのmeek_lite (Azure) pluggable transportを使用する",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "組み込みのmeek_lite (Azure) pluggable transportを使用する(obsf4proxy必要)",
|
||||
"gui_settings_meek_lite_expensive_warning": "警告:meek_liteブリッジはTor Projectにとって維持費がかさむ<br><br>直接にTorと接続できない場合、あるいはobsf4ブリッジや他のブリッジが使用できない場合のみに使って下さい。",
|
||||
"gui_settings_meek_lite_expensive_warning": "警告:meek-azureブリッジはTor Projectにとって維持費がかさむ<br><br>直接にTorと接続できない場合、あるいはobsf4ブリッジや他のブリッジが使用できない場合のみに使って下さい。",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "カスタムブリッジを使用する",
|
||||
"gui_settings_tor_bridges_custom_label": "<a href=\"https://bridges.torproject.org/options?lang=ja\">https://bridges.torproject.org</a>からブリッジを入手できます",
|
||||
"gui_settings_tor_bridges_invalid": "全ての追加したブリッジは機能しませんでした。\n再確認して、あるいは他のを追加して下さい。",
|
||||
"gui_settings_tor_bridges_invalid": "全ての追加したブリッジは機能しませんでした。再確認して、あるいは他のを追加して下さい。",
|
||||
"gui_settings_button_save": "保存",
|
||||
"gui_settings_button_cancel": "キャンセル",
|
||||
"gui_settings_button_help": "ヘルプ",
|
||||
@ -177,7 +177,7 @@
|
||||
"gui_upload_finished": "{}をアップロードしました",
|
||||
"gui_download_in_progress": "ダウンロード開始しました {}",
|
||||
"gui_open_folder_error_nautilus": "nautilusを利用できないためフォルダーを開けません。ファイルはここに保存されました: {}",
|
||||
"gui_settings_language_label": "優先言語",
|
||||
"gui_settings_language_label": "言語",
|
||||
"gui_settings_language_changed_notice": "新しい言語設定を適用するにはOnionShareを再起動して下さい。",
|
||||
"error_cannot_create_data_dir": "OnionShareのデータフォルダーを作成できませんでした: {}",
|
||||
"receive_mode_data_dir": "受信されるファイルをこのフォルダーにあります: {}",
|
||||
@ -228,7 +228,7 @@
|
||||
"history_requests_tooltip": "{} ウェブリクエスト",
|
||||
"gui_settings_csp_header_disabled_option": "コンテンツセキュリティポリシーヘッダーを無効にする",
|
||||
"gui_settings_website_label": "ウェブサイト設定",
|
||||
"mode_settings_website_disable_csp_checkbox": "コンテンツセキュリティポリシーのヘッダーを送らない(ウェブサイトにはサードパーティーのリソースを可能にします)",
|
||||
"mode_settings_website_disable_csp_checkbox": "デフォルトのコンテンツセキュリティポリシーヘッダーを送らない(ウェブサイトにはサードパーティーのリソースを可能にします)",
|
||||
"mode_settings_receive_data_dir_browse_button": "閲覧",
|
||||
"mode_settings_receive_data_dir_label": "保存するファイルの位置",
|
||||
"mode_settings_share_autostop_sharing_checkbox": "ファイル送信が終了したら共有を停止(個別ファイルのダウンロードを許可するにはチェックマークを消す)",
|
||||
@ -305,5 +305,30 @@
|
||||
"gui_qr_label_url_title": "OnionShareアドレス",
|
||||
"gui_copied_client_auth": "秘密鍵をクリップボードにコピーしました",
|
||||
"gui_copied_client_auth_title": "秘密鍵をコピーしました",
|
||||
"gui_copy_client_auth": "秘密鍵をコピーする"
|
||||
"gui_copy_client_auth": "秘密鍵をコピーする",
|
||||
"gui_tor_settings_window_title": "Tor設定",
|
||||
"gui_settings_controller_extras_label": "Tor設定",
|
||||
"gui_settings_bridge_use_checkbox": "ブリッジを利用する",
|
||||
"gui_settings_bridge_radio_builtin": "組み込みブリッジを選択",
|
||||
"gui_settings_bridge_moat_radio_option": "torproject.orgからブリッジを要求する",
|
||||
"gui_settings_bridge_custom_radio_option": "信頼できる筋からもらったブリッジを提供する",
|
||||
"gui_settings_bridge_custom_placeholder": "「アドレス:ポート番号」を入力する(行内ごと1つ)",
|
||||
"gui_settings_moat_bridges_invalid": "まだtorproject.orgからブリッジを要求していません。",
|
||||
"gui_settings_version_label": "OnionShare {}を使っています",
|
||||
"gui_settings_help_label": "サポートが必要ですか? <a href='https://docs.onionshare.org'>docs.onionshare.org</a>を訪れて下さい",
|
||||
"mode_settings_website_custom_csp_checkbox": "カスタムなコンテンツセキュリティポリシーヘッダーを送る",
|
||||
"moat_contact_label": "BridgeDBと接続中…",
|
||||
"moat_captcha_label": "ブリッジを要求するのにCAPTCHAを解決して下さい。",
|
||||
"moat_captcha_placeholder": "イメージにある文字を入力して下さい",
|
||||
"moat_captcha_submit": "提出する",
|
||||
"moat_captcha_reload": "リロード",
|
||||
"moat_bridgedb_error": "BridgeDB接続にエラーが生じました。",
|
||||
"moat_captcha_error": "間違った解答です。もう一度試して下さい。",
|
||||
"moat_solution_empty_error": "イメージからの文字を入力しなければなりません",
|
||||
"mode_tor_not_connected_label": "OnionShareはTorネットワークと接続されていません",
|
||||
"gui_dragdrop_sandbox_flatpak": "Flatpakサンドボックスの安全性を確保するため、ドラッグ・アンド・ドロップは無効されました。ファイルを探すのに「ファイルを追加」、「フォルダを追加」ボタンを使って下さい。",
|
||||
"gui_settings_tor_bridges_label": "Torがブロックされる場合、ブリッジはTorネットワークにアクセスするのに役立ちます。一番効果的なブリッジは場所によります。",
|
||||
"gui_settings_bridge_none_radio_option": "ブリッジを利用しない",
|
||||
"gui_settings_bridge_moat_button": "新しいブリッジを要求する",
|
||||
"gui_settings_stop_active_tabs_label": "タブに実行しているサービスはまだあります。\nTor設定を変更するには、全てのサービスを停止する必要があります。"
|
||||
}
|
||||
|
@ -86,13 +86,13 @@
|
||||
"gui_settings_authenticate_no_auth_option": "Sem autenticação, ou autenticação por cookie",
|
||||
"gui_settings_authenticate_password_option": "Palavra-passe",
|
||||
"gui_settings_password_label": "Palavra-passe",
|
||||
"gui_settings_tor_bridges": "Suporte de ponte do Tor",
|
||||
"gui_settings_tor_bridges": "Ligar com Ponte Tor?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "Não utilizar pontes",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Utilizar transportes ligáveis obfs4 integrados",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Utilizar transportes ligáveis obfs4 integrados (requer obfs4proxy)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Utilizar transportes ligáveis meek_lite (Azure) integrados",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Utilizar transportes ligáveis meek_lite (Azure) integrados (requer obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek_lite são muito dispendiosas para o Projeto Tor.<br><br>Utilize-as apenas se não conseguir ligar diretamente ao Tor, via transportes obfs4, ou outras pontes normais.",
|
||||
"gui_settings_meek_lite_expensive_warning": "Aviso: as pontes meek-azure são muito dispendiosas para o Projeto Tor.<br><br>Utilize-as apenas se não conseguir ligar diretamente ao Tor, via transportes obfs4, ou outras pontes normais.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Utilizar pontes personalizadas",
|
||||
"gui_settings_tor_bridges_custom_label": "Pode obter pontes em <a href=\"https://bridges.torproject.org/options?lang=pt_PT\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_tor_bridges_invalid": "Nenhuma das pontes que adicionou funciona.\nVerifique se estão corretas ou adicione outras.",
|
||||
@ -306,5 +306,14 @@
|
||||
"gui_receive_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>enviar</b> ficheiros para o seu computador usando o <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_website_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>visitar</b> o seu site usando o <b>Tor Browser</b>: <img src = '{}' />",
|
||||
"gui_share_url_public_description": "<b>Qualquer pessoa</b> com este endereço OnionShare pode <b>descarregar</b> os seus ficheiros usando o <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_server_doesnt_support_stealth": "Desculpe, esta versão do Tor não suporta ocultação (stealth - autenticação do cliente). Por favor, tente uma versão mais recente do Tor ou utilize o modo 'público' se não houver a necessidade de privacidade."
|
||||
"gui_server_doesnt_support_stealth": "Desculpe, esta versão do Tor não suporta ocultação (stealth - autenticação do cliente). Por favor, tente uma versão mais recente do Tor ou utilize o modo 'público' se não houver a necessidade de privacidade.",
|
||||
"gui_dragdrop_sandbox_flatpak": "Para tornar a \"caixa de areia\" mais segura não é possível utilizar a funcionalidade de arrastar e largar, em alternativa procure os ficheiros utilizando os botões de Adicionar Ficheiro e Adicionar Diretório.",
|
||||
"gui_tor_settings_window_title": "Definições do Tor",
|
||||
"gui_settings_controller_extras_label": "Definições do Tor",
|
||||
"gui_settings_bridge_use_checkbox": "Utilizar uma ponte",
|
||||
"gui_settings_bridge_radio_builtin": "Selecionar uma ponte embutida",
|
||||
"gui_settings_bridge_none_radio_option": "Não utilizar uma ponte",
|
||||
"gui_settings_bridge_moat_radio_option": "Pedir uma ponte a torproject.org",
|
||||
"gui_settings_bridge_moat_button": "Pedir uma Ponte Nova",
|
||||
"gui_settings_tor_bridges_label": "As pontes ajudam no acesso a rede Tor em localizações onde esta está bloqueada, algumas pontes podem funcionar melhor do que outras dependendo da localização."
|
||||
}
|
||||
|
@ -62,16 +62,16 @@
|
||||
"gui_settings_authenticate_no_auth_option": "Bez autentifikacije ili autentifikacija kolačićem",
|
||||
"gui_settings_authenticate_password_option": "Lozinka",
|
||||
"gui_settings_password_label": "Lozinka",
|
||||
"gui_settings_tor_bridges": "Most podrška za Tor",
|
||||
"gui_settings_tor_bridges": "Povezivanje pomoću Tor mosta?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "Ne koristi mostove",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Koristi ugrađene obfs4 dodatne prenose",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Koristi ugrađene obfs4 dodatne prenose (potreban obfs4proksi)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Koristi ugrađene meek_lite (Azure) dodatne prenose",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Koristi ugrađene meek_lite (Azure) dodatne prenose (potreban obfs4proksi)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Upozorenje: meek_lite mostovi su vrlo skupi za Tor projekat da ih koristi.<br><br>Koristi ih samo ako ne možeš da se povežeš na Tor direktno, preko obfs4 transporta ili drugih redovnih mostova.",
|
||||
"gui_settings_meek_lite_expensive_warning": "Upozorenje: meek-azure mostovi su vrlo skupi za Tor projekat da ih koristi.<br><br>Koristi ih samo ako ne možeš da se povežeš na Tor direktno, preko obfs4 transporta ili drugih redovnih mostova.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Koristi prilagođene mostove",
|
||||
"gui_settings_tor_bridges_custom_label": "Mostove možeš dobiti od <a href=\"https://bridges.torproject.org/options?lang=sr_Latn\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_tor_bridges_invalid": "Nijedan od mostova koje si dodao ne funkcioniše.\nProveri ih ponovo ili dodaj druge.",
|
||||
"gui_settings_tor_bridges_invalid": "Nijedan od mostova koje ste dodali ne funkcioniše. Proverite ih ponovo ili dodajte druge.",
|
||||
"gui_settings_button_save": "Sačuvaj",
|
||||
"gui_settings_button_cancel": "Odustani",
|
||||
"gui_settings_button_help": "Pomoć",
|
||||
@ -110,9 +110,9 @@
|
||||
"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_save_private_key_checkbox": "Koristi trajnu adresu",
|
||||
"gui_share_url_description": "<b>Svako</b> sa ovom OnionShare sdresom može <b>preuzeti</b> tvoje datoteke koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_website_url_description": "<b>Svako</b> sa ovom OnionShare adresom može <b>posetiti</b> tvoju veb-stranicu koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Svako</b> sa ovom OnionShare adresom može <b>poslati</b> datoteke na tvoj računar koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_share_url_description": "<b>Svako</b> sa ovom OnionShare adresom i privatnim ključem može <b>preuzeti</b> tvoje datoteke koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_website_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom i privatnim ključem može <b>posetiti</b> tvoju web-stranicu koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_receive_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom i privatnim ključem može <b>poslati</b> datoteke na tvoj računar koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_url_label_persistent": "Ovo deljenje neće se automatski zaustaviti. <br> <br>Svako sledeće deljenje ponovo koristi istu adresu. (Da bi koristio jednokratnu adresu, isključi opciju \"koristi trajnu adresu\" u podešavanjima.)",
|
||||
"gui_url_label_stay_open": "Ovaj deljenje neće se automatski zaustaviti.",
|
||||
"gui_url_label_onetime": "Ovaj deljenje će se zaustaviti nakon prvog dovršenja.",
|
||||
@ -214,12 +214,50 @@
|
||||
"gui_new_tab": "Novi jezičak",
|
||||
"gui_color_mode_changed_notice": "Ponovo pokrenite OnionShare da bi primenili novi režim boja.",
|
||||
"gui_open_folder_error": "Neuspelo otvaranje fascikle sa xdg-open. Fajl je ovde: {}",
|
||||
"gui_chat_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može <b>pristupiti ovoj sobi za ćaskawe</b> koristeći <b>Tor pregledač</b>: <img src='{}' />",
|
||||
"gui_chat_url_description": "<b>Bilo ko</b> sa ovom OnionShare adresom i privatnim ključem može <b>pristupiti ovoj sobi za ćaskanje</b> koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_qr_code_dialog_title": "OnionShare QR kod",
|
||||
"gui_show_qr_code": "Prikaži QR kod",
|
||||
"gui_receive_flatpak_data_dir": "Pošto ste instalirali OnionShare koristeći Flatpak, morate čuvati fajlove u falcikli ~/OnionShare.",
|
||||
"gui_chat_stop_server": "Zaustavi server za ćaskanje",
|
||||
"gui_chat_start_server": "Pokreni server za ćaskanje",
|
||||
"gui_file_selection_remove_all": "Ukloni sve",
|
||||
"gui_remove": "Ukloni"
|
||||
"gui_remove": "Ukloni",
|
||||
"gui_copy_client_auth": "Kopiraj privatni ključ",
|
||||
"gui_copied_client_auth_title": "Privatni ključ je kopiran",
|
||||
"gui_copied_client_auth": "Privatni ključ je kopiran u clipboard",
|
||||
"gui_tor_settings_window_title": "Tor Podešenja",
|
||||
"gui_settings_controller_extras_label": "Tor Podešenja",
|
||||
"gui_settings_bridge_use_checkbox": "Koristite most",
|
||||
"gui_settings_bridge_radio_builtin": "Odaberite most",
|
||||
"gui_settings_bridge_none_radio_option": "Ne koristi most",
|
||||
"gui_settings_bridge_moat_radio_option": "Zatražite most od torproject.org",
|
||||
"gui_settings_bridge_moat_button": "Zatražite novi most",
|
||||
"gui_settings_bridge_custom_radio_option": "Obezbedite most za koji ste saznali iz pouzdanog izvora",
|
||||
"gui_settings_bridge_custom_placeholder": "upišite adresu:port (jedan po liniji)",
|
||||
"gui_settings_moat_bridges_invalid": "Još niste zatražili most od torproject.org.",
|
||||
"gui_settings_version_label": "Koristite OnionShare {}",
|
||||
"gui_share_url_public_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može <b>preuzeti</b> tvoje datoteke koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_website_url_public_description": "<b>Bilo ko</b> s ovom OnionShare adresom može <b>posetiti</b> tvoju web-stranicu koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_receive_url_public_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može <b>poslati</b> datoteke na tvoj računar koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_chat_url_public_description": "<b>Bilo ko</b> sa ovom OnionShare adresom može se <b>pridružiti ovoj sobi za ćaskanje</b> koristeći <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_url_instructions": "Prvo pošalji ovu dole OnionShare adresu:",
|
||||
"moat_contact_label": "Kontaktiranje BridgeDB-a...",
|
||||
"moat_captcha_label": "Rešite CAPTCHA da bi zatražili most.",
|
||||
"moat_captcha_placeholder": "Unesite znakove sa slike",
|
||||
"moat_captcha_submit": "Pošalji",
|
||||
"moat_captcha_reload": "Obnovi",
|
||||
"moat_bridgedb_error": "Greška u kontaktiranju BridgeDB.",
|
||||
"gui_please_wait_no_button": "Pokretanje …",
|
||||
"gui_qr_label_url_title": "OnionShare adresa",
|
||||
"gui_qr_label_auth_string_title": "Privatni ključ",
|
||||
"gui_reveal": "Otkrij",
|
||||
"gui_hide": "Sakrij",
|
||||
"gui_dragdrop_sandbox_flatpak": "Da bi Flatpak sandbox bio sigurniji, prevlačenje i ispuštanje nije podržano. Umesto toga koristite dugmad Dodaj datoteke i Dodaj direktorijume za pretraživanje datoteka.",
|
||||
"gui_settings_tor_bridges_label": "Mostovi vam pomažu da pristupite Tor mreži u područjima gde je Tor blokiran. U zavisnosti gde se nalazite, jedan most može raditi bolje od drugog.",
|
||||
"gui_settings_help_label": "Treba vam pomoć? Pogledajte <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
|
||||
"gui_server_doesnt_support_stealth": "Nažalost, ova Tor verzija ne podržava nevidljivost (autentifikacija klijenta). Pokušajte s novijom verzijom Tor-a ili koristite 'javni' način rada ako ne mora biti privatan.",
|
||||
"history_receive_read_message_button": "Pročitaj poruku",
|
||||
"moat_captcha_error": "Rješenje nije ispravno. Molimo pokušajte ponovo.",
|
||||
"moat_solution_empty_error": "Morate uneti znakove sa slike",
|
||||
"mode_tor_not_connected_label": "OnionShare nije povezan na Tor mrežu"
|
||||
}
|
||||
|
@ -75,16 +75,16 @@
|
||||
"gui_settings_authenticate_no_auth_option": "Kimlik doğrulama yok, veya çerez doğrulaması",
|
||||
"gui_settings_authenticate_password_option": "Parola",
|
||||
"gui_settings_password_label": "Parola",
|
||||
"gui_settings_tor_bridges": "Tor köprü desteği",
|
||||
"gui_settings_tor_bridges": "Tor köprüsü kullanarak bağlanılsın mı?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "Köprüler kullanılmasın",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Yerleşik obfs4 değiştirilebilir taşıyıcıları kullanılsın",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Yerleşik obfs4 değiştirilebilir taşıyıcıları kullanılsın (obfs4proxy gerektirir)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Yerleşik meek_lite (Azure) değiştirilebilir taşıyıcıları kullanılsın",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Yerleşik meek_lite (Azure) değiştirilebilir taşıyıcıları kullanılsın (obfs4proxy gerektirir)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Uyarı: meek_lit köprülerini çalıştırmak Tor Projesine pahalıya patlıyor.<br><br>Bu köprüleri yalnız Tor ile doğrudan ya da obfs4 ve diğer normal köprüler üzerinden bağlantı kuramıyorsanız kullanın.",
|
||||
"gui_settings_meek_lite_expensive_warning": "Uyarı: meek-azure köprülerini çalıştırmak Tor Projesine pahalıya patlıyor.<br><br>Bu köprüleri yalnızca Tor ile doğrudan veya obfs4 ve diğer normal köprüler üzerinden bağlantı kuramıyorsanız kullanın.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Özel köprüler kullanılsın",
|
||||
"gui_settings_tor_bridges_custom_label": "Köprüleri <a href=\"https://bridges.torproject.org/options?lang=tr\">https://bridges.torproject.org</a> adresinden alabilirsiniz",
|
||||
"gui_settings_tor_bridges_invalid": "Eklediğiniz köprülerin hiçbiri çalışmıyor.\nİki kez denetleyin ya da başka köprüler ekleyin.",
|
||||
"gui_settings_tor_bridges_invalid": "Eklediğiniz köprülerin hiçbiri çalışmıyor. İki kez denetleyin veya başka köprüler ekleyin.",
|
||||
"gui_settings_button_save": "Kaydet",
|
||||
"gui_settings_button_cancel": "İptal",
|
||||
"gui_settings_button_help": "Yardım",
|
||||
@ -149,7 +149,7 @@
|
||||
"gui_settings_data_dir_browse_button": "Göz at",
|
||||
"gui_settings_public_mode_checkbox": "Herkese açık kip",
|
||||
"gui_open_folder_error_nautilus": "Nautilus kullanılamadığından klasör açılamıyor. Dosya burada: {}",
|
||||
"gui_settings_language_label": "Arayüz dili",
|
||||
"gui_settings_language_label": "Dil",
|
||||
"gui_settings_language_changed_notice": "Dil değişikliğinin uygulanabilmesi için OnionShare uygulamasını yeniden başlatın.",
|
||||
"systray_menu_exit": "Çık",
|
||||
"systray_page_loaded_title": "Sayfa yüklendi",
|
||||
@ -199,7 +199,7 @@
|
||||
"history_requests_tooltip": "{} web isteği",
|
||||
"gui_settings_csp_header_disabled_option": "İçerik Güvenlik Politikası başlığını devre dışı bırak",
|
||||
"gui_settings_website_label": "Website ayarları",
|
||||
"mode_settings_website_disable_csp_checkbox": "İçerik güvenliği ilkesi başlığı gönderme (web sitenizin üçüncü taraf kaynaklarını kullanmasına izin verir)",
|
||||
"mode_settings_website_disable_csp_checkbox": "Öntanımlı İçerik Güvenliği İlkesi başlığı gönderme (web sitenizin üçüncü taraf kaynaklarını kullanmasına izin verir)",
|
||||
"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şım durdurulsun (dosyaların tek tek indirilmesine izin vermek için işareti kaldırın)",
|
||||
@ -279,5 +279,30 @@
|
||||
"gui_qr_label_url_title": "OnionShare adresi",
|
||||
"gui_copied_client_auth": "Kişisel anahtar panoya kopyalandı",
|
||||
"gui_copied_client_auth_title": "Kişisel anahtar kopyalandı",
|
||||
"gui_copy_client_auth": "Kişisel anahtarı kopyala"
|
||||
"gui_copy_client_auth": "Kişisel anahtarı kopyala",
|
||||
"gui_settings_bridge_moat_radio_option": "torproject.org'dan bir köprü talep et",
|
||||
"gui_settings_bridge_moat_button": "Yeni Bir Köprü Talep Et",
|
||||
"gui_settings_bridge_custom_placeholder": "adres:bağlantınoktası yazın (satır başına bir tane)",
|
||||
"gui_settings_moat_bridges_invalid": "Henüz torproject.org'dan bir köprü talep etmediniz.",
|
||||
"moat_contact_label": "BridgeDB ile iletişime geçiliyor...",
|
||||
"moat_captcha_error": "Çözüm doğru değil. Lütfen tekrar deneyin.",
|
||||
"moat_solution_empty_error": "Resimdeki karakterleri girmelisiniz",
|
||||
"mode_tor_not_connected_label": "OnionShare Tor ağına bağlı değil",
|
||||
"gui_settings_tor_bridges_label": "Köprüler, Tor'un engellendiği yerlerde Tor Ağına erişmenize yardımcı olur. Nerede olduğunuza bağlı olarak, bir köprü diğerinden daha iyi çalışabilir.",
|
||||
"gui_settings_bridge_use_checkbox": "Köprü kullan",
|
||||
"mode_settings_website_custom_csp_checkbox": "Özel bir İçerik Güvenliği İlkesi başlığı gönder",
|
||||
"gui_dragdrop_sandbox_flatpak": "Flatpak korumalı alanını daha güvenli hale getirmek için sürükle ve bırak desteklenmemektedir. Bunun yerine dosyalara göz atmak için Dosya Ekle ve Klasör Ekle düğmelerini kullanın.",
|
||||
"gui_tor_settings_window_title": "Tor Ayarları",
|
||||
"gui_settings_controller_extras_label": "Tor ayarları",
|
||||
"gui_settings_bridge_none_radio_option": "Köprü kullanma",
|
||||
"gui_settings_bridge_radio_builtin": "Yerleşik bir köprü seç",
|
||||
"gui_settings_version_label": "OnionShare {} kullanıyorsunuz",
|
||||
"gui_settings_bridge_custom_radio_option": "Güvenilir bir kaynaktan öğrendiğiniz bir köprü belirtin",
|
||||
"gui_settings_stop_active_tabs_label": "Bazı sekmelerinizde çalışan hizmetler var.\nTor ayarlarınızı değiştirmek için tüm hizmetleri durdurmalısınız.",
|
||||
"gui_settings_help_label": "Yardıma mı ihtiyacınız var? <a href='https://docs.onionshare.org'>docs.onionshare.org</a> adresine bakın",
|
||||
"moat_captcha_submit": "Gönder",
|
||||
"moat_captcha_reload": "Yeniden yükle",
|
||||
"moat_captcha_label": "Bir köprü talep etmek için CAPTCHA'yı çözün.",
|
||||
"moat_captcha_placeholder": "Resimdeki karakterleri girin",
|
||||
"moat_bridgedb_error": "BridgeDB ile bağlantı kurulurken hata oluştu."
|
||||
}
|
||||
|
@ -59,16 +59,16 @@
|
||||
"gui_settings_authenticate_no_auth_option": "Без автентифікації або автентифікація через cookie",
|
||||
"gui_settings_authenticate_password_option": "Пароль",
|
||||
"gui_settings_password_label": "Пароль",
|
||||
"gui_settings_tor_bridges": "Підтримка мосту Tor",
|
||||
"gui_settings_tor_bridges": "Під'єднатися за допомогою мосту Tor?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "Не застосовувати мости",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "Застосовувати вбудовані obfs4 під'єднувані транспорти",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "Застосовувати вбудовані obfs4 під'єднувані транспорти (вимагає obfs4proxy)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "Застосовувати вбудовані meek_lite (Azure) під'єднувані транспорти",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "Застосовувати вбудовані meek_lite (Azure) під'єднувані транспорти (вимагає obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "Увага: Мости meek_lite заважкі для Tor Project. <br> <br>Користуйтеся ними лише якщо не вдається з'єднатися з Tor безпосередньо, через obfs4 транспорти або інші звичайні мости.",
|
||||
"gui_settings_meek_lite_expensive_warning": "Увага: Мости meek-azure заважкі для роботи Tor Project. <br> <br>Користуйтеся ними лише якщо не вдається з'єднатися з Tor безпосередньо, через obfs4 транспорти або інші звичайні мости.",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "Застосовувати власні мости",
|
||||
"gui_settings_tor_bridges_custom_label": "Ви можете отримати мости з <a href=\"https://bridges.torproject.org/options?lang=uk\">https://bridges.torproject.org</a>",
|
||||
"gui_settings_tor_bridges_invalid": "Жоден з доданих мостів не працює.\nДвічі перевірте їх або додайте інші.",
|
||||
"gui_settings_tor_bridges_invalid": "Жоден з доданих мостів не працює. Ще раз перевірте їх або додайте інші.",
|
||||
"gui_settings_button_save": "Зберегти",
|
||||
"gui_settings_button_cancel": "Скасувати",
|
||||
"gui_settings_button_help": "Допомога",
|
||||
@ -134,7 +134,7 @@
|
||||
"gui_settings_data_dir_browse_button": "Огляд",
|
||||
"gui_settings_public_mode_checkbox": "Загальнодоступний режим",
|
||||
"gui_open_folder_error_nautilus": "Неможливо відкрити теку бо nautilus недоступний. Файл розташовано: {}",
|
||||
"gui_settings_language_label": "Бажана мова",
|
||||
"gui_settings_language_label": "Мова",
|
||||
"gui_settings_language_changed_notice": "Перезапустіть OnionShare для зміни мови.",
|
||||
"systray_menu_exit": "Вийти",
|
||||
"systray_page_loaded_title": "Сторінку Завантажено",
|
||||
@ -178,7 +178,7 @@
|
||||
"gui_close_tab_warning_website_description": "Ви маєте активний розміщений вебсайт. Ви впевнені, що хочете закрити цю вкладку?",
|
||||
"gui_new_tab_website_description": "Розмістіть статичний onion HTML-вебсайт на вашому комп'ютері.",
|
||||
"mode_settings_receive_data_dir_browse_button": "Вибрати",
|
||||
"mode_settings_website_disable_csp_checkbox": "Не надсилати заголовок політики безпеки вмісту (дозволяє вебсайту застосовувати сторонні ресурси)",
|
||||
"mode_settings_website_disable_csp_checkbox": "Не надсилати типовий заголовок Content Security Policy (дозволяє вебсайту використовувати сторонні ресурси)",
|
||||
"mode_settings_receive_data_dir_label": "Зберігати файли до",
|
||||
"mode_settings_share_autostop_sharing_checkbox": "Закрити доступ, коли файли надіслано (приберіть позначку, щоб дозволити завантаження окремих файлів)",
|
||||
"mode_settings_legacy_checkbox": "Користуватися застарілою адресою (служба onion v2, не рекомендовано)",
|
||||
@ -255,5 +255,30 @@
|
||||
"gui_website_url_public_description": "<b>Будь-хто</b>, за допомогою цієї адреси OnionShare, може <b>відвідати</b> ваш вебсайт через <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_receive_url_public_description": "<b>Будь-хто</b>, за допомогою цієї адреси OnionShare, може <b>вивантажити</b> файли на ваш комп'ютер через <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_share_url_public_description": "<b>Будь-хто</b>, за допомогою цієї адреси OnionShare, може <b>завантажити</b> ваші файли, через <b>Tor Browser</b>: <img src='{}' />",
|
||||
"gui_server_doesnt_support_stealth": "На жаль, ця версія Tor не підтримує стелс-режим (автентифікацію клієнта). Спробуйте за допомогою новішої версії Tor або скористайтеся загальнодоступним режимом, якщо він не повинен бути приватним."
|
||||
"gui_server_doesnt_support_stealth": "На жаль, ця версія Tor не підтримує стелс-режим (автентифікацію клієнта). Спробуйте за допомогою новішої версії Tor або скористайтеся загальнодоступним режимом, якщо він не повинен бути приватним.",
|
||||
"gui_tor_settings_window_title": "Налаштування Tor",
|
||||
"gui_settings_bridge_radio_builtin": "Вибрати вбудований міст",
|
||||
"gui_settings_bridge_none_radio_option": "Не використовувати міст",
|
||||
"gui_settings_stop_active_tabs_label": "На деяких ваших вкладках працюють служби.\nВи повинні зупинити всі служби, щоб змінити налаштування Tor.",
|
||||
"moat_captcha_label": "Розв'яжіть CAPTCHA для запиту мостів.",
|
||||
"moat_captcha_error": "Неправильний розв'язок. Повторіть спробу.",
|
||||
"gui_settings_bridge_use_checkbox": "Використовувати міст",
|
||||
"gui_settings_bridge_moat_radio_option": "Запит мосту на torproject.org",
|
||||
"gui_dragdrop_sandbox_flatpak": "Щоб пісочниця Flatpak була безпечнішою, перетягування не підтримується. Натомість скористайтеся кнопками Додати файли та Додати теку, щоб знайти файли.",
|
||||
"gui_settings_controller_extras_label": "Налаштування Tor",
|
||||
"gui_settings_tor_bridges_label": "Мости допомагають отримати доступ до мережі Tor у місцях, де Tor заблоковано. Залежно від того, де ви знаходитесь, один міст може працювати краще, ніж інший.",
|
||||
"gui_settings_bridge_moat_button": "Запит нового мосту",
|
||||
"gui_settings_bridge_custom_radio_option": "Укажіть міст, про який ви дізналися з надійного джерела",
|
||||
"gui_settings_bridge_custom_placeholder": "введіть адреса:порт (по одному на рядок)",
|
||||
"gui_settings_version_label": "Ви використовуєте OnionShare {}",
|
||||
"gui_settings_help_label": "Потрібна допомога? Перегляньте <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
|
||||
"gui_settings_moat_bridges_invalid": "Ви ще не запитували міст на torproject.org.",
|
||||
"moat_captcha_placeholder": "Введіть символи із зображення",
|
||||
"moat_captcha_submit": "Надіслати",
|
||||
"mode_settings_website_custom_csp_checkbox": "Надсилати власний заголовок Content Security Policy",
|
||||
"moat_contact_label": "Зв'язок з BridgeDB...",
|
||||
"moat_captcha_reload": "Перезавантажити",
|
||||
"mode_tor_not_connected_label": "OnionShare не під'єднано до мережі Tor",
|
||||
"moat_bridgedb_error": "Помилка з’єднання з BridgeDB.",
|
||||
"moat_solution_empty_error": "Ви повинні ввести символи з зображення"
|
||||
}
|
||||
|
@ -86,16 +86,16 @@
|
||||
"gui_settings_authenticate_no_auth_option": "无须认证,或者使用的是 cookie 认证",
|
||||
"gui_settings_authenticate_password_option": "密码",
|
||||
"gui_settings_password_label": "密码",
|
||||
"gui_settings_tor_bridges": "Tor 网桥支持",
|
||||
"gui_settings_tor_bridges": "使用 Tor 网桥连接?",
|
||||
"gui_settings_tor_bridges_no_bridges_radio_option": "不使用网桥",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option": "使用内置的 obfs4 pluggable transports",
|
||||
"gui_settings_tor_bridges_obfs4_radio_option_no_obfs4proxy": "使用内置的 obfs4 pluggable transports(需要 obfs4proxy)",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option": "使用内置的 meek_lite (Azure) pluggable transports",
|
||||
"gui_settings_tor_bridges_meek_lite_azure_radio_option_no_obfs4proxy": "使用内置的 meek_lite (Azure) pluggable transports(需要obfs4proxy)",
|
||||
"gui_settings_meek_lite_expensive_warning": "警告:meek_lite 网桥会对 Tor 的运行产生极大负担。<br><br>仅在无法直接连接至 Tor,通过 obfs4 transports 连接,或通过其他网桥连接时使用。",
|
||||
"gui_settings_meek_lite_expensive_warning": "警告:meek-azure 网桥会对 Tor 的运行产生极大负担。<br><br>仅在无法直接连接至 Tor,通过 obfs4 transports 连接,或通过其他网桥连接时使用。",
|
||||
"gui_settings_tor_bridges_custom_radio_option": "使用自定义网桥",
|
||||
"gui_settings_tor_bridges_custom_label": "您可以从 <a href=\"https://bridges.torproject.org/options?lang=zh_CN\">https://bridges.torproject.org</a> 获得网桥",
|
||||
"gui_settings_tor_bridges_invalid": "您所添加的网桥均无法工作。\n请再次检查或添加其它网桥。",
|
||||
"gui_settings_tor_bridges_invalid": "您所添加的网桥均无法工作。请再次检查或添加其它网桥。",
|
||||
"gui_settings_button_save": "保存",
|
||||
"gui_settings_button_cancel": "取消",
|
||||
"gui_settings_button_help": "帮助",
|
||||
@ -174,7 +174,7 @@
|
||||
"gui_upload_finished": "",
|
||||
"gui_download_in_progress": "",
|
||||
"gui_open_folder_error_nautilus": "无法打开文件夹,因为 nautilus 不可用。文件在这里:{}",
|
||||
"gui_settings_language_label": "首选语言",
|
||||
"gui_settings_language_label": "语言",
|
||||
"gui_settings_language_changed_notice": "重启 OnionShare 以使应用新的语言。",
|
||||
"gui_add_files": "添加文件",
|
||||
"gui_add_folder": "添加文件夹",
|
||||
@ -228,7 +228,7 @@
|
||||
"history_requests_tooltip": "{}个网络请求",
|
||||
"gui_settings_csp_header_disabled_option": "禁用内容安全策略标题",
|
||||
"gui_settings_website_label": "网站设置",
|
||||
"mode_settings_website_disable_csp_checkbox": "不发送内容安全政策(Content Security Policy) 头(允许您的网站使用第三方资源)",
|
||||
"mode_settings_website_disable_csp_checkbox": "不发送默认的内容安全政策(Content Security Policy) 头(允许您的网站使用第三方资源)",
|
||||
"mode_settings_receive_data_dir_browse_button": "浏览",
|
||||
"mode_settings_receive_data_dir_label": "保存文件到",
|
||||
"mode_settings_share_autostop_sharing_checkbox": "文件传送完后停止共享(取消选中可允许下载单个文件)",
|
||||
@ -307,5 +307,30 @@
|
||||
"gui_qr_label_url_title": "OnionShare 地址",
|
||||
"gui_copied_client_auth": "已复制私钥到剪贴板",
|
||||
"gui_copied_client_auth_title": "已复制私钥",
|
||||
"gui_copy_client_auth": "复制私钥"
|
||||
"gui_copy_client_auth": "复制私钥",
|
||||
"gui_settings_bridge_use_checkbox": "使用网桥",
|
||||
"gui_settings_bridge_radio_builtin": "选择内置网桥",
|
||||
"gui_settings_bridge_none_radio_option": "不使用网桥",
|
||||
"gui_settings_bridge_moat_button": "请求新网桥",
|
||||
"gui_settings_bridge_custom_placeholder": "输入地址:端口(每行一个)",
|
||||
"gui_settings_help_label": "需要帮助?参见 <a href='https://docs.onionshare.org'>docs.onionshare.org</a>",
|
||||
"mode_settings_website_custom_csp_checkbox": "发送自定义 CSP 标头",
|
||||
"moat_bridgedb_error": "联系 BridgeDB 时出错。",
|
||||
"moat_solution_empty_error": "你必须输入图像中的字符",
|
||||
"mode_tor_not_connected_label": "OnionShare 没有连接到 Tor 网络",
|
||||
"gui_dragdrop_sandbox_flatpak": "为了使 Flatpak 沙箱更安全,不支持拖放操作。请使用“添加文件”和“添加文件夹”按钮来浏览文件。",
|
||||
"gui_tor_settings_window_title": "Tor 设置",
|
||||
"gui_settings_controller_extras_label": "Tor 设置",
|
||||
"gui_settings_tor_bridges_label": "网桥帮助你在 Tor 被封锁的地方访问 Tor 网络。取决于你所在地方,一个网桥可能比另一个网桥更好用。",
|
||||
"gui_settings_bridge_custom_radio_option": "提供一座你从可信来源处了解到的网桥",
|
||||
"gui_settings_bridge_moat_radio_option": "从 torproject.org 请求网桥",
|
||||
"moat_captcha_error": "解答不正确。请再试一次。",
|
||||
"gui_settings_moat_bridges_invalid": "你尚未从 torproject.org 请求网桥。",
|
||||
"gui_settings_stop_active_tabs_label": "一些选项卡中有服务正在运行。\n你必须停止所有服务才能更改 Tor 设置。",
|
||||
"moat_contact_label": "正联系 BridgeDB...",
|
||||
"gui_settings_version_label": "你正在使用 OnionShare {}",
|
||||
"moat_captcha_label": "解决 CAPTCHA 来请求网桥。",
|
||||
"moat_captcha_reload": "重新加载",
|
||||
"moat_captcha_placeholder": "输入图片中字符",
|
||||
"moat_captcha_submit": "提交"
|
||||
}
|
||||
|
@ -246,7 +246,7 @@ class ShareMode(Mode):
|
||||
|
||||
def start_server_step3_custom(self):
|
||||
"""
|
||||
Step 3 in starting the server. Remove zip progess bar, and display large filesize
|
||||
Step 3 in starting the server. Remove zip progress bar, and display large filesize
|
||||
warning, if applicable.
|
||||
"""
|
||||
# Remove zip progress bar
|
||||
|
@ -49,6 +49,7 @@ class WebsiteMode(Mode):
|
||||
self.web = Web(self.common, True, self.settings, "website")
|
||||
|
||||
# Settings
|
||||
# Disable CSP option
|
||||
self.disable_csp_checkbox = QtWidgets.QCheckBox()
|
||||
self.disable_csp_checkbox.clicked.connect(self.disable_csp_checkbox_clicked)
|
||||
self.disable_csp_checkbox.setText(
|
||||
@ -63,6 +64,26 @@ class WebsiteMode(Mode):
|
||||
self.disable_csp_checkbox
|
||||
)
|
||||
|
||||
# Custom CSP option
|
||||
self.custom_csp_checkbox = QtWidgets.QCheckBox()
|
||||
self.custom_csp_checkbox.clicked.connect(self.custom_csp_checkbox_clicked)
|
||||
self.custom_csp_checkbox.setText(strings._("mode_settings_website_custom_csp_checkbox"))
|
||||
if self.settings.get("website", "custom_csp") and not self.settings.get("website", "disable_csp"):
|
||||
self.custom_csp_checkbox.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
self.custom_csp_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||
self.custom_csp = QtWidgets.QLineEdit()
|
||||
self.custom_csp.setPlaceholderText(
|
||||
"default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;"
|
||||
)
|
||||
self.custom_csp.editingFinished.connect(self.custom_csp_editing_finished)
|
||||
|
||||
custom_csp_layout = QtWidgets.QHBoxLayout()
|
||||
custom_csp_layout.setContentsMargins(0, 0, 0, 0)
|
||||
custom_csp_layout.addWidget(self.custom_csp_checkbox)
|
||||
custom_csp_layout.addWidget(self.custom_csp)
|
||||
self.mode_settings_widget.mode_specific_layout.addLayout(custom_csp_layout)
|
||||
|
||||
# File selection
|
||||
self.file_selection = FileSelection(
|
||||
self.common,
|
||||
@ -181,11 +202,42 @@ class WebsiteMode(Mode):
|
||||
|
||||
def disable_csp_checkbox_clicked(self):
|
||||
"""
|
||||
Save disable CSP setting to the tab settings
|
||||
Save disable CSP setting to the tab settings. Uncheck 'custom CSP'
|
||||
setting if disabling CSP altogether.
|
||||
"""
|
||||
self.settings.set(
|
||||
"website", "disable_csp", self.disable_csp_checkbox.isChecked()
|
||||
)
|
||||
if self.disable_csp_checkbox.isChecked():
|
||||
self.custom_csp_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||
self.custom_csp_checkbox.setEnabled(False)
|
||||
else:
|
||||
self.custom_csp_checkbox.setEnabled(True)
|
||||
|
||||
def custom_csp_checkbox_clicked(self):
|
||||
"""
|
||||
Uncheck 'disable CSP' setting if custom CSP is used.
|
||||
"""
|
||||
if self.custom_csp_checkbox.isChecked():
|
||||
self.disable_csp_checkbox.setCheckState(QtCore.Qt.Unchecked)
|
||||
self.disable_csp_checkbox.setEnabled(False)
|
||||
self.settings.set(
|
||||
"website", "custom_csp", self.custom_csp
|
||||
)
|
||||
else:
|
||||
self.disable_csp_checkbox.setEnabled(True)
|
||||
self.custom_csp.setText("")
|
||||
self.settings.set(
|
||||
"website", "custom_csp", None
|
||||
)
|
||||
|
||||
def custom_csp_editing_finished(self):
|
||||
if self.custom_csp.text().strip() == "":
|
||||
self.custom_csp.setText("")
|
||||
self.settings.set("website", "custom_csp", None)
|
||||
else:
|
||||
custom_csp = self.custom_csp.text()
|
||||
self.settings.set("website", "custom_csp", custom_csp)
|
||||
|
||||
def get_stop_server_autostop_timer_text(self):
|
||||
"""
|
||||
|
@ -660,9 +660,6 @@ class Tab(QtWidgets.QWidget):
|
||||
|
||||
# Close
|
||||
if self.close_dialog.clickedButton() == self.close_dialog.accept_button:
|
||||
self.common.log("Tab", "close_tab", "close, closing tab")
|
||||
self.get_mode().stop_server()
|
||||
self.get_mode().web.cleanup()
|
||||
return True
|
||||
# Cancel
|
||||
else:
|
||||
@ -671,8 +668,10 @@ class Tab(QtWidgets.QWidget):
|
||||
|
||||
def cleanup(self):
|
||||
self.common.log("Tab", "cleanup", f"tab_id={self.tab_id}")
|
||||
if self.get_mode() and self.get_mode().web_thread:
|
||||
self.get_mode().web.stop(self.get_mode().app.port)
|
||||
self.get_mode().web_thread.quit()
|
||||
self.get_mode().web_thread.wait()
|
||||
if self.get_mode():
|
||||
if self.get_mode().web_thread:
|
||||
self.get_mode().web.stop(self.get_mode().app.port)
|
||||
self.get_mode().web_thread.quit()
|
||||
self.get_mode().web_thread.wait()
|
||||
|
||||
self.get_mode().web.cleanup()
|
||||
|
@ -347,6 +347,7 @@ class TabWidget(QtWidgets.QTabWidget):
|
||||
self.common.log("TabWidget", "closing a service tab")
|
||||
if tab.close_tab():
|
||||
self.common.log("TabWidget", "user is okay with closing the tab")
|
||||
tab.cleanup()
|
||||
|
||||
# If the tab is persistent, delete the settings file from disk
|
||||
if tab.settings.get("persistent", "enabled"):
|
||||
|
@ -178,7 +178,7 @@ class GuiBaseTest(unittest.TestCase):
|
||||
self.assertEqual(tab.get_mode().history.isVisible(), not currently_visible)
|
||||
|
||||
def history_indicator(self, tab, indicator_count="1"):
|
||||
"""Test that we can make sure the history is toggled off, do an action, and the indiciator works"""
|
||||
"""Test that we can make sure the history is toggled off, do an action, and the indicator works"""
|
||||
# Make sure history is toggled off
|
||||
if tab.get_mode().history.isVisible():
|
||||
tab.get_mode().toggle_history.click()
|
||||
|
@ -22,8 +22,10 @@ class TestWebsite(GuiBaseTest):
|
||||
QtTest.QTest.qWait(500, self.gui.qtapp)
|
||||
if tab.settings.get("website", "disable_csp"):
|
||||
self.assertFalse("Content-Security-Policy" in r.headers)
|
||||
elif tab.settings.get("website", "custom_csp"):
|
||||
self.assertEqual(tab.settings.get("website", "custom_csp"), r.headers["Content-Security-Policy"])
|
||||
else:
|
||||
self.assertTrue("Content-Security-Policy" in r.headers)
|
||||
self.assertEqual("default-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; img-src 'self' data:;", r.headers["Content-Security-Policy"])
|
||||
|
||||
def run_all_website_mode_setup_tests(self, tab):
|
||||
"""Tests in website mode prior to starting a share"""
|
||||
@ -77,12 +79,24 @@ class TestWebsite(GuiBaseTest):
|
||||
self.run_all_website_mode_download_tests(tab)
|
||||
self.close_all_tabs()
|
||||
|
||||
def test_csp_enabled(self):
|
||||
def test_csp_disabled(self):
|
||||
"""
|
||||
Test disabling CSP
|
||||
"""
|
||||
tab = self.new_website_tab()
|
||||
tab.get_mode().disable_csp_checkbox.click()
|
||||
self.assertFalse(tab.get_mode().custom_csp_checkbox.isEnabled())
|
||||
self.run_all_website_mode_download_tests(tab)
|
||||
self.close_all_tabs()
|
||||
|
||||
def test_csp_custom(self):
|
||||
"""
|
||||
Test a custom CSP
|
||||
"""
|
||||
tab = self.new_website_tab()
|
||||
tab.get_mode().custom_csp_checkbox.click()
|
||||
self.assertFalse(tab.get_mode().disable_csp_checkbox.isEnabled())
|
||||
tab.settings.set("website", "custom_csp", "default-src 'self'")
|
||||
self.run_all_website_mode_download_tests(tab)
|
||||
self.close_all_tabs()
|
||||
|
||||
|
@ -27,7 +27,7 @@ You will end up with the documentation in all supported locales in `docs/localiz
|
||||
Here's how preparing translations works:
|
||||
|
||||
```sh
|
||||
# Generate .po files in build/gettext
|
||||
# Generate .po files in build/gettext
|
||||
make gettext
|
||||
|
||||
# Create a new blank German locale in source/locale, based on .po files
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
VERSION=`cat ../cli/onionshare_cli/resources/version.txt`
|
||||
VERSION=$(cat ../cli/onionshare_cli/resources/version.txt)
|
||||
|
||||
# Supported locales
|
||||
LOCALES="en fi pl pt_BR ru tr uk"
|
||||
|
@ -13,9 +13,13 @@ docs_translations = {}
|
||||
async def api(path):
|
||||
url = f"https://hosted.weblate.org{path}"
|
||||
|
||||
# Wait a bit before each API call, to avoid hammering the server and
|
||||
# getting temporarily blocked
|
||||
await asyncio.sleep(1)
|
||||
|
||||
async with httpx.AsyncClient() as client:
|
||||
r = await client.get(
|
||||
url, headers={"Authorization": f"Token {api_token}"}, timeout=30.0
|
||||
url, headers={"Authorization": f"Token {api_token}"}, timeout=60
|
||||
)
|
||||
|
||||
if r.status_code == 200:
|
||||
@ -109,7 +113,8 @@ async def main():
|
||||
languages[obj["code"]] = obj["language"]
|
||||
|
||||
# Get the app translations for each language
|
||||
await asyncio.gather(*[get_app_translation(lang_code) for lang_code in languages])
|
||||
for lang_code in languages:
|
||||
await get_app_translation(lang_code)
|
||||
|
||||
# Get the documentation translations for each component for each language
|
||||
for component in [
|
||||
@ -123,11 +128,8 @@ async def main():
|
||||
"doc-sphinx",
|
||||
"doc-tor",
|
||||
]:
|
||||
docs_futures = []
|
||||
for lang_code in languages:
|
||||
docs_futures.append(get_docs_translation(component, lang_code))
|
||||
|
||||
await asyncio.gather(*docs_futures)
|
||||
await get_docs_translation(component, lang_code)
|
||||
|
||||
print("")
|
||||
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:49-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -178,73 +178,81 @@ msgid "By default OnionShare helps secure your website by setting a strict `Cont
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:121
|
||||
msgid "If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, check the \"Don't send Content Security Policy header (allows your website to use third-party resources)\" box before starting the service."
|
||||
msgid "If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, you have two options:"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:123
|
||||
msgid "You can disable sending a Content Security Policy header by checking the \"Don't send Content Security Policy header (allows your website to use third-party resources)\" box before starting the service."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:124
|
||||
msgid "You can send a custom Content Security Policy header."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:127
|
||||
msgid "Tips for running a website service"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:126
|
||||
#: ../../source/features.rst:129
|
||||
msgid "If you want to host a long-term website using OnionShare (meaning not just to quickly show someone something), it's recommended you do it on a separate, dedicated computer that is 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."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:129
|
||||
#: ../../source/features.rst:132
|
||||
msgid "If your website is intended for the public, you should run it as a public service (see :ref:`turn_off_private_key`)."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:132
|
||||
#: ../../source/features.rst:135
|
||||
msgid "Chat Anonymously"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:134
|
||||
#: ../../source/features.rst:137
|
||||
msgid "You can use OnionShare to set up a private, secure chat room that doesn't log anything. Just open a chat tab and click \"Start chat server\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:138
|
||||
#: ../../source/features.rst:141
|
||||
msgid "After you start the server, copy the OnionShare address and private key and send them to the people you want in the anonymous chat room. If it's important to limit exactly who can join, use an encrypted messaging app to send out the OnionShare address and private key."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:143
|
||||
#: ../../source/features.rst:146
|
||||
msgid "People can join the chat room by loading its OnionShare address in Tor Browser. The chat room requires JavasScript, so everyone who wants to participate must have their Tor Browser security level set to \"Standard\" or \"Safer\", instead of \"Safest\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:146
|
||||
#: ../../source/features.rst:149
|
||||
msgid "When someone joins the chat room they get assigned a random name. They can change their name by typing a new name in the box in the left panel and pressing ↵. Since the chat history isn't saved anywhere, it doesn't get displayed at all, even if others were already chatting in the room."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:152
|
||||
#: ../../source/features.rst:155
|
||||
msgid "In an OnionShare chat room, everyone is anonymous. Anyone can change their name to anything, and there is no way to confirm anyone's identity."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:155
|
||||
#: ../../source/features.rst:158
|
||||
msgid "However, if you create an OnionShare chat room and securely send the address only to a small group of trusted friends using encrypted messages, you can be reasonably confident the people joining the chat room are your friends."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:158
|
||||
#: ../../source/features.rst:161
|
||||
msgid "How is this useful?"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:160
|
||||
#: ../../source/features.rst:163
|
||||
msgid "If you need to already be using an encrypted messaging app, what's the point of an OnionShare chat room to begin with? It leaves less traces."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:162
|
||||
#: ../../source/features.rst:165
|
||||
msgid "If you for example send a message to a Signal group, a copy of your message ends up on each device (the smartphones, and computers if they set up Signal Desktop) of each member of the group. Even if disappearing messages is turned on, it's hard to confirm all copies of the messages are actually deleted from all devices, and from any other places (like notifications databases) they may have been saved to. OnionShare chat rooms don't store any messages anywhere, so the problem is reduced to a minimum."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:165
|
||||
#: ../../source/features.rst:168
|
||||
msgid "OnionShare chat rooms can also be useful for people wanting to chat anonymously and securely with someone without needing to create any accounts. For example, a source can send an OnionShare address to a journalist using a disposable email address, and then wait for the journalist to join the chat room, all without compromosing their anonymity."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:169
|
||||
#: ../../source/features.rst:172
|
||||
msgid "How does the encryption work?"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:171
|
||||
#: ../../source/features.rst:174
|
||||
msgid "Because OnionShare relies on Tor onion services, connections between the Tor Browser and OnionShare are all end-to-end encrypted (E2EE). When someone posts a message to an OnionShare chat room, they send it to the server through the E2EE onion connection, which then sends it to all other members of the chat room using WebSockets, through their E2EE onion connections."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:173
|
||||
#: ../../source/features.rst:176
|
||||
msgid "OnionShare doesn't implement any chat encryption on its own. It relies on the Tor onion service's encryption instead."
|
||||
msgstr ""
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-17 14:39-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4\n"
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-09-09 19:16-0700\n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -21,11 +21,11 @@ msgid "Connecting to Tor"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:4
|
||||
msgid "Pick a way to connect OnionShare to Tor by clicking the \"⚙\" icon in the bottom right of the OnionShare window to get to its settings."
|
||||
msgid "Pick a way to connect OnionShare to Tor by clicking the Tor onion icon in the bottom right of the OnionShare window to open the Tor Settings tab."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:9
|
||||
msgid "Use the ``tor`` bundled with OnionShare"
|
||||
msgid "Use the Tor version built into OnionShare"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:11
|
||||
@ -37,106 +37,114 @@ msgid "When you open OnionShare, it launches an already configured ``tor`` proce
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:18
|
||||
msgid "Attempt auto-configuration with Tor Browser"
|
||||
msgid "Getting Around Censorship"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:20
|
||||
msgid "If your access to the internet is censored, you can configure OnionShare to connect to the Tor network using `Tor bridges <https://tb-manual.torproject.org/bridges/>`_. If OnionShare connects to Tor without one, you don't need to use a bridge."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:22
|
||||
msgid "To use a bridge, open the Tor Settings tab. You must select \"Use the Tor version built into OnionShare\" and check the \"Use a bridge\" checkbox."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:25
|
||||
msgid "Try using a built-in bridge first. Using `obfs4` or `snowflake` bridges is recommended over using `meek-azure`."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:29
|
||||
msgid "If using a built-in bridge doesn't work, you can request a bridge from torproject.org. You will have to solve a CAPTCHA in order to request a bridge. (This makes it more difficult for governments or ISPs to block access to Tor bridges.)"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:33
|
||||
msgid "You also have the option of using a bridge that you learned about from a trusted source."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:36
|
||||
msgid "Attempt auto-configuration with Tor Browser"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:38
|
||||
msgid "If you have `downloaded the Tor Browser <https://www.torproject.org>`_ and don't want two ``tor`` processes running, you can use the ``tor`` process from the Tor Browser. Keep in mind you need to keep Tor Browser open in the background while you're using OnionShare for this to work."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:24
|
||||
#: ../../source/tor.rst:42
|
||||
msgid "Using a system ``tor`` in Windows"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:26
|
||||
#: ../../source/tor.rst:44
|
||||
msgid "This is fairly advanced. You'll need to know how edit plaintext files and do stuff as an administrator."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:28
|
||||
#: ../../source/tor.rst:46
|
||||
msgid "Download the Tor Windows Expert Bundle `from <https://www.torproject.org/download/tor/>`_. Extract the compressed file and copy the extracted folder to ``C:\\Program Files (x86)\\`` Rename the extracted folder with ``Data`` and ``Tor`` in it to ``tor-win32``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:32
|
||||
#: ../../source/tor.rst:50
|
||||
msgid "Make up a control port password. (Using 7 words in a sequence like ``comprised stumble rummage work avenging construct volatile`` is a good idea for a password.) Now open a command prompt (``cmd``) as an administrator, and use ``tor.exe --hash-password`` to generate a hash of your password. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:39
|
||||
#: ../../source/tor.rst:57
|
||||
msgid "The hashed password output is displayed after some warnings (which you can ignore). In the case of the above example, it is ``16:00322E903D96DE986058BB9ABDA91E010D7A863768635AC38E213FDBEF``."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:41
|
||||
#: ../../source/tor.rst:59
|
||||
msgid "Now create a new text file at ``C:\\Program Files (x86)\\tor-win32\\torrc`` and put your hashed password output in it, replacing the ``HashedControlPassword`` with the one you just generated::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:46
|
||||
#: ../../source/tor.rst:64
|
||||
msgid "In your administrator command prompt, install ``tor`` as a service using the appropriate ``torrc`` file you just created (as described in `<https://2019.www.torproject.org/docs/faq.html.en#NTService>`_). Like this::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:50
|
||||
#: ../../source/tor.rst:68
|
||||
msgid "You are now running a system ``tor`` process in Windows!"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:52
|
||||
#: ../../source/tor.rst:70
|
||||
msgid "Open OnionShare and click the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" choose \"Connect using control port\", and set \"Control port\" to ``127.0.0.1`` and \"Port\" to ``9051``. Under \"Tor authentication settings\" choose \"Password\" and set the password to the control port password you picked above. Click the \"Test Connection to Tor\" button. If all goes well, you should see \"Connected to the Tor controller\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:61
|
||||
#: ../../source/tor.rst:79
|
||||
msgid "Using a system ``tor`` in macOS"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:63
|
||||
#: ../../source/tor.rst:81
|
||||
msgid "First, install `Homebrew <https://brew.sh/>`_ if you don't already have it, and then install Tor::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:67
|
||||
#: ../../source/tor.rst:85
|
||||
msgid "Now configure Tor to allow connections from OnionShare::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:74
|
||||
#: ../../source/tor.rst:92
|
||||
msgid "And start the system Tor service::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:78
|
||||
#: ../../source/tor.rst:96
|
||||
msgid "Open OnionShare and click the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" choose \"Connect using socket file\", and set the socket file to be ``/usr/local/var/run/tor/control.socket``. Under \"Tor authentication settings\" choose \"No authentication, or cookie authentication\". Click the \"Test Connection to Tor\" button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:84
|
||||
#: ../../source/tor.rst:104
|
||||
#: ../../source/tor.rst:102
|
||||
#: ../../source/tor.rst:122
|
||||
msgid "If all goes well, you should see \"Connected to the Tor controller\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:87
|
||||
#: ../../source/tor.rst:105
|
||||
msgid "Using a system ``tor`` in Linux"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:89
|
||||
#: ../../source/tor.rst:107
|
||||
msgid "First, install the ``tor`` package. If you're using Debian, Ubuntu, or a similar Linux distro, It is recommended to use the Tor Project's `official repository <https://support.torproject.org/apt/tor-deb-repo/>`_."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:91
|
||||
#: ../../source/tor.rst:109
|
||||
msgid "Next, add your user to the group that runs the ``tor`` process (in the case of Debian and Ubuntu, ``debian-tor``) and configure OnionShare to connect to your system ``tor``'s control socket file."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:93
|
||||
#: ../../source/tor.rst:111
|
||||
msgid "Add your user to the ``debian-tor`` group by running this command (replace ``username`` with your actual username)::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:97
|
||||
#: ../../source/tor.rst:115
|
||||
msgid "Reboot your computer. After it boots up again, open OnionShare and click the \"⚙\" icon in it. Under \"How should OnionShare connect to Tor?\" choose \"Connect using socket file\". Set the socket file to be ``/var/run/tor/control``. Under \"Tor authentication settings\" choose \"No authentication, or cookie authentication\". Click the \"Test Connection to Tor\" button."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:107
|
||||
msgid "Using Tor bridges"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:109
|
||||
msgid "If your access to the internet is censored, you can configure OnionShare to connect to the Tor network using `Tor bridges <https://2019.www.torproject.org/docs/bridges.html.en>`_. If OnionShare connects to Tor without one, you don't need to use a bridge."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:111
|
||||
msgid "To configure bridges, click the \"⚙\" icon in OnionShare."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/tor.rst:113
|
||||
msgid "You can use the built-in obfs4 pluggable transports, the built-in meek_lite (Azure) pluggable transports, or custom bridges, which you can obtain from Tor's `BridgeDB <https://bridges.torproject.org/>`_. If you need to use a bridge, try the built-in obfs4 ones first."
|
||||
msgstr ""
|
||||
|
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
Before Width: | Height: | Size: 84 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 55 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
BIN
docs/source/_static/screenshots/tor-settings-bridges.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
docs/source/_static/screenshots/tor-settings-moat.png
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
docs/source/_static/screenshots/tor-settings.png
Normal file
After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 36 KiB |
@ -105,14 +105,14 @@ You can browse the command-line documentation by running ``onionshare --help``::
|
||||
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
|
||||
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
|
||||
│ │
|
||||
│ v2.4 │
|
||||
│ v2.4.1 │
|
||||
│ │
|
||||
│ 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] [--no-autostop-sharing] [--data-dir data_dir] [--webhook-url webhook_url] [--disable-text] [--disable-files]
|
||||
[--disable_csp] [-v]
|
||||
[--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] [--custom_csp custom_csp] [-v]
|
||||
[filename ...]
|
||||
|
||||
positional arguments:
|
||||
@ -140,5 +140,6 @@ You can browse the command-line documentation by running ``onionshare --help``::
|
||||
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 resources)
|
||||
--disable_csp Publish website: Disable the default Content Security Policy header (allows your website to use third-party resources)
|
||||
--custom_csp custom_csp Publish website: Set a custom Content Security Policy header
|
||||
-v, --verbose Log OnionShare errors to stdout, and web errors to disk
|
||||
|
@ -1,6 +1,6 @@
|
||||
project = "OnionShare"
|
||||
author = copyright = "Micah Lee, et al."
|
||||
version = release = "2.4"
|
||||
version = release = "2.4.1"
|
||||
|
||||
extensions = ["sphinx_rtd_theme"]
|
||||
templates_path = ["_templates"]
|
||||
@ -16,10 +16,10 @@ languages = [
|
||||
("Русский", "ru"), # Russian
|
||||
# ("Español", "es"), # Spanish
|
||||
("Türkçe", "tr"), # Turkish
|
||||
("Українська", "uk"), # Ukranian
|
||||
("Українська", "uk"), # Ukrainian
|
||||
]
|
||||
|
||||
versions = ["2.3", "2.3.1", "2.3.2", "2.3.3", "2.4"]
|
||||
versions = ["2.3", "2.3.1", "2.3.2", "2.3.3", "2.4", "2.4.1"]
|
||||
|
||||
html_theme = "sphinx_rtd_theme"
|
||||
html_logo = "_static/logo.png"
|
||||
|
@ -40,7 +40,7 @@ Verbose mode
|
||||
When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command.
|
||||
This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::
|
||||
|
||||
$ $ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes
|
||||
$ poetry run onionshare-cli -v ~/Documents/roms/nes/Q-bert\ \(USA\).nes
|
||||
╭───────────────────────────────────────────╮
|
||||
│ * ▄▄█████▄▄ * │
|
||||
│ ▄████▀▀▀████▄ * │
|
||||
@ -58,7 +58,7 @@ This prints a lot of helpful messages to the terminal, such as when certain obje
|
||||
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
|
||||
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
|
||||
│ │
|
||||
│ v2.4 │
|
||||
│ v2.4.1 │
|
||||
│ │
|
||||
│ https://onionshare.org/ │
|
||||
╰───────────────────────────────────────────╯
|
||||
@ -144,7 +144,7 @@ You can do this with the ``--local-only`` flag. For example::
|
||||
│ █ █ █▀▄ █ ▄▀▄ █▀▄ ▀▄ █▀▄ ▄▀▄ █▄▀ ▄█▄ │
|
||||
│ ▀▄▀ █ █ █ ▀▄▀ █ █ ▄▄▀ █ █ ▀▄█ █ ▀▄▄ │
|
||||
│ │
|
||||
│ v2.4 │
|
||||
│ v2.4.1 │
|
||||
│ │
|
||||
│ https://onionshare.org/ │
|
||||
╰───────────────────────────────────────────╯
|
||||
|
@ -118,7 +118,10 @@ Content Security Policy
|
||||
|
||||
By default OnionShare helps secure your website by setting a strict `Content Security Policy <https://en.wikipedia.org/wiki/Content_Security_Policy>`_ header. However, this prevents third-party content from loading inside the web page.
|
||||
|
||||
If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, check the "Don't send Content Security Policy header (allows your website to use third-party resources)" box before starting the service.
|
||||
If you want to load content from third-party websites, like assets or JavaScript libraries from CDNs, you have two options:
|
||||
|
||||
- You can disable sending a Content Security Policy header by checking the "Don't send Content Security Policy header (allows your website to use third-party resources)" box before starting the service.
|
||||
- You can send a custom Content Security Policy header.
|
||||
|
||||
Tips for running a website service
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
125
docs/source/locale/bg/LC_MESSAGES/develop.po
Normal file
@ -0,0 +1,125 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) Micah Lee, et al.
|
||||
# This file is distributed under the same license as the OnionShare package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: bg\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../source/develop.rst:2
|
||||
msgid "Developing OnionShare"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:7
|
||||
msgid "Collaborating"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:9
|
||||
msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:12
|
||||
msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:15
|
||||
msgid "Contributing Code"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:17
|
||||
msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:19
|
||||
msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:22
|
||||
msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:27
|
||||
msgid "Starting Development"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:29
|
||||
msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:32
|
||||
msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:35
|
||||
msgid "Debugging tips"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:38
|
||||
msgid "Verbose mode"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:40
|
||||
msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:117
|
||||
msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:121
|
||||
msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:124
|
||||
msgid "Local Only"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:126
|
||||
msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:165
|
||||
msgid "In this case, you load the URL ``http://127.0.0.1:17641`` 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."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:168
|
||||
msgid "Contributing Translations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:170
|
||||
msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:172
|
||||
msgid "To help translate, make a Hosted Weblate account and start contributing."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:175
|
||||
msgid "Suggestions for Original English Strings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:177
|
||||
msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:179
|
||||
msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:183
|
||||
msgid "Status of Translations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:184
|
||||
msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
|
||||
msgstr ""
|
125
docs/source/locale/bn/LC_MESSAGES/develop.po
Normal file
@ -0,0 +1,125 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) Micah Lee, et al.
|
||||
# This file is distributed under the same license as the OnionShare package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: bn\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../source/develop.rst:2
|
||||
msgid "Developing OnionShare"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:7
|
||||
msgid "Collaborating"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:9
|
||||
msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:12
|
||||
msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:15
|
||||
msgid "Contributing Code"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:17
|
||||
msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:19
|
||||
msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:22
|
||||
msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:27
|
||||
msgid "Starting Development"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:29
|
||||
msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:32
|
||||
msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:35
|
||||
msgid "Debugging tips"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:38
|
||||
msgid "Verbose mode"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:40
|
||||
msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:117
|
||||
msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:121
|
||||
msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:124
|
||||
msgid "Local Only"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:126
|
||||
msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:165
|
||||
msgid "In this case, you load the URL ``http://127.0.0.1:17641`` 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."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:168
|
||||
msgid "Contributing Translations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:170
|
||||
msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:172
|
||||
msgid "To help translate, make a Hosted Weblate account and start contributing."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:175
|
||||
msgid "Suggestions for Original English Strings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:177
|
||||
msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:179
|
||||
msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:183
|
||||
msgid "Status of Translations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:184
|
||||
msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
|
||||
msgstr ""
|
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.3\n"
|
||||
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
|
||||
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
|
||||
"PO-Revision-Date: 2020-11-25 18:28+0000\n"
|
||||
"PO-Revision-Date: 2021-11-28 19:16+0000\n"
|
||||
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: ca\n"
|
||||
@ -16,7 +16,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.4-dev\n"
|
||||
"X-Generator: Weblate 4.10-dev\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: ../../source/features.rst:4
|
||||
@ -29,6 +29,9 @@ msgid ""
|
||||
"other people as `Tor <https://www.torproject.org/>`_ `onion services "
|
||||
"<https://community.torproject.org/onion-services/>`_."
|
||||
msgstr ""
|
||||
"Els servidors webs s'arrenquen localment, al teu ordinador, i es fan "
|
||||
"accessibles a altres persones com a _`serveis onion <https://community."
|
||||
"torproject.org/onion-services/>`_ de `Tor <https://www.torproject.org/>`."
|
||||
|
||||
#: ../../source/features.rst:8
|
||||
msgid ""
|
||||
|
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.3\n"
|
||||
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
|
||||
"POT-Creation-Date: 2020-11-15 14:42-0800\n"
|
||||
"PO-Revision-Date: 2020-11-25 18:28+0000\n"
|
||||
"PO-Revision-Date: 2021-11-28 19:16+0000\n"
|
||||
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: ca\n"
|
||||
@ -16,7 +16,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.4-dev\n"
|
||||
"X-Generator: Weblate 4.10-dev\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: ../../source/help.rst:2
|
||||
@ -25,7 +25,7 @@ msgstr "Demanar ajuda"
|
||||
|
||||
#: ../../source/help.rst:5
|
||||
msgid "Read This Website"
|
||||
msgstr ""
|
||||
msgstr "Llegeix aquest web"
|
||||
|
||||
#: ../../source/help.rst:7
|
||||
msgid ""
|
||||
|
@ -8,7 +8,7 @@ msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.3\n"
|
||||
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
|
||||
"POT-Creation-Date: 2020-09-03 11:46-0700\n"
|
||||
"PO-Revision-Date: 2020-11-25 18:28+0000\n"
|
||||
"PO-Revision-Date: 2021-11-28 19:16+0000\n"
|
||||
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: ca\n"
|
||||
@ -16,7 +16,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.4-dev\n"
|
||||
"X-Generator: Weblate 4.10-dev\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: ../../source/index.rst:2
|
||||
@ -28,3 +28,6 @@ msgid ""
|
||||
"OnionShare is an open source tool that lets you securely and anonymously "
|
||||
"share files, host websites, and chat with friends using the Tor network."
|
||||
msgstr ""
|
||||
"OnionShare és una eina de codi obert que et permet, de forma anònima i "
|
||||
"segura, compartir arxius, allotjar webs i xatejar amb amics, fent servir la "
|
||||
"xarxa Tor."
|
||||
|
@ -8,14 +8,15 @@ msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.3\n"
|
||||
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
|
||||
"POT-Creation-Date: 2020-12-13 15:48-0800\n"
|
||||
"PO-Revision-Date: 2020-11-25 18:28+0000\n"
|
||||
"PO-Revision-Date: 2021-11-28 19:16+0000\n"
|
||||
"Last-Translator: fadelkon <fadelkon@posteo.net>\n"
|
||||
"Language: ca\n"
|
||||
"Language-Team: ca <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||
"Language: ca\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.10-dev\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: ../../source/security.rst:2
|
||||
@ -25,6 +26,8 @@ msgstr "Disseny de seguretat"
|
||||
#: ../../source/security.rst:4
|
||||
msgid "Read :ref:`how_it_works` first to get a handle on how OnionShare works."
|
||||
msgstr ""
|
||||
"Pots llegir :ref:`how_it_works` per entendre una mica com funciona "
|
||||
"OnionShare."
|
||||
|
||||
#: ../../source/security.rst:6
|
||||
msgid "Like all software, OnionShare may contain bugs or vulnerabilities."
|
||||
@ -242,4 +245,3 @@ msgstr ""
|
||||
#~ " share the address. This isn't "
|
||||
#~ "necessary unless anonymity is a goal."
|
||||
#~ msgstr ""
|
||||
|
||||
|
125
docs/source/locale/cs/LC_MESSAGES/develop.po
Normal file
@ -0,0 +1,125 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) Micah Lee, et al.
|
||||
# This file is distributed under the same license as the OnionShare package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.4.1\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-11-23 19:33-0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Automatically generated\n"
|
||||
"Language-Team: none\n"
|
||||
"Language: cs\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../../source/develop.rst:2
|
||||
msgid "Developing OnionShare"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:7
|
||||
msgid "Collaborating"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:9
|
||||
msgid "OnionShare has an open Keybase team to discuss the project, ask questions, share ideas and designs, and making plans for future development. (It's also an easy way to send end-to-end encrypted direct messages to others in the OnionShare community, like OnionShare addresses.) To use Keybase, download the `Keybase app <https://keybase.io/download>`_, make an account, and `join this team <https://keybase.io/team/onionshare>`_. Within the app, go to \"Teams\", click \"Join a Team\", and type \"onionshare\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:12
|
||||
msgid "OnionShare also has a `mailing list <https://lists.riseup.net/www/subscribe/onionshare-dev>`_ for developers and and designers to discuss the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:15
|
||||
msgid "Contributing Code"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:17
|
||||
msgid "OnionShare source code is to be found in this Git repository: https://github.com/onionshare/onionshare"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:19
|
||||
msgid "If you'd like to contribute code to OnionShare, it helps to join the Keybase team and ask questions about what you're thinking of working on. You should also review all of the `open issues <https://github.com/onionshare/onionshare/issues>`_ on GitHub to see if there are any you'd like to tackle."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:22
|
||||
msgid "When you're ready to contribute code, open a pull request in the GitHub repository and one of the project maintainers will review it and possibly ask questions, request changes, reject it, or merge it into the project."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:27
|
||||
msgid "Starting Development"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:29
|
||||
msgid "OnionShare is developed in Python. To get started, clone the Git repository at https://github.com/onionshare/onionshare/ and then consult the ``cli/README.md`` file to learn how to set up your development environment for the command-line version, and the ``desktop/README.md`` file to learn how to set up your development environment for the graphical version."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:32
|
||||
msgid "Those files contain the necessary technical instructions and commands install dependencies for your platform, and to run OnionShare from the source tree."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:35
|
||||
msgid "Debugging tips"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:38
|
||||
msgid "Verbose mode"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:40
|
||||
msgid "When developing, it's convenient to run OnionShare from a terminal and add the ``--verbose`` (or ``-v``) flag to the command. This prints a lot of helpful messages to the terminal, such as when certain objects are initialized, when events occur (like buttons clicked, settings saved or reloaded), and other debug info. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:117
|
||||
msgid "You can add your own debug messages by running the ``Common.log`` method from ``onionshare/common.py``. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:121
|
||||
msgid "This can be useful when learning the chain of events that occur when using OnionShare, or the value of certain variables before and after they are manipulated."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:124
|
||||
msgid "Local Only"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:126
|
||||
msgid "Tor is slow, and it's often convenient to skip starting onion services altogether during development. You can do this with the ``--local-only`` flag. For example::"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:165
|
||||
msgid "In this case, you load the URL ``http://127.0.0.1:17641`` 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."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:168
|
||||
msgid "Contributing Translations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:170
|
||||
msgid "Help make OnionShare easier to use and more familiar and welcoming for people by translating it on `Hosted Weblate <https://hosted.weblate.org/projects/onionshare/>`_. Always keep the \"OnionShare\" in latin letters, and use \"OnionShare (localname)\" if needed."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:172
|
||||
msgid "To help translate, make a Hosted Weblate account and start contributing."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:175
|
||||
msgid "Suggestions for Original English Strings"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:177
|
||||
msgid "Sometimes the original English strings are wrong, or don't match between the application and the documentation."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:179
|
||||
msgid "File source string improvements by adding @kingu to your Weblate comment, or open a GitHub issue or pull request. The latter ensures all upstream developers see the suggestion, and can potentially modify the string via the usual code review processes."
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:183
|
||||
msgid "Status of Translations"
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/develop.rst:184
|
||||
msgid "Here is the current translation status. If you want start a translation in a language not yet started, please write to the mailing list: onionshare-dev@lists.riseup.net"
|
||||
msgstr ""
|
@ -8,15 +8,15 @@ msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.3\n"
|
||||
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
|
||||
"POT-Creation-Date: 2021-09-09 19:15-0700\n"
|
||||
"PO-Revision-Date: 2021-09-19 15:37+0000\n"
|
||||
"Last-Translator: register718 <register2021@outlook.de>\n"
|
||||
"PO-Revision-Date: 2021-11-28 19:16+0000\n"
|
||||
"Last-Translator: ilumium <weblate@penfrat.net>\n"
|
||||
"Language-Team: de <LL@li.org>\n"
|
||||
"Language: de\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.9-dev\n"
|
||||
"X-Generator: Weblate 4.10-dev\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: ../../source/features.rst:4
|
||||
@ -74,19 +74,17 @@ msgstr ""
|
||||
"Empfänger eingegeben werden muss."
|
||||
|
||||
#: ../../source/features.rst:24
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Wenn du OnionShare auf deinem Laptop laufen lässt, um jemandem Dateien zu"
|
||||
" schicken, und du den Laptop in den Ruhemodus versetzt, ehe die Dateien "
|
||||
"gesendet wurden, wird der Dienst so lange nicht erreichbar sein, bis dein"
|
||||
" Laptop wieder läuft und mit dem Internet verbunden ist. OnionShare "
|
||||
"funktioniert am besten, wenn du in Echtzeit mit den Leuten in Verbindung "
|
||||
"stehst."
|
||||
"Wenn du OnionShare auf deinem Laptop laufen lässt, um jemandem Dateien zu "
|
||||
"schicken, und du den Laptop in den Ruhemodus versetzt, ehe die Dateien "
|
||||
"gesendet wurden, wird der Dienst so lange nicht erreichbar sein wie der "
|
||||
"Laptop im Ruhezustand ist. OnionShare funktioniert am besten, wenn du mit "
|
||||
"den Leuten, mit denen du Dateien teilst, in Echtzeit in Verbindung stehst."
|
||||
|
||||
#: ../../source/features.rst:26
|
||||
msgid ""
|
||||
@ -127,7 +125,6 @@ msgstr ""
|
||||
"startest."
|
||||
|
||||
#: ../../source/features.rst:39
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"As soon as someone finishes downloading your files, OnionShare will "
|
||||
"automatically stop the server, removing the website from the internet. To"
|
||||
@ -135,11 +132,11 @@ msgid ""
|
||||
" files have been sent (uncheck to allow downloading individual files)\" "
|
||||
"box."
|
||||
msgstr ""
|
||||
"Sobald jemand deine Dateien vollständig heruntergeladen hat, wird "
|
||||
"OnionShare den Dienst automatisch starten und die Webseite vom Internet "
|
||||
"nehmen. Um mehreren Leuten das Herunterladen zu ermöglichen, entferne den"
|
||||
" Haken bei „Dateifreigabe beenden, sobald alle Dateien versendet wurden "
|
||||
"(abwählen, um das Herunterladen einzelner Dateien zu erlauben)“."
|
||||
"Sobald jemand deine Dateien vollständig heruntergeladen hat, wird OnionShare "
|
||||
"das Teilen der Dateien automatisch beenden und die Webseite vom Internet "
|
||||
"nehmen. Um mehreren Personen das Herunterladen zu ermöglichen, öffne die "
|
||||
"Einstellungen von OnionShare und entferne den Haken bei „Server nach "
|
||||
"Download der Dateien stoppen“."
|
||||
|
||||
#: ../../source/features.rst:42
|
||||
msgid ""
|
||||
@ -166,29 +163,27 @@ msgstr ""
|
||||
"Downloads anzeigen zu lassen."
|
||||
|
||||
#: ../../source/features.rst:48
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Now that you have a OnionShare, copy the address and the private key 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."
|
||||
msgstr ""
|
||||
"Jetzt, wo du eine OnionShare-Freigabe hast, kopiere die Adresse und "
|
||||
"schicke sie der Person, die die Dateien empfangen soll. Falls die Dateien"
|
||||
" sicher bleiben sollen oder die Person anderweitig irgendeiner Gefahr "
|
||||
"ausgesetzt ist, nutze einen verschlüsselten Messenger."
|
||||
"Jetzt, wo du eine OnionShare-Freigabe hast, kopiere die Adresse und schicke "
|
||||
"sie der Person, die die Dateien empfangen soll. Falls die Dateien vor "
|
||||
"Anderen geschützt bleiben sollen oder die Empfängerperson anderweitig in "
|
||||
"Gefahr ist, nutze einen verschlüsselten Messenger zum senden der Adresse."
|
||||
|
||||
#: ../../source/features.rst:50
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Diese Person muss nun die Adresse mit dem Tor Browser öffnen. Nachdem sie"
|
||||
" sich mit dem zufällig erzeugten Passwort eingeloggt hat, das in der "
|
||||
"Adresse enthalten ist, kann sie die Dateien direkt von deinem Rechner "
|
||||
"über den „Dateien herunterladen”-Link in der Ecke herunterladen."
|
||||
"Diese Person muss nun die Adresse mit dem Tor Browser öffnen. Nachdem sie "
|
||||
"sich mit dem zufällig erzeugten Passwort eingeloggt hat, das in der Adresse "
|
||||
"enthalten ist, kann sie die Dateien direkt von deinem Rechner über den Link „"
|
||||
"Dateien herunterladen” in der Ecke herunterladen."
|
||||
|
||||
#: ../../source/features.rst:55
|
||||
msgid "Receive Files and Messages"
|
||||
@ -309,7 +304,6 @@ msgid "Use at your own risk"
|
||||
msgstr "Nutzung auf eigene Gefahr"
|
||||
|
||||
#: ../../source/features.rst:88
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Just like with malicious email attachments, it's possible someone could "
|
||||
"try to attack your computer by uploading a malicious file to your "
|
||||
@ -317,10 +311,9 @@ msgid ""
|
||||
"protect your system from malicious files."
|
||||
msgstr ""
|
||||
"Ähnlich wie bei bösartigen E-Mail-Anhängen kann es sein, dass jemand "
|
||||
"deinen Rechner anzugreifen versucht, indem er eine bösartige Datei auf "
|
||||
"deinen OnionShare-Dienst hochlädt. OnionShare bringt keine "
|
||||
"Sicherheitsmechanismen mit, um dein System vor bösartigen Dateien zu "
|
||||
"schützen."
|
||||
"versucht deinen Rechner anzugreifen, indem er eine bösartige Datei auf "
|
||||
"deinen OnionShare-Dienst hochlädt. OnionShare selbst hat keine "
|
||||
"Sicherheitsmechanismen, um deinen Rechner vor solchen Angriffen zu schützen."
|
||||
|
||||
#: ../../source/features.rst:90
|
||||
msgid ""
|
||||
@ -349,20 +342,18 @@ msgid "Tips for running a receive service"
|
||||
msgstr "Tipps für einen OnionShare-Empfangsdienst"
|
||||
|
||||
#: ../../source/features.rst:97
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
"Wenn du deinen eigenen anonymen Briefkasten per OnionShare betreiben "
|
||||
"willst, solltest du dies auf einem separaten, eigens dafür eingerichteten"
|
||||
" Rechner tun, der immer läuft und mit dem Internet verbunden ist; nicht "
|
||||
"mit dem, den du sonst regelmäßig benutzt."
|
||||
"Wenn du deinen eigenen anonymen OnionShare-Briefkasten betreiben willst, "
|
||||
"solltest du dies auf einem separaten, eigens dafür eingerichteten Rechner "
|
||||
"tun, der immer läuft und mit dem Internet verbunden ist; nicht mit dem "
|
||||
"Rechner, den du sonst regelmäßig benutzt."
|
||||
|
||||
#: ../../source/features.rst:99
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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 "
|
||||
@ -370,9 +361,9 @@ msgid ""
|
||||
"to give it a custom title (see :ref:`custom_titles`)."
|
||||
msgstr ""
|
||||
"Falls du deine OnionShare-Adresse auf deiner Webseite oder deinen Social "
|
||||
"Media-Profilen teilen willst, solltest du den Reiter speichern (siehe "
|
||||
":ref:`save_tabs`) und den Service als öffentlich festlegen. (siehe "
|
||||
":ref:`disable password`). In diesem Fall wäre es auch eine gute Idee, "
|
||||
"Media-Profilen veröffentlichen willst, solltest du den entsprechenden Reiter "
|
||||
"speichern (siehe :ref:`save_tabs`) und den Service als öffentlich festlegen. "
|
||||
"(siehe :ref:`disable password`). In diesem Fall wäre es auch eine gute Idee, "
|
||||
"einen benutzerdefinierten Titel festzulegen (siehe :ref:`custom_titles`)."
|
||||
|
||||
#: ../../source/features.rst:102
|
||||
@ -420,7 +411,6 @@ msgid "Content Security Policy"
|
||||
msgstr "Content-Security-Policy"
|
||||
|
||||
#: ../../source/features.rst:119
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"By default OnionShare helps secure your website by setting a strict "
|
||||
"`Content Security Policy "
|
||||
@ -428,11 +418,10 @@ msgid ""
|
||||
"However, this prevents third-party content from loading inside the web "
|
||||
"page."
|
||||
msgstr ""
|
||||
"Standardmäßig wird OnionShare beim Absichern deiner Webseite helfen, "
|
||||
"indem es einen strikten `Content-Security-Policy "
|
||||
"<https://en.wikipedia.org/wiki/Content_Security_Policy>`_-Header setzt. "
|
||||
"Allerdings wird hierdurch verhindert, dass Inhalte von Drittanbietern "
|
||||
"innerhalb der Webseite geladen werden."
|
||||
"Standardmäßig sichert OnionShare deine Webseite, indem es einen strikten "
|
||||
"`Content-Security-Policy <https://en.wikipedia.org/wiki/"
|
||||
"Content_Security_Policy>`_-Header setzt. Das verhindert allerdings auch das "
|
||||
"Laden von Inhalten von Drittanbietern innerhalb deiner Webseite."
|
||||
|
||||
#: ../../source/features.rst:121
|
||||
msgid ""
|
||||
@ -452,7 +441,6 @@ msgid "Tips for running a website service"
|
||||
msgstr "Tipps zum Betreiben eines Webseiten-Dienstes"
|
||||
|
||||
#: ../../source/features.rst:126
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"If you want to host a long-term website using OnionShare (meaning not "
|
||||
"just to quickly show someone something), it's recommended you do it on a "
|
||||
@ -461,23 +449,22 @@ msgid ""
|
||||
" (see :ref:`save_tabs`) so you can resume the website with the same "
|
||||
"address if you close OnionShare and re-open it later."
|
||||
msgstr ""
|
||||
"Falls du eine Webseite längerfristig über OnionShare anbieten (und nicht "
|
||||
"Falls du eine Webseite längerfristig über OnionShare anbieten (also nicht "
|
||||
"nur kurz jemandem etwas zeigen) möchtest, solltest du dies auf einem "
|
||||
"separaten, eigens dafür eingerichteten Rechner tun, der immer läuft und "
|
||||
"mit dem Internet verbunden ist; nicht mit dem, den du sonst regelmäßig "
|
||||
"benutzt. Außerdem solltest du den Reiter speichern (see "
|
||||
":ref:`save_tabs`), so dass du die Webseite mit derselben Adresse "
|
||||
"weiterbetreiben kannst, falls du OnionShare schließt und später wieder "
|
||||
"öffnest."
|
||||
"separaten, eigens dafür eingerichteten Rechner tun, der immer läuft und mit "
|
||||
"dem Internet verbunden ist; nicht auf dem Rechner, den du sonst regelmäßig "
|
||||
"benutzt. Außerdem solltest du den entsprechenden Reiter speichern (see "
|
||||
":ref:`save_tabs`), so dass du die Webseite dann mit derselben Adresse "
|
||||
"anbieten kannst, wenn OnionShare zwischenzeitig beendet und neu gestartet "
|
||||
"wird."
|
||||
|
||||
#: ../../source/features.rst:129
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"If your website is intended for the public, you should run it as a public"
|
||||
" service (see :ref:`turn_off_private_key`)."
|
||||
msgstr ""
|
||||
"Falls du die Webseite öffentlich betreiben wilst, solltest du sie als "
|
||||
"öffentlichen Dienst hosten (see :ref:`disable_passwords`)."
|
||||
"Wenn du deine Webseite öffentlich betreiben willst, solltest du sie als "
|
||||
"öffentlichen Dienst starten (see :ref:`disable_passwords`)."
|
||||
|
||||
#: ../../source/features.rst:132
|
||||
msgid "Chat Anonymously"
|
||||
@ -493,18 +480,16 @@ msgstr ""
|
||||
"klicke auf „Chat starten“."
|
||||
|
||||
#: ../../source/features.rst:138
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"After you start the server, copy the OnionShare address and private key "
|
||||
"and send them to the people you want in the anonymous chat room. If it's "
|
||||
"important to limit exactly who can join, use an encrypted messaging app "
|
||||
"to send out the OnionShare address and private key."
|
||||
msgstr ""
|
||||
"Nachdem du den Dienst gestartest hast, kopiere die OnionShare-Adresse und"
|
||||
" schicke sie den Leuten, die du in dem anonymen Chatroom gerne hättest. "
|
||||
"Falls es wichtig ist, den Teilnehmerkreis strikt zu beschränken, solltest"
|
||||
" du einen verschlüsselten Messenger zum Teilen der OnionShare-Adresse "
|
||||
"verwenden."
|
||||
"Nachdem du den Dienst gestartest hast, kopiere die OnionShare-Adresse und "
|
||||
"schicke sie den Leuten, die dem anonymen Chat beitreten sollen. Falls es "
|
||||
"wichtig ist, den Teilnehmerkreis strikt zu beschränken, solltest du einen "
|
||||
"verschlüsselten Messenger zum Teilen der OnionShare-Adresse verwenden."
|
||||
|
||||
#: ../../source/features.rst:143
|
||||
msgid ""
|
||||
@ -577,7 +562,6 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: ../../source/features.rst:165
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"OnionShare chat rooms can also be useful for people wanting to chat "
|
||||
"anonymously and securely with someone without needing to create any "
|
||||
@ -586,12 +570,12 @@ msgid ""
|
||||
"journalist to join the chat room, all without compromosing their "
|
||||
"anonymity."
|
||||
msgstr ""
|
||||
"OnionShare-Chatrooms können außerdem für einander unbekannte Personen "
|
||||
"nützlich sein, die sicher untereinander chatten wollen, ohne "
|
||||
"Benutzerkonten zu erstellen. Beispielsweise könnte eine Quelle einem "
|
||||
"Journalisten über eine Wegwerf-E-Mail-Adresse eine OnionShare-Adresse "
|
||||
"schicken und dann warten, bis der Journalist den Chatroom betritt; all "
|
||||
"dies, ohne die Anonymität zu gefährden."
|
||||
"OnionShare-Chats ermöglichen es außerdem einander unbekannten Personen, "
|
||||
"miteinander zu chatten ohne dafür eigene Benutzerkonten erstellen zu müssen. "
|
||||
"Beispielsweise könnte eine Quelle einem Journalisten über eine Wegwerf-E"
|
||||
"-Mail-Adresse eine OnionShare-Adresse schicken und dann warten, bis der "
|
||||
"Journalist den Chat betritt, ohne dass die Quelle dabei ihre Anonymität "
|
||||
"gefährdet."
|
||||
|
||||
#: ../../source/features.rst:169
|
||||
msgid "How does the encryption work?"
|
||||
|
@ -8,14 +8,15 @@ msgstr ""
|
||||
"Project-Id-Version: OnionShare 2.3\n"
|
||||
"Report-Msgid-Bugs-To: onionshare-dev@lists.riseup.net\n"
|
||||
"POT-Creation-Date: 2021-09-09 19:49-0700\n"
|
||||
"PO-Revision-Date: 2021-05-11 20:47+0000\n"
|
||||
"Last-Translator: Mr.Grin <grin-singularity@tutanota.com>\n"
|
||||
"Language: el\n"
|
||||
"PO-Revision-Date: 2021-10-09 09:04+0000\n"
|
||||
"Last-Translator: george kitsoukakis <norhorn@gmail.com>\n"
|
||||
"Language-Team: el <LL@li.org>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
||||
"Language: el\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 4.9-dev\n"
|
||||
"Generated-By: Babel 2.9.0\n"
|
||||
|
||||
#: ../../source/advanced.rst:2
|
||||
@ -53,16 +54,15 @@ msgstr ""
|
||||
"καρφίτσωσης στα αριστερά της κατάστασης του διακομιστή."
|
||||
|
||||
#: ../../source/advanced.rst:18
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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 private key."
|
||||
msgstr ""
|
||||
"Όταν κάνετε έξοδο από το OnionShare και άνοιγμα ξανά, οι αποθηκευμένες "
|
||||
"καρτέλες σας θα ξεκινήσουν ανοιχτές. Θα πρέπει να εκκινήσετε χειροκίνητα "
|
||||
"την κάθε υπηρεσία, αλλά θα ξεκινήσουν με την ίδια διεύθυνση και κωδικό "
|
||||
"OnionShare."
|
||||
"καρτέλες σας θα ξεκινήσουν ανοιχτές. Θα πρέπει να εκκινήσετε χειροκίνητα την "
|
||||
"κάθε υπηρεσία, αλλά θα ξεκινήσουν με την ίδια διεύθυνση OnionShare και "
|
||||
"ιδιωτικό κλειδί."
|
||||
|
||||
#: ../../source/advanced.rst:21
|
||||
msgid ""
|
||||
@ -75,35 +75,35 @@ msgstr ""
|
||||
|
||||
#: ../../source/advanced.rst:26
|
||||
msgid "Turn Off Private Key"
|
||||
msgstr ""
|
||||
msgstr "Απενεργοποίηση ιδιωτικού κλειδιού"
|
||||
|
||||
#: ../../source/advanced.rst:28
|
||||
msgid ""
|
||||
"By default, all OnionShare services are protected with a private key, "
|
||||
"which Tor calls \"client authentication\"."
|
||||
msgstr ""
|
||||
"Από προεπιλογή, όλες οι υπηρεσίες OnionShare προστατεύονται με ένα ιδιωτικό "
|
||||
"κλειδί, το οποίο ονομάζεται \"πιστοποίηση πελάτη\"."
|
||||
|
||||
#: ../../source/advanced.rst:30
|
||||
msgid ""
|
||||
"When browsing to an OnionShare service in Tor Browser, Tor Browser will "
|
||||
"prompt for the private key to be entered."
|
||||
msgstr ""
|
||||
"Κατά την περιήγηση σε μια υπηρεσία OnionShare με το Tor Browser, θα σας "
|
||||
"ζητηθεί να εισαγάγετε το ιδιωτικό κλειδί."
|
||||
|
||||
#: ../../source/advanced.rst:32
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"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 private key altogether."
|
||||
msgstr ""
|
||||
"Μερικές φορές μπορεί να θέλετε η υπηρεσία OnionShare να είναι δημόσια "
|
||||
"προσβάσιμη, ή να ρυθμίσετε την υπηρεσία λήψης OnionShare ώστε να μπορεί "
|
||||
"κάποιος να σας στέλνει με ασφάλεια και ανώνυμα αρχεία. Σε αυτήν την "
|
||||
"περίπτωση, είναι καλύτερα να απενεργοποιήσετε εντελώς τον κωδικό "
|
||||
"πρόσβασης. Εάν δεν το κάνετε αυτό, κάποιος μπορεί να αναγκάσει τον "
|
||||
"διακομιστή σας να σταματήσει απλά κάνοντας 20 λανθασμένες δοκιμές για τον"
|
||||
" κωδικό πρόσβασής σας, ακόμη και αν γνωρίζουν τον σωστό."
|
||||
"Μερικές φορές μπορεί να θέλετε η υπηρεσία σας OnionShare να είναι δημόσια "
|
||||
"προσβάσιμη, ή να μπορεί κάποιος να σας στέλνει με ασφάλεια και ανώνυμα, "
|
||||
"αρχεία. Σε αυτήν την περίπτωση, είναι καλύτερα να απενεργοποιήσετε το "
|
||||
"ιδιωτικό κλειδί."
|
||||
|
||||
#: ../../source/advanced.rst:35
|
||||
msgid ""
|
||||
@ -112,6 +112,11 @@ msgid ""
|
||||
"server. Then the server will be public and won't need a private key to "
|
||||
"view in Tor Browser."
|
||||
msgstr ""
|
||||
"Για να απενεργοποιήσετε το ιδιωτικό κλειδί για οποιαδήποτε καρτέλα, "
|
||||
"τσεκάρετε το πλαίσιο \"Δημόσια υπηρεσία OnionShare (απενεργοποιεί το "
|
||||
"ιδιωτικό κλειδί)\" πριν από την εκκίνηση του διακομιστή. Τότε ο διακομιστής "
|
||||
"θα είναι δημόσιος και δεν θα χρειάζεται ιδιωτικό κλειδί για να τον "
|
||||
"εμφανίσετε στο Tor Browser."
|
||||
|
||||
#: ../../source/advanced.rst:40
|
||||
msgid "Custom Titles"
|
||||
@ -181,16 +186,15 @@ msgstr ""
|
||||
"ακυρώσετε την υπηρεσία πριν αυτή ξεκινήσει."
|
||||
|
||||
#: ../../source/advanced.rst:60
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"**Scheduling an OnionShare service to automatically stop can be useful to"
|
||||
" limit exposure**, like if you want to share secret documents while "
|
||||
"making sure they're not available on the internet for more than a few "
|
||||
"days."
|
||||
msgstr ""
|
||||
"**Η προγραμματισμένη διακοπή της υπηρεσίας διαμοιρασμού OnionShare, είναι"
|
||||
" χρήσιμη για τον περιορισμό της έκθεσής σας**, όπως εάν επιθυμείτε τον "
|
||||
"διαμοιρασμό κρυφών αρχείων στο Διαδίκτυο για συγκεκριμένο χρόνο."
|
||||
"**Ο προγραμματισμένος τερματισμός της υπηρεσίας διαμοιρασμού OnionShare, "
|
||||
"περιορίζει το χρόνο έκθεσής σας**, όπως εάν επιθυμείτε τον διαμοιρασμό "
|
||||
"μυστικών αρχείων στο Διαδίκτυο για συγκεκριμένο χρόνο."
|
||||
|
||||
#: ../../source/advanced.rst:67
|
||||
msgid "Command-line Interface"
|
||||
@ -231,6 +235,9 @@ msgid ""
|
||||
"<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_ "
|
||||
"in the git repository."
|
||||
msgstr ""
|
||||
"Για πληροφορίες σχετικά με την εγκατάστασή του σε διαφορετικά λειτουργικά "
|
||||
"συστήματα, ανατρέξτε στο αρχείο `CLI readme file <https://github.com/"
|
||||
"onionshare/onionshare/blob/develop/cli/README.md>`_ στο αποθετήριο git."
|
||||
|
||||
#: ../../source/advanced.rst:83
|
||||
msgid ""
|
||||
@ -578,4 +585,3 @@ msgstr ""
|
||||
#~ "<https://github.com/onionshare/onionshare/blob/develop/cli/README.md>`_"
|
||||
#~ " in the git repository."
|
||||
#~ msgstr ""
|
||||
|
||||
|