tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
February 2019
- 16 participants
- 1788 discussions
commit 149e236e64bf469221a3874bcfc82e89fe408785
Merge: c523619 c24b235
Author: juga0 <juga(a)riseup.net>
Date: Mon Feb 4 14:56:10 2019 +0000
Merge branch 'bug28869_squashed'
Solved merge conflicts in sbws/__init__.py and sbws/core/scanner.py
after merging bug28741
sbws/__init__.py | 18 +++
sbws/core/scanner.py | 201 ++++++++++++++++++-------
sbws/lib/circuitbuilder.py | 16 +-
sbws/lib/resultdump.py | 10 +-
sbws/util/stem.py | 9 +-
tests/integration/lib/test_relayprioritizer.py | 8 +-
6 files changed, 185 insertions(+), 77 deletions(-)
diff --cc sbws/__init__.py
index eea7006,3871edb..84b2787
--- a/sbws/__init__.py
+++ b/sbws/__init__.py
@@@ -1,18 -1,25 +1,36 @@@
__version__ = '1.0.3-dev0'
-
+ import threading # noqa
+
+from . import globals # noqa
+
class Settings:
+ """Singleton settings for all the packages.
+ This way change settings can be seen by all the packages that import it.
+
+ It lives in ``__init__.py`` to leave open the possibility of having a
+ ``settings.py`` module for user settings.
+
+ .. note:: After refactoring, globals should only have constants.
+ Any other variable that needs to be modified when initializing
+ should be initialized here.
+
+ """
def __init__(self):
+ # update this dict from globals (but only for ALL_CAPS settings)
+ for setting in dir(globals):
+ if setting.isupper():
+ setattr(self, setting, getattr(globals, setting))
+ self.end_event = threading.Event()
+ def init_http_headers(self, nickname, uuid, tor_version):
+ self.HTTP_HEADERS['Tor-Bandwidth-Scanner-Nickname'] = nickname
+ self.HTTP_HEADERS['Tor-Bandwidth-Scanner-UUID'] = uuid
+ self.HTTP_HEADERS['User-Agent'] += tor_version
+
+ def set_end_event(self):
+ self.end_event.set()
+
++
settings = Settings() # noqa
diff --cc sbws/core/scanner.py
index 8fe8a5b,bb7a2ca..013d4ee
--- a/sbws/core/scanner.py
+++ b/sbws/core/scanner.py
@@@ -1,8 -1,7 +1,9 @@@
''' Measure the relays. '''
+ import signal
import sys
+import threading
+import uuid
from ..lib.circuitbuilder import GapsCircuitBuilder as CB
from ..lib.resultdump import ResultDump
@@@ -13,7 -12,7 +14,7 @@@ from ..lib.relayprioritizer import Rela
from ..lib.destination import DestinationList
from ..util.timestamp import now_isodt_str
from ..util.state import State
- from sbws.globals import fail_hard, TIMEOUT_MEASUREMENTS, HTTP_GET_HEADERS
-from sbws.globals import fail_hard
++from sbws.globals import fail_hard, HTTP_GET_HEADERS
import sbws.util.stem as stem_utils
import sbws.util.requests as requests_utils
from argparse import ArgumentDefaultsHelpFormatter
@@@ -25,54 -23,52 +25,78 @@@ import loggin
import requests
import random
- from sbws import settings
-
+ from .. import settings
rng = random.SystemRandom()
- end_event = Event()
log = logging.getLogger(__name__)
+ # Declare the objects that manage the threads global so that sbws can exit
+ # gracefully at any time.
+ pool = None
+ rd = None
+ controller = None
+
+
+ def stop_threads(signal, frame):
+ global rd, pool
+ log.debug('Stopping sbws.')
+ # Avoid new threads to start.
+ settings.set_end_event()
+ # Stop Pool threads
+ pool.close()
+ pool.join()
+ # Stop ResultDump thread
+ rd.thread.join()
+ # Stop Tor thread
+ controller.close()
+ sys.exit(0)
+
+
+ signal.signal(signal.SIGTERM, stop_threads)
+def dumpstacks():
+ import traceback
+ log.critical("sbws stop measuring relays, probably because of a bug."
+ "Please, open a ticket in trac.torproject.org with this"
+ "backtrace.")
+ thread_id2name = dict([(t.ident, t.name) for t in threading.enumerate()])
+ for thread_id, stack in sys._current_frames().items():
+ log.critical("Thread: %s(%d)",
+ thread_id2name.get(thread_id, ""), thread_id)
+ log.critical(traceback.print_stack(stack))
+ # If logging level is less than DEBUG (more verbose), start pdb so that
+ # developers can debug the issue.
+ if log.getEffectiveLevel() < logging.DEBUG:
+ import pdb
+ pdb.set_trace()
+ # Otherwise exit.
+ else:
+ # Change to stop threads when #28869 is merged
+ sys.exit(1)
+
+
def timed_recv_from_server(session, dest, byte_range):
''' Request the **byte_range** from the URL at **dest**. If successful,
return True and the time it took to download. Otherwise return False and an
exception. '''
- headers = {'Range': byte_range, 'Accept-Encoding': 'identity'}
+
start_time = time.time()
+ HTTP_GET_HEADERS['Range'] = byte_range
# TODO:
# - What other exceptions can this throw?
- # - Do we have to read the content, or did requests already do so?
+ # - response.elapsed "measures the time taken between sending the first
+ # byte of the request and finishing parsing the headers.
+ # It is therefore unaffected by consuming the response content"
+ # If this mean that the content has arrived, elapsed could be used to
+ # know the time it took.
try:
- requests_utils.get(
- session, dest.url, headers=headers, verify=dest.verify)
+ # headers are merged with the session ones, not overwritten.
+ session.get(dest.url, headers=HTTP_GET_HEADERS, verify=dest.verify)
+ # NewConnectionError will be raised when shutting down.
except (requests.exceptions.ConnectionError,
- requests.exceptions.ReadTimeout) as e:
+ requests.exceptions.ReadTimeout,
+ requests.exceptions.NewConnectionError) as e:
+ log.debug(e)
return False, e
end_time = time.time()
return True, end_time - start_time
@@@ -379,17 -472,9 +501,17 @@@ def run_speedtest(args, conf)
'even lead to messed up results.',
conf.getpath('tor', 'control_socket'))
time.sleep(15)
+
+ # When there will be a refactor where conf is global, this can be removed
+ # from here.
+ state = State(conf.getpath('paths', 'state_fname'))
+ # Call only once to initialize http_headers
+ settings.init_http_headers(conf.get('scanner', 'nickname'), state['uuid'],
+ str(controller.get_version()))
+
rl = RelayList(args, conf, controller)
cb = CB(args, conf, controller, rl)
- rd = ResultDump(args, conf, end_event)
+ rd = ResultDump(args, conf)
rp = RelayPrioritizer(args, conf, rl, rd)
destinations, error_msg = DestinationList.from_config(
conf, cb, rl, controller)
@@@ -454,13 -515,5 +552,8 @@@ def main(args, conf)
state = State(conf.getpath('paths', 'state_fname'))
state['scanner_started'] = now_isodt_str()
+ # Generate an unique identifier for each scanner
+ if 'uuid' not in state:
+ state['uuid'] = str(uuid.uuid4())
- try:
- run_speedtest(args, conf)
- except KeyboardInterrupt as e:
- raise e
- finally:
- end_event.set()
+ run_speedtest(args, conf)
1
0

[translation/support-portal] Update translations for support-portal
by translation@torproject.org 04 Feb '19
by translation@torproject.org 04 Feb '19
04 Feb '19
commit c89481ad73872c7d471bc10409811f0f7334dd55
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Feb 4 12:20:07 2019 +0000
Update translations for support-portal
---
contents+pt-PT.po | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/contents+pt-PT.po b/contents+pt-PT.po
index 5431a161a..6c8b2ae21 100644
--- a/contents+pt-PT.po
+++ b/contents+pt-PT.po
@@ -113,6 +113,8 @@ msgid ""
"Antivirus software can interfere with [Tor](#tor-/-tor-network/-core-tor) "
"running on your computer."
msgstr ""
+"Os programas antivírus podem interferir com o [Tor](#tor-/-tor-network"
+"/-core-tor) a ser executado no seu computador."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -122,6 +124,8 @@ msgid ""
"You may need to consult the documentation for your antivirus software if you"
" do not know how to allow Tor."
msgstr ""
+"Pode ter de consultar a documentação do seu programa antivírus se não souber"
+" como configurá-lo para permitir a utilização do Tor."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
1
0

[translation/support-portal] Update translations for support-portal
by translation@torproject.org 04 Feb '19
by translation@torproject.org 04 Feb '19
04 Feb '19
commit 0c4688815d5a586ca0c756b62dbdfbec9480dd82
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Feb 4 11:50:10 2019 +0000
Update translations for support-portal
---
contents+pt-PT.po | 220 ++++++++++++++++++++++++++++--------------------------
1 file changed, 114 insertions(+), 106 deletions(-)
diff --git a/contents+pt-PT.po b/contents+pt-PT.po
index 65a0163ec..5431a161a 100644
--- a/contents+pt-PT.po
+++ b/contents+pt-PT.po
@@ -27,7 +27,7 @@ msgstr "Como é que nós pudemos ajudar?"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.title)
msgid "Tor Glossary"
-msgstr ""
+msgstr "Glossário do Tor"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -45,14 +45,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## A"
-msgstr ""
+msgstr "## A"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### add-on, extension, or plugin"
-msgstr ""
+msgstr "### extensão, add-on ou plugin"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -62,6 +62,8 @@ msgid ""
"Add-ons, extensions, and plugins are components that can be added to [web "
"browsers](#web-browser) to give them new features."
msgstr ""
+"As extensões, add-ons e plugins são componentes que podem ser adicionados "
+"aos [navegadores web](#web-browser) para fornecerem novas funcionalidades."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -71,6 +73,8 @@ msgid ""
"Tor Browser comes with two add-ons installed: [NoScript](#noscript) and "
"[HTTPS Everywhere](#https-everywhere)."
msgstr ""
+"O Tor Browser vem de origem com 2 extensões instaladas: o "
+"[NoScript](#noscript) e o [HTTPS Everywhere](#https-everywhere)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -80,13 +84,15 @@ msgid ""
"You should not install any additional add-ons to Tor Browser because that "
"can compromise some of its privacy features."
msgstr ""
+"Não deve instalar extensões adicionais ao Tor Browser porque pode "
+"comprometer algumas funcionalidades de segurança."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### antivirus software"
-msgstr ""
+msgstr "### programas antivírus"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -96,6 +102,8 @@ msgid ""
"An antivirus software is used to prevent, detect and remove malicious "
"software."
msgstr ""
+"Os programas antivírus são utilizados para prevenir, detetar e remover "
+"programas maliciosos."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -120,7 +128,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### App"
-msgstr ""
+msgstr "### App"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -145,7 +153,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Atlas"
-msgstr ""
+msgstr "### Atlas"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -161,7 +169,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## B"
-msgstr ""
+msgstr "## B"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -185,7 +193,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### bridge"
-msgstr ""
+msgstr "### ponte"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -257,7 +265,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### browsing history"
-msgstr ""
+msgstr "### histórico de navegação"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -282,14 +290,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## C"
-msgstr ""
+msgstr "## C"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### CAPTCHA"
-msgstr ""
+msgstr "### CAPTCHA"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -333,7 +341,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### circuit"
-msgstr ""
+msgstr "### circuito"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -355,7 +363,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### client"
-msgstr ""
+msgstr "### cliente"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -372,7 +380,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Compass"
-msgstr ""
+msgstr "### Compass"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -406,7 +414,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### cookie"
-msgstr ""
+msgstr "### cookie"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -441,7 +449,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### cryptographic signature"
-msgstr ""
+msgstr "### assinatura criptográfica"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -463,7 +471,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## D"
-msgstr ""
+msgstr "## D"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -503,14 +511,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## E"
-msgstr ""
+msgstr "## E"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### encryption"
-msgstr ""
+msgstr "### encriptação"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -545,7 +553,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### exit"
-msgstr ""
+msgstr "### saída"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -563,7 +571,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### ExoneraTor"
-msgstr ""
+msgstr "### ExoneraTor"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -582,14 +590,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## F"
-msgstr ""
+msgstr "## F"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Firefox"
-msgstr ""
+msgstr "### Firefox"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -625,7 +633,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### firewall"
-msgstr ""
+msgstr "### firewall"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -648,7 +656,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Flash Player"
-msgstr ""
+msgstr "### Flash Player"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -683,14 +691,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## G"
-msgstr ""
+msgstr "## G"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### GetTor"
-msgstr ""
+msgstr "### GetTor"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -707,7 +715,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### GSoC"
-msgstr ""
+msgstr "### GSoC"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -740,7 +748,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## H"
-msgstr ""
+msgstr "## H"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -765,7 +773,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### hidden services"
-msgstr ""
+msgstr "### serviços ocultos"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -797,7 +805,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### HTTP"
-msgstr ""
+msgstr "### HTTP"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -815,7 +823,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### HTTPS"
-msgstr ""
+msgstr "### HTTPS"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -832,7 +840,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### HTTPS-Everywhere"
-msgstr ""
+msgstr "### HTTPS-Everywhere"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -856,14 +864,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## I"
-msgstr ""
+msgstr "## I"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Internet Service Provider (ISP)"
-msgstr ""
+msgstr "### Fornecedor de acesso à Internet (ISP)"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -880,7 +888,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### IP address"
-msgstr ""
+msgstr "### Endereço IP"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -916,14 +924,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## J"
-msgstr ""
+msgstr "## J"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### JavaScript"
-msgstr ""
+msgstr "### JavaScript"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -944,14 +952,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## K"
-msgstr ""
+msgstr "## K"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## L"
-msgstr ""
+msgstr "## L"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -974,7 +982,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## M"
-msgstr ""
+msgstr "## M"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1017,14 +1025,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## N"
-msgstr ""
+msgstr "## N"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### New Identity"
-msgstr ""
+msgstr "### Nova identidade"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1110,7 +1118,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### NoScript"
-msgstr ""
+msgstr "### NoScript"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1146,14 +1154,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## O"
-msgstr ""
+msgstr "## O"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### obfs3"
-msgstr ""
+msgstr "### obfs3"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1171,7 +1179,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### obfs4"
-msgstr ""
+msgstr "### obfs4"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1339,7 +1347,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Orbot"
-msgstr ""
+msgstr "### Orbot"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1358,7 +1366,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Orfox"
-msgstr ""
+msgstr "### Orfox"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1377,7 +1385,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## P"
-msgstr ""
+msgstr "## P"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1434,7 +1442,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### proxy"
-msgstr ""
+msgstr "### proxy"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1533,14 +1541,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## Q"
-msgstr ""
+msgstr "## Q"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## R"
-msgstr ""
+msgstr "## R"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1564,14 +1572,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## S"
-msgstr ""
+msgstr "## S"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Satori"
-msgstr ""
+msgstr "### Satori"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1589,7 +1597,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### scramblesuit"
-msgstr ""
+msgstr "### scramblesuit"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1605,7 +1613,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### script"
-msgstr ""
+msgstr "### script"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1668,7 +1676,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### server"
-msgstr ""
+msgstr "### servidor"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1684,7 +1692,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### session"
-msgstr ""
+msgstr "### sessão"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1753,14 +1761,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## T"
-msgstr ""
+msgstr "## T"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Tails"
-msgstr ""
+msgstr "### Tails"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1783,7 +1791,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### The Tor Project"
-msgstr ""
+msgstr "### The Tor Project"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1875,7 +1883,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Tor Browser"
-msgstr ""
+msgstr "### Tor Browser"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -1941,7 +1949,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Tor Launcher"
-msgstr ""
+msgstr "### Tor Launcher"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2027,7 +2035,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Tor Messenger"
-msgstr ""
+msgstr "### Tor Messenger"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2061,7 +2069,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### TorBirdy"
-msgstr ""
+msgstr "### TorBirdy"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2077,7 +2085,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Torbutton"
-msgstr ""
+msgstr "### Torbutton"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2102,7 +2110,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### torrc"
-msgstr ""
+msgstr "### torrc"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2116,7 +2124,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Torsocks"
-msgstr ""
+msgstr "### Torsocks"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2141,7 +2149,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Tor2Web"
-msgstr ""
+msgstr "### Tor2Web"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2167,7 +2175,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### TPI"
-msgstr ""
+msgstr "### TPI"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2181,7 +2189,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### tpo"
-msgstr ""
+msgstr "### tpo"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2198,7 +2206,7 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### traffic"
-msgstr ""
+msgstr "### tráfego"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2214,28 +2222,28 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## U"
-msgstr ""
+msgstr "## U"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## V"
-msgstr ""
+msgstr "## V"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## W"
-msgstr ""
+msgstr "## W"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Web Browser"
-msgstr ""
+msgstr "### Navegador web"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -2286,21 +2294,21 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## X"
-msgstr ""
+msgstr "## X"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## Y"
-msgstr ""
+msgstr "## Y"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## Z"
-msgstr ""
+msgstr "## Z"
#: https//support.torproject.org/becoming-tor-translator/
#: (content/becoming-tor-translator/contents+en.lrquestion.title)
@@ -6089,132 +6097,132 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[A](#a) |"
-msgstr ""
+msgstr "[A](#a) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[B](#b) |"
-msgstr ""
+msgstr "[B](#b) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[C](#c) |"
-msgstr ""
+msgstr "[C](#c) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[D](#d) |"
-msgstr ""
+msgstr "[D](#d) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[E](#e) |"
-msgstr ""
+msgstr "[E](#e) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[F](#f) |"
-msgstr ""
+msgstr "[F](#f) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[G](#g) |"
-msgstr ""
+msgstr "[G](#g) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[H](#h) |"
-msgstr ""
+msgstr "[H](#h) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[I](#i) |"
-msgstr ""
+msgstr "[I](#i) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[J](#j) |"
-msgstr ""
+msgstr "[J](#j) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[K](#k) |"
-msgstr ""
+msgstr "[K](#k) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[L](#l) |"
-msgstr ""
+msgstr "[L](#l) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[M](#m) |"
-msgstr ""
+msgstr "[M](#m) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[N](#n) |"
-msgstr ""
+msgstr "[N](#n) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[O](#o) |"
-msgstr ""
+msgstr "[O](#o) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[P](#p) |"
-msgstr ""
+msgstr "[P](#p) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[Q](#q) |"
-msgstr ""
+msgstr "[Q](#q) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[R](#r) |"
-msgstr ""
+msgstr "[R](#r) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[S](#s) |"
-msgstr ""
+msgstr "[S](#s) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[T](#t) |"
-msgstr ""
+msgstr "[T](#t) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[U](#u) |"
-msgstr ""
+msgstr "[U](#u) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[V](#v) |"
-msgstr ""
+msgstr "[V](#v) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[W](#w) |"
-msgstr ""
+msgstr "[W](#w) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[X](#x) |"
-msgstr ""
+msgstr "[X](#x) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[Y](#r) |"
-msgstr ""
+msgstr "[Y](#r) |"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[Z](#z)"
-msgstr ""
+msgstr "[Z](#z)"
#: https//support.torproject.org/misc/tracing-tor-user/
#: (content/misc/misc-1/contents+en.lrquestion.title)
1
0

[translation/donatepages-messagespot] Update translations for donatepages-messagespot
by translation@torproject.org 04 Feb '19
by translation@torproject.org 04 Feb '19
04 Feb '19
commit 2ad5c769ae0f782e1b8552df3e86e144a28f492c
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Feb 4 09:45:26 2019 +0000
Update translations for donatepages-messagespot
---
locale/tr/LC_MESSAGES/messages.po | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/locale/tr/LC_MESSAGES/messages.po b/locale/tr/LC_MESSAGES/messages.po
index da704bb18..75d286a80 100644
--- a/locale/tr/LC_MESSAGES/messages.po
+++ b/locale/tr/LC_MESSAGES/messages.po
@@ -11,7 +11,7 @@
# cenk y. <goncagul(a)national.shitposting.agency>, 2019
# Lale Fatoş Tunçman <latuna63(a)gmail.com>, 2019
# Taha Karadoğan <tahakaradogan(a)gmail.com>, 2019
-# T. E. Kalayci <tekrei(a)fsfe.org>, 2019
+# T. E. Kalayci <tekrei(a)gmail.com>, 2019
# Hasan Tayyar BESIK <tayyar.besik(a)gmail.com>, 2019
#
msgid ""
@@ -1146,7 +1146,7 @@ msgid ""
"become too dependent on any single source."
msgstr ""
"Her ne kadar bu bağışlardan dolayı minnettar olsak da, Tor Projesi'nin "
-"herhangi bir tekel altında kalmasını istemeyiz."
+"herhangi bir tek bir kaynağa bağlı kalması istemeyiz."
#: tmp/cache_locale/4a/4ab2d928dab25aeb8c96bb2d1c2ad651173d6c029f40a442edf6925bfd038cd2.php:216
msgid ""
1
0

[obfs4/master] fixup! transports/meek_lite: Switch to pinning MS's CA intermediary certs
by yawning@torproject.org 04 Feb '19
by yawning@torproject.org 04 Feb '19
04 Feb '19
commit abf0435e18bb10c9e9e8e6b1a9c194a37d961e96
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Mon Feb 4 04:27:13 2019 +0000
fixup! transports/meek_lite: Switch to pinning MS's CA intermediary certs
---
transports/meeklite/hpkp_lite.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/transports/meeklite/hpkp_lite.go b/transports/meeklite/hpkp_lite.go
index 9063768..0ff56f9 100644
--- a/transports/meeklite/hpkp_lite.go
+++ b/transports/meeklite/hpkp_lite.go
@@ -116,6 +116,6 @@ func init() {
"wUY9EOTJmS7Aj4fDVCu/KeE++mV7FgIcbn4WhMz1I2k=", // Microsoft IT TLS CA 4 - 2024-05-20 12:52:38
"RCbqB+W8nwjznTeP4O6VjqcwdxIgI79eBpnBKRr32gc=", // Microsoft IT TLS CA 5 - 2024-05-20 12:53:03
},
- time.Date(2024, time.March, 05, 20, 00, 00, 00, time.UTC),
+ time.Date(2024, time.May, 20, 00, 00, 00, 00, time.UTC),
)
}
1
0

[obfs4/master] transports/meek_lite: Switch to pinning MS's CA intermediary certs
by yawning@torproject.org 04 Feb '19
by yawning@torproject.org 04 Feb '19
04 Feb '19
commit 0c371bcf8ef3c4103ea759eea01cf1337735ed7e
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Mon Feb 4 04:20:15 2019 +0000
transports/meek_lite: Switch to pinning MS's CA intermediary certs
This should give me more time before I need to update this.
---
transports/meeklite/hpkp_lite.go | 40 +++++++++++++++++++++++++++-------------
1 file changed, 27 insertions(+), 13 deletions(-)
diff --git a/transports/meeklite/hpkp_lite.go b/transports/meeklite/hpkp_lite.go
index 24cb177..9063768 100644
--- a/transports/meeklite/hpkp_lite.go
+++ b/transports/meeklite/hpkp_lite.go
@@ -39,32 +39,42 @@ type pinEntry struct {
func (db *hpkpDatabase) HasPins(host string) (string, bool) {
h, err := normalizeHost(host)
- return h, (db.pins[host] != nil && err == nil)
+ if err == nil {
+ if entry := db.pins[host]; entry != nil {
+ if time.Now().Before(entry.expiry) {
+ return h, true
+ }
+ }
+ }
+ return h, false
}
func (db *hpkpDatabase) Validate(host string, chains [][]*x509.Certificate) bool {
- var ok bool
- if host, ok = db.HasPins(host); !ok {
+ host, err := normalizeHost(host)
+ if err != nil {
return false
}
-
entry := db.pins[host]
+ if entry == nil {
+ return false
+ }
if time.Now().After(entry.expiry) {
// If the pins are expired, assume that it is valid.
return true
}
+ // Search for an intersection between the pins and the cert chain.
for _, chain := range chains {
for _, cert := range chain {
derivedPin := sha256.Sum256(cert.RawSubjectPublicKeyInfo)
derivedPinEncoded := base64.StdEncoding.EncodeToString(derivedPin[:])
- if !entry.digests[derivedPinEncoded] {
- return false
+ if entry.digests[derivedPinEncoded] {
+ return true
}
}
}
- return true
+ return false
}
func (db *hpkpDatabase) Add(host string, pins []string, expiry time.Time) {
@@ -93,15 +103,19 @@ func init() {
pins: make(map[string]*pinEntry),
}
- // Generated on 2019-02-04, expiry set to the expiration date
- // of the leaf, which is the earliest in the chain.
+ // Pin all of Microsoft's CA intermediary certificates for the
+ // Tor Browser Azure bridge.
+ //
+ // See: https://www.microsoft.com/pki/mscorp/cps/default.htm
builtinPinDB.Add(
"ajax.aspnetcdn.com",
[]string{
- "PPjoAKk+kCVr9VNPXJkyHXEKnIyd5t5NqpPL3zCvJOE=",
- "wBdPad95AU7OgLRs0FU/E6ILO1MSCM84kJ9y0H+TT7s=",
- "Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o=",
+ "CzdPous1hY3sIkO55pUH7vklXyIHVZAl/UnprSQvpEI=", // Microsoft IT SSL SHA2 - 2018-05-07 17:03:30
+ "xjXxgkOYlag7jCtR5DreZm9b61iaIhd+J3+b2LiybIw=", // Microsoft IT TLS CA 1 - 2024-05-20 12:51:28
+ "wBdPad95AU7OgLRs0FU/E6ILO1MSCM84kJ9y0H+TT7s=", // Microsoft IT TLS CA 2 - 2024-05-20 12:51:57
+ "wUY9EOTJmS7Aj4fDVCu/KeE++mV7FgIcbn4WhMz1I2k=", // Microsoft IT TLS CA 4 - 2024-05-20 12:52:38
+ "RCbqB+W8nwjznTeP4O6VjqcwdxIgI79eBpnBKRr32gc=", // Microsoft IT TLS CA 5 - 2024-05-20 12:53:03
},
- time.Date(2020, time.March, 30, 17, 48, 56, 0, time.UTC),
+ time.Date(2024, time.March, 05, 20, 00, 00, 00, time.UTC),
)
}
1
0

[obfs4/master] transports/meek_lite: Add an expiry date for HPKP entries
by yawning@torproject.org 04 Feb '19
by yawning@torproject.org 04 Feb '19
04 Feb '19
commit 3bd6beb8b2d932b0f0e2c7123eb08a2c9ab85b3e
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Mon Feb 4 03:48:32 2019 +0000
transports/meek_lite: Add an expiry date for HPKP entries
Mostly since the built-in pins will likely become invalid once the
certificates I used to generate them start to expire.
---
transports/meeklite/hpkp_lite.go | 43 +++++++++++++++++++++++++++++-----------
1 file changed, 31 insertions(+), 12 deletions(-)
diff --git a/transports/meeklite/hpkp_lite.go b/transports/meeklite/hpkp_lite.go
index 9e20d65..24cb177 100644
--- a/transports/meeklite/hpkp_lite.go
+++ b/transports/meeklite/hpkp_lite.go
@@ -21,6 +21,7 @@ import (
"crypto/sha256"
"crypto/x509"
"encoding/base64"
+ "time"
"golang.org/x/net/idna"
)
@@ -28,7 +29,12 @@ import (
var builtinPinDB *hpkpDatabase
type hpkpDatabase struct {
- pins map[string]map[string]bool
+ pins map[string]*pinEntry
+}
+
+type pinEntry struct {
+ digests map[string]bool
+ expiry time.Time
}
func (db *hpkpDatabase) HasPins(host string) (string, bool) {
@@ -42,12 +48,17 @@ func (db *hpkpDatabase) Validate(host string, chains [][]*x509.Certificate) bool
return false
}
- pins := db.pins[host]
+ entry := db.pins[host]
+ if time.Now().After(entry.expiry) {
+ // If the pins are expired, assume that it is valid.
+ return true
+ }
+
for _, chain := range chains {
for _, cert := range chain {
derivedPin := sha256.Sum256(cert.RawSubjectPublicKeyInfo)
derivedPinEncoded := base64.StdEncoding.EncodeToString(derivedPin[:])
- if !pins[derivedPinEncoded] {
+ if !entry.digests[derivedPinEncoded] {
return false
}
}
@@ -56,7 +67,7 @@ func (db *hpkpDatabase) Validate(host string, chains [][]*x509.Certificate) bool
return true
}
-func (db *hpkpDatabase) Add(host string, pins []string) {
+func (db *hpkpDatabase) Add(host string, pins []string, expiry time.Time) {
h, err := normalizeHost(host)
if err != nil {
panic("failed to add hpkp pin, invalid host: " + err.Error())
@@ -67,7 +78,10 @@ func (db *hpkpDatabase) Add(host string, pins []string) {
pinMap[pin] = true
}
- db.pins[h] = pinMap
+ db.pins[h] = &pinEntry{
+ digests: pinMap,
+ expiry: expiry,
+ }
}
func normalizeHost(host string) (string, error) {
@@ -76,13 +90,18 @@ func normalizeHost(host string) (string, error) {
func init() {
builtinPinDB = &hpkpDatabase{
- pins: make(map[string]map[string]bool),
+ pins: make(map[string]*pinEntry),
}
- // Generated on 2019-02-04.
- builtinPinDB.Add("ajax.aspnetcdn.com", []string{
- "PPjoAKk+kCVr9VNPXJkyHXEKnIyd5t5NqpPL3zCvJOE=",
- "wBdPad95AU7OgLRs0FU/E6ILO1MSCM84kJ9y0H+TT7s=",
- "Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o=",
- })
+ // Generated on 2019-02-04, expiry set to the expiration date
+ // of the leaf, which is the earliest in the chain.
+ builtinPinDB.Add(
+ "ajax.aspnetcdn.com",
+ []string{
+ "PPjoAKk+kCVr9VNPXJkyHXEKnIyd5t5NqpPL3zCvJOE=",
+ "wBdPad95AU7OgLRs0FU/E6ILO1MSCM84kJ9y0H+TT7s=",
+ "Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o=",
+ },
+ time.Date(2020, time.March, 30, 17, 48, 56, 0, time.UTC),
+ )
}
1
0

[obfs4/master] transports/meeklite: Add a lightweight HPKP implementation
by yawning@torproject.org 04 Feb '19
by yawning@torproject.org 04 Feb '19
04 Feb '19
commit c65aaf6407fe742baabd6ea4d6d92970ef0ba44f
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Mon Feb 4 03:24:25 2019 +0000
transports/meeklite: Add a lightweight HPKP implementation
HPKP is effectively dead as far as a standard goes, but the idea has
merit in certain use cases, this being one of them.
As a TLS MITM essentially will strip whatever obfuscation that the
transport may provide, the digests of the SubjectPublicKeyInfo fields
of the Tor Browser Azure meek host are now hardcoded.
The behavior can be disabled by passing `disableHPKP=true` on the bridge
line, for cases where comaptibility is prefered over security.
---
ChangeLog | 2 +
transports/meeklite/hpkp_lite.go | 88 ++++++++++++++++++++++++++++++++++++++++
transports/meeklite/meek.go | 19 ++++++---
transports/meeklite/transport.go | 28 +++++++++++--
4 files changed, 129 insertions(+), 8 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index a0c5991..0df8124 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,8 @@ Changes in version 0.0.9 - UNRELEASED:
- Various meek_lite code cleanups and bug fixes.
- Bug 29077: uTLS for ClientHello camouflage (meek_lite).
- More fixes to HTTP Basic auth.
+ - (meek_lite) Pin the certificate chain public keys for the default
+ Tor Browser Azure bridge (meek_lite).
Changes in version 0.0.8 - 2019-01-20:
- Bug 24793: Send the correct authorization HTTP header for basic auth.
diff --git a/transports/meeklite/hpkp_lite.go b/transports/meeklite/hpkp_lite.go
new file mode 100644
index 0000000..9e20d65
--- /dev/null
+++ b/transports/meeklite/hpkp_lite.go
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2019 Yawning Angel <yawning at schwanenlied dot me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * 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 <https://www.gnu.org/licenses/>.
+ */
+
+package meeklite
+
+import (
+ "crypto/sha256"
+ "crypto/x509"
+ "encoding/base64"
+
+ "golang.org/x/net/idna"
+)
+
+var builtinPinDB *hpkpDatabase
+
+type hpkpDatabase struct {
+ pins map[string]map[string]bool
+}
+
+func (db *hpkpDatabase) HasPins(host string) (string, bool) {
+ h, err := normalizeHost(host)
+ return h, (db.pins[host] != nil && err == nil)
+}
+
+func (db *hpkpDatabase) Validate(host string, chains [][]*x509.Certificate) bool {
+ var ok bool
+ if host, ok = db.HasPins(host); !ok {
+ return false
+ }
+
+ pins := db.pins[host]
+ for _, chain := range chains {
+ for _, cert := range chain {
+ derivedPin := sha256.Sum256(cert.RawSubjectPublicKeyInfo)
+ derivedPinEncoded := base64.StdEncoding.EncodeToString(derivedPin[:])
+ if !pins[derivedPinEncoded] {
+ return false
+ }
+ }
+ }
+
+ return true
+}
+
+func (db *hpkpDatabase) Add(host string, pins []string) {
+ h, err := normalizeHost(host)
+ if err != nil {
+ panic("failed to add hpkp pin, invalid host: " + err.Error())
+ }
+
+ pinMap := make(map[string]bool)
+ for _, pin := range pins {
+ pinMap[pin] = true
+ }
+
+ db.pins[h] = pinMap
+}
+
+func normalizeHost(host string) (string, error) {
+ return idna.Lookup.ToASCII(host)
+}
+
+func init() {
+ builtinPinDB = &hpkpDatabase{
+ pins: make(map[string]map[string]bool),
+ }
+
+ // Generated on 2019-02-04.
+ builtinPinDB.Add("ajax.aspnetcdn.com", []string{
+ "PPjoAKk+kCVr9VNPXJkyHXEKnIyd5t5NqpPL3zCvJOE=",
+ "wBdPad95AU7OgLRs0FU/E6ILO1MSCM84kJ9y0H+TT7s=",
+ "Y9mvm0exBk1JoQ57f9Vm28jKo5lFm/woKcVxrYxu80o=",
+ })
+}
diff --git a/transports/meeklite/meek.go b/transports/meeklite/meek.go
index f86e934..fc97d7f 100644
--- a/transports/meeklite/meek.go
+++ b/transports/meeklite/meek.go
@@ -41,6 +41,7 @@ import (
gourl "net/url"
"os"
"runtime"
+ "strings"
"sync"
"time"
@@ -50,9 +51,10 @@ import (
)
const (
- urlArg = "url"
- frontArg = "front"
- utlsArg = "utls"
+ urlArg = "url"
+ frontArg = "front"
+ utlsArg = "utls"
+ disableHPKPArg = "disableHPKP"
maxChanBacklog = 16
@@ -76,7 +78,8 @@ type meekClientArgs struct {
url *gourl.URL
front string
- utls *utls.ClientHelloID
+ utls *utls.ClientHelloID
+ disableHPKP bool
}
func (ca *meekClientArgs) Network() string {
@@ -114,6 +117,12 @@ func newClientArgs(args *pt.Args) (ca *meekClientArgs, err error) {
return nil, err
}
+ // Parse the (optional) HPKP disable argument.
+ hpkpOpt, _ := args.Get(disableHPKPArg)
+ if strings.ToLower(hpkpOpt) == "true" {
+ ca.disableHPKP = true
+ }
+
return ca, nil
}
@@ -358,7 +367,7 @@ func newMeekConn(network, addr string, dialFn base.DialFunc, ca *meekClientArgs)
case nil:
rt = &http.Transport{Dial: dialFn}
default:
- rt = newRoundTripper(dialFn, ca.utls)
+ rt = newRoundTripper(dialFn, ca.utls, ca.disableHPKP)
}
conn := &meekConn{
diff --git a/transports/meeklite/transport.go b/transports/meeklite/transport.go
index 2736fe1..5817be0 100644
--- a/transports/meeklite/transport.go
+++ b/transports/meeklite/transport.go
@@ -19,6 +19,7 @@ package meeklite
import (
"crypto/tls"
+ "crypto/x509"
"errors"
"fmt"
"net"
@@ -28,6 +29,7 @@ import (
"strings"
"sync"
+ "gitlab.com/yawning/obfs4.git/common/log"
"gitlab.com/yawning/obfs4.git/transports/base"
utls "gitlab.com/yawning/utls.git"
"golang.org/x/net/http2"
@@ -64,7 +66,8 @@ type roundTripper struct {
dialFn base.DialFunc
transport http.RoundTripper
- initConn net.Conn
+ initConn net.Conn
+ disableHPKP bool
}
func (rt *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
@@ -128,7 +131,25 @@ func (rt *roundTripper) dialTLS(network, addr string) (net.Conn, error) {
host = addr
}
- conn := utls.UClient(rawConn, &utls.Config{ServerName: host}, *rt.clientHelloID)
+ var verifyPeerCertificateFn func([][]byte, [][]*x509.Certificate) error
+ if !rt.disableHPKP {
+ if pinHost, ok := builtinPinDB.HasPins(host); ok {
+ if rt.transport == nil {
+ log.Debugf("meek_lite - HPKP enabled for host: %v", pinHost)
+ }
+ verifyPeerCertificateFn = func(rawCerts [][]byte, verifiedChains [][]*x509.Certificate) error {
+ if !builtinPinDB.Validate(pinHost, verifiedChains) {
+ log.Errorf("meek_lite - HPKP validation failure, potential MITM for host: %v", pinHost)
+ return fmt.Errorf("meek_lite: HPKP validation failure for host: %v", pinHost)
+ }
+ return nil
+ }
+ }
+ } else if rt.transport == nil {
+ log.Warnf("meek_lite - HPKP disabled for host: %v", host)
+ }
+
+ conn := utls.UClient(rawConn, &utls.Config{ServerName: host, VerifyPeerCertificate: verifyPeerCertificateFn}, *rt.clientHelloID)
if err = conn.Handshake(); err != nil {
conn.Close()
return nil, err
@@ -170,10 +191,11 @@ func getDialTLSAddr(u *url.URL) string {
return net.JoinHostPort(u.Host, strconv.Itoa(pInt))
}
-func newRoundTripper(dialFn base.DialFunc, clientHelloID *utls.ClientHelloID) http.RoundTripper {
+func newRoundTripper(dialFn base.DialFunc, clientHelloID *utls.ClientHelloID, disableHPKP bool) http.RoundTripper {
return &roundTripper{
clientHelloID: clientHelloID,
dialFn: dialFn,
+ disableHPKP: disableHPKP,
}
}
1
0

[translation/support-portal] Update translations for support-portal
by translation@torproject.org 03 Feb '19
by translation@torproject.org 03 Feb '19
03 Feb '19
commit 0cb2bac51abe1505f52d74a18ed63b83db4f92e1
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Feb 3 23:20:01 2019 +0000
Update translations for support-portal
---
contents+de.po | 111 +++++++++++++++++++++++++++++++++++++++++++++------------
contents+fr.po | 108 ++++++++++++++++++++++++++++++++++++++++++++-----------
2 files changed, 176 insertions(+), 43 deletions(-)
diff --git a/contents+de.po b/contents+de.po
index d3f3283b2..62993f520 100644
--- a/contents+de.po
+++ b/contents+de.po
@@ -1,9 +1,9 @@
# Translators:
# erinm, 2018
# Emma Peel, 2019
-# Curtis Baltimore <curtisbaltimore(a)protonmail.com>, 2019
# Jim John <transifex(a)exware.de>, 2019
# jk <ich_geh_kaputt(a)mac.com>, 2019
+# Curtis Baltimore <curtisbaltimore(a)protonmail.com>, 2019
#
msgid ""
msgstr ""
@@ -11,7 +11,7 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-01-28 19:24+CET\n"
"PO-Revision-Date: 2018-10-02 22:41+0000\n"
-"Last-Translator: jk <ich_geh_kaputt(a)mac.com>, 2019\n"
+"Last-Translator: Curtis Baltimore <curtisbaltimore(a)protonmail.com>, 2019\n"
"Language-Team: German (https://www.transifex.com/otf/teams/1519/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -46,14 +46,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## A"
-msgstr ""
+msgstr "## A"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### add-on, extension, or plugin"
-msgstr ""
+msgstr "### Add-on, Erweiterung oder Plugin"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -63,6 +63,9 @@ msgid ""
"Add-ons, extensions, and plugins are components that can be added to [web "
"browsers](#web-browser) to give them new features."
msgstr ""
+"Add-ons, Erweiterungen und Plugins sind Komponenten, die zu [Webbrowser"
+"](#web-browser) hinzugefügt werden können, um ihnen neue Funktionen zu "
+"geben."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -72,6 +75,8 @@ msgid ""
"Tor Browser comes with two add-ons installed: [NoScript](#noscript) and "
"[HTTPS Everywhere](#https-everywhere)."
msgstr ""
+"Tor Browser wird mit zwei installierten Add-ons geliefert: "
+"[NoScript](#noscript) und [HTTPS Everywhere](#https-everwhere)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -81,13 +86,15 @@ msgid ""
"You should not install any additional add-ons to Tor Browser because that "
"can compromise some of its privacy features."
msgstr ""
+"Du solltest keine zusätzlichen Add-ons für Tor Browser installieren, da dies"
+" einige seiner Datenschutzfunktionen beeinträchtigen kann."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### antivirus software"
-msgstr ""
+msgstr "### Antivirensoftware"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -97,6 +104,8 @@ msgid ""
"An antivirus software is used to prevent, detect and remove malicious "
"software."
msgstr ""
+"Eine Antivirensoftware wird verwendet, um bösartige Software zu verhindern, "
+"zu erkennen und zu entfernen."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -106,6 +115,8 @@ msgid ""
"Antivirus software can interfere with [Tor](#tor-/-tor-network/-core-tor) "
"running on your computer."
msgstr ""
+"Antivirensoftware kann die Ausführung von [Tor](#tor-/-tor-network/-core-"
+"tor) auf deinem Computer beeinträchtigen."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -115,13 +126,15 @@ msgid ""
"You may need to consult the documentation for your antivirus software if you"
" do not know how to allow Tor."
msgstr ""
+"Möglicherweise musst du die Dokumentation deiner Antivirensoftware "
+"nachschlagen, wenn du nicht weißt, wie man Tor zulässt."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### App"
-msgstr ""
+msgstr "### App"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -131,6 +144,8 @@ msgid ""
"A web application (web app), is an application which the [client](#client) "
"runs in a [web browser](#web-browser)."
msgstr ""
+"Eine Web-Applikation (Web-App) ist eine Anwendung, die der [client](#client)"
+" in einem [web browser](#web-browser) ausführt."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -140,13 +155,15 @@ msgid ""
"App can also refer to software that you install on mobile [operating systems"
"](#operating-system-os)."
msgstr ""
+"App kann sich auch auf Software beziehen, die du auf mobilen "
+"[Betriebssystemen](#operating-system-os) installierst."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Atlas"
-msgstr ""
+msgstr "### Atlas"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -156,20 +173,22 @@ msgid ""
"Atlas is a web application to learn about currently running Tor "
"[relays](#relay)."
msgstr ""
+"Atlas ist eine Webanwendung, um mehr über die aktuell laufenden Tor "
+"[relays](#relay) zu erfahren."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## B"
-msgstr ""
+msgstr "## B"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### bandwidth authority"
-msgstr ""
+msgstr "### Bandbreitenberechtigung"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -180,13 +199,16 @@ msgid ""
"authorities take periodic measurements of the [relays](#relay) in the "
"[consensus](#consensus)."
msgstr ""
+"Um den Durchsatz eines Relays zu bestimmen, führen spezielle Relays, die als"
+" Bandbreitenberechtigungen bezeichnet werden, regelmäßige Messungen der "
+"[Relays](#Relays) im [Konsens](#Konsens) durch."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### bridge"
-msgstr ""
+msgstr "### brücke"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -197,6 +219,10 @@ msgid ""
"ordinary relays, however, they are not listed publicly, so an adversary "
"cannot identify them easily."
msgstr ""
+"Wie gewöhnliche Tor[relays](#relay) werden Brücken von Freiwilligen "
+"betrieben; im Gegensatz zu gewöhnlichen Relays sind sie jedoch nicht "
+"öffentlich aufgelistet, so dass ein Gegner sie nicht leicht identifizieren "
+"kann."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -206,27 +232,29 @@ msgid ""
"[Pluggable transports](#pluggable-transports) are a type of bridge that help"
" disguise the fact that you are using Tor."
msgstr ""
+"[Pluggable-Transporte](#pluggable-transports) sind eine Art von Brücke, die "
+"helfen, die Tatsache zu verschleiern, dass du Tor benutzt."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### bridge authority"
-msgstr ""
+msgstr "### brückenberechtigung"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "A special-purpose relay that maintains the list of [bridges](#bridge)."
-msgstr ""
+msgstr "Un relay spécial qui maintient la liste des [ponts](#bridge)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### browser fingerprinting"
-msgstr ""
+msgstr "### Browser-Fingerabdrücke"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -236,6 +264,9 @@ msgid ""
"Fingerprinting is the process of collecting information about a device or "
"service to make educated guesses about its identity or characteristics."
msgstr ""
+"Fingerprinting ist der Prozess der Sammlung von Informationen über ein Gerät"
+" oder einen Dienst, um fundierte Vermutungen über seine Identität oder "
+"Eigenschaften anzustellen."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -245,20 +276,22 @@ msgid ""
"Unique behavior or responses can be used to identify the device or service "
"analyzed."
msgstr ""
+"Eindeutiges Verhalten oder eindeutige Reaktionen können zur Identifizierung "
+"des analysierten Geräts oder Dienstes verwendet werden."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[Tor Browser](#tor-browser) prevents fingerprinting."
-msgstr ""
+msgstr "[Tor Browser](#tor-browser) verhindert Fingerprinting."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### browsing history"
-msgstr ""
+msgstr "### Browserverlauf"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -268,6 +301,9 @@ msgid ""
"A browser history is a record of requests made while using a [web browser"
"](#web-browser), and includes information like websites visited and when."
msgstr ""
+"Ein Browser-Verlauf ist eine Aufzeichnung von Anfragen, die während der "
+"Verwendung eines [Webbrowser](#Webbrowser) erfolgen, und enthält "
+"Informationen wie besuchte Websites und wann."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -277,20 +313,22 @@ msgid ""
"[Tor Browser](#tor-browser) deletes your browsing history after you close "
"your [session](#session)."
msgstr ""
+"[Tor Browser](#tor-browser) löscht deinen Browserverlauf, nachdem du deine "
+"[session](#session) geschlossen hast."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## C"
-msgstr ""
+msgstr "## C"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### CAPTCHA"
-msgstr ""
+msgstr "### CAPTCHA"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -300,6 +338,8 @@ msgid ""
"Captchas are a challenge-response test used in computing to determine "
"whether the user is human or not."
msgstr ""
+"Captchas sind ein Challenge-Response-Test, der bei der Computerarbeit "
+"verwendet wird, um festzustellen, ob der Benutzer ein Mensch ist oder nicht."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -311,13 +351,17 @@ msgid ""
"hard time determining whether or not those requests are coming from humans "
"or from bots."
msgstr ""
+"[Tor](#tor-/-tor-network/-core-tor) Benutzer werden oft mit Captchas "
+"versorgt, weil Tor[relays](#relay) so viele Anfragen stellen, dass es "
+"Webseiten manchmal schwer fällt festzustellen, ob diese Anfragen von "
+"Menschen oder von Bots kommen oder nicht."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### checksum"
-msgstr ""
+msgstr "### checksum"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -328,13 +372,16 @@ msgid ""
"software without errors, the given checksum and the checksum of your "
"downloaded file will be identical."
msgstr ""
+"Prüfsummen sind [hash](#hash)-Werte von Dateien. Wenn du die Software "
+"fehlerfrei herunterlädst, sind die angegebene Prüfsumme und die Prüfsumme "
+"deiner heruntergeladenen Datei identisch."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### circuit"
-msgstr ""
+msgstr "### circuit"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -350,13 +397,23 @@ msgid ""
"service)), and never an exit node. You can view your current Tor circuit by "
"clicking on the onion button in Tor Browser."
msgstr ""
+"Ein Pfad durch das von [clients](#client)(#tor-/-tor-network/-core-tor) "
+"erstellte [Tor-Netzwerk](#client), bestehend aus zufällig ausgewählten "
+"Knoten. Die Schaltung beginnt entweder mit einer [Brücke](#Brücke) oder "
+"einer [Guard](#guard). Die meisten Schaltkreise bestehen aus drei Knoten - "
+"einer Schutzeinrichtung oder einer Brücke, einem [mittleren "
+"Relais](#mittlere Relais) und einem [Ausgang](#Ausgang). Die meisten [onion "
+"services](#onion-services) verwenden sechs Sprünge in einem Schaltkreis (mit"
+" Ausnahme von [single onion services](#single-onion-service)) und nie einen "
+"Ausgangsknoten. Du kannst dir deinen aktuellen Tor-Schaltkreis ansehen, "
+"indem du auf die Zwiebel-Taste im Tor-Browser klickst."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### client"
-msgstr ""
+msgstr "### client"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -367,13 +424,16 @@ msgid ""
"network, typically running on behalf of one user, that routes application "
"connections over a series of [relays](#relay)."
msgstr ""
+"In [Tor](#tor-/-tor-network/-core-tor) ist ein Client ein Knoten im Tor-"
+"Netzwerk, der typischerweise im Namen eines Benutzers läuft, der "
+"Anwendungsverbindungen über eine Reihe von [relays](#relay) leitet."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Compass"
-msgstr ""
+msgstr "### Compass"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -383,13 +443,15 @@ msgid ""
"Compass is a web application to learn about currently running [Tor "
"relays](#relay) in bulk."
msgstr ""
+"Compass ist eine Webanwendung, um mehr über die aktuell laufenden [Tor-"
+"Relais](#Relais) zu erfahren."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### consensus"
-msgstr ""
+msgstr "### consensus"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -401,6 +463,11 @@ msgid ""
"[clients](#client) have the same information about the [relays](#relay) that"
" make up the [Tor network](#tor-/-tor-network/-core-tor)."
msgstr ""
+"In Tor-Begriffen ausgedrückt, ein einziges Dokument, das einmal pro Stunde "
+"von den [Verzeichnisautoritäten](#Verzeichnisbehörde) erstellt und "
+"abgestimmt wird, um sicherzustellen, dass alle [Kunden](#Client) die "
+"gleichen Informationen über die [Relais](#Relais) haben, aus denen das [Tor-"
+"Netzwerk](#tor-/-tor-network/-core-tor) besteht."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
diff --git a/contents+fr.po b/contents+fr.po
index 9d7473731..ea330356e 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -27,7 +27,7 @@ msgstr "Comment pouvons-nous vous aider ?"
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.title)
msgid "Tor Glossary"
-msgstr ""
+msgstr "Glossaire Tor"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -45,14 +45,14 @@ msgstr ""
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## A"
-msgstr ""
+msgstr "## A"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### add-on, extension, or plugin"
-msgstr ""
+msgstr "#### add-on, extension ou plugin"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -62,6 +62,9 @@ msgid ""
"Add-ons, extensions, and plugins are components that can be added to [web "
"browsers](#web-browser) to give them new features."
msgstr ""
+"Les add-ons, extensions et plugins sont des composants qui peuvent être "
+"ajoutés à[web browsers](#web-browser) pour leur donner de nouvelles "
+"fonctionnalités."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -71,6 +74,8 @@ msgid ""
"Tor Browser comes with two add-ons installed: [NoScript](#noscript) and "
"[HTTPS Everywhere](#https-everywhere)."
msgstr ""
+"Tor Browser est livré avec deux add-ons installés : NoScript](#noscript) et "
+"[HTTPS Everywhere](#https-everywhere)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -80,13 +85,16 @@ msgid ""
"You should not install any additional add-ons to Tor Browser because that "
"can compromise some of its privacy features."
msgstr ""
+"Vous ne devriez pas installer d'add-ons supplémentaires au navigateur Tor "
+"car cela peut compromettre certaines de ses fonctionnalités de "
+"confidentialité."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### antivirus software"
-msgstr ""
+msgstr "### Logiciel antivirus"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -96,6 +104,8 @@ msgid ""
"An antivirus software is used to prevent, detect and remove malicious "
"software."
msgstr ""
+"Un logiciel antivirus est utilisé pour prévenir, détecter et supprimer les "
+"logiciels malveillants."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -105,6 +115,8 @@ msgid ""
"Antivirus software can interfere with [Tor](#tor-/-tor-network/-core-tor) "
"running on your computer."
msgstr ""
+"Un logiciel antivirus peut interférer avec [Tor](#tor-/-tor-tor-network"
+"/-core-tor) qui s'exécute sur votre ordinateur."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -114,13 +126,15 @@ msgid ""
"You may need to consult the documentation for your antivirus software if you"
" do not know how to allow Tor."
msgstr ""
+"Vous devrez peut-être consulter la documentation de votre logiciel antivirus"
+" si vous ne savez pas comment autoriser Tor."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### App"
-msgstr ""
+msgstr "### App"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -130,6 +144,8 @@ msgid ""
"A web application (web app), is an application which the [client](#client) "
"runs in a [web browser](#web-browser)."
msgstr ""
+"Une application web (web app), est une application que le [client](#client) "
+"exécute dans un [navigateur web](#web-browser)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -139,13 +155,15 @@ msgid ""
"App can also refer to software that you install on mobile [operating systems"
"](#operating-system-os)."
msgstr ""
+"L'application peut également faire référence aux logiciels que vous "
+"installez sur les systèmes d'exploitation mobiles (#operating-system-os)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Atlas"
-msgstr ""
+msgstr "### Atlas"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -155,20 +173,22 @@ msgid ""
"Atlas is a web application to learn about currently running Tor "
"[relays](#relay)."
msgstr ""
+"Atlas est une application web pour en savoir plus sur le fonctionnement "
+"actuel de Tor [relays](#relay)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## B"
-msgstr ""
+msgstr "## B"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### bandwidth authority"
-msgstr ""
+msgstr "#### autorité de bande passante"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -179,13 +199,16 @@ msgid ""
"authorities take periodic measurements of the [relays](#relay) in the "
"[consensus](#consensus)."
msgstr ""
+"Pour déterminer le débit d'un relais, des relayes spéciaux appelés autorités"
+" de la bande passante prennent des mesures périodiques des [relays](#relays)"
+" dans le [consensus](#consensus)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### bridge"
-msgstr ""
+msgstr "### pont"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -196,6 +219,10 @@ msgid ""
"ordinary relays, however, they are not listed publicly, so an adversary "
"cannot identify them easily."
msgstr ""
+"Comme les relays Tor [relayes](#relay), les ponts sont gérés par des "
+"volontaires ; contrairement aux relays ordinaires, cependant, ils ne sont "
+"pas listés publiquement, donc un adversaire ne peut pas les identifier "
+"facilement."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -205,27 +232,29 @@ msgid ""
"[Pluggable transports](#pluggable-transports) are a type of bridge that help"
" disguise the fact that you are using Tor."
msgstr ""
+"Pluggable transports](#pluggable-transports) sont un type de pont qui aide à"
+" masquer le fait que vous utilisez Tor."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### bridge authority"
-msgstr ""
+msgstr "### autorité de pont"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "A special-purpose relay that maintains the list of [bridges](#bridge)."
-msgstr ""
+msgstr "Un relay spécial qui maintient la liste des [ponts](#bridge)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### browser fingerprinting"
-msgstr ""
+msgstr "#### Empreinte digitale du navigateur"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -235,6 +264,9 @@ msgid ""
"Fingerprinting is the process of collecting information about a device or "
"service to make educated guesses about its identity or characteristics."
msgstr ""
+"La prise d'empreintes digitales est le processus de collecte d'informations "
+"sur un appareil ou un service afin de faire des suppositions éclairées sur "
+"son identité ou ses caractéristiques."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -244,20 +276,22 @@ msgid ""
"Unique behavior or responses can be used to identify the device or service "
"analyzed."
msgstr ""
+"Un comportement ou des réponses uniques peuvent être utilisés pour "
+"identifier l'appareil ou le service analysé."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "[Tor Browser](#tor-browser) prevents fingerprinting."
-msgstr ""
+msgstr "[Tor Browser](#tor-browser) empêche la prise d'empreintes digitales."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### browsing history"
-msgstr ""
+msgstr "### historique de navigation"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -267,6 +301,9 @@ msgid ""
"A browser history is a record of requests made while using a [web browser"
"](#web-browser), and includes information like websites visited and when."
msgstr ""
+"Un historique de navigateur est un enregistrement des requêtes effectuées "
+"lors de l'utilisation d'un [navigateur Web](#web-browser), et comprend des "
+"informations telles que les sites Web visités et quand."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -276,20 +313,22 @@ msgid ""
"[Tor Browser](#tor-browser) deletes your browsing history after you close "
"your [session](#session)."
msgstr ""
+"[Tor Browser](#tor-browser) supprime votre historique de navigation après la"
+" fermeture de votre [session](#session)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "## C"
-msgstr ""
+msgstr "## C"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### CAPTCHA"
-msgstr ""
+msgstr "### CAPTCHA"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -299,6 +338,8 @@ msgid ""
"Captchas are a challenge-response test used in computing to determine "
"whether the user is human or not."
msgstr ""
+"Les captchas sont un test de réponse par défi utilisé en informatique pour "
+"déterminer si l'utilisateur est humain ou non."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -310,13 +351,17 @@ msgid ""
"hard time determining whether or not those requests are coming from humans "
"or from bots."
msgstr ""
+"[Les utilisateurs de Tor](#tor-/-tor-tor-network/-core-tor) se voient "
+"souvent servir des captchas parce que Tor [relais](#relay) fait tellement de"
+" requêtes que parfois les sites web ont du mal à déterminer si ces requêtes "
+"viennent d'humains ou de bots."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### checksum"
-msgstr ""
+msgstr "### checksum"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -327,13 +372,16 @@ msgid ""
"software without errors, the given checksum and the checksum of your "
"downloaded file will be identical."
msgstr ""
+"Les sommes de contrôle sont les valeurs [hash](#hash) des fichiers. Si vous "
+"téléchargez le logiciel sans erreur, la somme de contrôle donnée et la somme"
+" de contrôle de votre fichier téléchargé seront identiques."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### circuit"
-msgstr ""
+msgstr "### circuit"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -349,13 +397,22 @@ msgid ""
"service)), and never an exit node. You can view your current Tor circuit by "
"clicking on the onion button in Tor Browser."
msgstr ""
+"Un chemin à travers le réseau [Tor](#tor-/-tor-tor-network/-core-tor) "
+"construit par [clients](#client) composé de noeuds sélectionnés au hasard. "
+"Le circuit commence par un [pont](#pont) ou un [garde](#garde). La plupart "
+"des circuits se composent de trois nœuds - un garde ou un pont, un [relais "
+"du milieu](#relais du milieu), et une [sortie](#sortie). La plupart des "
+"[services d'oignon] (#onion-services) utilisent six sauts dans un circuit (à"
+" l'exception des [services d'oignon simple] (#single-onion-service)), et "
+"jamais un noeud de sortie. Vous pouvez voir votre circuit Tor actuel en "
+"cliquant sur le bouton oignon dans le navigateur Tor."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### client"
-msgstr ""
+msgstr "### client"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -366,13 +423,16 @@ msgid ""
"network, typically running on behalf of one user, that routes application "
"connections over a series of [relays](#relay)."
msgstr ""
+"Dans [Tor](#tor-/-tor-tor-network/-core-tor), un client est un noeud du "
+"réseau Tor, généralement exécuté au nom d'un utilisateur, qui achemine les "
+"connexions des applications sur une série de [relais](#relay)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### Compass"
-msgstr ""
+msgstr "### Compass"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -382,13 +442,15 @@ msgid ""
"Compass is a web application to learn about currently running [Tor "
"relays](#relay) in bulk."
msgstr ""
+"Compass est une application web pour en savoir plus sur les relais Tor en "
+"cours d'exécution (#relay) en vrac."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
#: https//support.torproject.org/misc/tor-glossary/
#: (content/misc/glossary/contents+en.lrquestion.description)
msgid "### consensus"
-msgstr ""
+msgstr "### consensus"
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
@@ -400,6 +462,10 @@ msgid ""
"[clients](#client) have the same information about the [relays](#relay) that"
" make up the [Tor network](#tor-/-tor-network/-core-tor)."
msgstr ""
+"En termes Tor, un seul document compilé et voté par les [directory "
+"authorities](#directory-authority) une fois par heure, assurant que tous les"
+" [clients](#client) ont les mêmes informations sur les [relais](#relais) qui"
+" composent le [réseau Tor](#tor-/-tor-network/-core-tor)."
#: https//support.torproject.org/glossary/
#: (content/glossary/contents+en.lrquestion.description)
1
0

[translation/torbutton-torbuttonproperties_completed] Update translations for torbutton-torbuttonproperties_completed
by translation@torproject.org 03 Feb '19
by translation@torproject.org 03 Feb '19
03 Feb '19
commit 6ee2dc897f8e4daab5f67a23123acad7aa690292
Author: Translation commit bot <translation(a)torproject.org>
Date: Sun Feb 3 22:48:34 2019 +0000
Update translations for torbutton-torbuttonproperties_completed
---
ca/torbutton.properties | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/ca/torbutton.properties b/ca/torbutton.properties
index 7942558f3..791c0bc9d 100644
--- a/ca/torbutton.properties
+++ b/ca/torbutton.properties
@@ -50,6 +50,11 @@ profileReadOnlyMac=No pot executar %S des de un sistema de fitxers de només lec
profileAccessDenied=%S no té permisos per accedir al perfil. Si us plau, ajuste els permisos del seu sistema de fitxers i intente-ho de nou.
profileMigrationFailed=La migració del vostre perfil %S ha fallat.\nEs fara servir una nova configuració.
+# "Downloading update" string for the hamburger menu (see #28885).
+# This string is kept here for ease of translation.
+# LOCALIZATION NOTE: %S is the application name.
+updateDownloadingPanelUILabel=S'està baixant l'actualització %S
+
# .Onion Page Info prompt. Strings are kept here for ease of translation.
pageInfo_OnionEncryptionWithBitsAndProtocol=Connexió xifrada (Onion Service, %1$S, claus de %2$S bits, %3$S)
pageInfo_OnionEncryption=Connexió xifrada (Onion Service)
1
0