mirror of
https://github.com/onionshare/onionshare.git
synced 2024-12-29 01:06:16 -05:00
Merge branch 'master' into cx_Freeze
This commit is contained in:
commit
bba46e088f
@ -2,7 +2,7 @@
|
||||
|
||||
[![Build Status](https://travis-ci.org/micahflee/onionshare.png)](https://travis-ci.org/micahflee/onionshare)
|
||||
|
||||
OnionShare lets you securely and anonymously share files of any size. It works by starting a web server, making it accessible as a Tor hidden service, and generating an unguessable URL to access and download the files. It doesn't require setting up a server on the internet somewhere or using a third party filesharing service. You host the file on your own computer and use a Tor hidden service to make it temporarily accessible over the internet. The other user just needs to use Tor Browser to download the file from you.
|
||||
OnionShare lets you securely and anonymously share files of any size. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable URL to access and download the files. It doesn't require setting up a server on the internet somewhere or using a third party filesharing service. You host the file on your own computer and use a Tor onion service to make it temporarily accessible over the internet. The other user just needs to use Tor Browser to download the file from you.
|
||||
|
||||
Features include:
|
||||
|
||||
@ -27,7 +27,7 @@ You can set up your development environment to build OnionShare yourself by foll
|
||||
|
||||
## How to Use
|
||||
|
||||
Before you can share files, you need to open [Tor Browser](https://www.torproject.org/) in the background. This will provide the Tor service that OnionShare uses to start the hidden service.
|
||||
Before you can share files, you need to open [Tor Browser](https://www.torproject.org/) in the background. This will provide the Tor service that OnionShare uses to start the onion service.
|
||||
|
||||
Open OnionShare and drag and drop files and folders you wish to share, and click Start Sharing. It will show you a .onion URL such as `http://asxmi4q6i7pajg2b.onion/egg-cain` and copy it to your clipboard. This is the secret URL that can be used to download the file you're sharing. If you'd like multiple people to be able to download this file, uncheck the "close automatically" checkbox.
|
||||
|
||||
|
@ -4,20 +4,20 @@
|
||||
|
||||
OnionShare is a tool that helps users securely and anonymously share files over the internet.
|
||||
|
||||
First, the sender chooses files and folders they wish to share with the recipient. OnionShare then starts a web server at `127.0.0.1` on a random port. It chooses two words from a 6800-long wordlist called a slug, and makes the files available for download at `http://127.0.0.1:[port]/[slug]/`. It then makes the web server accessible as Tor hidden service, and displays the URL `http://[hiddenservice].onion/[slug]` to the sender to share. A final OnionShare URL looks something like `http://f5ratndpx7rgvh7i.onion/fold-foxy`.
|
||||
First, the sender chooses files and folders they wish to share with the recipient. OnionShare then starts a web server at `127.0.0.1` on a random port. It chooses two words from a 6800-long wordlist called a slug, and makes the files available for download at `http://127.0.0.1:[port]/[slug]/`. It then makes the web server accessible as Tor onion service, and displays the URL `http://[onionservice].onion/[slug]` to the sender to share. A final OnionShare URL looks something like `http://f5ratndpx7rgvh7i.onion/fold-foxy`.
|
||||
|
||||
The sender is responsible for securely sharing that URL with the recipient using a communication channel of their choice, such as in an encrypted email, chat, or voice call, or something less secure like a Twitter or Facebook message, depending on their threat model.
|
||||
|
||||
The recipient must use Tor Browser to load the URL and download the files.
|
||||
|
||||
As soon as the shared files get downloaded, or when the sender closes OnionShare, the Tor hidden service and web servers shut down, completely removing the files from the internet (there is an option to not shut down after the first download, to allow the files to be downloaded multiple times). Because of this, OnionShare is most useful if it's used in real-time. For example, if a user runs OnionShare on their laptop, and then suspends their laptop before the files have been downloaded, the service will not be available until the laptop is unsuspended and connected to the internet again.
|
||||
As soon as the shared files get downloaded, or when the sender closes OnionShare, the Tor onion service and web servers shut down, completely removing the files from the internet (there is an option to not shut down after the first download, to allow the files to be downloaded multiple times). Because of this, OnionShare is most useful if it's used in real-time. For example, if a user runs OnionShare on their laptop, and then suspends their laptop before the files have been downloaded, the service will not be available until the laptop is unsuspended and connected to the internet again.
|
||||
|
||||
## What it protects against
|
||||
|
||||
* **Third parties don't have access to files being shared.** The files are hosted directly on the sender's computer and don't get uploaded to any server. Instead, the sender's computer becomes the server. Traditional ways of sending files, like in an email or using a cloud hosting service, require trusting the service with access to the files being shared.
|
||||
* **Network eavesdroppers can't spy on files in transit.** Because connections between Tor hidden services and Tor Browser are end-to-end encrypted, no network attackers can eavesdrop on the shared files while the recipient is downloading them. If the eavesdropper is positioned on the sender's end, the recipient's end, or is a malicious Tor node, they will only see Tor traffic. If the eavesdropper is a malicious rendezvous node used to connect the recipient's Tor client with the sender's hidden service, the traffic will be encrypted using the hidden service key.
|
||||
* **Network eavesdroppers can't spy on files in transit.** Because connections between Tor onion services and Tor Browser are end-to-end encrypted, no network attackers can eavesdrop on the shared files while the recipient is downloading them. If the eavesdropper is positioned on the sender's end, the recipient's end, or is a malicious Tor node, they will only see Tor traffic. If the eavesdropper is a malicious rendezvous node used to connect the recipient's Tor client with the sender's onion service, the traffic will be encrypted using the onion service key.
|
||||
* **Anonymity of sender and recipient are protected by Tor.** OnionShare and Tor Browser protect the anonymity of the users. As long as the sender anonymously communicates the OnionShare URL with the recipient, the recipient and eavesdroppers can't learn the identity of the sender.
|
||||
* **If an attacker enumerates the hidden service, the shared files remain safe.** There have been attacks against the Tor network that can enumerate hidden services. If someone discovers the .onion address of an OnionShare hidden service, they still cannot download the shared files without knowing the slug. The slug is generated by choosing two random words from a list of 6800 words, meaning there are 6800^2, or about 46 million possible slugs. But they can only make 20 wrong guesses before OnionShare stops the server, preventing brute force attacks against the slug. The OnionShare server also checks request URIs using a constant time string comparison function, so timing attacks can't be used to help guess the slug.
|
||||
* **If an attacker enumerates the onion service, the shared files remain safe.** There have been attacks against the Tor network that can enumerate onion services. If someone discovers the .onion address of an OnionShare onion service, they still cannot download the shared files without knowing the slug. The slug is generated by choosing two random words from a list of 6800 words, meaning there are 6800^2, or about 46 million possible slugs. But they can only make 20 wrong guesses before OnionShare stops the server, preventing brute force attacks against the slug. The OnionShare server also checks request URIs using a constant time string comparison function, so timing attacks can't be used to help guess the slug.
|
||||
|
||||
## What it doesn't protect against
|
||||
|
||||
|
@ -35,24 +35,24 @@ class NoTor(Exception):
|
||||
class HSDirError(Exception):
|
||||
"""
|
||||
This exception is raised when onionshare tries create a non-ephemeral
|
||||
hidden service and does not have permission to create or write to
|
||||
the hidden service directory.
|
||||
onion service and does not have permission to create or write to
|
||||
the onion service directory.
|
||||
"""
|
||||
pass
|
||||
|
||||
class HS(object):
|
||||
"""
|
||||
HS is an abstraction layer for connecting to the Tor control port and
|
||||
creating hidden services. Onionshare supports creating hidden services
|
||||
creating onion services. Onionshare supports creating onion services
|
||||
using two methods:
|
||||
|
||||
- Modifying the Tor configuration through the control port is the old
|
||||
method, and will be deprecated in favor of ephemeral hidden services.
|
||||
- Using the control port to create ephemeral hidden servers is the
|
||||
method, and will be deprecated in favor of ephemeral onion services.
|
||||
- Using the control port to create ephemeral onion servers is the
|
||||
preferred method.
|
||||
|
||||
This class detects the versions of Tor and stem to determine if ephemeral
|
||||
hidden services are supported. If not, it falls back to modifying the
|
||||
onion services are supported. If not, it falls back to modifying the
|
||||
Tor configuration.
|
||||
"""
|
||||
def __init__(self, transparent_torification=False):
|
||||
@ -77,14 +77,14 @@ class HS(object):
|
||||
if not found_tor:
|
||||
raise NoTor(strings._("cant_connect_ctrlport").format(str(ports)))
|
||||
|
||||
# do the versions of stem and tor that I'm using support ephemeral hidden services?
|
||||
# do the versions of stem and tor that I'm using support ephemeral onion services?
|
||||
tor_version = self.c.get_version().version_str
|
||||
list_ephemeral_hidden_services = getattr(self.c, "list_ephemeral_hidden_services", None)
|
||||
self.supports_ephemeral = callable(list_ephemeral_hidden_services) and tor_version >= '0.2.7.1'
|
||||
|
||||
def start(self, port):
|
||||
"""
|
||||
Start a hidden service on port 80, pointing to the given port, and
|
||||
Start a onion service on port 80, pointing to the given port, and
|
||||
return the onion hostname.
|
||||
"""
|
||||
print(strings._("connecting_ctrlport").format(int(port)))
|
||||
@ -96,7 +96,7 @@ class HS(object):
|
||||
return onion_host
|
||||
|
||||
else:
|
||||
# come up with a hidden service directory name
|
||||
# come up with a onion service directory name
|
||||
if helpers.get_platform() == 'Windows':
|
||||
self.hidserv_dir = tempfile.mkdtemp()
|
||||
self.hidserv_dir = self.hidserv_dir.replace('\\', '/')
|
||||
@ -106,7 +106,7 @@ class HS(object):
|
||||
|
||||
self.cleanup_filenames.append(self.hidserv_dir)
|
||||
|
||||
# set up hidden service
|
||||
# set up onion service
|
||||
hsdic = self.c.get_conf_map('HiddenServiceOptions') or {
|
||||
'HiddenServiceDir': [], 'HiddenServicePort': []
|
||||
}
|
||||
@ -128,11 +128,11 @@ class HS(object):
|
||||
|
||||
def wait_for_hs(self, onion_host):
|
||||
"""
|
||||
This function is only required when using non-ephemeral hidden services. After
|
||||
creating a hidden service, continually attempt to connect to it until it
|
||||
This function is only required when using non-ephemeral onion services. After
|
||||
creating a onion service, continually attempt to connect to it until it
|
||||
successfully connects.
|
||||
"""
|
||||
# legacy only, this function is no longer required with ephemeral hidden services
|
||||
# legacy only, this function is no longer required with ephemeral onion services
|
||||
print(strings._('wait_for_hs'))
|
||||
|
||||
ready = False
|
||||
@ -177,20 +177,20 @@ class HS(object):
|
||||
|
||||
def cleanup(self):
|
||||
"""
|
||||
Stop hidden services that were created earlier, and delete any temporary
|
||||
Stop onion services that were created earlier, and delete any temporary
|
||||
files that were created.
|
||||
"""
|
||||
if self.supports_ephemeral:
|
||||
# cleanup the ephemeral hidden service
|
||||
# cleanup the ephemeral onion service
|
||||
if self.service_id:
|
||||
self.c.remove_ephemeral_hidden_service(self.service_id)
|
||||
self.service_id = None
|
||||
|
||||
else:
|
||||
# cleanup hidden service
|
||||
# cleanup onion service
|
||||
try:
|
||||
if self.controller:
|
||||
# Get fresh hidden services (maybe changed since last time)
|
||||
# Get fresh onion services (maybe changed since last time)
|
||||
# and remove ourselves
|
||||
hsdic = self.controller.get_conf_map('HiddenServiceOptions') or {
|
||||
'HiddenServiceDir': [], 'HiddenServicePort': []
|
||||
|
@ -25,7 +25,7 @@ from . import strings, helpers, web, hs
|
||||
class OnionShare(object):
|
||||
"""
|
||||
OnionShare is the main application class. Pass in options and run
|
||||
start_hidden_service and it will do the magic.
|
||||
start_onion_service and it will do the magic.
|
||||
"""
|
||||
def __init__(self, debug=False, local_only=False, stay_open=False, transparent_torification=False):
|
||||
self.port = None
|
||||
@ -64,9 +64,9 @@ class OnionShare(object):
|
||||
self.port = tmpsock.getsockname()[1]
|
||||
tmpsock.close()
|
||||
|
||||
def start_hidden_service(self, gui=False):
|
||||
def start_onion_service(self, gui=False):
|
||||
"""
|
||||
Start the onionshare hidden service.
|
||||
Start the onionshare onion service.
|
||||
"""
|
||||
if not self.port:
|
||||
self.choose_port()
|
||||
@ -141,7 +141,7 @@ def main(cwd=None):
|
||||
try:
|
||||
app = OnionShare(debug, local_only, stay_open, transparent_torification)
|
||||
app.choose_port()
|
||||
app.start_hidden_service()
|
||||
app.start_onion_service()
|
||||
except hs.NoTor as e:
|
||||
sys.exit(e.args[0])
|
||||
except hs.HSDirError as e:
|
||||
|
@ -139,18 +139,18 @@ class OnionShareGui(QtWidgets.QMainWindow):
|
||||
|
||||
def start_server(self):
|
||||
"""
|
||||
Start the onionshare server. This uses multiple threads to start the Tor hidden
|
||||
Start the onionshare server. This uses multiple threads to start the Tor onion
|
||||
server and the web app.
|
||||
"""
|
||||
# Reset web counters
|
||||
web.download_count = 0
|
||||
web.error404_count = 0
|
||||
|
||||
# start the hidden service
|
||||
# start the onion service
|
||||
self.status_bar.showMessage(strings._('gui_starting_server1', True))
|
||||
self.app.choose_port()
|
||||
try:
|
||||
self.app.start_hidden_service(gui=True)
|
||||
self.app.start_onion_service(gui=True)
|
||||
except onionshare.hs.NoTor as e:
|
||||
alert(e.args[0], QtWidgets.QMessageBox.Warning)
|
||||
self.server_status.stop_server()
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"connecting_ctrlport": "Připojuju se na kontrolní port Toru pro nastavení hidden service na portu {0:d}.",
|
||||
"connecting_ctrlport": "Připojuju se na kontrolní port Toru pro nastavení onion service na portu {0:d}.",
|
||||
"cant_connect_ctrlport": "Nejde se připojit na kontrolní port Toru na portu {0:s}. OnionShare vyžaduje, aby Tor Browser běžel na pozadí. Pokud ho nemáte, můžete ho stáhnout z https://www.torproject.org/.",
|
||||
"cant_connect_socksport": "Nejde se připojit na Tor SOCKS5 server na portu {0:s}. OnionShare vyžaduje, aby Tor Browser běžel na pozadí. Pokud ho nemáte, můžete ho stáhnout z https://www.torproject.org/.",
|
||||
"preparing_files": "Připravuji soubory na sdílení.",
|
||||
"wait_for_hs": "Čekám až bude hidden service připravena:",
|
||||
"wait_for_hs": "Čekám až bude onion service připravena:",
|
||||
"wait_for_hs_trying": "Zkouším...",
|
||||
"wait_for_hs_nope": "Ještě nepřipraven.",
|
||||
"wait_for_hs_yup": "Připraven!",
|
||||
@ -17,9 +17,9 @@
|
||||
"large_filesize": "Varování: Posílání velkých souborů může trvat hodiny",
|
||||
"error_tails_invalid_port": "Nesprávná hodnota, port musí být celé číslo",
|
||||
"error_tails_unknown_root": "Unknown error with Tails root process",
|
||||
"help_tails_port": "Tails only: port for opening firewall, starting hidden service",
|
||||
"help_tails_port": "Tails only: port for opening firewall, starting onion service",
|
||||
"help_local_only": "Nepoužívat Tor: jen pro vývoj",
|
||||
"help_stay_open": "Nechat běžet hidden service po skončení stahování",
|
||||
"help_stay_open": "Nechat běžet onion service po skončení stahování",
|
||||
"help_transparent_torification": "My system is transparently torified",
|
||||
"help_debug": "Zaznamenat chyby na disk",
|
||||
"help_filename": "Seznam souborů a složek ke sdílení",
|
||||
@ -35,11 +35,11 @@
|
||||
"gui_downloads": "Stahování:",
|
||||
"gui_canceled": "Zrušeno",
|
||||
"gui_copied_url": "URL zkopírováno do schránky",
|
||||
"gui_starting_server1": "Spouštím Tor hidden service...",
|
||||
"gui_starting_server1": "Spouštím Tor onion service...",
|
||||
"gui_starting_server2": "Crunching files...",
|
||||
"gui_starting_server3": "Čekám na Tor hidden service...",
|
||||
"gui_starting_server3": "Čekám na Tor onion service...",
|
||||
"gui_please_wait": "Prosím čekejte...",
|
||||
"error_hs_dir_cannot_create": "Nejde vytvořit složka {0:s} pro hidden service",
|
||||
"error_hs_dir_not_writable": "Nejde zapisovat do složky {0:s} pro hidden service",
|
||||
"using_ephemeral": "Staring ephemeral Tor hidden service and awaiting publication"
|
||||
"error_hs_dir_cannot_create": "Nejde vytvořit složka {0:s} pro onion service",
|
||||
"error_hs_dir_not_writable": "Nejde zapisovat do složky {0:s} pro onion service",
|
||||
"using_ephemeral": "Staring ephemeral Tor onion service and awaiting publication"
|
||||
}
|
||||
|
@ -17,9 +17,9 @@
|
||||
"large_filesize": "Warnung: Das Senden von großen Dateien kann Stunden dauern",
|
||||
"error_tails_invalid_port": "Ungültiger Wert, Port muss eine ganze Zahl sein",
|
||||
"error_tails_unknown_root": "Unbekannter Fehler mit Tails root Prozess",
|
||||
"help_tails_port": "Nur für Tails: Port um den Firewall zu öffnen, starte Hidden Service",
|
||||
"help_tails_port": "Nur für Tails: Port um den Firewall zu öffnen, starte onion service",
|
||||
"help_local_only": "Nicht mit Tor benutzen, nur für Entwicklung",
|
||||
"help_stay_open": "Den Hidden Service nicht anhalten nachdem ein Download beendet wurde",
|
||||
"help_stay_open": "Den onion service nicht anhalten nachdem ein Download beendet wurde",
|
||||
"help_debug": "Fehler auf Festplatte schreiben",
|
||||
"help_filename": "Liste der zu teilenden Dateien oder Verzeichnisse",
|
||||
"gui_drag_and_drop": "Drag & drop\nDateien hier",
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"connecting_ctrlport": "Connecting to Tor control port to set up hidden service on port {0:d}.",
|
||||
"connecting_ctrlport": "Connecting to Tor control port to set up onion service on port {0:d}.",
|
||||
"cant_connect_ctrlport": "Can't connect to Tor control port on port {0:s}. OnionShare requires Tor Browser to be running in the background to work. If you don't have it you can get it from https://www.torproject.org/.",
|
||||
"cant_connect_socksport": "Can't connect to Tor SOCKS5 server on port {0:s}. OnionShare requires Tor Browser to be running in the background to work. If you don't have it you can get it from https://www.torproject.org/.",
|
||||
"preparing_files": "Preparing files to share.",
|
||||
@ -17,9 +17,9 @@
|
||||
"large_filesize": "Warning: Sending large files could take hours",
|
||||
"error_tails_invalid_port": "Invalid value, port must be an integer",
|
||||
"error_tails_unknown_root": "Unknown error with Tails root process",
|
||||
"help_tails_port": "Tails only: port for opening firewall, starting hidden service",
|
||||
"help_tails_port": "Tails only: port for opening firewall, starting onion service",
|
||||
"help_local_only": "Do not attempt to use tor: for development only",
|
||||
"help_stay_open": "Keep hidden service running after download has finished",
|
||||
"help_stay_open": "Keep onion service running after download has finished",
|
||||
"help_transparent_torification": "My system is transparently torified",
|
||||
"help_debug": "Log errors to disk",
|
||||
"help_filename": "List of files or folders to share",
|
||||
@ -35,13 +35,13 @@
|
||||
"gui_downloads": "Downloads:",
|
||||
"gui_canceled": "Canceled",
|
||||
"gui_copied_url": "Copied URL to clipboard",
|
||||
"gui_starting_server1": "Starting Tor hidden service...",
|
||||
"gui_starting_server1": "Starting Tor onion service...",
|
||||
"gui_starting_server2": "Crunching files...",
|
||||
"gui_starting_server3": "Waiting for Tor hidden service...",
|
||||
"gui_starting_server3": "Waiting for Tor onion service...",
|
||||
"gui_please_wait": "Please wait...",
|
||||
"error_hs_dir_cannot_create": "Cannot create hidden service dir {0:s}",
|
||||
"error_hs_dir_not_writable": "Hidden service dir {0:s} is not writable",
|
||||
"using_ephemeral": "Staring ephemeral Tor hidden service and awaiting publication",
|
||||
"error_hs_dir_cannot_create": "Cannot create onion service dir {0:s}",
|
||||
"error_hs_dir_not_writable": "onion service dir {0:s} is not writable",
|
||||
"using_ephemeral": "Staring ephemeral Tor onion service and awaiting publication",
|
||||
"gui_download_progress_complete": "%p%, Time Elapsed: {0:s}",
|
||||
"gui_download_progress_starting": "{0:s}, %p% (Computing ETA)",
|
||||
"gui_download_progress_eta": "{0:s}, ETA: {1:s}, %p%",
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"connecting_ctrlport": "Konektas al Tor-kontrolpordo por starigi hidden service je pordo {0:d}.",
|
||||
"connecting_ctrlport": "Konektas al Tor-kontrolpordo por starigi onion service je pordo {0:d}.",
|
||||
"cant_connect_ctrlport": "Ne eblas konekti al Tor-kontrolpordo je pordo {0:s}. OnionShare bezonas Tor Browser por esti ŝaltita en la fono. Se vi ne havas ĝin, vi povas ricevi ĝin je https://www.torproject.org/.",
|
||||
"cant_connect_socksport": "Ne eblas konekti al Tor-SOCKS5-servilo je pordo {0:s}. OnionShare bezonas Tor Browser por esti ŝaltita en la fono. Se vi ne havas ĝin, vi povas ricevi ĝin je https://www.torproject.org/.",
|
||||
"preparing_files": "Preparas dosierojn por kundivido.",
|
||||
@ -17,9 +17,9 @@
|
||||
"large_filesize": "Atentigo: Sendado de grandaj dosieroj povas daŭri horojn",
|
||||
"error_tails_invalid_port": "Malĝusta valoro, pordo devas esti plena nombro",
|
||||
"error_tails_unknown_root": "Nekonata eraro kun Tails-root-procezo",
|
||||
"help_tails_port": "Tails only: port for opening firewall, starting hidden service",
|
||||
"help_tails_port": "Tails only: port for opening firewall, starting onion service",
|
||||
"help_local_only": "Ne strebu uzi tor: nur por evoluado",
|
||||
"help_stay_open": "Lasu hidden service funkcii post fino de elŝuto",
|
||||
"help_stay_open": "Lasu onion service funkcii post fino de elŝuto",
|
||||
"help_transparent_torification": "My system is transparently torified",
|
||||
"help_debug": "Protokoli erarojn sur diskon",
|
||||
"help_filename": "Listo de dosieroj aŭ dosierujoj por kundividi",
|
||||
@ -35,11 +35,11 @@
|
||||
"gui_downloads": "Elŝutoj:",
|
||||
"gui_canceled": "Nuligita",
|
||||
"gui_copied_url": "URL kopiita en tondujon",
|
||||
"gui_starting_server1": "Startigas Tor hidden service...",
|
||||
"gui_starting_server1": "Startigas Tor onion service...",
|
||||
"gui_starting_server2": "Crunching files...",
|
||||
"gui_starting_server3": "Atendas por Tor hidden service...",
|
||||
"gui_starting_server3": "Atendas por Tor onion service...",
|
||||
"gui_please_wait": "Bonvolu atendi...",
|
||||
"error_hs_dir_cannot_create": "Ne eblas krei hidden-service-dosierujon {0:s}",
|
||||
"error_hs_dir_not_writable": "Ne eblas konservi dosierojn en hidden-service-dosierujo {0:s}",
|
||||
"using_ephemeral": "Staring ephemeral Tor hidden service and awaiting publication"
|
||||
"using_ephemeral": "Staring ephemeral Tor onion service and awaiting publication"
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
{
|
||||
"connecting_ctrlport": "Connexion au réseau Tor pour mettre en place un Hidden Service sur le port {0:d}.",
|
||||
"connecting_ctrlport": "Connexion au réseau Tor pour mettre en place un onion service sur le port {0:d}.",
|
||||
"cant_connect_ctrlport": "Impossible de se connecter au port de contrôle Tor sur le port {0:s}. Est-ce que Tor tourne ?",
|
||||
"preparing_files": "Préparation des fichiers à partager.",
|
||||
"wait_for_hs": "En attente du HS:",
|
||||
@ -15,9 +15,9 @@
|
||||
"closing_automatically": "Fermeture automatique car le téléchargement est fini",
|
||||
"error_tails_invalid_port": "Valeur invalide, le port doit être un nombre entier",
|
||||
"error_tails_unknown_root": "Erreur inconnue avec un processus root sur Tails",
|
||||
"help_tails_port": "Seulement sur Tails: port pour ouvrir le firewall, démarrage du Hidden Service",
|
||||
"help_tails_port": "Seulement sur Tails: port pour ouvrir le firewall, démarrage du onion service",
|
||||
"help_local_only": "Ne tentez pas d'utiliser Tor, uniquement pour développement",
|
||||
"help_stay_open": "Laisser tourner le Hidden Service après que le téléchargment soit fini",
|
||||
"help_stay_open": "Laisser tourner le onion service après que le téléchargment soit fini",
|
||||
"help_debug": "Enregistrer les erreurs sur le disque",
|
||||
"help_filename": "Liste des fichiers ou dossiers à partager",
|
||||
"gui_drag_and_drop": "Glissez déposez\nles fichiers ici",
|
||||
|
@ -35,11 +35,11 @@
|
||||
"gui_downloads": "Downloads:",
|
||||
"gui_canceled": "Afgebroken",
|
||||
"gui_copied_url": "URL gekopieerd naar klembord",
|
||||
"gui_starting_server1": "Tor hidden service wordt gestart...",
|
||||
"gui_starting_server1": "Tor onion service wordt gestart...",
|
||||
"gui_starting_server2": "Bestanden verwerken...",
|
||||
"gui_starting_server3": "Wachten op Tor hidden service...",
|
||||
"gui_starting_server3": "Wachten op Tor onion service...",
|
||||
"gui_please_wait": "Moment geduld...",
|
||||
"error_hs_dir_cannot_create": "Kan verborgen service map {0:s} niet aanmaken",
|
||||
"error_hs_dir_not_writable": "Verborgen service map {0:s} is niet schrijfbaar",
|
||||
"using_ephemeral": "Kortstondige Tor hidden service gestart en in afwachting van publicatie"
|
||||
"using_ephemeral": "Kortstondige Tor onion service gestart en in afwachting van publicatie"
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
"large_filesize": "Uyarı: Büyük dosyaların gönderimi saatler sürebilir",
|
||||
"error_tails_invalid_port": "Geçersiz değer, port sayı olmalıdır",
|
||||
"error_tails_unknown_root": "Tails ana işlemi ile ilgili bilinmeyen hata",
|
||||
"help_tails_port": "Sadece Tails: port for opening firewall, starting hidden service",
|
||||
"help_tails_port": "Sadece Tails: port for opening firewall, starting onion service",
|
||||
"help_local_only": "Tor kullanmaya kalkışmayın: sadece geliştirme için",
|
||||
"help_stay_open": "İndirme tamamlandıktan sonra gizli hizmeti çalıştırmaya devam et",
|
||||
"help_transparent_torification": "Sistemim apaçık torlu",
|
||||
|
Loading…
Reference in New Issue
Block a user