[tor-commits] [translation/policies-code_of_conducttxtpot] https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot

2019-08-28 Thread translation
commit 73830801608cc35d7cba6dc546736961209b8db2
Author: Translation commit bot 
Date:   Thu Aug 29 01:46:45 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot
---
 code_of_conduct+pt_BR.po | 12 
 1 file changed, 12 insertions(+)

diff --git a/code_of_conduct+pt_BR.po b/code_of_conduct+pt_BR.po
index caf425c6b..1cc1daee7 100644
--- a/code_of_conduct+pt_BR.po
+++ b/code_of_conduct+pt_BR.po
@@ -529,6 +529,8 @@ msgid ""
 "5. Where to go for help\n"
 "\n"
 msgstr ""
+"5. Onde procurar ajuda\n"
+"\n"
 
 #. type: Plain text
 #: ../code_of_conduct.txt:201
@@ -567,6 +569,8 @@ msgid ""
 "6. What to do if you witness unacceptable behavior\n"
 "\n"
 msgstr ""
+"6. O que fazer se você testemunhar um comportamento inaceitável\n"
+"\n"
 
 #. type: Plain text
 #: ../code_of_conduct.txt:230
@@ -608,6 +612,14 @@ msgid ""
 "format. The next steps in an incident response will vary on a case-by-case "
 "basis."
 msgstr ""
+"O Conselho Comunitário prioriza a segurança e o bem-estar de qualquer 
pessoa"
+" que sinta que foi prejudicada ou corre o risco de ser prejudicada. Qualquer"
+" um que relate uma questão ao Conselho da Comunidade pode esperar que seu "
+"relatório seja levado a sério. Os relatórios iniciais podem ser feitos por 
"
+"escrito ou verbalmente. Se o incidente não exigir uma resolução imediata, 
um"
+" relatório por escrito poderá ser compartilhado com o Conselho da 
Comunidade"
+" em formato criptografado. As próximas etapas de uma resposta a incidentes "
+"irão variar caso a caso."
 
 #. type: Plain text
 #: ../code_of_conduct.txt:245

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/support-portal_completed] https://gitweb.torproject.org/translation.git/commit/?h=support-portal_completed

2019-08-28 Thread translation
commit 21dc62d2d3fe16d572c41b87914c69bcd5b20d24
Author: Translation commit bot 
Date:   Thu Aug 29 01:23:19 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=support-portal_completed
---
 contents+pt-BR.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contents+pt-BR.po b/contents+pt-BR.po
index d04b99286..1b711b0f6 100644
--- a/contents+pt-BR.po
+++ b/contents+pt-BR.po
@@ -5,12 +5,12 @@
 # dark crystal , 2019
 # Greg Strider , 2019
 # Emma Peel, 2019
-# Eduardo Addad de Oliveira , 2019
 # Communia , 2019
 # erinm, 2019
 # Alexei Gonçalves de Oliveira , 2019
 # Cy Belle , 2019
 # Chacal E., 2019
+# Eduardo Addad de Oliveira , 2019
 # 
 msgid ""
 msgstr ""
@@ -18,7 +18,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-21 12:22+CET\n"
 "PO-Revision-Date: 2018-10-02 22:41+\n"
-"Last-Translator: Chacal E., 2019\n"
+"Last-Translator: Eduardo Addad de Oliveira , 2019\n"
 "Language-Team: Portuguese (Brazil) 
(https://www.transifex.com/otf/teams/1519/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal

2019-08-28 Thread translation
commit 8f5cbe0ca4ff786027c0a352ab0fbf5a30caa60a
Author: Translation commit bot 
Date:   Thu Aug 29 01:23:04 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
 contents+pt-BR.po | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/contents+pt-BR.po b/contents+pt-BR.po
index 644c21552..f550120cc 100644
--- a/contents+pt-BR.po
+++ b/contents+pt-BR.po
@@ -5,12 +5,12 @@
 # dark crystal , 2019
 # Greg Strider , 2019
 # Emma Peel, 2019
-# Eduardo Addad de Oliveira , 2019
 # Communia , 2019
 # erinm, 2019
 # Alexei Gonçalves de Oliveira , 2019
 # Cy Belle , 2019
 # Chacal E., 2019
+# Eduardo Addad de Oliveira , 2019
 # 
 msgid ""
 msgstr ""
@@ -18,7 +18,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-21 12:22+CET\n"
 "PO-Revision-Date: 2018-10-02 22:41+\n"
-"Last-Translator: Chacal E., 2019\n"
+"Last-Translator: Eduardo Addad de Oliveira , 2019\n"
 "Language-Team: Portuguese (Brazil) 
(https://www.transifex.com/otf/teams/1519/pt_BR/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -425,6 +425,8 @@ msgid ""
 "In order to verify the signature you will need to type a few commands in "
 "windows command-line, `cmd.exe`."
 msgstr ""
+"Para verificar a assinatura, você precisará digitar alguns comandos na 
linha"
+" de comando do Windows, `cmd.exe`."
 
 #: https//support.torproject.org/tbb/how-to-verify-signature/
 #: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json

2019-08-28 Thread translation
commit d1b7c11822083bf2985f247e80af7d7037f9
Author: Translation commit bot 
Date:   Thu Aug 29 01:16:57 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json
---
 pt_BR/messages.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pt_BR/messages.json b/pt_BR/messages.json
index 30bce9e98..1653b7f87 100644
--- a/pt_BR/messages.json
+++ b/pt_BR/messages.json
@@ -18,7 +18,7 @@
 "message": "Número de usuários conectados no momento: $1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship"
+"message": "Seu Snowflake está pronto para ajudar os usuários a 
contornar a censura"
   },
   "popupWebRTCOff": {
 "message": "O recurso WebRTC não é detectado."

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json_completed] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json_completed

2019-08-28 Thread translation
commit c6a8e1e48731e4058cb0ad70919967220a5034ee
Author: Translation commit bot 
Date:   Thu Aug 29 01:17:03 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json_completed
---
 pt_BR/messages.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pt_BR/messages.json b/pt_BR/messages.json
index f9de9d4cc..f6ed740cf 100644
--- a/pt_BR/messages.json
+++ b/pt_BR/messages.json
@@ -18,7 +18,7 @@
 "message": "Number of users currently connected: $1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship!"
+"message": "Your Snowflake is ready to help users circumvent censorship"
   },
   "popupWebRTCOff": {
 "message": "WebRTC feature is not detected."

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/policies-code_of_conducttxtpot] https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot

2019-08-28 Thread translation
commit 16e8010530bc989782933816d2561194a1b07231
Author: Translation commit bot 
Date:   Thu Aug 29 01:16:47 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot
---
 code_of_conduct+pt_BR.po | 738 +++
 1 file changed, 738 insertions(+)

diff --git a/code_of_conduct+pt_BR.po b/code_of_conduct+pt_BR.po
new file mode 100644
index 0..caf425c6b
--- /dev/null
+++ b/code_of_conduct+pt_BR.po
@@ -0,0 +1,738 @@
+# Code of conduct of the tor project
+# Copyright (C) 2019 tor project.
+# This Code of Conduct is licensed under a Creative Commons CC-BY-SA 4.0
+# International license.e.
+# FIRST AUTHOR , YEAR.
+# 
+# Translators:
+# Hildeberto Abreu Magalhães , 2019
+# Eduardo Addad de Oliveira , 2019
+# 
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Code of conduct of the Tor Project\n"
+"POT-Creation-Date: 2019-08-02 12:00+\n"
+"PO-Revision-Date: 2019-08-27 18:54+\n"
+"Last-Translator: Eduardo Addad de Oliveira , 2019\n"
+"Language-Team: Portuguese (Brazil) 
(https://www.transifex.com/otf/teams/1519/pt_BR/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pt_BR\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:1 ../code_of_conduct.txt:24
+#: ../code_of_conduct.txt:51 ../code_of_conduct.txt:75
+#: ../code_of_conduct.txt:104 ../code_of_conduct.txt:180
+#: ../code_of_conduct.txt:193 ../code_of_conduct.txt:213
+#: ../code_of_conduct.txt:231 ../code_of_conduct.txt:243
+#: ../code_of_conduct.txt:253 ../code_of_conduct.txt:278
+#, no-wrap
+msgid "\n"
+msgstr "\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:3
+#, no-wrap
+msgid ""
+"Tor Project Code of Conduct\n"
+"\n"
+msgstr ""
+"Tor Project Código de Conduta\n"
+"\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:6
+msgid "Statement of Intent:"
+msgstr "Declaração de Intenção:"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:10
+msgid ""
+"The Tor Project is committed to fostering an inclusive environment and "
+"community. Tor is a place where people should feel safe to engage, share "
+"their point of view, and participate."
+msgstr ""
+"O Projeto Tor está empenhado em promover um ambiente inclusivo e "
+"comunitário. Tor é um lugar onde as pessoas devem se sentir seguras para "
+"envolver-se, compartilhar seu ponto de vista e participar."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:15
+msgid ""
+"This code of conduct applies to The Tor Project as a whole. It is intended "
+"to provide guidelines for contributors. Employees and contractors of The Tor"
+" Project, Inc. (TPI) are also subject to company policies and procedures. "
+"Those people should feel free to contact HR with questions or concerns."
+msgstr ""
+"Este código de conduta se aplica ao Projeto Tor como um todo. Destina-se a "
+"fornecer orientações para os contribuidores. Os funcionários e contratados 
"
+"do The Tor Project, Inc. (TPI) também estão sujeitos às políticas e "
+"procedimentos da empresa. Essas pessoas devem se sentir livres para entrar "
+"em contato com o RH, com perguntas ou preocupações."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:23
+msgid ""
+"This code of conduct is not exhaustive or complete. It is an ongoing effort "
+"to summarize our shared understanding. We want to provide a welcoming, safe "
+"environment, so we can work together to pursue powerful solutions. We "
+"reserve the right to deviate from strictly enforcing this code. Any "
+"deviations must produce an outcome which is fairer, and aligned with our "
+"values. We understand that keeping a living document relevant and 
“patched” "
+"involves sustained effort."
+msgstr ""
+"Este código de conduta não é exaustivo ou completo. É um esforço 
contínuo "
+"para resumir nosso entendimento compartilhado. Queremos oferecer um ambiente"
+" acolhedor e seguro, para que possamos trabalhar juntos para buscar 
soluções"
+" poderosas. Reservamo-nos o direito de nos desviarmos da aplicação estrita "
+"deste código. Quaisquer desvios devem produzir um resultado mais justo e "
+"alinhado com nossos valores. Entendemos que manter um documento vivo "
+"relevante e “remendado” envolve um esforço sustentado."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:26
+#, no-wrap
+msgid ""
+"0. Summary: Don't be a jerk. Be awesome instead.\n"
+"\n"
+msgstr ""
+"0. Sumário: Não seja um idiota. Ao invés disso, seja incrível.\n"
+"\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:29
+msgid "The 

[tor-commits] [tor-browser-build/master] Picking up first 68.1.0esr branch for nightly builds

2019-08-28 Thread gk
commit d2c194dd5f82de9bbd9ec7c7e7e34e3c7a5a4684
Author: Georg Koppen 
Date:   Wed Aug 28 21:37:32 2019 +

Picking up first 68.1.0esr branch for nightly builds
---
 projects/firefox-langpacks/config | 2 +-
 projects/firefox/config   | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/projects/firefox-langpacks/config 
b/projects/firefox-langpacks/config
index 17a707a..34d6fad 100644
--- a/projects/firefox-langpacks/config
+++ b/projects/firefox-langpacks/config
@@ -4,7 +4,7 @@ filename: '[% project %]-[% c("version") %]-[% c("var/osname") 
%]-[% c("var/buil
 
 var:
   ff_version: '[% pc("firefox", "var/firefox_version") %]'
-  ff_build: build2
+  ff_build: build1
   input_filename: 'dl-langpack-[% c("var/ff_arch") %]-[% c("version") %]'
 
 targets:
diff --git a/projects/firefox/config b/projects/firefox/config
index 799861e..06f7c60 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -8,7 +8,7 @@ git_submodule: 1
 gpg_keyring: torbutton.gpg
 
 var:
-  firefox_platform_version: 68.0
+  firefox_platform_version: 68.1.0
   firefox_version: '[% c("var/firefox_platform_version") %]esr'
   torbrowser_branch: 9.0
   torbrowser_update_channel: alpha
@@ -51,7 +51,7 @@ targets:
   branding_directory: '[% IF c("var/android") %]mobile/android[% ELSE 
%]browser[% END %]/branding/official'
 
   nightly:
-git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% 
c("var/torbrowser_branch") %]-3'
+git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% 
c("var/torbrowser_branch") %]-1'
 tag_gpg_id: 0
 var:
   torbrowser_update_channel: default

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser/tor-browser-68.1.0esr-9.0-1] Bug 1572844 - Consistently check for MOZ_BITS_DOWNLOAD

2019-08-28 Thread gk
commit adb1614b652a5be21e7f025d15a8ea48401eeb02
Author: Adam Gashlin 
Date:   Mon Aug 19 15:44:42 2019 -0700

Bug 1572844 - Consistently check for MOZ_BITS_DOWNLOAD
---
 toolkit/components/bitsdownload/components.conf | 2 +-
 toolkit/components/bitsdownload/moz.build   | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/toolkit/components/bitsdownload/components.conf 
b/toolkit/components/bitsdownload/components.conf
index d8a7b5721e00..fe7090d366be 100644
--- a/toolkit/components/bitsdownload/components.conf
+++ b/toolkit/components/bitsdownload/components.conf
@@ -5,7 +5,7 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 Classes = []
-if buildconfig.substs['OS_ARCH'] == 'WINNT' and defined('MOZ_BITS_DOWNLOAD'):
+if defined('MOZ_BITS_DOWNLOAD'):
 Classes += [
 {
 'cid': '{495d6f3d-9748-4d30-8ce5-0290c0001edf}',
diff --git a/toolkit/components/bitsdownload/moz.build 
b/toolkit/components/bitsdownload/moz.build
index 1d3f45937bdb..5f1dc96e9490 100644
--- a/toolkit/components/bitsdownload/moz.build
+++ b/toolkit/components/bitsdownload/moz.build
@@ -14,7 +14,7 @@ XPCOM_MANIFESTS += [
 'components.conf',
 ]
 
-if CONFIG['OS_ARCH'] == 'WINNT':
+if CONFIG['MOZ_BITS_DOWNLOAD']:
   EXPORTS += [
 'Bits.h'
   ]

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser/tor-browser-68.1.0esr-9.0-1] Pick up Torbutton esr68 changes

2019-08-28 Thread gk
commit 489a4f07172f64ee5c9bd86a4426b5de64a9448a
Author: Georg Koppen 
Date:   Wed Aug 28 21:35:04 2019 +

Pick up Torbutton esr68 changes
---
 toolkit/torproject/torbutton | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/toolkit/torproject/torbutton b/toolkit/torproject/torbutton
index ac8d92514940..605decfd4ddc 16
--- a/toolkit/torproject/torbutton
+++ b/toolkit/torproject/torbutton
@@ -1 +1 @@
-Subproject commit ac8d9251494056e761bb2cf5c2a4795a888f38bd
+Subproject commit 605decfd4ddc81eb37da17172f48f92fd7f7e451

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json_completed] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json_completed

2019-08-28 Thread translation
commit ba10d3f844573c67ab0e182326e7e99e79916724
Author: Translation commit bot 
Date:   Wed Aug 28 19:46:59 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json_completed
---
 cs/messages.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cs/messages.json b/cs/messages.json
index f9de9d4cc..f6ed740cf 100644
--- a/cs/messages.json
+++ b/cs/messages.json
@@ -18,7 +18,7 @@
 "message": "Number of users currently connected: $1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship!"
+"message": "Your Snowflake is ready to help users circumvent censorship"
   },
   "popupWebRTCOff": {
 "message": "WebRTC feature is not detected."

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json

2019-08-28 Thread translation
commit b1dfe784f3f782dd38f89796678dc7cd84052956
Author: Translation commit bot 
Date:   Wed Aug 28 19:46:51 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json
---
 cs/messages.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cs/messages.json b/cs/messages.json
index 529d99f1b..15ce8be3f 100644
--- a/cs/messages.json
+++ b/cs/messages.json
@@ -18,7 +18,7 @@
 "message": "Počet momentálně připojených uživatelů:$1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship"
+"message": "Váš Snowflake je připraven pomáhat uživatelům obejít 
cenzuru"
   },
   "popupWebRTCOff": {
 "message": "WebRTC rozšíření nebylo detekováno"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-openpgp-applet] https://gitweb.torproject.org/translation.git/commit/?h=tails-openpgp-applet

2019-08-28 Thread translation
commit 4e2558958eaa0bb4e029b496539815c1199b3bfd
Author: Translation commit bot 
Date:   Wed Aug 28 18:49:07 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=tails-openpgp-applet
---
 mk/openpgp-applet.pot | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/mk/openpgp-applet.pot b/mk/openpgp-applet.pot
index 6425df672..1d6aea9ca 100644
--- a/mk/openpgp-applet.pot
+++ b/mk/openpgp-applet.pot
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: ta...@boum.org\n"
 "POT-Creation-Date: 2017-08-05 15:07-0400\n"
-"PO-Revision-Date: 2019-08-20 18:24+\n"
+"PO-Revision-Date: 2019-08-28 18:23+\n"
 "Last-Translator: Matej Plavevski \n"
 "Language-Team: Macedonian 
(http://www.transifex.com/otf/torproject/language/mk/)\n"
 "MIME-Version: 1.0\n"
@@ -28,11 +28,11 @@ msgstr ""
 
 #: bin/openpgp-applet:175
 msgid "Exit"
-msgstr ""
+msgstr "Излез"
 
 #: bin/openpgp-applet:177
 msgid "About"
-msgstr ""
+msgstr "За"
 
 #: bin/openpgp-applet:232
 msgid "Encrypt Clipboard with _Passphrase"
@@ -76,19 +76,19 @@ msgstr ""
 
 #: bin/openpgp-applet:400
 msgid "Name"
-msgstr ""
+msgstr "Name"
 
 #: bin/openpgp-applet:401
 msgid "Key ID"
-msgstr ""
+msgstr "ID на Клуч"
 
 #: bin/openpgp-applet:402
 msgid "Status"
-msgstr ""
+msgstr "Статус"
 
 #: bin/openpgp-applet:433
 msgid "Fingerprint:"
-msgstr ""
+msgstr "Отпечаток:"
 
 #: bin/openpgp-applet:436
 msgid "User ID:"
@@ -120,11 +120,11 @@ msgstr ""
 
 #: bin/openpgp-applet:549
 msgid "Choose keys"
-msgstr ""
+msgstr "Одбери клучеви"
 
 #: bin/openpgp-applet:589
 msgid "Do you trust these keys?"
-msgstr ""
+msgstr "Дали им верувате на овие клучеви?"
 
 #: bin/openpgp-applet:592
 msgid "The following selected key is not fully trusted:"
@@ -140,7 +140,7 @@ msgstr[1] ""
 
 #: bin/openpgp-applet:623
 msgid "No keys selected"
-msgstr ""
+msgstr "Не се одбрани клучеви"
 
 #: bin/openpgp-applet:625
 msgid ""

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/liveusb-creator] https://gitweb.torproject.org/translation.git/commit/?h=liveusb-creator

2019-08-28 Thread translation
commit 9b09f2434836f970cab18b41fdf76a05f88965ba
Author: Translation commit bot 
Date:   Wed Aug 28 18:46:05 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=liveusb-creator
---
 mk/mk.po | 79 
 1 file changed, 40 insertions(+), 39 deletions(-)

diff --git a/mk/mk.po b/mk/mk.po
index f40bc0655..54ce8c359 100644
--- a/mk/mk.po
+++ b/mk/mk.po
@@ -4,13 +4,14 @@
 # 
 # Translators:
 # l l , 2018
+# Matej Plavevski , 2019
 msgid ""
 msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-04-13 08:42+0200\n"
-"PO-Revision-Date: 2019-04-13 13:25+\n"
-"Last-Translator: carolyn \n"
+"PO-Revision-Date: 2019-08-28 18:22+\n"
+"Last-Translator: Matej Plavevski \n"
 "Language-Team: Macedonian 
(http://www.transifex.com/otf/torproject/language/mk/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -20,137 +21,137 @@ msgstr ""
 
 #: ../tails_installer/creator.py:100
 msgid "You must run this application as root"
-msgstr ""
+msgstr "Мора да ја вклучите апликацијава како 
администратор. "
 
 #: ../tails_installer/creator.py:146
 msgid "Extracting live image to the target device..."
-msgstr ""
+msgstr "Пренесување во живо до посакуваниот 
уред..."
 
 #: ../tails_installer/creator.py:153
 #, python-format
 msgid "Wrote to device at %(speed)d MB/sec"
-msgstr ""
+msgstr "Напишано на уредот со %(speed)d МБ/сек"
 
 #: ../tails_installer/creator.py:296
 #, python-format
 msgid ""
 "There was a problem executing the following command: `%(command)s`.\n"
 "A more detailed error log has been written to '%(filename)s'."
-msgstr ""
+msgstr "Се случи проблем при извршување на 
следната команда: `%(command)s`.\nПодетално 
објаснување има во '%(filename)s'."
 
 #: ../tails_installer/creator.py:315
 msgid "Verifying SHA1 checksum of LiveCD image..."
-msgstr ""
+msgstr "Верификување на SHA1 алгоритмот за 
проверка на постоечки грешки во екстерно 
поставената компјутерска инсталација."
 
 #: ../tails_installer/creator.py:319
 msgid "Verifying SHA256 checksum of LiveCD image..."
-msgstr ""
+msgstr "Верификување на SHA256 алгоритмот за 
проверка на постоечки грешки во екстерно 
поставената компјутерска инсталација."
 
 #: ../tails_installer/creator.py:335
 msgid ""
 "Error: The SHA1 of your Live CD is invalid.  You can run this program with "
 "the --noverify argument to bypass this verification check."
-msgstr ""
+msgstr "Грешка: SHA1 алгоритмот на вашата 
екстерно поставена компјутерска 
инсталација е невалидна. Може да ја 
вклучите оваа програма со --noverify аргументот 
за да ја прескокнете оваа верификација."
 
 #: ../tails_installer/creator.py:341
 msgid "Unknown ISO, skipping checksum verification"
-msgstr ""
+msgstr "Непознат ISO, се прескокнува 
верификацијата со алгоритам."
 
 #: ../tails_installer/creator.py:353
 #, python-format
 msgid ""
 "Not enough free space on device.\n"
 "%dMB ISO + %dMB overlay > %dMB free space"
-msgstr ""
+msgstr "Немате доволно простор на уредот. \n%dМБ 
ISO + %dMБ пренесување на кодот во RAM > %dМБ 
слободен простор"
 
 #: ../tails_installer/creator.py:360
 #, python-format
 msgid "Creating %sMB persistent overlay"
-msgstr ""
+msgstr "Се креира %s МБ простор на екстерниот 
уред."
 
 #: ../tails_installer/creator.py:421
 #, python-format
 msgid "Unable to copy %(infile)s to %(outfile)s: %(message)s"
-msgstr ""
+msgstr "Не може да се копира %(infile)s во %(outfile)s : 
%(message)s"
 
 #: ../tails_installer/creator.py:435
 msgid "Removing existing Live OS"
-msgstr ""
+msgstr "Се отстранува постоечката, екстерно 
поставена компјутерска инсталација."
 
 #: ../tails_installer/creator.py:444 ../tails_installer/creator.py:457
 #, python-format
 msgid "Unable to chmod %(file)s: %(message)s"
-msgstr ""
+msgstr "Не е можно да се примени командата за 
промена на дозволa за пристап %(file)s : %(message)s"
 
 #: ../tails_installer/creator.py:450
 #, python-format
 msgid "Unable to remove file from previous LiveOS: %(message)s"
-msgstr ""
+msgstr "Не е можно да се отстрани фајлот од 
претходно екстерно поставената 

[tor-commits] [meek/master] Add the missing app.update.checkInstallTime pref.

2019-08-28 Thread dcf
commit ec018dd67720587056d8d7d690368c9dbdd4942a
Author: David Fifield 
Date:   Wed Aug 28 12:33:35 2019 -0600

Add the missing app.update.checkInstallTime pref.

https://bugs.torproject.org/29611#comment:6
---
 webextension/firefox-user.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/webextension/firefox-user.js b/webextension/firefox-user.js
index b6786c9..c4e53e4 100644
--- a/webextension/firefox-user.js
+++ b/webextension/firefox-user.js
@@ -27,6 +27,7 @@ user_pref("app.update.enabled", false);
 user_pref("app.update.interval", 9); // don't check for updates
 user_pref("app.update.auto", false); // if downloaded, don't automatically 
install
 user_pref("app.update.doorhanger", false); // don't show an update notice in 
the UI
+user_pref("app.update.checkInstallTime", false); // don't check based on date 
of build ID
 
 // Set a failsafe blackhole proxy of 127.0.0.1:9, to prevent network 
interaction
 // in case the user manages to open this profile with a normal browser UI 
(i.e.,

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/support-portal] https://gitweb.torproject.org/translation.git/commit/?h=support-portal

2019-08-28 Thread translation
commit c0e85efe94d4c8d5d80047aa6ae810f541f48708
Author: Translation commit bot 
Date:   Wed Aug 28 18:23:15 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=support-portal
---
 contents+mk.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contents+mk.po b/contents+mk.po
index bd1d703d5..bdb6af5ac 100644
--- a/contents+mk.po
+++ b/contents+mk.po
@@ -4858,7 +4858,7 @@ msgstr "Донирај"
 #: https//support.torproject.org/misc/menu/
 #: (content/misc/menu/contents+en.lrquestion.description)
 msgid "Support"
-msgstr ""
+msgstr "Поддршка"
 
 #: https//support.torproject.org/misc/misc-1/
 #: (content/misc/misc-1/contents+en.lrquestion.title)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tpo-web] https://gitweb.torproject.org/translation.git/commit/?h=tpo-web

2019-08-28 Thread translation
commit 0b1bc4481310a27866939c5859abc403d9d81e67
Author: Translation commit bot 
Date:   Wed Aug 28 18:22:47 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=tpo-web
---
 contents+mk.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contents+mk.po b/contents+mk.po
index 1b8516ea8..287a912bb 100644
--- a/contents+mk.po
+++ b/contents+mk.po
@@ -115,7 +115,7 @@ msgstr "Блог"
 
 #: https//www.torproject.org/menu/ (content/menu/contents+en.lrpage.body)
 msgid "Support"
-msgstr ""
+msgstr "Поддршка"
 
 #: https//www.torproject.org/menu/ (content/menu/contents+en.lrpage.body)
 msgid "Jobs"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json

2019-08-28 Thread translation
commit 2364805552c57f9a1c8fcd18c72ad94cfee717d4
Author: Translation commit bot 
Date:   Wed Aug 28 18:17:02 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json
---
 mk/messages.json | 32 
 1 file changed, 32 insertions(+)

diff --git a/mk/messages.json b/mk/messages.json
new file mode 100644
index 0..2999c3367
--- /dev/null
+++ b/mk/messages.json
@@ -0,0 +1,32 @@
+{
+  "appDesc": {
+"message": "Snowflake е WebRTC приклучок за транспорт 
за Tor."
+  },
+  "popupTurnOn": {
+"message": "Уклучи"
+  },
+  "popupTurnOff": {
+"message": "Исклучи"
+  },
+  "popupLearnMore": {
+"message": "Научи повеќе"
+  },
+  "popupStatusOff": {
+"message": "Snowflake е исклучен"
+  },
+  "popupStatusOn": {
+"message": "Број на поврзани корисници во 
моментот: $1"
+  },
+  "popupStatusReady": {
+"message": "Вашиот Snowflake е спремен да им 
помогне на корисниците да ја заобиколаат 
цензурата"
+  },
+  "popupWebRTCOff": {
+"message": "WebRTC функција не е детектирана."
+  },
+  "popupDescOn": {
+"message": "Број на корисници вашиот Snowflake има 
помогнато да ја заобиколаат цензурата во 
последните 24 часа: $1"
+  },
+  "badgeCookiesOff": {
+"message": "Колачиња не се овозможени"
+  }
+}

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflake-website-indexhtml] https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml

2019-08-28 Thread translation
commit c583c441a159890f49f60865540fe5d35fc387cc
Author: Translation commit bot 
Date:   Wed Aug 28 18:17:11 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml
---
 mk/index.html | 86 +++
 1 file changed, 86 insertions(+)

diff --git a/mk/index.html b/mk/index.html
new file mode 100644
index 0..500a4ce32
--- /dev/null
+++ b/mk/index.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+Snowflake
+
+
+
+https://www.torproject.org/;>
+
+
+  СНЕГУЛКА
+
+  
+
+  Snowflake is a system to defeat internet censorship. People who are
+  censored can use Snowflake to access the internet. Their connection goes
+  through Snowflake proxies, which are run by volunteers. For more detailed
+  information about how Snowflake works see our
+  https://trac.torproject.org/projects/tor/wiki/doc/Snowflake/;>documentation
 wiki.
+
+  
+
+
+  Прелистувач
+
+  Ако вашиот пристап кон интернет е 
цензуриран, можеби треба да го превземете
+  https://www.torproject.org/download/;>Tor 
Прелистувачот.
+
+  
+
+
+
+  Extension
+
+  If your internet access is not censored, you 
should
+  consider installing the Snowflake extension to help users in censored
+  networks. There is no need to worry about which websites people are
+  accessing through your proxy. Their visible browsing IP address will
+  match their Tor exit node, not yours.
+
+  https://addons.mozilla.org/en-US/firefox/addon/torproject-snowflake/;>
+  Инсталирај за Firefox
+
+https://chrome.google.com/webstore/detail/snowflake/mafpmfcccpbjnhfhjnllmmalhifmlcie;>
+  Инсталирај за Chrome
+
+
+
+
+  
+
+  REPORTING BUGS
+  
+  If you encounter problems with Snowflake as a client or a proxy,
+  please consider filing a bug.  To do so, you will have to,
+  
+  
+Either https://trac.torproject.org/projects/tor/register;>create 
an
+account or https://trac.torproject.org/projects/tor/login;>log in
+using the shared cypherpunks account with password 
writecode.
+
+https://trac.torproject.org/projects/tor/newticket?component=Circumvention%2FSnowflake;>File
 a ticket
+using our bug tracker.
+  
+Please try to be as descriptive as possible with your ticket and if
+  possible include log messages that will help us reproduce the bug.
+  Consider adding keywords snowflake-webextension or 
snowflake-client
+  to let us know how which part of the Snowflake system is experiencing
+  problems.
+
+  EMBED
+
+  It is now possible to embed the Snowflake badge on any website:
+
+  iframe 
src="https://snowflake.torproject.org/embed.html; width="320px" height="200px" 
frameborder="0" scrolling="no"/iframeWhich looks like 
this:
+
+  
+
+
+  
+
+
+

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/mat-gui] https://gitweb.torproject.org/translation.git/commit/?h=mat-gui

2019-08-28 Thread translation
commit ba90d8d41f0b265b293b07395d39beffcecca513
Author: Translation commit bot 
Date:   Wed Aug 28 18:16:25 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=mat-gui
---
 mk.po | 41 +
 1 file changed, 21 insertions(+), 20 deletions(-)

diff --git a/mk.po b/mk.po
index f7c3c3056..c67fa6ea9 100644
--- a/mk.po
+++ b/mk.po
@@ -3,13 +3,14 @@
 # This file is distributed under the same license as the PACKAGE package.
 # 
 # Translators:
+# Matej Plavevski , 2019
 msgid ""
 msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2016-02-10 23:06+0100\n"
-"PO-Revision-Date: 2019-01-15 12:23+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-28 18:13+\n"
+"Last-Translator: Matej Plavevski \n"
 "Language-Team: Macedonian 
(http://www.transifex.com/otf/torproject/language/mk/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -19,24 +20,24 @@ msgstr ""
 
 #: mat-gui:66 mat-gui:422 mat-gui:445
 msgid "Ready"
-msgstr ""
+msgstr "Спремен"
 
 #: mat-gui:136
 msgid "Choose files"
-msgstr ""
+msgstr "Одбери датотеки"
 
 #: mat-gui:144
 msgid "Supported files"
-msgstr ""
+msgstr "Подржани датотеки"
 
 #: mat-gui:151
 msgid "All files"
-msgstr ""
+msgstr "Сите датотеки"
 
 #: mat-gui:167 mat-gui:366 mat-gui:417 mat-gui:441 mat-gui:443
 #: data/mat.glade:200
 msgid "Clean"
-msgstr ""
+msgstr "Чисто"
 
 #: mat-gui:168
 msgid "No metadata found"
@@ -44,7 +45,7 @@ msgstr ""
 
 #: mat-gui:170 mat-gui:419
 msgid "Dirty"
-msgstr ""
+msgstr "Валкано"
 
 #: mat-gui:176
 #, python-format
@@ -57,11 +58,11 @@ msgstr ""
 
 #: mat-gui:192
 msgid "Website"
-msgstr ""
+msgstr "Веб–сајт"
 
 #: mat-gui:219
 msgid "Preferences"
-msgstr ""
+msgstr "Параметри"
 
 #: mat-gui:232
 msgid "Reduce PDF quality"
@@ -81,7 +82,7 @@ msgstr ""
 
 #: mat-gui:280
 msgid "Unknown"
-msgstr ""
+msgstr "Непознато"
 
 #: mat-gui:325
 msgid "Not-supported"
@@ -109,7 +110,7 @@ msgstr ""
 
 #: mat-gui:353
 msgid "Reason"
-msgstr ""
+msgstr "Причина"
 
 #: mat-gui:365
 msgid "Non-supported files in archive"
@@ -148,11 +149,11 @@ msgstr ""
 
 #: data/mat.glade:187
 msgid "Add"
-msgstr ""
+msgstr "Додади"
 
 #: data/mat.glade:256
 msgid "State"
-msgstr ""
+msgstr "Општина"
 
 #: data/mat.glade:294 data/mat.glade:467
 msgid "Metadata"
@@ -160,27 +161,27 @@ msgstr ""
 
 #: data/mat.glade:354
 msgid "Name"
-msgstr ""
+msgstr "Name"
 
 #: data/mat.glade:368
 msgid "Content"
-msgstr ""
+msgstr "Содржина"
 
 #: data/mat.glade:398
 msgid "Supported formats"
-msgstr ""
+msgstr "Подржани формати"
 
 #: data/mat.glade:456
 msgid "Support"
-msgstr ""
+msgstr "Поддршка"
 
 #: data/mat.glade:478
 msgid "Method"
-msgstr ""
+msgstr "Метод"
 
 #: data/mat.glade:489
 msgid "Remaining"
-msgstr ""
+msgstr "Останува"
 
 #: data/mat.glade:518
 msgid "Fileformat"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/https_everywhere_completed] https://gitweb.torproject.org/translation.git/commit/?h=https_everywhere_completed

2019-08-28 Thread translation
commit 469f164bb60620a91fde128dfb71171680aba9fd
Author: Translation commit bot 
Date:   Wed Aug 28 17:16:05 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=https_everywhere_completed
---
 es/https-everywhere.dtd | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/es/https-everywhere.dtd b/es/https-everywhere.dtd
index bca295e7b..726568a31 100644
--- a/es/https-everywhere.dtd
+++ b/es/https-everywhere.dtd
@@ -8,13 +8,13 @@
 
 
 
-
+
 
 
 
 
 
-
+
 
 
 
@@ -48,7 +48,7 @@
 
 
 
-
+
 
 
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/https_everywhere] https://gitweb.torproject.org/translation.git/commit/?h=https_everywhere

2019-08-28 Thread translation
commit d8817ccbf229996d80b000e2d00176eed224383d
Author: Translation commit bot 
Date:   Wed Aug 28 17:15:58 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=https_everywhere
---
 es/https-everywhere.dtd | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/es/https-everywhere.dtd b/es/https-everywhere.dtd
index bca295e7b..f366599c5 100644
--- a/es/https-everywhere.dtd
+++ b/es/https-everywhere.dtd
@@ -8,7 +8,7 @@
 
 
 
-
+
 
 
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/policies-code_of_conducttxtpot_completed] https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot_completed

2019-08-28 Thread translation
commit ed68676009f0d829a716c47cbfed8a12a48f494c
Author: Translation commit bot 
Date:   Wed Aug 28 16:16:57 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot_completed
---
 code_of_conduct+es.po | 819 ++
 1 file changed, 819 insertions(+)

diff --git a/code_of_conduct+es.po b/code_of_conduct+es.po
new file mode 100644
index 0..220c06047
--- /dev/null
+++ b/code_of_conduct+es.po
@@ -0,0 +1,819 @@
+# Code of conduct of the tor project
+# Copyright (C) 2019 tor project.
+# This Code of Conduct is licensed under a Creative Commons CC-BY-SA 4.0
+# International license.e.
+# FIRST AUTHOR , YEAR.
+# 
+# Translators:
+# Alfredo Duro , 2019
+# Emma Peel, 2019
+# 
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Code of conduct of the Tor Project\n"
+"POT-Creation-Date: 2019-08-02 12:00+\n"
+"PO-Revision-Date: 2019-08-27 18:54+\n"
+"Last-Translator: Emma Peel, 2019\n"
+"Language-Team: Spanish (https://www.transifex.com/otf/teams/1519/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:1 ../code_of_conduct.txt:24
+#: ../code_of_conduct.txt:51 ../code_of_conduct.txt:75
+#: ../code_of_conduct.txt:104 ../code_of_conduct.txt:180
+#: ../code_of_conduct.txt:193 ../code_of_conduct.txt:213
+#: ../code_of_conduct.txt:231 ../code_of_conduct.txt:243
+#: ../code_of_conduct.txt:253 ../code_of_conduct.txt:278
+#, no-wrap
+msgid "\n"
+msgstr "\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:3
+#, no-wrap
+msgid ""
+"Tor Project Code of Conduct\n"
+"\n"
+msgstr ""
+"Código de conducta del Proyecto Tor\n"
+"\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:6
+msgid "Statement of Intent:"
+msgstr "Declaración de intenciones:"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:10
+msgid ""
+"The Tor Project is committed to fostering an inclusive environment and "
+"community. Tor is a place where people should feel safe to engage, share "
+"their point of view, and participate."
+msgstr ""
+"El proyecto Tor está decidido a fomentar una comunidad y ambiente "
+"inclusivos. Tor es un espacio en donde las personas deben sentirse seguras, "
+"compartir su punto de vista, y participar."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:15
+msgid ""
+"This code of conduct applies to The Tor Project as a whole. It is intended "
+"to provide guidelines for contributors. Employees and contractors of The Tor"
+" Project, Inc. (TPI) are also subject to company policies and procedures. "
+"Those people should feel free to contact HR with questions or concerns."
+msgstr ""
+"Este código de conducta se aplica al proyecto Tor como un todo. Su 
intención"
+" es proveer lineamientos para sus contribuidores. Lxs empleadxs y "
+"contratistas de The Tor Project, Inc. (TPI) también están sujetos a las "
+"políticas y procedimientos de la compañía. Estas personas pueden contactar 
a"
+" RH para preguntas o inquietudes de cualquier tipo."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:23
+msgid ""
+"This code of conduct is not exhaustive or complete. It is an ongoing effort "
+"to summarize our shared understanding. We want to provide a welcoming, safe "
+"environment, so we can work together to pursue powerful solutions. We "
+"reserve the right to deviate from strictly enforcing this code. Any "
+"deviations must produce an outcome which is fairer, and aligned with our "
+"values. We understand that keeping a living document relevant and 
“patched” "
+"involves sustained effort."
+msgstr ""
+" Este código de conducta no es exhaustivo o completo, sino un esfuerzo "
+"continuo de resumir nuestro entendimiento compartido. Queremos proveer un "
+"ambiente seguro y acogedor, de modo que podamos trabajar juntos para "
+"alcanzar soluciones poderosas. Nos reservamos el derecho de desviarnos de "
+"aplicar estrictamente este código. Cualquier desviación debe producir un "
+"resultado más justo, y alineado con nuestros valores. Entendemos que "
+"mantener un documento relevante y actualizado requiere un esfuerzo continuo."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:26
+#, no-wrap
+msgid ""
+"0. Summary: Don't be a jerk. Be awesome instead.\n"
+"\n"
+msgstr ""
+"0. Resumen: No seas idiota. Sé impresionante en su lugar.\n"
+"\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:29
+msgid "The Tor community should be a good place where people are glad to be."
+msgstr ""
+"La 

[tor-commits] [translation/policies-code_of_conducttxtpot] https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot

2019-08-28 Thread translation
commit 1a38d439431a8417ddc51c49577b1e5ea37ad5ef
Author: Translation commit bot 
Date:   Wed Aug 28 16:16:50 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot
---
 code_of_conduct+es.po | 20 
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/code_of_conduct+es.po b/code_of_conduct+es.po
index 663358971..220c06047 100644
--- a/code_of_conduct+es.po
+++ b/code_of_conduct+es.po
@@ -5,8 +5,8 @@
 # FIRST AUTHOR , YEAR.
 # 
 # Translators:
-# Emma Peel, 2019
 # Alfredo Duro , 2019
+# Emma Peel, 2019
 # 
 #, fuzzy
 msgid ""
@@ -14,7 +14,7 @@ msgstr ""
 "Project-Id-Version: Code of conduct of the Tor Project\n"
 "POT-Creation-Date: 2019-08-02 12:00+\n"
 "PO-Revision-Date: 2019-08-27 18:54+\n"
-"Last-Translator: Alfredo Duro , 2019\n"
+"Last-Translator: Emma Peel, 2019\n"
 "Language-Team: Spanish (https://www.transifex.com/otf/teams/1519/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -98,7 +98,9 @@ msgstr ""
 msgid ""
 "0. Summary: Don't be a jerk. Be awesome instead.\n"
 "\n"
-msgstr "Resumen: No sea un idiota. Sea impresionante en su lugar.\n"
+msgstr ""
+"0. Resumen: No seas idiota. Sé impresionante en su lugar.\n"
+"\n"
 
 #. type: Plain text
 #: ../code_of_conduct.txt:29
@@ -180,7 +182,9 @@ msgstr ""
 msgid ""
 "1. Purpose\n"
 "\n"
-msgstr " Propósito\n"
+msgstr ""
+"1. Propósito\n"
+"\n"
 
 #. type: Plain text
 #: ../code_of_conduct.txt:63
@@ -287,8 +291,8 @@ msgid ""
 "Be mindful of your surroundings and of your fellow participants. Alert "
 "community leaders if you notice:"
 msgstr ""
-"Se consciente de tu entorno y tus compañerxs participantes. Notifica a lxs "
-"líderes de la comunidad si detectas:"
+"Se consciente de tu entorno y tus colegas participantes. Notifica a la "
+"comunidad si detectas:"
 
 #. type: Bullet: '- '
 #: ../code_of_conduct.txt:94
@@ -312,7 +316,7 @@ msgid ""
 "public. Please be respectful to everyone using these locations."
 msgstr ""
 "Recuerda que los lugares de eventos comunitarios pueden ser compartidos al "
-"público. Por favor se respetuosx con todxs lxs que usan estos lugares."
+"público. Por favor respeta a todas las personas que usan estos lugares."
 
 #. type: Bullet: '  * '
 #: ../code_of_conduct.txt:103
@@ -380,7 +384,7 @@ msgstr ""
 #. type: Bullet: '  * '
 #: ../code_of_conduct.txt:127
 msgid "Personal insults or attacks, particularly those related to:"
-msgstr "insultos personales o ataques, particularmente relacionados con:"
+msgstr "Insultos personales o ataques, particularmente relacionados con:"
 
 #. type: Bullet: '- '
 #: ../code_of_conduct.txt:129

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Remove extraneous "n" from comment in routerset.c

2019-08-28 Thread nickm
commit 04ab357df80582d3d9e7a78471e051f8f774d27b
Author: Nick Mathewson 
Date:   Wed Aug 28 11:39:31 2019 -0400

Remove extraneous "n" from comment in routerset.c
---
 src/feature/nodelist/routerset.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/feature/nodelist/routerset.c b/src/feature/nodelist/routerset.c
index 76777847e..6d0cf3179 100644
--- a/src/feature/nodelist/routerset.c
+++ b/src/feature/nodelist/routerset.c
@@ -1,5 +1,5 @@
 /* Copyright (c) 2001 Matej Pfajfar.
-n * Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2001-2004, Roger Dingledine.
  * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
  * Copyright (c) 2007-2019, The Tor Project, Inc. */
 /* See LICENSE for licensing information */

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/policies-code_of_conducttxtpot_completed] https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot_completed

2019-08-28 Thread translation
commit 9f37c066b12ac063ad6bad183240728d2906d50a
Author: Translation commit bot 
Date:   Wed Aug 28 15:30:51 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=policies-code_of_conducttxtpot_completed
---
 code_of_conduct+es.po | 815 --
 code_of_conduct+tr.po | 799 -
 2 files changed, 1614 deletions(-)

diff --git a/code_of_conduct+es.po b/code_of_conduct+es.po
deleted file mode 100644
index 663358971..0
--- a/code_of_conduct+es.po
+++ /dev/null
@@ -1,815 +0,0 @@
-# Code of conduct of the tor project
-# Copyright (C) 2019 tor project.
-# This Code of Conduct is licensed under a Creative Commons CC-BY-SA 4.0
-# International license.e.
-# FIRST AUTHOR , YEAR.
-# 
-# Translators:
-# Emma Peel, 2019
-# Alfredo Duro , 2019
-# 
-#, fuzzy
-msgid ""
-msgstr ""
-"Project-Id-Version: Code of conduct of the Tor Project\n"
-"POT-Creation-Date: 2019-08-02 12:00+\n"
-"PO-Revision-Date: 2019-08-27 18:54+\n"
-"Last-Translator: Alfredo Duro , 2019\n"
-"Language-Team: Spanish (https://www.transifex.com/otf/teams/1519/es/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#. type: Plain text
-#: ../code_of_conduct.txt:1 ../code_of_conduct.txt:24
-#: ../code_of_conduct.txt:51 ../code_of_conduct.txt:75
-#: ../code_of_conduct.txt:104 ../code_of_conduct.txt:180
-#: ../code_of_conduct.txt:193 ../code_of_conduct.txt:213
-#: ../code_of_conduct.txt:231 ../code_of_conduct.txt:243
-#: ../code_of_conduct.txt:253 ../code_of_conduct.txt:278
-#, no-wrap
-msgid "\n"
-msgstr "\n"
-
-#. type: Plain text
-#: ../code_of_conduct.txt:3
-#, no-wrap
-msgid ""
-"Tor Project Code of Conduct\n"
-"\n"
-msgstr ""
-"Código de conducta del Proyecto Tor\n"
-"\n"
-
-#. type: Plain text
-#: ../code_of_conduct.txt:6
-msgid "Statement of Intent:"
-msgstr "Declaración de intenciones:"
-
-#. type: Plain text
-#: ../code_of_conduct.txt:10
-msgid ""
-"The Tor Project is committed to fostering an inclusive environment and "
-"community. Tor is a place where people should feel safe to engage, share "
-"their point of view, and participate."
-msgstr ""
-"El proyecto Tor está decidido a fomentar una comunidad y ambiente "
-"inclusivos. Tor es un espacio en donde las personas deben sentirse seguras, "
-"compartir su punto de vista, y participar."
-
-#. type: Plain text
-#: ../code_of_conduct.txt:15
-msgid ""
-"This code of conduct applies to The Tor Project as a whole. It is intended "
-"to provide guidelines for contributors. Employees and contractors of The Tor"
-" Project, Inc. (TPI) are also subject to company policies and procedures. "
-"Those people should feel free to contact HR with questions or concerns."
-msgstr ""
-"Este código de conducta se aplica al proyecto Tor como un todo. Su 
intención"
-" es proveer lineamientos para sus contribuidores. Lxs empleadxs y "
-"contratistas de The Tor Project, Inc. (TPI) también están sujetos a las "
-"políticas y procedimientos de la compañía. Estas personas pueden contactar 
a"
-" RH para preguntas o inquietudes de cualquier tipo."
-
-#. type: Plain text
-#: ../code_of_conduct.txt:23
-msgid ""
-"This code of conduct is not exhaustive or complete. It is an ongoing effort "
-"to summarize our shared understanding. We want to provide a welcoming, safe "
-"environment, so we can work together to pursue powerful solutions. We "
-"reserve the right to deviate from strictly enforcing this code. Any "
-"deviations must produce an outcome which is fairer, and aligned with our "
-"values. We understand that keeping a living document relevant and 
“patched” "
-"involves sustained effort."
-msgstr ""
-" Este código de conducta no es exhaustivo o completo, sino un esfuerzo "
-"continuo de resumir nuestro entendimiento compartido. Queremos proveer un "
-"ambiente seguro y acogedor, de modo que podamos trabajar juntos para "
-"alcanzar soluciones poderosas. Nos reservamos el derecho de desviarnos de "
-"aplicar estrictamente este código. Cualquier desviación debe producir un "
-"resultado más justo, y alineado con nuestros valores. Entendemos que "
-"mantener un documento relevante y actualizado requiere un esfuerzo continuo."
-
-#. type: Plain text
-#: ../code_of_conduct.txt:26
-#, no-wrap
-msgid ""
-"0. Summary: Don't be a jerk. Be awesome instead.\n"
-"\n"
-msgstr "Resumen: No sea un idiota. Sea impresionante en su lugar.\n"
-
-#. type: Plain text
-#: ../code_of_conduct.txt:29
-msgid "The Tor community should be a good place where people are glad to be."
-msgstr 

[tor-commits] [translation-tools/master] Add Code of Conduct branch for translation.

2019-08-28 Thread emmapeel
commit 896dff2022d8f09e538c9be3aa6bada707ef5371
Author: emma peel 
Date:   Wed Aug 28 15:26:00 2019 +

Add Code of Conduct branch for translation.
This translation template was generated from policies.git file
---
 config | 1 +
 1 file changed, 1 insertion(+)

diff --git a/config b/config
index f2ac4f8..092c016 100644
--- a/config
+++ b/config
@@ -18,6 +18,7 @@ https_everywhere https_everywhere_completed
 liveusb-creator liveusb-creator_completed
 mat-gui mat-gui_completed
 orfox-stringsxml orfox-stringsxml_completed
+policies-code_of_conducttxtpot policies-code_of_conducttxtpot_completed
 snowflakeaddon-messages.json snowflakeaddon-messages.json_completed
 snowflake-website-indexhtml snowflake-website-indexhtml_completed
 tails-misc tails-misc_completed tails-misc_release

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/policies-code_of_conducttxtpot_completed] pulling translations from transifex

2019-08-28 Thread translation
commit e9586783fd7b5c2614a20891fb07b7b21ba28438
Author: Translation commit bot 
Date:   Wed Aug 28 15:02:23 2019 +

pulling translations from transifex
---
 code_of_conduct+es.po | 815 ++
 code_of_conduct+tr.po | 799 +
 code_of_conduct.pot   | 790 
 3 files changed, 2404 insertions(+)

diff --git a/code_of_conduct+es.po b/code_of_conduct+es.po
new file mode 100644
index 0..663358971
--- /dev/null
+++ b/code_of_conduct+es.po
@@ -0,0 +1,815 @@
+# Code of conduct of the tor project
+# Copyright (C) 2019 tor project.
+# This Code of Conduct is licensed under a Creative Commons CC-BY-SA 4.0
+# International license.e.
+# FIRST AUTHOR , YEAR.
+# 
+# Translators:
+# Emma Peel, 2019
+# Alfredo Duro , 2019
+# 
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Code of conduct of the Tor Project\n"
+"POT-Creation-Date: 2019-08-02 12:00+\n"
+"PO-Revision-Date: 2019-08-27 18:54+\n"
+"Last-Translator: Alfredo Duro , 2019\n"
+"Language-Team: Spanish (https://www.transifex.com/otf/teams/1519/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:1 ../code_of_conduct.txt:24
+#: ../code_of_conduct.txt:51 ../code_of_conduct.txt:75
+#: ../code_of_conduct.txt:104 ../code_of_conduct.txt:180
+#: ../code_of_conduct.txt:193 ../code_of_conduct.txt:213
+#: ../code_of_conduct.txt:231 ../code_of_conduct.txt:243
+#: ../code_of_conduct.txt:253 ../code_of_conduct.txt:278
+#, no-wrap
+msgid "\n"
+msgstr "\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:3
+#, no-wrap
+msgid ""
+"Tor Project Code of Conduct\n"
+"\n"
+msgstr ""
+"Código de conducta del Proyecto Tor\n"
+"\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:6
+msgid "Statement of Intent:"
+msgstr "Declaración de intenciones:"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:10
+msgid ""
+"The Tor Project is committed to fostering an inclusive environment and "
+"community. Tor is a place where people should feel safe to engage, share "
+"their point of view, and participate."
+msgstr ""
+"El proyecto Tor está decidido a fomentar una comunidad y ambiente "
+"inclusivos. Tor es un espacio en donde las personas deben sentirse seguras, "
+"compartir su punto de vista, y participar."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:15
+msgid ""
+"This code of conduct applies to The Tor Project as a whole. It is intended "
+"to provide guidelines for contributors. Employees and contractors of The Tor"
+" Project, Inc. (TPI) are also subject to company policies and procedures. "
+"Those people should feel free to contact HR with questions or concerns."
+msgstr ""
+"Este código de conducta se aplica al proyecto Tor como un todo. Su 
intención"
+" es proveer lineamientos para sus contribuidores. Lxs empleadxs y "
+"contratistas de The Tor Project, Inc. (TPI) también están sujetos a las "
+"políticas y procedimientos de la compañía. Estas personas pueden contactar 
a"
+" RH para preguntas o inquietudes de cualquier tipo."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:23
+msgid ""
+"This code of conduct is not exhaustive or complete. It is an ongoing effort "
+"to summarize our shared understanding. We want to provide a welcoming, safe "
+"environment, so we can work together to pursue powerful solutions. We "
+"reserve the right to deviate from strictly enforcing this code. Any "
+"deviations must produce an outcome which is fairer, and aligned with our "
+"values. We understand that keeping a living document relevant and 
“patched” "
+"involves sustained effort."
+msgstr ""
+" Este código de conducta no es exhaustivo o completo, sino un esfuerzo "
+"continuo de resumir nuestro entendimiento compartido. Queremos proveer un "
+"ambiente seguro y acogedor, de modo que podamos trabajar juntos para "
+"alcanzar soluciones poderosas. Nos reservamos el derecho de desviarnos de "
+"aplicar estrictamente este código. Cualquier desviación debe producir un "
+"resultado más justo, y alineado con nuestros valores. Entendemos que "
+"mantener un documento relevante y actualizado requiere un esfuerzo continuo."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:26
+#, no-wrap
+msgid ""
+"0. Summary: Don't be a jerk. Be awesome instead.\n"
+"\n"
+msgstr "Resumen: No sea un idiota. Sea impresionante en su lugar.\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:29
+msgid "The Tor community should be a good place where people are glad to 

[tor-commits] [translation/policies-code_of_conducttxtpot] pulling translations from transifex

2019-08-28 Thread translation
commit 55290a761125cde6eddab997cc4caa7493f2e306
Author: Translation commit bot 
Date:   Wed Aug 28 15:02:17 2019 +

pulling translations from transifex
---
 code_of_conduct+es.po | 815 ++
 code_of_conduct+tr.po | 799 +
 code_of_conduct.pot   | 790 
 3 files changed, 2404 insertions(+)

diff --git a/code_of_conduct+es.po b/code_of_conduct+es.po
new file mode 100644
index 0..663358971
--- /dev/null
+++ b/code_of_conduct+es.po
@@ -0,0 +1,815 @@
+# Code of conduct of the tor project
+# Copyright (C) 2019 tor project.
+# This Code of Conduct is licensed under a Creative Commons CC-BY-SA 4.0
+# International license.e.
+# FIRST AUTHOR , YEAR.
+# 
+# Translators:
+# Emma Peel, 2019
+# Alfredo Duro , 2019
+# 
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Code of conduct of the Tor Project\n"
+"POT-Creation-Date: 2019-08-02 12:00+\n"
+"PO-Revision-Date: 2019-08-27 18:54+\n"
+"Last-Translator: Alfredo Duro , 2019\n"
+"Language-Team: Spanish (https://www.transifex.com/otf/teams/1519/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:1 ../code_of_conduct.txt:24
+#: ../code_of_conduct.txt:51 ../code_of_conduct.txt:75
+#: ../code_of_conduct.txt:104 ../code_of_conduct.txt:180
+#: ../code_of_conduct.txt:193 ../code_of_conduct.txt:213
+#: ../code_of_conduct.txt:231 ../code_of_conduct.txt:243
+#: ../code_of_conduct.txt:253 ../code_of_conduct.txt:278
+#, no-wrap
+msgid "\n"
+msgstr "\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:3
+#, no-wrap
+msgid ""
+"Tor Project Code of Conduct\n"
+"\n"
+msgstr ""
+"Código de conducta del Proyecto Tor\n"
+"\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:6
+msgid "Statement of Intent:"
+msgstr "Declaración de intenciones:"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:10
+msgid ""
+"The Tor Project is committed to fostering an inclusive environment and "
+"community. Tor is a place where people should feel safe to engage, share "
+"their point of view, and participate."
+msgstr ""
+"El proyecto Tor está decidido a fomentar una comunidad y ambiente "
+"inclusivos. Tor es un espacio en donde las personas deben sentirse seguras, "
+"compartir su punto de vista, y participar."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:15
+msgid ""
+"This code of conduct applies to The Tor Project as a whole. It is intended "
+"to provide guidelines for contributors. Employees and contractors of The Tor"
+" Project, Inc. (TPI) are also subject to company policies and procedures. "
+"Those people should feel free to contact HR with questions or concerns."
+msgstr ""
+"Este código de conducta se aplica al proyecto Tor como un todo. Su 
intención"
+" es proveer lineamientos para sus contribuidores. Lxs empleadxs y "
+"contratistas de The Tor Project, Inc. (TPI) también están sujetos a las "
+"políticas y procedimientos de la compañía. Estas personas pueden contactar 
a"
+" RH para preguntas o inquietudes de cualquier tipo."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:23
+msgid ""
+"This code of conduct is not exhaustive or complete. It is an ongoing effort "
+"to summarize our shared understanding. We want to provide a welcoming, safe "
+"environment, so we can work together to pursue powerful solutions. We "
+"reserve the right to deviate from strictly enforcing this code. Any "
+"deviations must produce an outcome which is fairer, and aligned with our "
+"values. We understand that keeping a living document relevant and 
“patched” "
+"involves sustained effort."
+msgstr ""
+" Este código de conducta no es exhaustivo o completo, sino un esfuerzo "
+"continuo de resumir nuestro entendimiento compartido. Queremos proveer un "
+"ambiente seguro y acogedor, de modo que podamos trabajar juntos para "
+"alcanzar soluciones poderosas. Nos reservamos el derecho de desviarnos de "
+"aplicar estrictamente este código. Cualquier desviación debe producir un "
+"resultado más justo, y alineado con nuestros valores. Entendemos que "
+"mantener un documento relevante y actualizado requiere un esfuerzo continuo."
+
+#. type: Plain text
+#: ../code_of_conduct.txt:26
+#, no-wrap
+msgid ""
+"0. Summary: Don't be a jerk. Be awesome instead.\n"
+"\n"
+msgstr "Resumen: No sea un idiota. Sea impresionante en su lugar.\n"
+
+#. type: Plain text
+#: ../code_of_conduct.txt:29
+msgid "The Tor community should be a good place where people are glad to 

[tor-commits] [translation/tpo-web] https://gitweb.torproject.org/translation.git/commit/?h=tpo-web

2019-08-28 Thread translation
commit 5b0a602096d90ae6382e0e264ba6da1be3b43e29
Author: Translation commit bot 
Date:   Wed Aug 28 14:52:46 2019 +

https://gitweb.torproject.org/translation.git/commit/?h=tpo-web
---
 contents+ka.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contents+ka.po b/contents+ka.po
index b489e4ed3..332d938ac 100644
--- a/contents+ka.po
+++ b/contents+ka.po
@@ -905,7 +905,7 @@ msgstr ""
 
 #: templates/contact.html:67
 msgid "Tell us about a bad relay."
-msgstr "მოგვახსენეთ ხარვეზიანი 
გადამცემის შესახებ."
+msgstr "მოგვახსენეთ გაუმართავი 
გადამცემის შესახებ."
 
 #: templates/contact.html:68
 msgid ""
@@ -918,7 +918,7 @@ msgstr ""
 
 #: templates/contact.html:76
 msgid "Report a security issue."
-msgstr "მოგვახსენეთ უსაფრთხოების 
ხარვეზის შესახებ"
+msgstr "მოგვახსენეთ უსაფრთხოების 
სისუსტეების შესახებ"
 
 #: templates/contact.html:77
 msgid ""

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser-build/master] Bug 30490: Adapt cbindgen for Windows 32bit usage

2019-08-28 Thread boklm
commit 84d95d6d2a51d93f62e9927cfa2e63e674066c7d
Author: Georg Koppen 
Date:   Mon Aug 26 21:21:20 2019 +

Bug 30490: Adapt cbindgen for Windows 32bit usage
---
 projects/cbindgen/build | 9 +++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/projects/cbindgen/build b/projects/cbindgen/build
index 429f567..402a216 100644
--- a/projects/cbindgen/build
+++ b/projects/cbindgen/build
@@ -22,8 +22,13 @@ replace-with = "vendored-sources"
 directory = "/var/tmp/build/cbindgen/vendor"
 EOF
 
-cargo build --release --frozen --target x86_64-unknown-linux-gnu
-mv target/x86_64-unknown-linux-gnu/release/cbindgen $distdir/[% project %]
+[% IF ! c("var/windows-i686") -%]
+  target=x86_64
+[% ELSE -%]
+  target=i686
+[% END -%]
+cargo build --release --frozen --target $target-unknown-linux-gnu
+mv target/$target-unknown-linux-gnu/release/cbindgen $distdir/[% project %]
 
 cd $distdir
 [% c('tar', {



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser-build/master] Bug 28238: Use mingw-w64-clang for fxc2

2019-08-28 Thread boklm
commit 9b4b31f5bacfffb2b35e914fe5535999c7db45e1
Author: Georg Koppen 
Date:   Mon Aug 26 12:24:36 2019 +

Bug 28238: Use mingw-w64-clang for fxc2
---
 projects/firefox/build | 1 -
 projects/fxc2/config   | 3 ++-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/projects/firefox/build b/projects/firefox/build
index 31b812a..1fb4b58 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -40,7 +40,6 @@ EOF
   mkdir -p /var/tmp/dist
   tar -C /var/tmp/dist -xf [% c('input_files_by_name/fxc2') %]
   fxcdir=/var/tmp/dist/fxc2/bin
-  cp $mingwdir/[% c("arch") %]-w64-mingw32/bin/libwinpthread-1.dll $fxcdir
   export PATH="$fxcdir:$PATH"
   # fxc2 requires Wine.
   [% IF c("var/windows-x86_64") %]
diff --git a/projects/fxc2/config b/projects/fxc2/config
index 5cdf03a..4b9f151 100644
--- a/projects/fxc2/config
+++ b/projects/fxc2/config
@@ -1,12 +1,13 @@
 # vim: filetype=yaml sw=2
 version: '[% c("abbrev") %]'
 git_url: https://github.com/mozilla/fxc2.git
-git_hash: 0b800f3e41ed087df6f51f120165f3ccc71cc27c
+git_hash: 5ace4c25b63cb5a83b58a3eae3d36256a6022cde
 filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% 
c("var/build_id") %].tar.gz'
 
 var:
   container:
 use_container: 1
+  compiler: mingw-w64-clang
 
 input_files:
   - project: container-image



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser-build/master] Bug 28238: Adapt firefox project for Windows builds

2019-08-28 Thread boklm
commit 023ce30eb3c6082af3353fe6876c202d849cfea8
Author: Georg Koppen 
Date:   Mon Aug 26 21:30:50 2019 +

Bug 28238: Adapt firefox project for Windows builds
---
 projects/firefox/build| 77 ---
 projects/firefox/config   | 16 +++
 projects/firefox/mozconfig-windows-i686   | 24 --
 projects/firefox/mozconfig-windows-x86_64 | 21 +++--
 4 files changed, 56 insertions(+), 82 deletions(-)

diff --git a/projects/firefox/build b/projects/firefox/build
index 1fb4b58..a4b10b6 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -1,46 +1,15 @@
 #!/bin/bash
 [% c("var/setarch") -%]
 [% c("var/set_default_env") -%]
-[% IF c("var/windows") -%]
-  [% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc') 
}) %]
-  # We need a link to our GCC, otherwise the system cc gets used which points 
to
-  # /usr/bin/gcc.
-  ln -s gcc /var/tmp/dist/gcc/bin/cc
-[% END -%]
 [% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => 
c('input_files_by_name/' _ c('var/compiler')) }) %]
 distdir=/var/tmp/dist/[% project %]
 mkdir -p /var/tmp/build
 mkdir -p [% dest_dir _ '/' _ c('filename') %]
 
-[% IF c("var/windows") -%]
-  mingwdir=/var/tmp/dist/mingw-w64
-  mkdir -p $mingwdir/helpers
-
-  cat > $mingwdir/helpers/[% c("arch") %]-w64-mingw32-g++ << 'EOF'
-#!/bin/sh
-/var/tmp/dist/mingw-w64/bin/[% c("arch") %]-w64-mingw32-g++ [% 
c("var/LDFLAGS") %] [% c("var/CFLAGS") %] "$@"
-EOF
-
-  cat > $mingwdir/helpers/[% c("arch") %]-w64-mingw32-gcc << 'EOF'
-#!/bin/sh
-/var/tmp/dist/mingw-w64/bin/[% c("arch") %]-w64-mingw32-gcc [% 
c("var/LDFLAGS") %] [% c("var/CFLAGS") %] "$@"
-EOF
-
-  cat > $mingwdir/helpers/[% c("arch") %]-w64-mingw32-ld << 'EOF'
-#!/bin/sh
-/var/tmp/dist/mingw-w64/bin/[% c("arch") %]-w64-mingw32-ld [% c("var/LDFLAGS") 
%] "$@"
-EOF
-
-  chmod +x $mingwdir/helpers/*
-  export PATH="$mingwdir/helpers:$PATH"
-[% END -%]
-
 [% IF c("var/windows") %]
-  # Unpack fxc2.
-  mkdir -p /var/tmp/dist
+  # Setting up fxc2
   tar -C /var/tmp/dist -xf [% c('input_files_by_name/fxc2') %]
-  fxcdir=/var/tmp/dist/fxc2/bin
-  export PATH="$fxcdir:$PATH"
+  export PATH="/var/tmp/dist/fxc2/bin:$PATH"
   # fxc2 requires Wine.
   [% IF c("var/windows-x86_64") %]
 export WINEARCH=win64
@@ -51,7 +20,6 @@ EOF
   wine wineboot -i
 [% END -%]
 
-mkdir -p /var/tmp/dist
 tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
 tar -C /var/tmp/dist -xf [% c('input_files_by_name/cbindgen') %]
 tar -C /var/tmp/dist -xf [% c('input_files_by_name/nasm') %]
@@ -113,30 +81,11 @@ then
 fi
 
 [% IF c("var/windows") %]
-  # FIXME
-  # Ideally, using LDFLAGS (and e.g. DLLFLAGS for NSS) would be enough to get
-  # all Firefox libraries linked against msvcr100. Alas, this does not hold for
-  # NSPR. Without patching it we get a "missing entry points for _strcmpi in
-  # msvcr100.dll". Now, this should be fixed in rev>=6179 as the def file there
-  # contains a proper patch according to the mingw-w64 developers.
-  # However, even with this patch the _strcmpi issue is still popping up,
-  # probably due to a bug in our current linking setup. The small patch below
-  # is therefore just a workaround which should get fixed but is at least
-  # justified as the signature of _strcmpi and _stricmp is the same, see:
-  # http://msdn.microsoft.com/en-us/library/k59z8dwe.aspx.
-  sed 's/strcmpi/stricmp/' -i nsprpub/pr/src/linking/prlink.c
-  export HOST_LDFLAGS=" "
-  export LDFLAGS="-specs=/var/tmp/dist/mingw-w64/msvcr100.spec"
-  # Our flags don't get passed to NSS. We need to do that manually using an
-  # obscure one.
-  export DLLFLAGS="-specs=/var/tmp/dist/mingw-w64/msvcr100.spec"
-
   # Make sure widl is not inserting random timestamps, see #21837.
   export WIDL_TIME_OVERRIDE="0"
-[% END %]
-
-[% IF c("var/windows") %]
   patch -p1 < $rootdir/nsis-uninstall.patch
+  # Make sure we link without inserting timestamps in general.
+  export LDFLAGS="-Wl,--no-insert-timestamp"
 [% END -%]
 
 # Backporting a sec-high bugfix to ESR 60, but making sure it is only applied 
to
@@ -203,14 +152,9 @@ rm -f js/src/configure
   chmod 755 $distdir/Browser/firefox
 [% END %]
 
-[% IF c("var/windows-x86_64") -%]
-  mv $rootdir/msvcr100-x86_64.dll $rootdir/msvcr100.dll
-[% END -%]
 [% IF c("var/windows") %]
   cp -a obj-*/dist/firefox/* $distdir/Browser/
-  cp -a $rootdir/msvcr100.dll $distdir/Browser
-  cp -a $gcclibs/libssp-0.dll $distdir/Browser
-  cp -a $fxcdir/d3dcompiler_47.dll $distdir/Browser
+  cp -a /var/tmp/dist/fxc2/bin/d3dcompiler_47.dll $distdir/Browser
 [% END %]
 
 # Make MAR-based update tools available for use during the bundle phase.
@@ -243,16 +187,15 @@ cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
   done
 [% END %]
 [% IF c("var/windows") %]
-  cp -p obj-*/modules/libmar/tool/signmar.exe $MARTOOLS/
-  cp -p obj-*/security/nss/cmd/certutil/certutil_certutil/certutil.exe 
$MARTOOLS/
-  cp -p 

[tor-commits] [tor-browser-build/master] Bug 28716: Optionally omit timestamp in PE header

2019-08-28 Thread boklm
commit 6ca067d2d716283c47c6b2fb822305e61b16e168
Author: Georg Koppen 
Date:   Sun Aug 25 21:52:32 2019 +

Bug 28716: Optionally omit timestamp in PE header

Since r332613 lld has the option of setting the timestamp in PE headers
to `0` which essentially is the behavior of ld's `--no-insert-timestamp`
flag. However, we need a patch for lld's MingW target to pass this
option on in our cross-compilation case, as it would not be available
otherwise.
---
 projects/clang/build   |  1 +
 projects/clang/config  |  2 ++
 projects/clang/timestamp.patch | 54 ++
 3 files changed, 57 insertions(+)

diff --git a/projects/clang/build b/projects/clang/build
index 50576b4..c1afa6d 100644
--- a/projects/clang/build
+++ b/projects/clang/build
@@ -30,6 +30,7 @@ mv compiler-rt-* llvm/projects/compiler-rt
   for i in {1..12}
 do git apply $rootdir/win-patches/llvm-objcopy-$i.patch
   done
+  patch -p1 -d llvm/tools/lld < $rootdir/timestamp.patch
 [% END %]
 cd llvm
 export LLVM_HOME=$(pwd)
diff --git a/projects/clang/config b/projects/clang/config
index f439cf7..08231be 100644
--- a/projects/clang/config
+++ b/projects/clang/config
@@ -43,3 +43,5 @@ input_files:
 file_gpg_id: 1
   - filename: win-patches
 enable: '[% c("var/windows") %]'
+  - filename: timestamp.patch
+enable: '[% c("var/windows") %]'
diff --git a/projects/clang/timestamp.patch b/projects/clang/timestamp.patch
new file mode 100644
index 000..bea48a2
--- /dev/null
+++ b/projects/clang/timestamp.patch
@@ -0,0 +1,54 @@
+From f4743f40894d1dcd4ba131af3ad86a34c6d54598 Mon Sep 17 00:00:00 2001
+From: Martin Storsjo 
+Date: Tue, 5 Feb 2019 08:16:06 +
+Subject: [PATCH] Hook up the --no-insert-timestamp option
+
+This fixes PR40582.
+
+Patch by Georg Koppen!
+
+Differential Revision: https://reviews.llvm.org/D57679
+
+git-svn-id: https://llvm.org/svn/llvm-project/lld/trunk@353145 
91177308-0d34-0410-b5e6-96231b3b80d8
+
+diff --git a/MinGW/Driver.cpp b/MinGW/Driver.cpp
+index 27a5550ec..d79ebe82e 100644
+--- a/MinGW/Driver.cpp
 b/MinGW/Driver.cpp
+@@ -170,6 +170,9 @@ bool mingw::link(ArrayRef ArgsArr, 
raw_ostream ) {
+   Args.getLastArgValue(OPT_m) != "arm64pe" && 
!Args.hasArg(OPT_dynamicbase))
+ Add("-dynamicbase:no");
+ 
++  if (Args.hasArg(OPT_no_insert_timestamp))
++Add("-timestamp:0");
++
+   if (Args.hasFlag(OPT_gc_sections, OPT_no_gc_sections, false))
+ Add("-opt:ref");
+   else
+diff --git a/MinGW/Options.td b/MinGW/Options.td
+index ad699f711..5cc339a4a 100644
+--- a/MinGW/Options.td
 b/MinGW/Options.td
+@@ -20,6 +20,8 @@ def l: JoinedOrSeparate<["-"], "l">, 
MetaVarName<"">,
+ def m: JoinedOrSeparate<["-"], "m">, HelpText<"Set target emulation">;
+ def map: S<"Map">, HelpText<"Output a linker map">;
+ def map_eq: J<"Map=">, Alias;
++def no_insert_timestamp: F<"no-insert-timestamp">,
++HelpText<"Don't include PE header timestamp">;
+ def no_whole_archive: F<"no-whole-archive">,
+ HelpText<"No longer include all object files for following archives">;
+ def large_address_aware: Flag<["--"], "large-address-aware">,
+diff --git a/test/MinGW/driver.test b/test/MinGW/driver.test
+index 3222bb111..b853527a0 100644
+--- a/test/MinGW/driver.test
 b/test/MinGW/driver.test
+@@ -151,3 +151,6 @@ REQUIRE-DEFINED: -include:_foo -include:_bar -include:_baz 
-include:_foo2
+ 
+ RUN: ld.lld -### -m i386pep foo.o -Llibpath | FileCheck -check-prefix LIBPATH 
%s
+ LIBPATH: -libpath:libpath
++
++RUN: ld.lld -### -m i386pep foo.o --no-insert-timestamp | FileCheck 
-check-prefix NOTIMESTAMP %s
++NOTIMESTAMP: -timestamp:0
+-- 
+2.23.0.rc1
+



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflake-website-indexhtml] https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml

2019-08-28 Thread translation
commit 5c8a0bc8e13b6911c2404207d9ccf36f97c00863
Author: Translation commit bot 
Date:   Wed Aug 28 13:15:13 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml
---
 zh_TW/index.html | 23 +++
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/zh_TW/index.html b/zh_TW/index.html
index 1011f64f5..628572a4b 100644
--- a/zh_TW/index.html
+++ b/zh_TW/index.html
@@ -15,10 +15,7 @@
 
   
 
-  Snowflake is a system to defeat internet censorship. People who are
-  censored can use Snowflake to access the internet. Their connection goes
-  through Snowflake proxies, which are run by volunteers. For more detailed
-  information about how Snowflake works see our
+  Snowflake 
是用來反制網路審查過濾機制的系統。若使用者
的網路有受到審查過濾的話,可以藉由此方式來上網,它會讓使用è€
…的網路連線轉跳過好幾個由志願者架設營運的 Snowflake 
代理伺服器。若想了解 Snowflake 的運作原理,請參考:
   https://trac.torproject.org/projects/tor/wiki/doc/Snowflake/;>documentation
 wiki.
 
   
@@ -35,17 +32,13 @@
 
   擴充套件
 
-  If your internet access is not censored, you 
should
-  consider installing the Snowflake extension to help users in censored
-  networks. There is no need to worry about which websites people are
-  accessing through your proxy. Their visible browsing IP address will
-  match their Tor exit node, not yours.
+  
如果您的網路沒有受到審查過濾的話,您或許可以考æ
…®å®‰è£ Snowflake 擴充
套件,以幫助身處在受到審查過濾網路中的使用者。您不必
擔心透過您的伺服器上網的使用者是連上什麼網站,因
為真正目的網站所紀錄到的IP位址並不是您的伺服器位址,而是洋蔥路由的出口節點位址。
 
   https://addons.mozilla.org/en-US/firefox/addon/torproject-snowflake/;>
-  在 Firefox 安裝
+  在火狐狸瀏覽器安裝
 
 https://chrome.google.com/webstore/detail/snowflake/mafpmfcccpbjnhfhjnllmmalhifmlcie;>
-  在 Chrome 安裝
+  在 Chrome 瀏覽器安裝
 
 
 
@@ -54,13 +47,11 @@
 
   回報錯誤
   
-  If you encounter problems with Snowflake as a client or a proxy,
-  please consider filing a bug.  To do so, you will have to,
+  如果您在此使用 Snowflake 
客戶端或代理伺服器過程中,遇到任何問題的話,惠
請協助回報該錯誤給我們。而若要回報錯誤的話,您必é 
ˆè¦
   
   
-Either https://trac.torproject.org/projects/tor/register;>create 
an
-account or https://trac.torproject.org/projects/tor/login;>log in
-using the shared cypherpunks account with password 
writecode.
+到https://trac.torproject.org/projects/tor/register;>創建一個帳號或https://trac.torproject.org/projects/tor/login;>登入
+可使用共享的cypherpunks帳號及å…
¶å¯†ç¢¼ï¼šwritecode.
 
 https://trac.torproject.org/projects/tor/newticket?component=Circumvention%2FSnowflake;>File
 a ticket
 using our bug tracker.

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation-tools/master] restrict reviewed strings to release and completed branches

2019-08-28 Thread emmapeel
commit 9a4f7688bca7cc9178a82250543812c54c335b57
Author: emma peel 
Date:   Wed Aug 28 13:08:17 2019 +

restrict reviewed strings to release and completed branches
---
 update_translations | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/update_translations b/update_translations
index 1d59466..b882f9a 100755
--- a/update_translations
+++ b/update_translations
@@ -26,7 +26,7 @@ for project in $PROJECTS; do
 
   cd $project;
 
-  if echo "$project" | grep -Eqs '^tails-|^whisperback|^mat-|^liveusb-' ; then
+  if echo "$project" | grep -Eqs '_release$|_completed$' ; then
 TX_PULL_OPTS='--mode=reviewed'
   else
 TX_PULL_OPTS='--mode=developer'



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation-tools/master] make sure we only commit currently completed branches. fixes: #26878

2019-08-28 Thread emmapeel
commit a24e9b0cba60137316f78d74dc87d17d9094b8e9
Author: emma peel 
Date:   Wed Aug 28 13:11:12 2019 +

make sure we only commit currently completed branches. fixes: #26878
---
 update_translations | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/update_translations b/update_translations
index b882f9a..a269858 100755
--- a/update_translations
+++ b/update_translations
@@ -28,6 +28,8 @@ for project in $PROJECTS; do
 
   if echo "$project" | grep -Eqs '_release$|_completed$' ; then
 TX_PULL_OPTS='--mode=reviewed'
+rm -f *.po > /dev/null;
+rm -f */*.po > /dev/null;
   else
 TX_PULL_OPTS='--mode=developer'
   fi



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation-tools/master] more useful although equally obvious commit message for the translation bot

2019-08-28 Thread emmapeel
commit cda6e5a709bb9480a3592020fd9af3e56df589d7
Author: emma peel 
Date:   Wed Aug 28 13:11:48 2019 +

more useful although equally obvious commit message for the translation bot
---
 update_translations | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/update_translations b/update_translations
index a269858..b2d689c 100755
--- a/update_translations
+++ b/update_translations
@@ -39,7 +39,7 @@ for project in $PROJECTS; do
 
   # ... add them to git ...
   git add -A . > /dev/null;
-  git commit -qm "Update translations for $project" > /dev/null || test $? = 1;
+  git commit -qm 
"https://gitweb.torproject.org/translation.git/commit/?h=$project; > /dev/null 
|| test $? = 1;
 
   # ... and push them live.
   git push -q origin $project > /dev/null;

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflake-website-indexhtml] https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml

2019-08-28 Thread translation
commit f74290786006dcacac6ee886b8c483c6655aa52d
Author: Translation commit bot 
Date:   Wed Aug 28 12:39:59 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml
---
 es/index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/es/index.html b/es/index.html
index 7e4fefaf7..273c06d28 100644
--- a/es/index.html
+++ b/es/index.html
@@ -15,7 +15,7 @@
 
   
 
-  Snowflake es un sistema para burlar la censura de internet. Personas 
que están
+  Snowflake es un sistema para burlar la censura de Internet. Personas 
que están
   censuradas pueden usar Snowflake para acceder a internet. Su conxión va 
a través 
   de los proxies Snowflake, que hacen funcionar voluntarios. Para una 
información más
   detallada de cómo funciona Snowflake mira en la

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json_completed] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json_completed

2019-08-28 Thread translation
commit 78e307fca3cc500bfd1e65869fa917f5fb2f04b9
Author: Translation commit bot 
Date:   Wed Aug 28 12:39:54 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json_completed
---
 es/messages.json | 20 ++--
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/es/messages.json b/es/messages.json
index f6ed740cf..dc5ea5364 100644
--- a/es/messages.json
+++ b/es/messages.json
@@ -1,32 +1,32 @@
 {
   "appDesc": {
-"message": "Snowflake is a WebRTC pluggable transport for Tor."
+"message": "Snowflake es un transportador conectable WebRTC para Tor."
   },
   "popupTurnOn": {
-"message": "Turn On"
+"message": "Encender"
   },
   "popupTurnOff": {
-"message": "Turn Off"
+"message": "Apagar"
   },
   "popupLearnMore": {
-"message": "Learn more"
+"message": "Conocer más"
   },
   "popupStatusOff": {
-"message": "Snowflake is off"
+"message": "Snowflake está apagado"
   },
   "popupStatusOn": {
-"message": "Number of users currently connected: $1"
+"message": "Número de usuarios actualmente conectados:$1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship"
+"message": "Tu Snowflake está listo para ayudar a los usuarios a saltarse 
la censura"
   },
   "popupWebRTCOff": {
-"message": "WebRTC feature is not detected."
+"message": "No se detecta WebRTC."
   },
   "popupDescOn": {
-"message": "Number of users your Snowflake has helped circumvent 
censorship in the last 24 hours: $1"
+"message": "Número de usuarios que tu Snowflake  ha ayudado a sortear la 
censura en las últimas 24 horas: $1"
   },
   "badgeCookiesOff": {
-"message": "Cookies are not enabled."
+"message": "Las cookies no están habilitadas."
   }
 }

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflake-website-indexhtml_completed] https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml_completed

2019-08-28 Thread translation
commit 6839ab22e137bf2c2e6ec1e59f824b5d58f9a50d
Author: Translation commit bot 
Date:   Wed Aug 28 12:40:04 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflake-website-indexhtml_completed
---
 es/index.html | 58 +-
 1 file changed, 29 insertions(+), 29 deletions(-)

diff --git a/es/index.html b/es/index.html
index 7e4fefaf7..bf000997c 100644
--- a/es/index.html
+++ b/es/index.html
@@ -15,11 +15,11 @@
 
   
 
-  Snowflake es un sistema para burlar la censura de internet. Personas 
que están
-  censuradas pueden usar Snowflake para acceder a internet. Su conxión va 
a través 
-  de los proxies Snowflake, que hacen funcionar voluntarios. Para una 
información más
-  detallada de cómo funciona Snowflake mira en la
-  https://trac.torproject.org/projects/tor/wiki/doc/Snowflake/;>wiki de 
documentación.
+  Snowflake is a system to defeat internet censorship. People who are
+  censored can use Snowflake to access the internet. Their connection goes
+  through Snowflake proxies, which are run by volunteers. For more detailed
+  information about how Snowflake works see our
+  https://trac.torproject.org/projects/tor/wiki/doc/Snowflake/;>documentation
 wiki.
 
   
 
@@ -33,49 +33,49 @@
 
 
 
-  Extensión
+  Extension
 
-  Si tu acceso a internet no está censurado, 
deberías
-  pensar en instalar la extensión Snowflake para ayudar a los 
usuarios de redes
-  censuradas. No tienes que preocuparte por  los sitios web a los que
-  acceden por tu proxy. Su dirección IP de navegación visible
-  coincide con su nodo de salida Tor, no con el tuyo..
+  If your internet access is not censored, you 
should
+  consider installing the Snowflake extension to help users in censored
+  networks. There is no need to worry about which websites people are
+  accessing through your proxy. Their visible browsing IP address will
+  match their Tor exit node, not yours.
 
   https://addons.mozilla.org/en-US/firefox/addon/torproject-snowflake/;>
-  Instalar en Firefox
+  Install in Firefox
 
 https://chrome.google.com/webstore/detail/snowflake/mafpmfcccpbjnhfhjnllmmalhifmlcie;>
-  Instalar en Chrome
+  Install in Chrome
 
 
 
 
   
 
-  INFORMAR DE FALLOS
+  REPORTING BUGS
   
-  Si hay algún problema con Snowflake como cliente o proxy,
-  por favor presenta un informe de error. Para hacerlo, tendrás que,,
+  If you encounter problems with Snowflake as a client or a proxy,
+  please consider filing a bug.  To do so, you will have to,
   
   
-Bien https://trac.torproject.org/projects/tor/register;>crea una
-cuenta o https://trac.torproject.org/projects/tor/login;>logea 
-usando la cuenta de cypherpunks compartida con contraseña 
código de escritura.
+Either https://trac.torproject.org/projects/tor/register;>create 
an
+account or https://trac.torproject.org/projects/tor/login;>log in
+using the shared cypherpunks account with password 
writecode.
 
-https://trac.torproject.org/projects/tor/newticket?component=Circumvention%2FSnowflake;>archiva
 una nota
-usando nuestro rastreador de errores.
+https://trac.torproject.org/projects/tor/newticket?component=Circumvention%2FSnowflake;>File
 a ticket
+using our bug tracker.
   
-Intenta ser los más descriptivo posible en la nota y si es
-  posible incluye el mensaje de registro que nos ayudará a reproducir  el 
bug.
-  Añade las palabras claves snowflake-webextension o 
snowflake-client
-  para que podamos saber qué parte del sistema Snowflake está teniendo
-  problemas.
+Please try to be as descriptive as possible with your ticket and if
+  possible include log messages that will help us reproduce the bug.
+  Consider adding keywords snowflake-webextension or 
snowflake-client
+  to let us know how which part of the Snowflake system is experiencing
+  problems.
 
-  EMPOTRADO
+  EMBED
 
-  Ahora es posible insertar el distintivo Snowflake en cualquier sitio 
web:
+  It is now possible to embed the Snowflake badge on any website:
 
-  iframe 
src="https://snowflake.torproject.org/embed.html; width="320px" height="200px" 
frameborder="0" scrolling="no"/iframeQue se ve 
así:
+  iframe 
src="https://snowflake.torproject.org/embed.html; width="320px" height="200px" 
frameborder="0" scrolling="no"/iframeWhich looks like 
this:
 
   
 

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json

2019-08-28 Thread translation
commit df336ac0275330b391cc7fbf17d9832a0fd6ed33
Author: Translation commit bot 
Date:   Wed Aug 28 12:39:49 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json
---
 es/messages.json | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/es/messages.json b/es/messages.json
index 2a6b75035..dc5ea5364 100644
--- a/es/messages.json
+++ b/es/messages.json
@@ -18,7 +18,7 @@
 "message": "Número de usuarios actualmente conectados:$1"
   },
   "popupStatusReady": {
-"message": "Tu Snowflake está a punto para ayudar a los usuarios a 
saltarse la censura"
+"message": "Tu Snowflake está listo para ayudar a los usuarios a saltarse 
la censura"
   },
   "popupWebRTCOff": {
 "message": "No se detecta WebRTC."

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json

2019-08-28 Thread translation
commit 7dfca78fe811cae203da28a871d0771d13a91087
Author: Translation commit bot 
Date:   Wed Aug 28 12:26:53 2019 +


https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-messages.json
---
 zh_TW/messages.json | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/zh_TW/messages.json b/zh_TW/messages.json
index f97dcad68..0067068c6 100644
--- a/zh_TW/messages.json
+++ b/zh_TW/messages.json
@@ -1,6 +1,6 @@
 {
   "appDesc": {
-"message": "Snowflake is a WebRTC pluggable transport for Tor."
+"message": "Snowflake 是洋蔥路由器的 WebRTC pluggable transport。"
   },
   "popupTurnOn": {
 "message": "開啟"
@@ -15,18 +15,18 @@
 "message": "Snowflake 已關閉"
   },
   "popupStatusOn": {
-"message": "Number of users currently connected: $1"
+"message": "目前線上使用者人數: $1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship"
+"message": "您的 Snowflake 已經就緒,可以開始幫助使用者
們繞過網路審查過濾"
   },
   "popupWebRTCOff": {
 "message": "沒有偵測到 WebRTC 功能。"
   },
   "popupDescOn": {
-"message": "Number of users your Snowflake has helped circumvent 
censorship in the last 24 hours: $1"
+"message": "在過去24個小時內,您的 Snowflake 已經成功幫助 
$1 人繞過網路審查過濾"
   },
   "badgeCookiesOff": {
-"message": "Cookies are not enabled."
+"message": "Cookie 功能未啟用。"
   }
 }

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-iuk] Update translations for tails-iuk

2019-08-28 Thread translation
commit ea43c0b4a772d9e7c60fc5a298607c7722c38f3b
Author: Translation commit bot 
Date:   Wed Aug 28 11:48:21 2019 +

Update translations for tails-iuk
---
 nl.po | 42 +-
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/nl.po b/nl.po
index a0662847f..a5c01ce0e 100644
--- a/nl.po
+++ b/nl.po
@@ -19,7 +19,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: Tails developers \n"
 "POT-Creation-Date: 2018-12-09 13:56+0100\n"
-"PO-Revision-Date: 2019-08-28 11:17+\n"
+"PO-Revision-Date: 2019-08-28 11:34+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
@@ -46,7 +46,7 @@ msgid ""
 "Check your network connection, and restart Tails to try upgrading again.\n"
 "\n"
 "If the problem persists, go to 
file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
-msgstr "Het was niet mogelijk om te bepalen of een bijgewerkte versie 
beschikbaar is op onze website.\n\nControleer uw netwerkverbinding en start 
Tails opnieuw op om de upgrade nogmaals te proberen.\n\nAls het probleem 
aanhoudt, ga dan naar 
file:///usr/share/doc/tails/website/doc/upgrade/error/check.nl.html"
+msgstr "Er kon niet worden bepaald of er een upgrade beschikbaar is op onze 
website.\n\nControleer uw netwerkverbinding en start Tails opnieuw om de 
upgrade nogmaals te proberen.\n\nAls het probleem aanhoudt, ga dan naar 
file:///usr/share/doc/tails/website/doc/upgrade/error/check.nl.html"
 
 #: ../lib/Tails/IUK/Frontend.pm:236
 msgid "no automatic upgrade is available from our website for this version"
@@ -54,15 +54,15 @@ msgstr "voor deze versie is geen automatische upgrade 
beschikbaar via onze websi
 
 #: ../lib/Tails/IUK/Frontend.pm:242
 msgid "your device was not created using Tails Installer"
-msgstr "Je toestel is niet gecreëerd door middel van de Tails Installer"
+msgstr "uw apparaat is niet door middel van Tails Installer gemaakt"
 
 #: ../lib/Tails/IUK/Frontend.pm:247
 msgid "Tails was started from a DVD or a read-only device"
-msgstr "Tails is gestart vanaf een DVD of een read-only apparaat"
+msgstr "Tails is gestart vanaf een dvd of een alleen-lezenapparaat"
 
 #: ../lib/Tails/IUK/Frontend.pm:252
 msgid "there is not enough free space on the Tails system partition"
-msgstr "Er is onvoldoende vrije ruimte op het Tails systeem partitie"
+msgstr "er is onvoldoende vrije ruimte op de Tails-systeempartitie"
 
 #: ../lib/Tails/IUK/Frontend.pm:257
 msgid "not enough memory is available on this system"
@@ -79,31 +79,31 @@ msgstr "Het systeem is up-to-date"
 
 #: ../lib/Tails/IUK/Frontend.pm:288
 msgid "This version of Tails is outdated, and may have security issues."
-msgstr "Deze versie van Tails is verouderd, en kan beveiligingsproblemen 
bevatten."
+msgstr "Deze versie van Tails is verouderd en kan beveiligingsproblemen 
bevatten."
 
 #: ../lib/Tails/IUK/Frontend.pm:320
 #, perl-brace-format
 msgid ""
 "The available incremental upgrade requires %{space_needed}s of free space on"
 " Tails system partition,  but only %{free_space}s is available."
-msgstr "De beschikbare incrementele upgrade vereist %{space_needed}s vrije 
ruimte op de Tails systeem partitie, maar slechts %{free_space}s is 
beschikbaar."
+msgstr "De beschikbare incrementele upgrade vereist %{space_needed}s vrije 
ruimte op de Tails-systeempartitie, maar er is slechts %{free_space}s 
beschikbaar."
 
 #: ../lib/Tails/IUK/Frontend.pm:336
 #, perl-brace-format
 msgid ""
 "The available incremental upgrade requires %{memory_needed}s of free memory,"
 " but only %{free_memory}s is available."
-msgstr "De beschikbare incrementele upgrade vereist %{memory_needed}s vrije 
ruimte, maar slechts %{free_memory}s is beschikbaar."
+msgstr "De beschikbare incrementele upgrade vereist %{memory_needed}s vrije 
ruimte, maar er is slechts %{free_memory}s beschikbaar."
 
 #: ../lib/Tails/IUK/Frontend.pm:358
 msgid ""
 "An incremental upgrade is available, but no full upgrade is.\n"
 "This should not happen. Please report a bug."
-msgstr "Een incrementele upgrade is beschikbaar, maar geen volledige 
upgrade.\nDit zou niet moeten gebeuren. Rapporteer alstublieft een bug."
+msgstr "Er is een incrementele upgrade beschikbaar, maar geen volledige 
upgrade.\nDit zou niet moeten gebeuren. Meld een bug."
 
 #: ../lib/Tails/IUK/Frontend.pm:362
 msgid "Error while detecting available upgrades"
-msgstr "Fout tijdens het detecteren van beschikbare upgrades"
+msgstr "Fout tijdens detecteren van beschikbare upgrades"
 
 #: ../lib/Tails/IUK/Frontend.pm:372
 #, perl-brace-format
@@ -126,11 +126,11 @@ msgstr "Upgrade beschikbaar"
 
 #: ../lib/Tails/IUK/Frontend.pm:387
 msgid "Upgrade now"
-msgstr "Upgrade nu"
+msgstr "Nu upgraden"
 
 #: ../lib/Tails/IUK/Frontend.pm:388
 msgid "Upgrade later"
-msgstr "Upgrade later"
+msgstr "Later upgraden"
 
 #: ../lib/Tails/IUK/Frontend.pm:396
 #, perl-brace-format
@@ -142,7 +142,7 @@ msgid ""

[tor-commits] [translation/tails-iuk] Update translations for tails-iuk

2019-08-28 Thread translation
commit ce9e7a2f032f89ea482fe7dec679eff822968bc3
Author: Translation commit bot 
Date:   Wed Aug 28 11:18:15 2019 +

Update translations for tails-iuk
---
 nl.po | 92 +--
 1 file changed, 46 insertions(+), 46 deletions(-)

diff --git a/nl.po b/nl.po
index c0beb8a22..a0662847f 100644
--- a/nl.po
+++ b/nl.po
@@ -19,7 +19,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: Tails developers \n"
 "POT-Creation-Date: 2018-12-09 13:56+0100\n"
-"PO-Revision-Date: 2019-05-15 11:21+\n"
+"PO-Revision-Date: 2019-08-28 11:17+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
@@ -33,11 +33,11 @@ msgstr ""
 msgid ""
 "For debugging information, execute the following command: sudo tails-"
 "debugging-info"
-msgstr ""
+msgstr "Voer de volgende opdracht uit voor debug-informatie: sudo 
tails-debugging-info"
 
 #: ../lib/Tails/IUK/Frontend.pm:218
 msgid "Error while checking for upgrades"
-msgstr ""
+msgstr "Fout bij controleren op upgrades"
 
 #: ../lib/Tails/IUK/Frontend.pm:221
 msgid ""
@@ -46,64 +46,64 @@ msgid ""
 "Check your network connection, and restart Tails to try upgrading again.\n"
 "\n"
 "If the problem persists, go to 
file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
-msgstr ""
+msgstr "Het was niet mogelijk om te bepalen of een bijgewerkte versie 
beschikbaar is op onze website.\n\nControleer uw netwerkverbinding en start 
Tails opnieuw op om de upgrade nogmaals te proberen.\n\nAls het probleem 
aanhoudt, ga dan naar 
file:///usr/share/doc/tails/website/doc/upgrade/error/check.nl.html"
 
 #: ../lib/Tails/IUK/Frontend.pm:236
 msgid "no automatic upgrade is available from our website for this version"
-msgstr ""
+msgstr "voor deze versie is geen automatische upgrade beschikbaar via onze 
website"
 
 #: ../lib/Tails/IUK/Frontend.pm:242
 msgid "your device was not created using Tails Installer"
-msgstr ""
+msgstr "Je toestel is niet gecreëerd door middel van de Tails Installer"
 
 #: ../lib/Tails/IUK/Frontend.pm:247
 msgid "Tails was started from a DVD or a read-only device"
-msgstr ""
+msgstr "Tails is gestart vanaf een DVD of een read-only apparaat"
 
 #: ../lib/Tails/IUK/Frontend.pm:252
 msgid "there is not enough free space on the Tails system partition"
-msgstr ""
+msgstr "Er is onvoldoende vrije ruimte op het Tails systeem partitie"
 
 #: ../lib/Tails/IUK/Frontend.pm:257
 msgid "not enough memory is available on this system"
-msgstr ""
+msgstr "onvoldoende geheugen beschikbaar op dit systeem"
 
 #: ../lib/Tails/IUK/Frontend.pm:263
 #, perl-brace-format
 msgid "No explanation available for reason '%{reason}s'."
-msgstr ""
+msgstr "Geen uitleg beschikbaar door '%{reason}s'."
 
 #: ../lib/Tails/IUK/Frontend.pm:283
 msgid "The system is up-to-date"
-msgstr ""
+msgstr "Het systeem is up-to-date"
 
 #: ../lib/Tails/IUK/Frontend.pm:288
 msgid "This version of Tails is outdated, and may have security issues."
-msgstr ""
+msgstr "Deze versie van Tails is verouderd, en kan beveiligingsproblemen 
bevatten."
 
 #: ../lib/Tails/IUK/Frontend.pm:320
 #, perl-brace-format
 msgid ""
 "The available incremental upgrade requires %{space_needed}s of free space on"
 " Tails system partition,  but only %{free_space}s is available."
-msgstr ""
+msgstr "De beschikbare incrementele upgrade vereist %{space_needed}s vrije 
ruimte op de Tails systeem partitie, maar slechts %{free_space}s is 
beschikbaar."
 
 #: ../lib/Tails/IUK/Frontend.pm:336
 #, perl-brace-format
 msgid ""
 "The available incremental upgrade requires %{memory_needed}s of free memory,"
 " but only %{free_memory}s is available."
-msgstr ""
+msgstr "De beschikbare incrementele upgrade vereist %{memory_needed}s vrije 
ruimte, maar slechts %{free_memory}s is beschikbaar."
 
 #: ../lib/Tails/IUK/Frontend.pm:358
 msgid ""
 "An incremental upgrade is available, but no full upgrade is.\n"
 "This should not happen. Please report a bug."
-msgstr ""
+msgstr "Een incrementele upgrade is beschikbaar, maar geen volledige 
upgrade.\nDit zou niet moeten gebeuren. Rapporteer alstublieft een bug."
 
 #: ../lib/Tails/IUK/Frontend.pm:362
 msgid "Error while detecting available upgrades"
-msgstr ""
+msgstr "Fout tijdens het detecteren van beschikbare upgrades"
 
 #: ../lib/Tails/IUK/Frontend.pm:372
 #, perl-brace-format
@@ -118,19 +118,19 @@ msgid ""
 "Download size: %{size}s\n"
 "\n"
 "Do you want to upgrade now?"
-msgstr ""
+msgstr "U zou een upgrade naar %{name}s %{version}s moeten 
uitvoeren.\n\nGa voor meer informatie over deze nieuwe versie naar 
%{details_url}s\n\nWe raden aan alle andere toepassingen te sluiten tijdens de 
upgrade.\nHet downloaden van de upgrade kan lang duren, van enkele minuten tot 
een paar uur.\n\nDownloadgrootte: %{size}s\n\nWilt u nu upgraden?"
 
 #: ../lib/Tails/IUK/Frontend.pm:386
 msgid "Upgrade available"
-msgstr ""
+msgstr "Upgrade beschikbaar"

[tor-commits] [translation/tails-misc] Update translations for tails-misc

2019-08-28 Thread translation
commit a03f359e1cf4c9d4baff71706d5b5c5c4692bab2
Author: Translation commit bot 
Date:   Wed Aug 28 10:50:10 2019 +

Update translations for tails-misc
---
 nl.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nl.po b/nl.po
index 5e9b458cb..06ca325a2 100644
--- a/nl.po
+++ b/nl.po
@@ -34,7 +34,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 07:35+\n"
+"PO-Revision-Date: 2019-08-28 10:20+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-onioncircuits_completed] Update translations for tails-onioncircuits_completed

2019-08-28 Thread translation
commit 730c5704a00460254315245c6bff2d47a879aa89
Author: Translation commit bot 
Date:   Wed Aug 28 10:24:32 2019 +

Update translations for tails-onioncircuits_completed
---
 nl/onioncircuits.pot | 39 ---
 1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/nl/onioncircuits.pot b/nl/onioncircuits.pot
index 123ebed4a..e98bca102 100644
--- a/nl/onioncircuits.pot
+++ b/nl/onioncircuits.pot
@@ -4,14 +4,15 @@
 # 
 # Translators:
 # André Koot , 2016
+# Tonnes , 2019
 # Volluta , 2016
 msgid ""
 msgstr ""
-"Project-Id-Version: The Tor Project\n"
+"Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2017-08-03 13:00+\n"
-"PO-Revision-Date: 2017-09-22 21:53+\n"
-"Last-Translator: Volluta \n"
+"PO-Revision-Date: 2019-08-28 09:35+\n"
+"Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,67 +22,67 @@ msgstr ""
 
 #: ../onioncircuits:81
 msgid "You are not connected to Tor yet..."
-msgstr "U bent nog niet verbonden met Tor..."
+msgstr ""
 
 #: ../onioncircuits:95
 msgid "Onion Circuits"
-msgstr "Onion Circuits"
+msgstr ""
 
 #: ../onioncircuits:125
 msgid "Circuit"
-msgstr "Circuit"
+msgstr ""
 
 #: ../onioncircuits:126
 msgid "Status"
-msgstr "Status"
+msgstr ""
 
 #: ../onioncircuits:142
 msgid "Click on a circuit for more detail about its Tor relays."
-msgstr "Klik op een circuit om meer info te krijgen over Tor relays."
+msgstr ""
 
 #: ../onioncircuits:221
 msgid "The connection to Tor was lost..."
-msgstr "De connectie met Tor is verbroken..."
+msgstr ""
 
 #: ../onioncircuits:317
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../onioncircuits:343
 #, c-format
 msgid "%s: %s"
-msgstr "%s: %s"
+msgstr ""
 
 #: ../onioncircuits:554
 msgid "GeoIP database unavailable. No country information will be displayed."
-msgstr "GeoIP database niet beschikbaar. Geen informatie zal vertoont worden."
+msgstr ""
 
 #: ../onioncircuits:585
 #, c-format
 msgid "%s (%s)"
-msgstr "%s (%s)"
+msgstr ""
 
 #: ../onioncircuits:590
 #, c-format
 msgid "%.2f Mb/s"
-msgstr "%.2f Mb/s"
+msgstr ""
 
 #: ../onioncircuits:592 ../onioncircuits:593 ../onioncircuits:594
 msgid "Unknown"
-msgstr "Onbekend"
+msgstr ""
 
 #: ../onioncircuits:607
 msgid "Fingerprint:"
-msgstr "Vingerafdruk:"
+msgstr ""
 
 #: ../onioncircuits:608
 msgid "Published:"
-msgstr "Gepubliceerd:"
+msgstr ""
 
 #: ../onioncircuits:609
 msgid "IP:"
-msgstr "IP:"
+msgstr ""
 
 #: ../onioncircuits:610
 msgid "Bandwidth:"
-msgstr "Bandbreedte:"
+msgstr ""

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-onioncircuits] Update translations for tails-onioncircuits

2019-08-28 Thread translation
commit f26109fa49dd92825de5fb7053b98acdf9b3eac5
Author: Translation commit bot 
Date:   Wed Aug 28 10:24:26 2019 +

Update translations for tails-onioncircuits
---
 nl/onioncircuits.pot | 39 ---
 1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/nl/onioncircuits.pot b/nl/onioncircuits.pot
index 123ebed4a..e98bca102 100644
--- a/nl/onioncircuits.pot
+++ b/nl/onioncircuits.pot
@@ -4,14 +4,15 @@
 # 
 # Translators:
 # André Koot , 2016
+# Tonnes , 2019
 # Volluta , 2016
 msgid ""
 msgstr ""
-"Project-Id-Version: The Tor Project\n"
+"Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2017-08-03 13:00+\n"
-"PO-Revision-Date: 2017-09-22 21:53+\n"
-"Last-Translator: Volluta \n"
+"PO-Revision-Date: 2019-08-28 09:35+\n"
+"Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -21,67 +22,67 @@ msgstr ""
 
 #: ../onioncircuits:81
 msgid "You are not connected to Tor yet..."
-msgstr "U bent nog niet verbonden met Tor..."
+msgstr ""
 
 #: ../onioncircuits:95
 msgid "Onion Circuits"
-msgstr "Onion Circuits"
+msgstr ""
 
 #: ../onioncircuits:125
 msgid "Circuit"
-msgstr "Circuit"
+msgstr ""
 
 #: ../onioncircuits:126
 msgid "Status"
-msgstr "Status"
+msgstr ""
 
 #: ../onioncircuits:142
 msgid "Click on a circuit for more detail about its Tor relays."
-msgstr "Klik op een circuit om meer info te krijgen over Tor relays."
+msgstr ""
 
 #: ../onioncircuits:221
 msgid "The connection to Tor was lost..."
-msgstr "De connectie met Tor is verbroken..."
+msgstr ""
 
 #: ../onioncircuits:317
 msgid "..."
-msgstr "..."
+msgstr ""
 
 #: ../onioncircuits:343
 #, c-format
 msgid "%s: %s"
-msgstr "%s: %s"
+msgstr ""
 
 #: ../onioncircuits:554
 msgid "GeoIP database unavailable. No country information will be displayed."
-msgstr "GeoIP database niet beschikbaar. Geen informatie zal vertoont worden."
+msgstr ""
 
 #: ../onioncircuits:585
 #, c-format
 msgid "%s (%s)"
-msgstr "%s (%s)"
+msgstr ""
 
 #: ../onioncircuits:590
 #, c-format
 msgid "%.2f Mb/s"
-msgstr "%.2f Mb/s"
+msgstr ""
 
 #: ../onioncircuits:592 ../onioncircuits:593 ../onioncircuits:594
 msgid "Unknown"
-msgstr "Onbekend"
+msgstr ""
 
 #: ../onioncircuits:607
 msgid "Fingerprint:"
-msgstr "Vingerafdruk:"
+msgstr ""
 
 #: ../onioncircuits:608
 msgid "Published:"
-msgstr "Gepubliceerd:"
+msgstr ""
 
 #: ../onioncircuits:609
 msgid "IP:"
-msgstr "IP:"
+msgstr ""
 
 #: ../onioncircuits:610
 msgid "Bandwidth:"
-msgstr "Bandbreedte:"
+msgstr ""

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] Update translations for tails-misc_release

2019-08-28 Thread translation
commit 58b71bcc0082135c34f7504c2025444248a4d84d
Author: Translation commit bot 
Date:   Wed Aug 28 10:21:00 2019 +

Update translations for tails-misc_release
---
 es.po | 128 +-
 nl.po |   2 +-
 2 files changed, 65 insertions(+), 65 deletions(-)

diff --git a/es.po b/es.po
index 3eacfa573..ef881603f 100644
--- a/es.po
+++ b/es.po
@@ -18,8 +18,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-28 09:48+\n"
+"Last-Translator: Emma Peel\n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -109,38 +109,38 @@ msgstr "_Salir"
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:386
 #: config/chroot_local-includes/usr/share/tails-greeter/greeter.ui:1687
 msgid "Direct (default)"
-msgstr ""
+msgstr "Directa (predeterminado)"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:392
 msgid "Bridge & Proxy"
-msgstr ""
+msgstr "Puente y proxy"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:398
 msgid "Offline"
-msgstr ""
+msgstr "Desconectado"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:479
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:529
 #: config/chroot_local-includes/usr/share/tails-greeter/greeter.ui:1080
 msgid "Unlock"
-msgstr ""
+msgstr "Desbloquear"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:482
 msgid "Failed to relock persistent storage."
-msgstr ""
+msgstr "No se pudo volver a bloquear el almacenamiento persistente."
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:500
 msgid "Unlocking…"
-msgstr ""
+msgstr "Desbloqueando..."
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:533
 #: config/chroot_local-includes/usr/share/tails-greeter/greeter.ui:419
 msgid "Cannot unlock encrypted storage with this passphrase."
-msgstr ""
+msgstr "No se puede desbloquear el almacenamiento cifrado con esta 
frase-contraseña."
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:595
 msgid "Additional Settings"
-msgstr ""
+msgstr "Configuración adicional"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:603
 #: config/chroot_local-includes/usr/local/sbin/tails-additional-software:367
@@ -151,32 +151,32 @@ msgstr "Cancelar"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:609
 msgid "Add"
-msgstr ""
+msgstr "Añadir"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:617
 msgid "Back"
-msgstr ""
+msgstr "Volver"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:731
 msgid "Shutdown"
-msgstr ""
+msgstr "Cerrar"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:736
 msgid "_Start Tails"
-msgstr ""
+msgstr "_Iniciar Tails"
 
 #. Translators: please do not translate this string (it is read from
 #. Gtk translation)
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/language.py:139
 msgid "default:LTR"
-msgstr ""
+msgstr "default:LTR"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:91
 #, python-brace-format
 msgid ""
 "live-persist failed with return code {returncode}:\n"
 "{stderr}"
-msgstr ""
+msgstr "live-persist falló con un código de retorno {returncode}:\n{stderr} "
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:124
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:141
@@ -185,7 +185,7 @@ msgid ""
 "cryptsetup failed with return code {returncode}:\n"
 "{stdout}\n"
 "{stderr}"
-msgstr ""
+msgstr "cryptsetup falló con un código de retorno 
{returncode}:\n{stdout}\n{stderr} "
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:158
 #, python-brace-format
@@ -193,7 +193,7 @@ msgid ""
 "live-persist failed with return code {returncode}:\n"
 "{stdout}\n"
 "{stderr}"
-msgstr ""
+msgstr "live-persist falló con código de retorno 
{returncode}:\n{stdout}\n{stderr} "
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:172
 #, python-brace-format
@@ -201,24 +201,24 @@ msgid ""
 "umount failed with return code {returncode}:\n"
 "{stdout}\n"
 "{stderr}"
-msgstr ""
+msgstr "umount falló con un código de retorno 

[tor-commits] [translation/tails-misc_completed] Update translations for tails-misc_completed

2019-08-28 Thread translation
commit b08664f3231cea067f580750c8e0b2bbf2dde2a7
Author: Translation commit bot 
Date:   Wed Aug 28 10:20:05 2019 +

Update translations for tails-misc_completed
---
 es.po | 1145 +
 1 file changed, 1145 insertions(+)

diff --git a/es.po b/es.po
new file mode 100644
index 0..ef881603f
--- /dev/null
+++ b/es.po
@@ -0,0 +1,1145 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+# Cesar Enrique Sanchez Medina , 2014
+# Edward Navarro, 2015
+# el buve, 2015
+# Emma Peel, 2015,2017-2019
+# eulalio barbero espinosa , 2018-2019
+# Jose Luis Tirado , 2014-2015
+# Manuel Herrera , 2013
+# sim, 2018
+# strel, 2013-2018
+# Zuhualime Akoochimoya, 2018
+msgid ""
+msgstr ""
+"Project-Id-Version: Tor Project\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2019-08-14 14:11+0200\n"
+"PO-Revision-Date: 2019-08-28 09:48+\n"
+"Last-Translator: Emma Peel\n"
+"Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: 
config/chroot_local-includes/etc/NetworkManager/dispatcher.d/60-tor-ready.sh:39
+msgid "Tor is ready"
+msgstr "Tor está listo"
+
+#: 
config/chroot_local-includes/etc/NetworkManager/dispatcher.d/60-tor-ready.sh:40
+msgid "You can now access the Internet."
+msgstr "Ya puedes acceder a Internet."
+
+#: config/chroot_local-includes/etc/whisperback/config.py:69
+#, python-format
+msgid ""
+"Help us fix your bug!\n"
+"Read our bug reporting instructions.\n"
+"Do not include more personal information than\n"
+"needed!\n"
+"About giving us an email address\n"
+"\n"
+"Giving us an email address allows us to contact you to clarify the problem. 
This\n"
+"is needed for the vast majority of the reports we receive as most reports\n"
+"without any contact information are useless. On the other hand it also 
provides\n"
+"an opportunity for eavesdroppers, like your email or Internet provider, to\n"
+"confirm that you are using Tails.\n"
+"\n"
+msgstr "¡Ayúdanos a solucionar tu problema!\nLee nuestras instrucciones para informar de 
errores.\n¡No incluyas más información personal que \nla 
imprescindible!\nAcerca de dar tu dirección de correo 
electrónico\n\nDanos una dirección de correo electrónico que nos 
permita contactar contigo para aclarar el problema. Esto es necesario para la 
mayoría de los reportes\nque recibimos, ya que el grueso de los que no 
incluyen información de contacto\nson inútiles. Por otra parte, también 
ofrece una oportunidad a los fisgones, como tu \nproveedor de correo 
electrónico o de Internet, para confirmar que estás usando Tails.\n\n"
+
+#: 
config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:8
+#: 
../config/chroot_local-includes/usr/share/applications/org.boum.tails.additional-software-config.desktop.in.h:1
+msgid "Additional Software"
+msgstr "Software Adicional"
+
+#: 
config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:51
+msgid ""
+"You can install additional software automatically from your persistent "
+"storage when starting Tails."
+msgstr "Puedes instalar automáticamente software adicional desde tu 
almacenamiento persistente cuando inicies Tails."
+
+#: 
config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:77
+msgid ""
+"The following software is installed automatically from your persistent "
+"storage when starting Tails."
+msgstr "El siguientes software se instala automáticamente de tu 
almacenamiento persistente cuando arrancas Tails."
+
+#: 
config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:135
+#: 
config/chroot_local-includes/usr/local/bin/tails-additional-software-config:171
+msgid ""
+"To add more, install some software using Synaptic Package Manager or APT on the command line."
+msgstr "Para añadir más, instala software usando el Gestor de Paquetes Synaptic o con APT en la línea de comandos."
+
+#: 
config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:154
+msgid "_Create persistent storage"
+msgstr "_Crear el almacenamiento persistente"
+
+#: config/chroot_local-includes/usr/local/bin/electrum:57
+msgid "Persistence is disabled for Electrum"
+msgstr "Persistencia desactivada para Electrum"
+
+#: config/chroot_local-includes/usr/local/bin/electrum:59
+msgid ""
+"When you reboot Tails, all of Electrum's data will be lost, including your "
+"Bitcoin wallet. It is strongly recommended to only run Electrum when its "
+"persistence feature is activated."
+msgstr "Cuando reinicies Tails todos los datos de Electrum se perderán, 
incluyendo tu cartera Bitcoin. Te 

[tor-commits] [translation/tails-misc] Update translations for tails-misc

2019-08-28 Thread translation
commit cf3883409655505a69832126bbd195ddeea8bf1a
Author: Translation commit bot 
Date:   Wed Aug 28 10:19:58 2019 +

Update translations for tails-misc
---
 es.po | 128 +-
 1 file changed, 64 insertions(+), 64 deletions(-)

diff --git a/es.po b/es.po
index 3eacfa573..ef881603f 100644
--- a/es.po
+++ b/es.po
@@ -18,8 +18,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-28 09:48+\n"
+"Last-Translator: Emma Peel\n"
 "Language-Team: Spanish 
(http://www.transifex.com/otf/torproject/language/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -109,38 +109,38 @@ msgstr "_Salir"
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:386
 #: config/chroot_local-includes/usr/share/tails-greeter/greeter.ui:1687
 msgid "Direct (default)"
-msgstr ""
+msgstr "Directa (predeterminado)"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:392
 msgid "Bridge & Proxy"
-msgstr ""
+msgstr "Puente y proxy"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:398
 msgid "Offline"
-msgstr ""
+msgstr "Desconectado"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:479
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:529
 #: config/chroot_local-includes/usr/share/tails-greeter/greeter.ui:1080
 msgid "Unlock"
-msgstr ""
+msgstr "Desbloquear"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:482
 msgid "Failed to relock persistent storage."
-msgstr ""
+msgstr "No se pudo volver a bloquear el almacenamiento persistente."
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:500
 msgid "Unlocking…"
-msgstr ""
+msgstr "Desbloqueando..."
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:533
 #: config/chroot_local-includes/usr/share/tails-greeter/greeter.ui:419
 msgid "Cannot unlock encrypted storage with this passphrase."
-msgstr ""
+msgstr "No se puede desbloquear el almacenamiento cifrado con esta 
frase-contraseña."
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:595
 msgid "Additional Settings"
-msgstr ""
+msgstr "Configuración adicional"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:603
 #: config/chroot_local-includes/usr/local/sbin/tails-additional-software:367
@@ -151,32 +151,32 @@ msgstr "Cancelar"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:609
 msgid "Add"
-msgstr ""
+msgstr "Añadir"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:617
 msgid "Back"
-msgstr ""
+msgstr "Volver"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:731
 msgid "Shutdown"
-msgstr ""
+msgstr "Cerrar"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/gui.py:736
 msgid "_Start Tails"
-msgstr ""
+msgstr "_Iniciar Tails"
 
 #. Translators: please do not translate this string (it is read from
 #. Gtk translation)
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/language.py:139
 msgid "default:LTR"
-msgstr ""
+msgstr "default:LTR"
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:91
 #, python-brace-format
 msgid ""
 "live-persist failed with return code {returncode}:\n"
 "{stderr}"
-msgstr ""
+msgstr "live-persist falló con un código de retorno {returncode}:\n{stderr} "
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:124
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:141
@@ -185,7 +185,7 @@ msgid ""
 "cryptsetup failed with return code {returncode}:\n"
 "{stdout}\n"
 "{stderr}"
-msgstr ""
+msgstr "cryptsetup falló con un código de retorno 
{returncode}:\n{stdout}\n{stderr} "
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:158
 #, python-brace-format
@@ -193,7 +193,7 @@ msgid ""
 "live-persist failed with return code {returncode}:\n"
 "{stdout}\n"
 "{stderr}"
-msgstr ""
+msgstr "live-persist falló con código de retorno 
{returncode}:\n{stdout}\n{stderr} "
 
 #: 
config/chroot_local-includes/usr/local/lib/python3/dist-packages/tailsgreeter/persistence.py:172
 #, python-brace-format
@@ -201,24 +201,24 @@ msgid ""
 "umount failed with return code {returncode}:\n"
 "{stdout}\n"
 "{stderr}"
-msgstr ""
+msgstr "umount falló con un código de retorno 

[tor-commits] [translation/snowflakeaddon-messages.json] Update translations for snowflakeaddon-messages.json

2019-08-28 Thread translation
commit 09d4a2b4a7f250df77793a819a82bac3269f55b4
Author: Translation commit bot 
Date:   Wed Aug 28 10:18:40 2019 +

Update translations for snowflakeaddon-messages.json
---
 nl/messages.json | 32 
 1 file changed, 32 insertions(+)

diff --git a/nl/messages.json b/nl/messages.json
new file mode 100644
index 0..3004e35d2
--- /dev/null
+++ b/nl/messages.json
@@ -0,0 +1,32 @@
+{
+  "appDesc": {
+"message": "Snowflake is een WebRTC-pluggable transport voor Tor."
+  },
+  "popupTurnOn": {
+"message": "Inschakelen"
+  },
+  "popupTurnOff": {
+"message": "Uitschakelen"
+  },
+  "popupLearnMore": {
+"message": "Meer info"
+  },
+  "popupStatusOff": {
+"message": "Snowflake staat uit"
+  },
+  "popupStatusOn": {
+"message": "Aantal momenteel verbonden gebruikers: $1"
+  },
+  "popupStatusReady": {
+"message": "Uw Snowflake kan nu gebruikers helpen censuur te omzeilen"
+  },
+  "popupWebRTCOff": {
+"message": "WebRTC-functie is niet gedetecteerd."
+  },
+  "popupDescOn": {
+"message": "Aantal gebruikers dat uw Snowflake de afgelopen 24 uur heeft 
geholpen censuur te omzeilen: $1"
+  },
+  "badgeCookiesOff": {
+"message": "Cookies zijn niet ingeschakeld."
+  }
+}

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/bridgedb] Update translations for bridgedb

2019-08-28 Thread translation
commit 7c4ce71180b5b53f37d2696bfa93df540baf2aee
Author: Translation commit bot 
Date:   Wed Aug 28 10:15:12 2019 +

Update translations for bridgedb
---
 nl/LC_MESSAGES/bridgedb.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/nl/LC_MESSAGES/bridgedb.po b/nl/LC_MESSAGES/bridgedb.po
index 5363ddb72..72f1a3392 100644
--- a/nl/LC_MESSAGES/bridgedb.po
+++ b/nl/LC_MESSAGES/bridgedb.po
@@ -25,7 +25,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB=bridgedb-reported,msgid=isis,sysrqb=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2019-08-06 15:50+\n"
+"PO-Revision-Date: 2019-08-28 09:50+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
@@ -271,7 +271,7 @@ msgstr "Wat zijn bridges?"
 #: bridgedb/strings.py:102
 #, python-format
 msgid "%s Bridges %s are Tor relays that help you circumvent censorship."
-msgstr "%s Bridges %s zijn Tor relays die je helpen censuur te omzeilen."
+msgstr "%s Bridges %s zijn Tor-relays die u helpen censuur te omzeilen."
 
 #: bridgedb/strings.py:107
 msgid "I need an alternative way of getting bridges!"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/bridgedb_completed] Update translations for bridgedb_completed

2019-08-28 Thread translation
commit 9e52b615f6676a4e4d7e244c14dc57537715d77a
Author: Translation commit bot 
Date:   Wed Aug 28 10:15:18 2019 +

Update translations for bridgedb_completed
---
 nl/LC_MESSAGES/bridgedb.po | 126 ++---
 1 file changed, 63 insertions(+), 63 deletions(-)

diff --git a/nl/LC_MESSAGES/bridgedb.po b/nl/LC_MESSAGES/bridgedb.po
index 5363ddb72..159214561 100644
--- a/nl/LC_MESSAGES/bridgedb.po
+++ b/nl/LC_MESSAGES/bridgedb.po
@@ -25,7 +25,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB=bridgedb-reported,msgid=isis,sysrqb=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2019-08-06 15:50+\n"
+"PO-Revision-Date: 2019-08-28 09:50+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
@@ -48,35 +48,35 @@ msgstr ""
 #. "Tor Browser"
 #: bridgedb/https/server.py:167
 msgid "Sorry! Something went wrong with your request."
-msgstr "Sorry! Er is iets misgegaan met uw aanvraag."
+msgstr ""
 
 #: bridgedb/https/templates/base.html:79
 msgid "Report a Bug"
-msgstr "Een bug melden"
+msgstr ""
 
 #: bridgedb/https/templates/base.html:82
 msgid "Source Code"
-msgstr "Broncode"
+msgstr ""
 
 #: bridgedb/https/templates/base.html:85
 msgid "Changelog"
-msgstr "Wijzigingslogboek"
+msgstr ""
 
 #: bridgedb/https/templates/base.html:88
 msgid "Contact"
-msgstr "Contact"
+msgstr ""
 
 #: bridgedb/https/templates/bridges.html:35
 msgid "Select All"
-msgstr "Alles selecteren"
+msgstr ""
 
 #: bridgedb/https/templates/bridges.html:40
 msgid "Show QRCode"
-msgstr "QRCode tonen"
+msgstr ""
 
 #: bridgedb/https/templates/bridges.html:52
 msgid "QRCode for your bridge lines"
-msgstr "QRCode voor uw bridge regels"
+msgstr ""
 
 #. TRANSLATORS: Please translate this into some silly way to say
 #. "There was a problem!" in your language. For example,
@@ -85,58 +85,58 @@ msgstr "QRCode voor uw bridge regels"
 #: bridgedb/https/templates/bridges.html:67
 #: bridgedb/https/templates/bridges.html:125
 msgid "Uh oh, spaghettios!"
-msgstr "Helaas pindakaas!"
+msgstr ""
 
 #: bridgedb/https/templates/bridges.html:68
 msgid "It seems there was an error getting your QRCode."
-msgstr "Er was een fout tijdens het ophalen van uw QRCode"
+msgstr ""
 
 #: bridgedb/https/templates/bridges.html:73
 msgid ""
 "This QRCode contains your bridge lines. Scan it with a QRCode reader to copy"
 " your bridge lines onto mobile and other devices."
-msgstr "Deze QRCode bevat uw bridge regels. Scan het met een QRCode lezer om 
uw bridge regels te kopiëren naar mobiele of andere apparaten."
+msgstr ""
 
 #: bridgedb/https/templates/bridges.html:131
 msgid "There currently aren't any bridges available..."
-msgstr "Er zijn momenteel geen bridges beschikbaar..."
+msgstr ""
 
 #: bridgedb/https/templates/bridges.html:132
 #, python-format
 msgid ""
 " Perhaps you should try %s going back %s and choosing a different bridge "
 "type!"
-msgstr "Misschien moet je proberen %s terug te gaan %s en een ander bridge 
type te selecteren!"
+msgstr ""
 
 #: bridgedb/https/templates/index.html:11
 #, python-format
 msgid "Step %s1%s"
-msgstr "Stap %s1%s"
+msgstr ""
 
 #: bridgedb/https/templates/index.html:13
 #, python-format
 msgid "Download %s Tor Browser %s"
-msgstr "Download %s Tor Browser %s"
+msgstr ""
 
 #: bridgedb/https/templates/index.html:25
 #, python-format
 msgid "Step %s2%s"
-msgstr "Stap %s2%s"
+msgstr ""
 
 #: bridgedb/https/templates/index.html:27
 #, python-format
 msgid "Get %s bridges %s"
-msgstr "Download %s bridges %s"
+msgstr ""
 
 #: bridgedb/https/templates/index.html:36
 #, python-format
 msgid "Step %s3%s"
-msgstr "Stap %s3%s"
+msgstr ""
 
 #: bridgedb/https/templates/index.html:38
 #, python-format
 msgid "Now %s add the bridges to Tor Browser %s"
-msgstr "Nu %s voeg de bridges toe aan Tor Browser %s"
+msgstr ""
 
 #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the
 #. beginning of words are present in your final translation. Thanks!
@@ -145,19 +145,19 @@ msgstr "Nu %s voeg de bridges toe aan Tor Browser %s"
 #: bridgedb/https/templates/options.html:38
 #, python-format
 msgid "%sJ%sust give me bridges!"
-msgstr "%sG%seef me gewoon bridges!"
+msgstr ""
 
 #: bridgedb/https/templates/options.html:51
 msgid "Advanced Options"
-msgstr "Geavanceerde opties"
+msgstr ""
 
 #: bridgedb/https/templates/options.html:86
 msgid "No"
-msgstr "Nee"
+msgstr ""
 
 #: bridgedb/https/templates/options.html:87
 msgid "none"
-msgstr "geen"
+msgstr ""
 
 #. TRANSLATORS: Please make sure the '%s' surrounding single letters at the
 #. beginning of words are present in your final translation. Thanks!
@@ -165,7 +165,7 @@ msgstr "geen"
 #: bridgedb/https/templates/options.html:124
 #, python-format
 msgid "%sY%ses!"
-msgstr "%sJ%sa!"
+msgstr ""
 
 #. TRANSLATORS: Please make sure the '%s' 

[tor-commits] [translation/bridgedb] Update translations for bridgedb

2019-08-28 Thread translation
commit 075a30d9b08a77bc4140f2072428fea2ebfa0485
Author: Translation commit bot 
Date:   Wed Aug 28 09:45:14 2019 +

Update translations for bridgedb
---
 ur/LC_MESSAGES/bridgedb.po | 8 +---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/ur/LC_MESSAGES/bridgedb.po b/ur/LC_MESSAGES/bridgedb.po
index 359014d5c..c82296dd3 100644
--- a/ur/LC_MESSAGES/bridgedb.po
+++ b/ur/LC_MESSAGES/bridgedb.po
@@ -3,14 +3,16 @@
 # This file is distributed under the same license as the BridgeDB project.
 # 
 # Translators:
+# Translators:
+# Ali Kamran , 2019
 # Muhammad Sohaib Raza , 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: 
'https://trac.torproject.org/projects/tor/newticket?component=BridgeDB=bridgedb-reported,msgid=isis,sysrqb=isis'\n"
 "POT-Creation-Date: 2015-07-25 03:40+\n"
-"PO-Revision-Date: 2018-11-15 16:35+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-28 09:29+\n"
+"Last-Translator: Ali Kamran \n"
 "Language-Team: Urdu (http://www.transifex.com/otf/torproject/language/ur/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -56,7 +58,7 @@ msgstr "تمام منتخب کریں."
 
 #: bridgedb/https/templates/bridges.html:40
 msgid "Show QRCode"
-msgstr "کیو آر کوڈ ظاہر کریں۔"
+msgstr "QR کوڈ ظاہر کریں۔"
 
 #: bridgedb/https/templates/bridges.html:52
 msgid "QRCode for your bridge lines"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tbmanual-contentspot] Update translations for tbmanual-contentspot

2019-08-28 Thread translation
commit 7e71eeb1aede77ab01d607807347e4e55176e65e
Author: Translation commit bot 
Date:   Wed Aug 28 09:26:15 2019 +

Update translations for tbmanual-contentspot
---
 contents+zh-TW.po | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/contents+zh-TW.po b/contents+zh-TW.po
index cb48fbb18..ec59b8978 100644
--- a/contents+zh-TW.po
+++ b/contents+zh-TW.po
@@ -2,6 +2,7 @@
 # 孟邦 王, 2019
 # erinm, 2019
 # Hsiu-Ming Chang , 2019
+# Emma Peel, 2019
 # 
 msgid ""
 msgstr ""
@@ -9,7 +10,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-27 14:16+CET\n"
 "PO-Revision-Date: 2018-11-14 12:31+\n"
-"Last-Translator: Hsiu-Ming Chang , 2019\n"
+"Last-Translator: Emma Peel, 2019\n"
 "Language-Team: Chinese (Taiwan) 
(https://www.transifex.com/otf/teams/1519/zh_TW/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -69,7 +70,7 @@ msgstr "首次執行洋蔥路由瀏覽器"
 #: https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)
 msgid "Pluggable transports"
-msgstr ""
+msgstr "可插式傳輸"
 
 #: https//tb-manual.torproject.org/menu/
 #: (content/menu/contents+en.lrtopic.body)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] Update translations for tails-misc_release

2019-08-28 Thread translation
commit ed5363ed745857c8f8c8d0dcf39966efcbd6c8e6
Author: Translation commit bot 
Date:   Wed Aug 28 09:21:20 2019 +

Update translations for tails-misc_release
---
 is.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/is.po b/is.po
index 823907797..9d2cd9f34 100644
--- a/is.po
+++ b/is.po
@@ -9,8 +9,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-28 09:07+\n"
+"Last-Translator: Sveinn í Felli \n"
 "Language-Team: Icelandic 
(http://www.transifex.com/otf/torproject/language/is/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] Update translations for tails-misc

2019-08-28 Thread translation
commit 3c49a90095a1581efbfc55d62edd168395f27d7e
Author: Translation commit bot 
Date:   Wed Aug 28 09:20:17 2019 +

Update translations for tails-misc
---
 is.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/is.po b/is.po
index 823907797..9d2cd9f34 100644
--- a/is.po
+++ b/is.po
@@ -9,8 +9,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-28 09:07+\n"
+"Last-Translator: Sveinn í Felli \n"
 "Language-Team: Icelandic 
(http://www.transifex.com/otf/torproject/language/is/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] Update translations for snowflakeaddon-messages.json

2019-08-28 Thread translation
commit e4073c67cb380ce0d8ecbcc9f04a1dceb572579a
Author: Translation commit bot 
Date:   Wed Aug 28 09:18:57 2019 +

Update translations for snowflakeaddon-messages.json
---
 is/messages.json | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/is/messages.json b/is/messages.json
index a3e527401..a8025bfe1 100644
--- a/is/messages.json
+++ b/is/messages.json
@@ -1,6 +1,6 @@
 {
   "appDesc": {
-"message": "Snowflake is a WebRTC pluggable transport for Tor."
+"message": "Snowflake er WebRTC-tengileið fyrir Tor."
   },
   "popupTurnOn": {
 "message": "Kveikja"
@@ -15,18 +15,18 @@
 "message": "Slökkt er á Snowflake"
   },
   "popupStatusOn": {
-"message": "Number of users currently connected: $1"
+"message": "Fjöldi notenda sem núna eru tengdir: $1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship"
+"message": "Snowflake-tilvikið þitt er reiðubúið að hjálpa notendum 
við að komast framhjá ritskoðun"
   },
   "popupWebRTCOff": {
 "message": "WebRTC-eiginleikinn fannst ekki."
   },
   "popupDescOn": {
-"message": "Number of users your Snowflake has helped circumvent 
censorship in the last 24 hours: $1"
+"message": "Fjöldi notenda sem Snowflake-tilvikið þitt hefur hjálpað 
við að komast framhjá ritskoðun á síðustu 24 klukkustundum: $1"
   },
   "badgeCookiesOff": {
-"message": "Cookies are not enabled."
+"message": "Vefkökur eru ekki virkar."
   }
 }

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflake-website-indexhtml] Update translations for snowflake-website-indexhtml

2019-08-28 Thread translation
commit 7b7014c71fab226a17ff2f541e80747d2af82ef1
Author: Translation commit bot 
Date:   Wed Aug 28 09:19:08 2019 +

Update translations for snowflake-website-indexhtml
---
 is/index.html | 86 +++
 1 file changed, 86 insertions(+)

diff --git a/is/index.html b/is/index.html
new file mode 100644
index 0..93f4ec4fe
--- /dev/null
+++ b/is/index.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+Snowflake
+
+
+
+https://www.torproject.org/;>
+
+
+  SNOWFLAKE
+
+  
+
+  Snowflake is a system to defeat internet censorship. People who are
+  censored can use Snowflake to access the internet. Their connection goes
+  through Snowflake proxies, which are run by volunteers. For more detailed
+  information about how Snowflake works see our
+  https://trac.torproject.org/projects/tor/wiki/doc/Snowflake/;>documentation
 wiki.
+
+  
+
+
+  Vafri
+
+  If your internet access is censored, you should download
+  https://www.torproject.org/download/;>Tor Browser.
+
+  
+
+
+
+  Forritsviðauki
+
+  If your internet access is not censored, you 
should
+  consider installing the Snowflake extension to help users in censored
+  networks. There is no need to worry about which websites people are
+  accessing through your proxy. Their visible browsing IP address will
+  match their Tor exit node, not yours.
+
+  https://addons.mozilla.org/en-US/firefox/addon/torproject-snowflake/;>
+  Setja upp í Firefox
+
+https://chrome.google.com/webstore/detail/snowflake/mafpmfcccpbjnhfhjnllmmalhifmlcie;>
+  Setja upp í Chrome
+
+
+
+
+  
+
+  AÐ TILKYNNA VILLUR
+  
+  If you encounter problems with Snowflake as a client or a proxy,
+  please consider filing a bug.  To do so, you will have to,
+  
+  
+Either https://trac.torproject.org/projects/tor/register;>create 
an
+account or https://trac.torproject.org/projects/tor/login;>log in
+using the shared cypherpunks account with password 
writecode.
+
+https://trac.torproject.org/projects/tor/newticket?component=Circumvention%2FSnowflake;>File
 a ticket
+using our bug tracker.
+  
+Please try to be as descriptive as possible with your ticket and if
+  possible include log messages that will help us reproduce the bug.
+  Consider adding keywords snowflake-webextension or 
snowflake-client
+  to let us know how which part of the Snowflake system is experiencing
+  problems.
+
+  ÍVEFJA
+
+  It is now possible to embed the Snowflake badge on any website:
+
+  iframe 
src="https://snowflake.torproject.org/embed.html; width="320px" height="200px" 
frameborder="0" scrolling="no"/iframeSem lítur þá 
svona út:
+
+  
+
+
+  
+
+
+

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json_completed] Update translations for snowflakeaddon-messages.json_completed

2019-08-28 Thread translation
commit 9515f428052579cc3c22ddb75f1fb64225247238
Author: Translation commit bot 
Date:   Wed Aug 28 08:48:37 2019 +

Update translations for snowflakeaddon-messages.json_completed
---
 zh_CN/messages.json | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/zh_CN/messages.json b/zh_CN/messages.json
index 9a4962463..11f879275 100644
--- a/zh_CN/messages.json
+++ b/zh_CN/messages.json
@@ -15,12 +15,18 @@
 "message": "Snowflake 已关闭"
   },
   "popupStatusOn": {
-"message": "$1客户端已连接。"
+"message": "Number of users currently connected: $1"
+  },
+  "popupStatusReady": {
+"message": "Your Snowflake is ready to help users circumvent censorship"
   },
   "popupWebRTCOff": {
 "message": "未检测到 WebRTC 功能。"
   },
   "popupDescOn": {
-"message": "您的 Snowflake 
在过去的24小时中帮助了个$1个用户规避审查。"
+"message": "Number of users your Snowflake has helped circumvent 
censorship in the last 24 hours: $1"
+  },
+  "badgeCookiesOff": {
+"message": "Cookies are not enabled."
   }
 }

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] Update translations for snowflakeaddon-messages.json

2019-08-28 Thread translation
commit 2a90f5f8e15f1a1e6927a746700a403bcd43e594
Author: Translation commit bot 
Date:   Wed Aug 28 08:48:32 2019 +

Update translations for snowflakeaddon-messages.json
---
 zh_CN/messages.json | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/zh_CN/messages.json b/zh_CN/messages.json
index 11f879275..80ede3597 100644
--- a/zh_CN/messages.json
+++ b/zh_CN/messages.json
@@ -15,18 +15,18 @@
 "message": "Snowflake 已关闭"
   },
   "popupStatusOn": {
-"message": "Number of users currently connected: $1"
+"message": "当前连接的用户数量:$1"
   },
   "popupStatusReady": {
-"message": "Your Snowflake is ready to help users circumvent censorship"
+"message": "您的Snowflake已经准备好帮助用户规避审查"
   },
   "popupWebRTCOff": {
 "message": "未检测到 WebRTC 功能。"
   },
   "popupDescOn": {
-"message": "Number of users your Snowflake has helped circumvent 
censorship in the last 24 hours: $1"
+"message": "您的 Snowflake 
在过去的24小时中帮助了个$1个用户规避审查。"
   },
   "badgeCookiesOff": {
-"message": "Cookies are not enabled."
+"message": "Cookie 未启用。"
   }
 }

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser/tor-browser-60.8.0esr-8.5-1] Bug 30575: Don't allow enterprise policies in Tor Browser

2019-08-28 Thread gk
commit 85e9a040aea41cf3c926394da1bcf22a298bf081
Author: Georg Koppen 
Date:   Fri Jun 7 11:49:06 2019 +

Bug 30575: Don't allow enterprise policies in Tor Browser
---
 .../enterprisepolicies/EnterprisePolicies.js   | 18 --
 1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/browser/components/enterprisepolicies/EnterprisePolicies.js 
b/browser/components/enterprisepolicies/EnterprisePolicies.js
index 20cc33628f2a..4bab7d000ab0 100644
--- a/browser/components/enterprisepolicies/EnterprisePolicies.js
+++ b/browser/components/enterprisepolicies/EnterprisePolicies.js
@@ -78,20 +78,10 @@ EnterprisePoliciesManager.prototype = {
   _xpcom_factory: EnterprisePoliciesFactory,
 
   _initialize() {
-let provider = this._chooseProvider();
-
-if (!provider) {
-  this.status = Ci.nsIEnterprisePolicies.INACTIVE;
-  return;
-}
-
-if (provider.failed) {
-  this.status = Ci.nsIEnterprisePolicies.FAILED;
-  return;
-}
-
-this.status = Ci.nsIEnterprisePolicies.ACTIVE;
-this._activatePolicies(provider.policies);
+// We don't want to have any enterprise policies in Tor Browser enabled as
+// those can affect proxy settings etc. See: e.g. #30575.
+this.status = Ci.nsIEnterprisePolicies.INACTIVE;
+return;
   },
 
   _chooseProvider() {

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser-build/maint-8.5] FIXUP: recreated 27503.patch against widl sources without dev debug logging

2019-08-28 Thread gk
commit 08145374a2249acd6aa90dd7705f632e8774c9d0
Author: Richard Pospesel 
Date:   Fri Jul 5 13:45:51 2019 -0700

FIXUP: recreated 27503.patch against widl sources without dev debug logging
---
 projects/mingw-w64/27503.patch | 258 ++---
 1 file changed, 90 insertions(+), 168 deletions(-)

diff --git a/projects/mingw-w64/27503.patch b/projects/mingw-w64/27503.patch
index f6bd197..ca542d0 100644
--- a/projects/mingw-w64/27503.patch
+++ b/projects/mingw-w64/27503.patch
@@ -1161,7 +1161,7 @@ index 0d44b403..0e62f77c 100644
  return 1;
  return 0;
 diff --git a/mingw-w64-tools/widl/src/parser.tab.c 
b/mingw-w64-tools/widl/src/parser.tab.c
-index 6266e054..d7053e79 100644
+index 6266e054..8cd1605a 100644
 --- a/mingw-w64-tools/widl/src/parser.tab.c
 +++ b/mingw-w64-tools/widl/src/parser.tab.c
 @@ -1,8 +1,8 @@
@@ -4829,7 +4829,7 @@ index 6266e054..d7053e79 100644
 int top)
  {
var_t *v = decl->var;
-@@ -5638,58 +5685,80 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
+@@ -5638,58 +5685,74 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
expr_t *dim;
type_t **ptype;
type_t *func_type = decl ? decl->func_type : NULL;
@@ -4912,12 +4912,6 @@ index 6266e054..d7053e79 100644
 -  if (!ptr_attr && top && (*pt)->details.pointer.def_fc != FC_RP)
 +  if (!ptr_attr && top && type_pointer_get_default_fc(*pt) != FC_RP)
{
-+  printf("dup_pointer_type!\n");
-+  printf("type : %p name : %s\n", *pt, (*pt)->name);
-+  /* ptr_attr is ref,unique or full (FC_RP, FC_UP, FC_FP) */
-+  /* *pt could be the var's declspec's type OR a type on a 
typedef */
-+  /* not an array */
-+
  /* FIXME: this is a horrible hack to cope with the issue that we
   * store an offset to the typeformat string in the type object, but
   * two typeformat strings may be written depending on whether the
@@ -4927,7 +4921,7 @@ index 6266e054..d7053e79 100644
}
  }
  else if (ptr_attr)
-@@ -5700,16 +5769,16 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
+@@ -5700,16 +5763,16 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
{
  type_t *t = type;
  
@@ -4947,7 +4941,7 @@ index 6266e054..d7053e79 100644
  else
  break;
  }
-@@ -5726,15 +5795,15 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
+@@ -5726,15 +5789,15 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
  
if (is_attr(v->attrs, ATTR_V1ENUM))
{
@@ -4966,7 +4960,7 @@ index 6266e054..d7053e79 100644
if (sizes) LIST_FOR_EACH_ENTRY(dim, sizes, expr_t, entry)
{
  if (dim->type != EXPR_VOID)
-@@ -5747,7 +5816,7 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
+@@ -5747,7 +5810,7 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
  else
*ptype = type_new_array((*ptype)->name,
type_array_get_element(*ptype), FALSE,
@@ -4975,7 +4969,7 @@ index 6266e054..d7053e79 100644
}
else if (is_ptr(*ptype))
  *ptype = type_new_array((*ptype)->name, type_pointer_get_ref(*ptype), 
TRUE,
-@@ -5756,15 +5825,16 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
+@@ -5756,15 +5819,16 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
  error_loc("%s: size_is attribute applied to illegal type\n", v->name);
  }
  
@@ -4995,7 +4989,7 @@ index 6266e054..d7053e79 100644
if (lengs) LIST_FOR_EACH_ENTRY(dim, lengs, expr_t, entry)
{
  if (dim->type != EXPR_VOID)
-@@ -5782,10 +5852,11 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
+@@ -5782,10 +5846,11 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
  error_loc("%s: length_is attribute applied to illegal type\n", 
v->name);
  }
  
@@ -5009,7 +5003,7 @@ index 6266e054..d7053e79 100644
  else
error_loc("%s: too many expressions in length_is attribute\n", v->name);
}
-@@ -5796,29 +5867,31 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
+@@ -5796,29 +5861,31 @@ static var_t *declare_var(attr_list_t *attrs, 
decl_spec_t *decl_spec, const decl
if (func_type)
{
  type_t *ft, *t;
@@ -5050,7 +5044,7 @@ index 6266e054..d7053e79 100644
return v;
  }
  
-@@ -5866,6 +5939,10 @@ var_list_t *append_var(var_list_t *list, var_t *var)
+@@ -5866,6 +5933,10 @@ var_list_t *append_var(var_list_t *list, var_t *var)
  list_init( list );
  }
  list_add_tail( list, >entry );
@@ -5061,7 +5055,7 @@ index 6266e054..d7053e79 100644
  return 

[tor-commits] [tor-browser-build/master] Merge remote-tracking branch 'pc/bug29430-02'

2019-08-28 Thread gk
commit 0a7bef243d182fb3df3d9f6ebfd74ce632ad95d1
Merge: 89e6eed f022ea6
Author: Georg Koppen 
Date:   Wed Aug 28 07:10:41 2019 +

Merge remote-tracking branch 'pc/bug29430-02'

 projects/goutls/config |  2 ++
 projects/goutls/sessionid.patch| 25 +
 projects/meek/build| 42 --
 projects/meek/config   | 17 -
 projects/obfs4/build   |  6 ++--
 projects/obfs4/config  |  2 +-
 .../Docs/Licenses/PluggableTransports/LICENSE  |  9 -
 .../Bundle-Data/PTConfigs/bridge_prefs.js  |  2 +-
 .../PTConfigs/linux/torrc-defaults-appendix|  5 +--
 .../mac/TorBrowser.app.meek-http-helper/README | 13 ---
 .../PTConfigs/mac/torrc-defaults-appendix  |  5 +--
 .../Bundle-Data/PTConfigs/meek-http-helper-user.js | 38 
 .../PTConfigs/windows/torrc-defaults-appendix  |  5 +--
 projects/tor-browser/build | 23 
 projects/tor-browser/config|  3 --
 15 files changed, 35 insertions(+), 162 deletions(-)

diff --cc projects/tor-browser/Bundle-Data/PTConfigs/bridge_prefs.js
index 3405a53,566de2e..de9f98b
--- a/projects/tor-browser/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/projects/tor-browser/Bundle-Data/PTConfigs/bridge_prefs.js
@@@ -3,16 -3,17 +3,16 @@@ pref("extensions.torlauncher.default_br
  
  // Default bridges.
  pref("extensions.torlauncher.default_bridge.obfs4.1", "obfs4 
192.95.36.142:443 CDF2E852BF539B82BD10E27E9115A31734E378C2 
cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ 
iat-mode=1");
 -pref("extensions.torlauncher.default_bridge.obfs4.2", "obfs4 85.17.30.79:443 
FC259A04A328A07FED1413E9FC6526530D9FD87A 
cert=RutxZlu8BtyP+y0NX7bAVD41+J/qXNhHUrKjFkRSdiBAhIHIQLhKQ2HxESAKZprn/lR3KA 
iat-mode=0");
 -pref("extensions.torlauncher.default_bridge.obfs4.3", "obfs4 38.229.1.78:80 
C8CBDB2464FC9804A69531437BCF2BE31FDD2EE4 
cert=Hmyfd2ev46gGY7NoVxA9ngrPF2zCZtzskRTzoWXbxNkzeVnGFPWmrTtILRyqCTjHR+s9dg 
iat-mode=1");
 -/**/pref/**/(/**/"extensions.torlauncher.default_bridge.obfs4.4"/**/, 
/**/"obfs4 38.229.33.83:80 0BAC39417268B96B9F514E7F63FA6FBA1A788955 
cert=VwEFpk9F/UN9JED7XpG1XOjm/O8ZCXK80oPecgWnNDZDv5pdkhq1OpbAH0wNqOT6H6BmRQ 
iat-mode=1");
 -pref("extensions.torlauncher.default_bridge.obfs4.5", "obfs4 
[2001:470:b381:bfff:216:3eff:fe23:d6c3]:443 
CDF2E852BF539B82BD10E27E9115A31734E378C2 
cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ 
iat-mode=1");
 -pref("extensions.torlauncher.default_bridge.obfs4.6", "obfs4 
37.218.240.34:40035 88CD36D45A35271963EF82E511C8827A24730913 
cert=eGXYfWODcgqIdPJ+rRupg4GGvVGfh25FWaIXZkit206OSngsp7GAIiGIXOJJROMxEqFKJg 
iat-mode=1");
 -pref("extensions.torlauncher.default_bridge.obfs4.7", "obfs4 
37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D 
cert=bjRaMrr1BRiAW8IE9U5z27fQaYgOhX1UCmOpg2pFpoMvo6ZgQMzLsaTzzQNTlm7hNcb+Sg 
iat-mode=0");
 -pref("extensions.torlauncher.default_bridge.obfs4.8", "obfs4 85.31.186.98:443 
011F2599C0E9B27EE74B353155E244813763C3E5 
cert=ayq0XzCwhpdysn5o0EyDUbmSOx3X/oTEbzDMvczHOdBJKlvIdHHLJGkZARtT4dcBFArPPg 
iat-mode=0");
 -pref("extensions.torlauncher.default_bridge.obfs4.9", "obfs4 85.31.186.26:443 
91A6354697E6B02A386312F68D82CF86824D3606 
cert=PBwr+S8JTVZo6MPdHnkTwXJPILWADLqfMGoVvhZClMq/Urndyd42BwX9YFJHZnBB3H0XCw 
iat-mode=0");
 -pref("extensions.torlauncher.default_bridge.obfs4.10", "obfs4 
216.252.162.21:46089 0DB8799466902192B6C7576D58D4F7F714EC87C1 
cert=XPUwcQPxEXExHfJYX58gZXN7mYpos7VNAHbkgERNFg+FCVNzuYo1Wp+uMscl3aR9hO2DRQ 
iat-mode=0");
 -pref("extensions.torlauncher.default_bridge.obfs4.11", "obfs4 
144.217.20.138:80 FB70B257C162BF1038CA669D568D76F5B7F0BABB 
cert=vYIV5MgrghGQvZPIi1tJwnzorMgqgmlKaB77Y3Z9Q/v94wZBOAXkW+fdx4aSxLVnKO+xNw 
iat-mode=0");
 +pref("extensions.torlauncher.default_bridge.obfs4.2", "obfs4 38.229.1.78:80 
C8CBDB2464FC9804A69531437BCF2BE31FDD2EE4 
cert=Hmyfd2ev46gGY7NoVxA9ngrPF2zCZtzskRTzoWXbxNkzeVnGFPWmrTtILRyqCTjHR+s9dg 
iat-mode=1");
 +/**/pref/**/(/**/"extensions.torlauncher.default_bridge.obfs4.3"/**/, 
/**/"obfs4 38.229.33.83:80 0BAC39417268B96B9F514E7F63FA6FBA1A788955 
cert=VwEFpk9F/UN9JED7XpG1XOjm/O8ZCXK80oPecgWnNDZDv5pdkhq1OpbAH0wNqOT6H6BmRQ 
iat-mode=1");
 +pref("extensions.torlauncher.default_bridge.obfs4.4", "obfs4 
[2001:470:b381:bfff:216:3eff:fe23:d6c3]:443 
CDF2E852BF539B82BD10E27E9115A31734E378C2 
cert=qUVQ0srL1JI/vO6V6m/24anYXiJD3QP2HgzUKQtQ7GRqqUvs7P+tG43RtAqdhLOALP7DJQ 
iat-mode=1");
 +pref("extensions.torlauncher.default_bridge.obfs4.5", "obfs4 
37.218.240.34:40035 88CD36D45A35271963EF82E511C8827A24730913 
cert=eGXYfWODcgqIdPJ+rRupg4GGvVGfh25FWaIXZkit206OSngsp7GAIiGIXOJJROMxEqFKJg 
iat-mode=1");
 +pref("extensions.torlauncher.default_bridge.obfs4.6", "obfs4 
37.218.245.14:38224 D9A82D2F9C2F65A18407B1D2B764F130847F8B5D 

[tor-commits] [tor-browser-build/master] Bug 29430: Use obfs4proxy's meek_lite with utls instead of meek.

2019-08-28 Thread gk
commit f022ea694df867a6bd06c44cb50c78d674bea9ed
Author: Kathy Brade 
Date:   Fri Aug 23 09:50:26 2019 -0400

Bug 29430: Use obfs4proxy's meek_lite with utls instead of meek.
---
 projects/goutls/config |  2 ++
 projects/goutls/sessionid.patch| 25 +
 projects/meek/build| 42 --
 projects/meek/config   | 17 -
 projects/obfs4/build   |  6 ++--
 projects/obfs4/config  |  2 +-
 .../Docs/Licenses/PluggableTransports/LICENSE  |  9 -
 .../Bundle-Data/PTConfigs/bridge_prefs.js  |  2 +-
 .../PTConfigs/linux/torrc-defaults-appendix|  5 +--
 .../mac/TorBrowser.app.meek-http-helper/README | 13 ---
 .../PTConfigs/mac/torrc-defaults-appendix  |  5 +--
 .../Bundle-Data/PTConfigs/meek-http-helper-user.js | 38 
 .../PTConfigs/windows/torrc-defaults-appendix  |  5 +--
 projects/tor-browser/build | 23 
 projects/tor-browser/config|  3 --
 15 files changed, 35 insertions(+), 162 deletions(-)

diff --git a/projects/goutls/config b/projects/goutls/config
index 0a1e416..d738305 100644
--- a/projects/goutls/config
+++ b/projects/goutls/config
@@ -27,3 +27,5 @@ input_files:
 project: gocompress
   - name: gobsaes
 project: gobsaes
+  - filename: sessionid.patch
+enable: '[% c("var/nightly") || c("var/alpha") %]'
diff --git a/projects/goutls/sessionid.patch b/projects/goutls/sessionid.patch
new file mode 100644
index 000..fd3636d
--- /dev/null
+++ b/projects/goutls/sessionid.patch
@@ -0,0 +1,25 @@
+From 4da67951864128358459681399dd208c49d5d001 Mon Sep 17 00:00:00 2001
+From: Rod Hynes 
+Date: Mon, 12 Aug 2019 17:06:06 -0400
+Subject: [PATCH] Fix all-zeroes SessionID (#31)
+
+---
+ u_conn.go | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/u_conn.go b/u_conn.go
+index 9079460..2706373 100644
+--- a/u_conn.go
 b/u_conn.go
+@@ -121,7 +121,7 @@ func (uconn *UConn) SetSessionState(session 
*ClientSessionState) error {
+   }
+   }
+   var sessionID [32]byte
+-  _, err := io.ReadFull(uconn.config.rand(), 
uconn.HandshakeState.Hello.SessionId)
++  _, err := io.ReadFull(uconn.config.rand(), sessionID[:])
+   if err != nil {
+   return err
+   }
+-- 
+2.22.0
+
diff --git a/projects/meek/build b/projects/meek/build
deleted file mode 100644
index 57185b3..000
--- a/projects/meek/build
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-[% c("var/set_default_env") -%]
-[% pc('go', 'var/setup', { go_tarfile => c('input_files_by_name/go') }) %]
-distdir=/var/tmp/dist/[% project %]
-[% c("var/set_PTDIR_DOCSDIR") -%]
-mkdir -p $PTDIR $DOCSDIR
-
-tar -C /var/tmp/dist -xf [% c('input_files_by_name/goptlib') %]
-
-mkdir -p /var/tmp/build
-tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
-cd /var/tmp/build/[% project %]-[% c('version') %]
-
-cd meek-client
-go build -ldflags '-s'
-cp -a meek-client[% IF c("var/windows") %].exe[% END %] $PTDIR
-
-cd ../meek-client-torbrowser
-go build -ldflags '-s'
-cp -a meek-client-torbrowser[% IF c("var/windows") %].exe[% END %] $PTDIR
-
-
-[% IF c("var/windows") %]
-  cd ../terminateprocess-buffer
-  go build -ldflags '-s'
-  cp -a terminateprocess-buffer.exe $PTDIR
-[% END %]
-
-cd ..
-cp -a README doc/*.1[% IF c("var/windows") %].txt[% END %] $DOCSDIR
-
-cd firefox
-[% c('zip', {
- zip_src => [ '.' ],
- zip_args => '$distdir/meek-http-hel...@bamsoftware.com.xpi',
-   }) %]
-
-cd $distdir
-[% c('tar', {
-tar_src => [ '.' ],
-tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
-}) %]
diff --git a/projects/meek/config b/projects/meek/config
deleted file mode 100644
index 7d0fd2d..000
--- a/projects/meek/config
+++ /dev/null
@@ -1,17 +0,0 @@
-# vim: filetype=yaml sw=2
-version: 0.31
-git_url: https://git.torproject.org/pluggable-transports/meek.git
-git_hash: '[% c("version") %]'
-tag_gpg_id: 1
-gpg_keyring: meek.gpg
-filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% 
c("var/build_id") %].tar.gz'
-var:
-  container:
-use_container: 1
-
-input_files:
-  - project: container-image
-  - name: go
-project: go
-  - name: goptlib
-project: goptlib
diff --git a/projects/obfs4/build b/projects/obfs4/build
index dedd1ef..3f650c4 100644
--- a/projects/obfs4/build
+++ b/projects/obfs4/build
@@ -11,7 +11,7 @@ tar -C /var/tmp/dist -xf [% c('input_files_by_name/siphash') 
%]
 tar -C /var/tmp/dist -xf [% c('input_files_by_name/uniuri') %]
 tar -C /var/tmp/dist -xf [% c('input_files_by_name/goxcrypto') %]
 tar -C /var/tmp/dist -xf [% c('input_files_by_name/goxnet') %]
-[% IF c("var/nightly") -%]
+[% IF 

[tor-commits] [tor-browser-build/maint-8.5] Pick up new tor stable version

2019-08-28 Thread gk
commit fce9dc2c0564dfc6bcd6d77f6ae17bac3d02f90d
Author: Georg Koppen 
Date:   Wed Aug 28 07:04:55 2019 +

Pick up new tor stable version
---
 projects/tor/config | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/projects/tor/config b/projects/tor/config
index 3da5057..63a2da6 100644
--- a/projects/tor/config
+++ b/projects/tor/config
@@ -1,6 +1,6 @@
 # vim: filetype=yaml sw=2
 filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% 
c("var/build_id") %]'
-version: 0.4.0.5
+version: 0.4.1.5
 git_hash: 'tor-[% c("version") %]'
 git_url: https://git.torproject.org/tor.git
 git_submodule: 1

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [torbutton/master] Bug 29430: Use obfs4proxy's meek_lite with utls instead of meek

2019-08-28 Thread gk
commit 844693481ce92bb34536113a318211cbaedde4bd
Author: Kathy Brade 
Date:   Tue Aug 27 16:28:16 2019 -0400

Bug 29430: Use obfs4proxy's meek_lite with utls instead of meek

Add support for meek_lite bridges to bridgeParser. This fixes a
problem where the circuit display broke when a meek_lite bridge
was used.
---
 modules/tor-control-port.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/tor-control-port.js b/modules/tor-control-port.js
index afb3d606..6e310b52 100644
--- a/modules/tor-control-port.js
+++ b/modules/tor-control-port.js
@@ -472,7 +472,7 @@ info.bridgeParser = function(bridgeLine) {
   // Several bridge types have a similar format:
   } else {
 result.type = tokens[0];
-if (["flashproxy", "fte", "meek", "obfs3", "obfs4", "scramblesuit",
+if (["flashproxy", "fte", "meek", "meek_lite", "obfs3", "obfs4", 
"scramblesuit",
   "snowflake"].indexOf(result.type) >= 0) {
   [result.address, result.ID] = tokens.slice(1);
 }



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [torbutton/master] Bug 31322: Fix about:tor assertion failure debug builds

2019-08-28 Thread gk
commit 2e3a4b9d7b09dba2dede3aa5e89854b1029b73a5
Author: Alex Catarineu 
Date:   Tue Aug 6 15:47:59 2019 +0200

Bug 31322: Fix about:tor assertion failure debug builds

Adding a CSP policy to about:tor to address a failed assertion.
---
 chrome/content/aboutTor/aboutTor.xhtml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/chrome/content/aboutTor/aboutTor.xhtml 
b/chrome/content/aboutTor/aboutTor.xhtml
index 0789f851..2b75debc 100644
--- a/chrome/content/aboutTor/aboutTor.xhtml
+++ b/chrome/content/aboutTor/aboutTor.xhtml
@@ -20,6 +20,7 @@
 
 http://www.w3.org/1999/xhtml;>
 
+  
   
   
   https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [torbutton/master] Merge remote-tracking branch 'acat/31322'

2019-08-28 Thread gk
commit f4530dc77da1a2c204674be33797d399c2bf597c
Merge: 133eb64a 2e3a4b9d
Author: Georg Koppen 
Date:   Tue Aug 27 12:19:21 2019 +

Merge remote-tracking branch 'acat/31322'

 chrome/content/aboutTor/aboutTor.xhtml | 1 +
 1 file changed, 1 insertion(+)




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [torbutton/master] Merge remote-tracking branch 'pearl/bug29430-01'

2019-08-28 Thread gk
commit 605decfd4ddc81eb37da17172f48f92fd7f7e451
Merge: f4530dc7 84469348
Author: Georg Koppen 
Date:   Wed Aug 28 06:40:19 2019 +

Merge remote-tracking branch 'pearl/bug29430-01'

 modules/tor-control-port.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Try deleting the registry key before exiting.

2019-08-28 Thread dcf
commit f7ca0eaf83c6abb6cac41e20f7daf011a79b3fd1
Author: David Fifield 
Date:   Thu Mar 7 15:46:54 2019 -0700

Try deleting the registry key before exiting.
---
 meek-client-torbrowser/linux.go  |  6 ++
 meek-client-torbrowser/mac.go|  6 ++
 meek-client-torbrowser/meek-client-torbrowser.go | 13 +
 meek-client-torbrowser/windows.go| 20 +---
 4 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/meek-client-torbrowser/linux.go b/meek-client-torbrowser/linux.go
index f728f1d..69ee7b7 100644
--- a/meek-client-torbrowser/linux.go
+++ b/meek-client-torbrowser/linux.go
@@ -29,3 +29,9 @@ func osSpecificCommandSetup(cmd *exec.Cmd) {
 func installHelperNativeManifest() error {
return writeNativeManifestToFile(helperNativeManifestDir, 
helperNativeExecutablePath)
 }
+
+func uninstallHelperNativeManifest() error {
+   // Nothing to do here: the host manifest file is written inside the
+   // browser directory, so we assume we don't have to clean it up.
+   return nil
+}
diff --git a/meek-client-torbrowser/mac.go b/meek-client-torbrowser/mac.go
index 995aca5..918a62e 100644
--- a/meek-client-torbrowser/mac.go
+++ b/meek-client-torbrowser/mac.go
@@ -42,3 +42,9 @@ func installHelperNativeManifest() error {
// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Mac_OS_X
return writeNativeManifestToFile(filepath.Join(homeDir, "Mozilla", 
"NativeMessagingHosts"), helperNativeExecutablePath)
 }
+
+func uninstallHelperNativeManifest() error {
+   // Nothing to do here: the host manifest file is written inside the
+   // browser directory, so we assume we don't have to clean it up.
+   return nil
+}
diff --git a/meek-client-torbrowser/meek-client-torbrowser.go 
b/meek-client-torbrowser/meek-client-torbrowser.go
index 0284280..b512b10 100644
--- a/meek-client-torbrowser/meek-client-torbrowser.go
+++ b/meek-client-torbrowser/meek-client-torbrowser.go
@@ -15,6 +15,11 @@
 // executed as given, except that a --helper option is added that points to the
 // port number read from firefox.
 //
+// On Windows, this program assumes that it has exclusive control over the
+// HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\meek.http.helper
+// registry key. It creates the key when run and tries to delete it when
+// exiting.
+//
 // This program proxies stdin and stdout to and from meek-client, so it is
 // actually meek-client that drives the pluggable transport negotiation with
 // tor.
@@ -422,6 +427,14 @@ func main() {
log.Print(err)
}
 
+   // Make a best-effort attempt to remove the registry key that points to
+   // the meek.http.helper.json file on Windows, because the registry is
+   // persistent global state.
+   err = uninstallHelperNativeManifest()
+   if err != nil {
+   log.Printf("uninstalling native host manifest: %v", err)
+   }
+
var wg sync.WaitGroup
if firefoxCmd != nil {
wg.Add(1)
diff --git a/meek-client-torbrowser/windows.go 
b/meek-client-torbrowser/windows.go
index 907d1dc..d96a02d 100644
--- a/meek-client-torbrowser/windows.go
+++ b/meek-client-torbrowser/windows.go
@@ -22,6 +22,7 @@ const (
// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Windows
helperNativeManifestDir= 
"TorBrowser/Data/Browser/.mozilla/native-messaging-hosts"
helperNativeExecutablePath = 
"TorBrowser/Tor/PluggableTransports/meek-http-helper.exe"
+   registryKey= `SOFTWARE\Mozilla\NativeMessagingHosts\` + 
nativeAppName
 )
 
 func osSpecificCommandSetup(cmd *exec.Cmd) {
@@ -39,16 +40,21 @@ func installHelperNativeManifest() error {
return err
}
 
-   // TODO: Find a way to do this without having to write to the registry.
-   // https://bugs.torproject.org/29347#comment:9
+   // On Windows we must set a registry key pointing to the host manifest.
+   // We'll attempt to delete the key in uninstallHelperNativeManifest.
// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Windows
-   k, _, err := registry.CreateKey(
-   registry.CURRENT_USER,
-   `SOFTWARE\Mozilla\NativeMessagingHosts\`+nativeAppName,
-   registry.WRITE,
-   )
+   k, _, err := registry.CreateKey(registry.CURRENT_USER, registryKey, 
registry.WRITE)
if err != nil {
return err
}
return k.SetStringValue("", absManifestPath)
 }
+
+func uninstallHelperNativeManifest() error {
+   // Delete the registry key pointing to the host manifest. We don't
+   // delete any higher up the tree; e.g. an empty
+   // HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts will remain
+   // even if it was not present before 

[tor-commits] [meek/master] Throw an exception if headersFn is called more than once.

2019-08-28 Thread dcf
commit 89990602e8217c5f53a07c8922b5acee677e9e38
Author: David Fifield 
Date:   Sat Mar 30 02:09:06 2019 -0600

Throw an exception if headersFn is called more than once.

Re-use the catch handler.
---
 webextension/browser/background.js | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/webextension/browser/background.js 
b/webextension/browser/background.js
index fd34a5d..038e548 100644
--- a/webextension/browser/background.js
+++ b/webextension/browser/background.js
@@ -168,8 +168,7 @@ async function roundtrip(params) {
 try {
 // Sanity assertion: per-request listeners are called at most once.
 if (headersCalled) {
-console.log("headersFn called more than once");
-return {cancel: true};
+throw new Error("headersFn called more than once");
 }
 headersCalled = true;
 



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Refactoring WebExtension native component.

2019-08-28 Thread dcf
commit 417a693ee7af7f2d7dfff4ce57a1fcbac8776153
Author: David Fifield 
Date:   Sat Mar 30 13:29:22 2019 -0600

Refactoring WebExtension native component.

The native component actually doesn't need to introspect the objects it
passes to the browser, except for the "error" property of a response
when it wants to report its own error.
---
 webextension/native/main.go | 58 +
 1 file changed, 22 insertions(+), 36 deletions(-)

diff --git a/webextension/native/main.go b/webextension/native/main.go
index 9424715..cbb48bf 100644
--- a/webextension/native/main.go
+++ b/webextension/native/main.go
@@ -36,7 +36,7 @@ const (
roundTripTimeout = 120 * time.Second
 
// Self-defense against a malfunctioning meek-client. We'll refuse to
-   // read encoded responses that are longer than this.
+   // read encoded requests that are longer than this.
maxRequestSpecLength = 100
 
// Self-defense against a malfunctioning browser. We'll refuse to
@@ -52,32 +52,16 @@ const (
 // inFromBrowserLoop receives a webExtensionRoundTripResponse from the browser,
 // it is tagged with the same ID as the corresponding request. 
inFromBrowserLoop
 // looks up the matching channel and sends the response over it.
-var requestResponseMap = make(map[string]chan<- *responseSpec)
+var requestResponseMap = make(map[string]chan<- responseSpec)
 var requestResponseMapLock sync.Mutex
 
 // A specification of an HTTP request, as received via the socket from
 // "meek-client --helper".
-type requestSpec struct {
-   Method string`json:"method,omitempty"`
-   URLstring`json:"url,omitempty"`
-   Header map[string]string `json:"header,omitempty"`
-   Body   []byte`json:"body,omitempty"`
-   Proxy  *proxySpec`json:"proxy,omitempty"`
-}
-
-type proxySpec struct {
-   Type string `json:"type"`
-   Host string `json:"host"`
-   Port int`json:"port"`
-}
+type requestSpec interface{}
 
 // A specification of an HTTP request or an error, as sent via the socket to
 // "meek-client --helper".
-type responseSpec struct {
-   Error  string `json:"error,omitempty"`
-   Status int`json:"status,omitempty"`
-   Body   []byte `json:"body,omitempty"`
-}
+type responseSpec interface{}
 
 // A "roundtrip" command sent out to the browser over the stdout stream. It
 // encapsulates a requestSpec as received from the socket, plus
@@ -87,17 +71,17 @@ type responseSpec struct {
 // command:"roundtrip" is to disambiguate with the other command we may send,
 // "report-address".
 type webExtensionRoundTripRequest struct {
-   Command string   `json:"command"` // "roundtrip"
-   ID  string   `json:"id"`
-   Request *requestSpec `json:"request"`
+   Command string  `json:"command"` // "roundtrip"
+   ID  string  `json:"id"`
+   Request requestSpec `json:"request"`
 }
 
 // A message received from the the browser over the stdin stream. It
 // encapsulates a responseSpec along with the ID of the webExtensionResponse
 // that resulted in this response.
 type webExtensionRoundTripResponse struct {
-   ID   string`json:"id"`
-   Response *responseSpec `json:"response"`
+   ID   string   `json:"id"`
+   Response responseSpec `json:"response"`
 }
 
 // Read a requestSpec (receive from "meek-client --helper").
@@ -106,7 +90,7 @@ type webExtensionRoundTripResponse struct {
 // protocol: a 4-byte length, followed by a JSON object of that length. The 
only
 // difference is the byte order of the length: meek-client's is big-endian,
 // while WebExtension's is native-endian.
-func readRequestSpec(r io.Reader) (*requestSpec, error) {
+func readRequestSpec(r io.Reader) (requestSpec, error) {
var length uint32
err := binary.Read(r, binary.BigEndian, )
if err != nil {
@@ -132,7 +116,7 @@ func readRequestSpec(r io.Reader) (*requestSpec, error) {
 }
 
 // Write a responseSpec (send to "meek-client --helper").
-func writeResponseSpec(w io.Writer, spec *responseSpec) error {
+func writeResponseSpec(w io.Writer, spec responseSpec) error {
encodedSpec, err := json.Marshal(spec)
if err != nil {
panic(err)
@@ -151,11 +135,7 @@ func writeResponseSpec(w io.Writer, spec *responseSpec) 
error {
}
 
_, err = w.Write(encodedSpec)
-   if err != nil {
-   return err
-   }
-
-   return nil
+   return err
 }
 
 // Receive a WebExtension message.
@@ -201,7 +181,7 @@ func sendWebExtensionMessage(w io.Writer, message []byte) 
error {
 // browser. Wait for the browser to send back a webExtensionRoundTripResponse
 // (which actually happens in inFromBrowserLoop--that function uses the ID to
 // find this goroutine again). Return a responseSpec object or an error.
-func roundTrip(conn net.Conn, outToBrowserChan chan<- []byte) 

[tor-commits] [meek/master] Refactoring WebExtension native component.

2019-08-28 Thread dcf
commit a44d297faa806ad79ee7d38d488bd02eeac8ca84
Author: David Fifield 
Date:   Sat Mar 30 12:11:55 2019 -0600

Refactoring WebExtension native component.
---
 webextension/native/endian_386.go   |  2 +-
 webextension/native/endian_amd64.go |  2 +-
 webextension/native/main.go | 77 +
 3 files changed, 45 insertions(+), 36 deletions(-)

diff --git a/webextension/native/endian_386.go 
b/webextension/native/endian_386.go
index 6a1e44e..af343d7 100644
--- a/webextension/native/endian_386.go
+++ b/webextension/native/endian_386.go
@@ -5,4 +5,4 @@ package main
 
 import "encoding/binary"
 
-var NativeEndian = binary.LittleEndian
+var nativeEndian = binary.LittleEndian
diff --git a/webextension/native/endian_amd64.go 
b/webextension/native/endian_amd64.go
index 6a1e44e..af343d7 100644
--- a/webextension/native/endian_amd64.go
+++ b/webextension/native/endian_amd64.go
@@ -5,4 +5,4 @@ package main
 
 import "encoding/binary"
 
-var NativeEndian = binary.LittleEndian
+var nativeEndian = binary.LittleEndian
diff --git a/webextension/native/main.go b/webextension/native/main.go
index e5f3a74..8771b72 100644
--- a/webextension/native/main.go
+++ b/webextension/native/main.go
@@ -2,7 +2,13 @@
 // purpose is to open a localhost TCP socket for communication with meek-client
 // in its --helper mode (the WebExtension cannot open a socket on its own). 
This
 // program is also in charge of multiplexing the many incoming socket
-// connections over the single shared stdio stream to/from the WebExtension.
+// connections over the single shared stdio stream to/from the browser.
+//
+// This program does minimal syntax checking. Apart from ensuring that the
+// messages are well-formed JSON with the correct top-level properties, and
+// inspecting the ID, it doesn't care about the contents of messages. It's the
+// responsibility of the browser half of the WebExtension to check everything
+// else.
 
 package main
 
@@ -44,14 +50,15 @@ const (
maxWebExtensionMessageLength = 100
 )
 
-// We receive multiple (possibly concurrent) connections over our listening
-// socket, and we must multiplex all their requests/responses to/from the
-// browser over the single shared stdio stream. When roundTrip sends a
-// webExtensionRoundTripRequest to the browser, creates a channel to receive 
the
-// response, and stores the ID–channel mapping in requestResponseMap. When
-// inFromBrowserLoop receives a webExtensionRoundTripResponse from the browser,
-// it is tagged with the same ID as the corresponding request. 
inFromBrowserLoop
-// looks up the matching channel and sends the response over it.
+// We receive multiple (possibly concurrent) connections over the listening
+// socket, and we must multiplex all their requests/results over the single
+// shared stdio stream to the browser. When roundTrip sends a request to the
+// browser, it tags the request with a random ID, creates a channel on which to
+// receive the result, and stores the ID–channel mapping in 
requestResponseMap.
+// When inFromBrowserLoop receives a webExtensionRoundTripResponse from the
+// browser, it will be tagged with an ID. inFromBrowserLoop looks up the 
channel
+// in requestResponseMap using the ID, and sends the result back on the channel
+// it finds.
 var requestResponseMap = make(map[string]chan<- responseSpec)
 var requestResponseMapLock sync.Mutex
 
@@ -84,13 +91,14 @@ type webExtensionRoundTripResponse struct {
Response responseSpec `json:"response"`
 }
 
-// Read a requestSpec (receive from "meek-client --helper").
+// Receive a requestSpec (from "meek-client --helper").
 //
 // The meek-client protocol is coincidentally similar to the WebExtension stdio
-// protocol: a 4-byte length, followed by a JSON object of that length. The 
only
-// difference is the byte order of the length: meek-client's is big-endian,
-// while WebExtension's is native-endian.
-func readRequestSpec(r io.Reader) (requestSpec, error) {
+// protocol: a 4-byte length, followed by a JSON object of that length. The 
main
+// differences are the byte order of the length prefix—meek-client's is
+// big-endian, while WebExtension's is native-endian—and that meek-client 
only
+// sends/receives one object per connection.
+func recvRequestSpec(r io.Reader) (requestSpec, error) {
var length uint32
err := binary.Read(r, binary.BigEndian, )
if err != nil {
@@ -106,8 +114,8 @@ func readRequestSpec(r io.Reader) (requestSpec, error) {
return nil, err
}
 
-   spec := new(requestSpec)
-   err = json.Unmarshal(encodedSpec, spec)
+   var spec requestSpec
+   err = json.Unmarshal(encodedSpec, )
if err != nil {
return nil, err
}
@@ -115,13 +123,12 @@ func readRequestSpec(r io.Reader) (requestSpec, error) {
return spec, nil
 }
 
-// Write a responseSpec (send to "meek-client --helper").
-func writeResponseSpec(w io.Writer, 

[tor-commits] [meek/master] Refactoring, use a Request object.

2019-08-28 Thread dcf
commit 5a4d27132ece3de17164b97030c0a57f8f2a489d
Author: David Fifield 
Date:   Sat Mar 30 02:08:33 2019 -0600

Refactoring, use a Request object.
---
 webextension/browser/background.js | 86 +++---
 1 file changed, 42 insertions(+), 44 deletions(-)

diff --git a/webextension/browser/background.js 
b/webextension/browser/background.js
index 0b896e9..fd34a5d 100644
--- a/webextension/browser/background.js
+++ b/webextension/browser/background.js
@@ -124,42 +124,38 @@ function Mutex() {
 const headersMutex = new Mutex();
 const proxyMutex = new Mutex();
 
-async function roundtrip(request) {
-// Process the incoming request spec and convert it into parameters to the
-// fetch API. Also enforce some restrictions on what kinds of requests we
-// are willing to make.
-// 
https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters
-let url;
-let init = {};
+async function roundtrip(params) {
+// Process the incoming request parameters and convert them into a Request.
+// 
https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#Parameters
+let input = params.url;
+let init = {
+method: params.method,
+body: params.body != null ? base64_decode(params.body) : undefined,
+// headers will get further treatment below in headersFn.
+headers: params.header != null ? params.header : {},
+// Do not read nor write from the browser's HTTP cache.
+cache: "no-store",
+// Don't send cookies.
+credentials: "omit",
+// Don't follow redirects (we'll get resp.status:0 if there is one).
+redirect: "manual",
+};
 
-if (request.url == null) {
+// Also enforce restrictions on what kinds of requests we are willing to
+// make.
+if (input == null) {
 throw new Error("request spec failed validation: missing \"url\"");
 }
-if (!(request.url.startsWith("http://;) || 
request.url.startsWith("https://;))) {
+if (!(input.startsWith("http://;) || input.startsWith("https://;))) {
 throw new Error("request spec failed validation: only http and https 
URLs are allowed");
 }
-url = request.url;
-
-if (request.method !== "POST") {
+if (init.method !== "POST") {
 throw new Error("request spec failed validation: only POST is 
allowed");
 }
-init.method = request.method;
-
-// Don't set init.headers; that is handled in the onBeforeSendHeaders 
listener.
-
-if (request.body != null && request.body !== "") {
-init.body = base64_decode(request.body);
-}
-
-// Do not read nor write from the browser's HTTP cache.
-init.cache = "no-store";
-// Don't send cookies.
-init.credentials = "omit";
-// Don't follow redirects (we'll get resp.status:0 if there is one).
-init.redirect = "manual";
+let request = new Request(input, init);
 
 // We need to use a webRequest.onBeforeSendHeaders listener to override
-// certain header fields, including Host (passing them to fetch in
+// certain header fields, including Host (creating a Request with them in
 // init.headers does not work). But onBeforeSendHeaders is a global setting
 // (applies to all requests) and we need to be able to set different 
headers
 // per request. We make it so that any onBeforeSendHeaders listener is only
@@ -177,21 +173,21 @@ async function roundtrip(request) {
 }
 headersCalled = true;
 
-// Convert request.header from object to array form.
-// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/HttpHeaders
-let headers = Object.entries(request.header != null ? 
request.header : {})
-.map(x => ({name: x[0], value: x[1]}));
-// Remove all browser headers that conflict with requested headers.
-let overrides = {};
-for (let name of Object.keys(headers)) {
-overrides[name.toLowerCase()] = true;
+let removals = new Map();
+for (let name of Object.keys(init.headers)) {
+removals.set(name.toLowerCase());
 }
 // Also remove some unnecessary or potentially tracking-enabling 
headers.
 for (let name of ["Accept", "Accept-Language", "Cookie", "Origin", 
"User-Agent"]) {
-overrides[name.toLowerCase()] = true;
+removals.set(name.toLowerCase());
+}
+let requestHeaders = details.requestHeaders.filter(header => 
!removals.has(header.name.toLowerCase()));
+// Append the requested headers in array form.
+// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/HttpHeaders
+for (let [name, value] of Object.entries(init.headers)) {
+requestHeaders.push({name, value});
 }
-

[tor-commits] [meek/master] programVersion = "0.34"

2019-08-28 Thread dcf
commit 0800a4668b2508a71f0e6fdf005aded28a9870fa
Author: David Fifield 
Date:   Tue Aug 27 23:58:21 2019 -0600

programVersion = "0.34"
---
 meek-server/meek-server.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/meek-server/meek-server.go b/meek-server/meek-server.go
index e39ddd8..af0084c 100644
--- a/meek-server/meek-server.go
+++ b/meek-server/meek-server.go
@@ -44,7 +44,7 @@ import (
 )
 
 const (
-   programVersion = "0.33"
+   programVersion = "0.34"
 
ptMethodName = "meek"
// Reject session ids shorter than this, as a weak defense against

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Minor Chrome compatibility.

2019-08-28 Thread dcf
commit d86981fadd29c3364942f07dc9c70ec702905340
Author: David Fifield 
Date:   Sat Mar 30 02:02:09 2019 -0600

Minor Chrome compatibility.

This doesn't hurt, but we're still reliant on Firefox for using the
global "browser" object (instead of "chrome"), and especially for the
proxy code, which has a totally different API in Chrome.
---
 webextension/browser/background.js | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/webextension/browser/background.js 
b/webextension/browser/background.js
index c47d06b..0b896e9 100644
--- a/webextension/browser/background.js
+++ b/webextension/browser/background.js
@@ -336,7 +336,8 @@ port.onDisconnect.addListener(p => {
 // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port#Type
 // "Note that in Google Chrome port.error is not supported: instead, use
 // runtime.lastError to get the error message."
-if (p.error) {
-console.log(`${browser.runtime.id}: disconnected because of error: 
${p.error.message}`);
+let error = p.error || browser.runtime.lastError;
+if (error) {
+console.log(`${browser.runtime.id}: disconnected because of error: 
${error.message}`);
 }
 });



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] These can be ordinary error returns, not panics.

2019-08-28 Thread dcf
commit f72a152760e912cd8c21ced335ad17fdea05a4e9
Author: David Fifield 
Date:   Sat Mar 30 13:10:33 2019 -0600

These can be ordinary error returns, not panics.
---
 webextension/native/main.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/webextension/native/main.go b/webextension/native/main.go
index 8771b72..44e2d82 100644
--- a/webextension/native/main.go
+++ b/webextension/native/main.go
@@ -127,7 +127,7 @@ func recvRequestSpec(r io.Reader) (requestSpec, error) {
 func sendResponseSpec(w io.Writer, spec responseSpec) error {
encodedSpec, err := json.Marshal(spec)
if err != nil {
-   panic(err)
+   return err
}
// len returns int, which is specified to be either 32 or 64 bits, so it
// will never be truncated when converting to uint64.
@@ -211,7 +211,7 @@ func roundTrip(req requestSpec, outToBrowserChan chan<- 
[]byte) (responseSpec, e
Request: req,
})
if err != nil {
-   panic(err)
+   return nil, err
}
outToBrowserChan <- message
 



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Note anticipated problems with proxy.settings.set in FF 67+.

2019-08-28 Thread dcf
commit 264bf24579caba974f330cb854680dcbb171879a
Author: David Fifield 
Date:   Tue Aug 27 11:22:50 2019 -0600

Note anticipated problems with proxy.settings.set in FF 67+.
---
 webextension/browser/background.js | 9 +
 1 file changed, 9 insertions(+)

diff --git a/webextension/browser/background.js 
b/webextension/browser/background.js
index 5a23134..4d8c8c2 100644
--- a/webextension/browser/background.js
+++ b/webextension/browser/background.js
@@ -300,6 +300,15 @@ browser.webRequest.onErrorOccurred.addListener(
 // Firefox 63 because of a bug.
 // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/settings
 // https://bugzilla.mozilla.org/show_bug.cgi?id=1487121
+//
+// This proxy.settings.set call may cause a problem in Firefox 67+, because in
+// those versions, extensions additionally need the "Run in Private Windows"
+// permission to use proxy.settings.set at all (not only in private windows).
+// Lacking the permission, you get an error in the browser console: "Error:
+// proxy.settings requires private browsing permission." We will need to find a
+// way to install the extension such that it has the necessary permission.
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1525447
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1526299
 browser.proxy.settings.set({value: {proxyType: "system", proxyDNS: false}});
 
 // Connect to our native process.



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Remove the legacy XPCOM firefox extension.

2019-08-28 Thread dcf
commit 1dd467e7d73e37cfa89f782f3a05dd98f20a16cd
Author: David Fifield 
Date:   Sun Aug 25 18:57:54 2019 -0600

Remove the legacy XPCOM firefox extension.
---
 README |   9 +-
 firefox/chrome.manifest|   5 -
 firefox/components/main.js | 465 -
 firefox/install.rdf|  21 --
 4 files changed, 2 insertions(+), 498 deletions(-)

diff --git a/README b/README
index 35568b6..b4efead 100644
--- a/README
+++ b/README
@@ -35,8 +35,8 @@ with the --helper option pointing at a browser extension that 
has been
 set up separately. How it works is meek-client tells the browser what
 URL to request, the browser requests it and returns the payload to
 meek-client. The TLS implementation is that of the browser, so it better
-blends in with allowed traffic. A browser extensions for Firefox is in
-the firefox directory.
+blends in with allowed traffic. A browser extension for Firefox is in
+the webextension directory.
 
 Here is a summary of the programs that appear in subdirectories.
 
@@ -44,11 +44,6 @@ appengine:
 Reflector web app that runs on Google App Engine. The reflector simply
 copies requests and responses to an instance of meek-server somewhere.
 
-firefox:
-Browser extension for TLS camouflage. Only works with versions of
-Firefox below 60.0. Use the extension in the webextension for newer
-versions of Firefox.
-
 meek-client:
 The client transport plugin, run by a censored client.
 
diff --git a/firefox/chrome.manifest b/firefox/chrome.manifest
deleted file mode 100644
index ef6596c..000
--- a/firefox/chrome.manifest
+++ /dev/null
@@ -1,5 +0,0 @@
-# 
https://developer.mozilla.org/en-US/docs/How_to_Build_an_XPCOM_Component_in_Javascript
-# 
https://developer.mozilla.org/en-US/docs/Mozilla/XPCOM/Receiving_startup_notifications
-component {e7bc2b9c-f454-49f3-a19f-14848a4d871d} components/main.js
-contract @bamsoftware.com/meek-http-helper;1 
{e7bc2b9c-f454-49f3-a19f-14848a4d871d}
-category profile-after-change MeekHTTPHelper 
@bamsoftware.com/meek-http-helper;1
diff --git a/firefox/components/main.js b/firefox/components/main.js
deleted file mode 100644
index 48f0978..000
--- a/firefox/components/main.js
+++ /dev/null
@@ -1,465 +0,0 @@
-// This is an extension that allows external programs to make HTTP requests
-// using the browser's networking libraries.
-//
-// The extension opens a TCP socket listening on localhost on an ephemeral 
port.
-// It writes the port number in a recognizable format to stdout so that a 
parent
-// process can read it and connect. When the extension receives a connection, 
it
-// reads a 4-byte big-endian length field, then tries to read that many bytes 
of
-// data. The data is UTF-8–encoded JSON, having the format
-//  {
-//  "method": "POST",
-//  "url": "https://allowed.example/;,
-//  "header": {
-//  "Host": "forbidden.example",
-//  "X-Session-Id": "XXX"}
-//  },
-//  "proxy": {
-//  "type": "http",
-//  "host": "proxy.example",
-//  "port": 8080
-//  },
-//  "body": "...base64..."
-//  }
-// The extension makes the request as commanded. It returns the response to the
-// client as a JSON blob, preceded by a 4-byte length as before. If successful,
-// the response looks like
-//  {
-//  "status": 200,
-//  "body": "...base64..."
-//  }
-// If there is a network error, the "error" key will be defined. A 404 response
-// or similar from the target web server is not considered such an error.
-//  {
-//  "error": "NS_ERROR_UNKNOWN_HOST"
-//  }
-// The extension closes the connection after each transaction, and the client
-// must reconnect to do another request.
-
-// 
https://developer.mozilla.org/en-US/docs/How_to_Build_an_XPCOM_Component_in_Javascript#Using_XPCOMUtils
-// 
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-
-// https://developer.mozilla.org/en-US/docs/Tools/Browser_Console#Console.jsm
-Components.utils.import("resource://gre/modules/Console.jsm");
-
-// Everything resides within the MeekHTTPHelper namespace. MeekHTTPHelper is
-// also the type from which NSGetFactory is constructed, and it is the 
top-level
-// nsIServerSocketListener.
-function MeekHTTPHelper() {
-this.wrappedJSObject = this;
-this.handlers = [];
-}
-MeekHTTPHelper.prototype = {
-classDescription: "meek HTTP helper component",
-classID: Components.ID("{e7bc2b9c-f454-49f3-a19f-14848a4d871d}"),
-contractID: "@bamsoftware.com/meek-http-helper;1",
-
-// 
https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm#generateQI%28%29
-QueryInterface: XPCOMUtils.generateQI([
-Components.interfaces.nsIObserver,
-Components.interfaces.nsIServerSocketListener,
-]),
-
-// nsIObserver implementation.
-observe: function(subject, topic, data) {
-

[tor-commits] [meek/master] Read the requestSpec outside of roundTrip.

2019-08-28 Thread dcf
commit 3c386e18948a161c925563dfb47212221ee85258
Author: David Fifield 
Date:   Sat Mar 30 12:10:19 2019 -0600

Read the requestSpec outside of roundTrip.

The difference here is that we don't send a JSON error response as a
result of errors at this stage.
---
 webextension/native/main.go | 24 
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/webextension/native/main.go b/webextension/native/main.go
index cbb48bf..e5f3a74 100644
--- a/webextension/native/main.go
+++ b/webextension/native/main.go
@@ -181,19 +181,10 @@ func sendWebExtensionMessage(w io.Writer, message []byte) 
error {
 // browser. Wait for the browser to send back a webExtensionRoundTripResponse
 // (which actually happens in inFromBrowserLoop--that function uses the ID to
 // find this goroutine again). Return a responseSpec object or an error.
-func roundTrip(conn net.Conn, outToBrowserChan chan<- []byte) (responseSpec, 
error) {
-   err := conn.SetReadDeadline(time.Now().Add(localReadTimeout))
-   if err != nil {
-   return nil, err
-   }
-   req, err := readRequestSpec(conn)
-   if err != nil {
-   return nil, err
-   }
-
+func roundTrip(req requestSpec, outToBrowserChan chan<- []byte) (responseSpec, 
error) {
// Generate an ID that will allow us to match a response to this 
request.
idRaw := make([]byte, 8)
-   _, err = rand.Read(idRaw)
+   _, err := rand.Read(idRaw)
if err != nil {
return nil, err
}
@@ -251,7 +242,16 @@ type errorResponseSpec struct {
 func handleConn(conn net.Conn, outToBrowserChan chan<- []byte) error {
defer conn.Close()
 
-   resp, err := roundTrip(conn, outToBrowserChan)
+   err := conn.SetReadDeadline(time.Now().Add(localReadTimeout))
+   if err != nil {
+   return err
+   }
+   req, err := readRequestSpec(conn)
+   if err != nil {
+   return err
+   }
+
+   resp, err := roundTrip(req, outToBrowserChan)
if err != nil {
resp = {Error: err.Error()}
}



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] New way to disable updates in headless Firefox (63+).

2019-08-28 Thread dcf
commit 09754cb550795da768797d63dd57bc732f268c65
Author: David Fifield 
Date:   Sun Aug 25 19:10:29 2019 -0600

New way to disable updates in headless Firefox (63+).

https://bugs.torproject.org/29611

app.update.enabled doesn't exist anymore:
https://bugzilla.mozilla.org/show_bug.cgi?id=1420514
---
 webextension/firefox-user.js | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/webextension/firefox-user.js b/webextension/firefox-user.js
index fa13a9c..b6786c9 100644
--- a/webextension/firefox-user.js
+++ b/webextension/firefox-user.js
@@ -21,6 +21,12 @@ user_pref("toolkit.startup.max_resumed_crashes", -1);
 // Don't raise software update windows in this browser instance.
 // https://trac.torproject.org/projects/tor/ticket/14203
 user_pref("app.update.enabled", false);
+// Firefox 63 removed the app.update.enabled pref. Instead, set the update 
check
+// interval very high and otherwise neuter it as much as possible.
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1420514
+user_pref("app.update.interval", 9); // don't check for updates
+user_pref("app.update.auto", false); // if downloaded, don't automatically 
install
+user_pref("app.update.doorhanger", false); // don't show an update notice in 
the UI
 
 // Set a failsafe blackhole proxy of 127.0.0.1:9, to prevent network 
interaction
 // in case the user manages to open this profile with a normal browser UI 
(i.e.,



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Use const in a few more places.

2019-08-28 Thread dcf
commit b4f23d54117ae915901d2fd3d51e97afb81b0ae1
Author: David Fifield 
Date:   Sat Mar 30 11:05:49 2019 -0600

Use const in a few more places.
---
 webextension/browser/background.js | 12 ++--
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/webextension/browser/background.js 
b/webextension/browser/background.js
index 038e548..5a23134 100644
--- a/webextension/browser/background.js
+++ b/webextension/browser/background.js
@@ -127,8 +127,8 @@ const proxyMutex = new Mutex();
 async function roundtrip(params) {
 // Process the incoming request parameters and convert them into a Request.
 // 
https://developer.mozilla.org/en-US/docs/Web/API/Request/Request#Parameters
-let input = params.url;
-let init = {
+const input = params.url;
+const init = {
 method: params.method,
 body: params.body != null ? base64_decode(params.body) : undefined,
 // headers will get further treatment below in headersFn.
@@ -152,7 +152,7 @@ async function roundtrip(params) {
 if (init.method !== "POST") {
 throw new Error("request spec failed validation: only POST is 
allowed");
 }
-let request = new Request(input, init);
+const request = new Request(input, init);
 
 // We need to use a webRequest.onBeforeSendHeaders listener to override
 // certain header fields, including Host (creating a Request with them in
@@ -162,7 +162,7 @@ async function roundtrip(params) {
 // used for a single request, by acquiring a lock here and releasing it
 // within the listener itself. The lock is acquired and released before any
 // network communication happens; i.e., it's fast.
-let headersUnlock = await headersMutex.lock();
+const headersUnlock = await headersMutex.lock();
 let headersCalled = false;
 function headersFn(details) {
 try {
@@ -202,7 +202,7 @@ async function roundtrip(params) {
 
 // Similarly, for controlling the proxy for each request, we set a
 // proxy.onRequest listener, use it for one request, then remove it.
-let proxyUnlock = await proxyMutex.lock();
+const proxyUnlock = await proxyMutex.lock();
 let proxyCalled = false;
 // async to make exceptions visible to proxy.onError.
 // https://bugzilla.mozilla.org/show_bug.cgi?id=1528873#c1
@@ -303,7 +303,7 @@ browser.webRequest.onErrorOccurred.addListener(
 browser.proxy.settings.set({value: {proxyType: "system", proxyDNS: false}});
 
 // Connect to our native process.
-let port = browser.runtime.connectNative("meek.http.helper");
+const port = browser.runtime.connectNative("meek.http.helper");
 
 port.onMessage.addListener(message => {
 switch (message.command) {



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Add a suggested user.js file for Firefox.

2019-08-28 Thread dcf
commit 2d46d0be07b18e5b1f54f0528e1c7f89516c2d2d
Author: David Fifield 
Date:   Sun Aug 25 19:06:02 2019 -0600

Add a suggested user.js file for Firefox.

This is copied from
projects/tor-browser/Bundle-Data/PTConfigs/meek-http-helper-user.js in
tor-browser-build.git commit 4792ed5246d389caad036290e9ed34ff0ae1f0ad.
---
 webextension/README  |  3 ++-
 webextension/firefox-user.js | 42 ++
 2 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/webextension/README b/webextension/README
index 2b40172..7cb5267 100644
--- a/webextension/README
+++ b/webextension/README
@@ -43,7 +43,8 @@ These instructions require Firefox 65.
 4. Run Firefox in a terminal so you can see its stdout. In Firefox, go
to about:config and set
browser.dom.window.dump.enabled=true
-   This enables the extension to write to stdout.
+   This enables the extension to write to stdout. See firefox-user.js
+   for other prefs you may want to set.
 
 5. In Firefox, go to about:debugging and click "Load Temporary
Add-on...". Find browser/manifest.json and click Open.
diff --git a/webextension/firefox-user.js b/webextension/firefox-user.js
new file mode 100644
index 000..fa13a9c
--- /dev/null
+++ b/webextension/firefox-user.js
@@ -0,0 +1,42 @@
+// This is a user.js file for Firefox that sets preferences related to the
+// meek-http-helper extension. The only preference essential to the operation 
of
+// the extension is browser.dom.window.dump.enabled=true. The others provide
+// failsafes and disable features that are not wanted in a headless browser.
+// http://kb.mozillazine.org/User.js_file
+
+// The meek-http-helper extension uses dump to write its listening port number
+// to stdout.
+user_pref("browser.dom.window.dump.enabled", true);
+
+// Enable TLS session tickets (disabled by default in Tor Browser). Otherwise
+// there is a missing TLS extension.
+// https://trac.torproject.org/projects/tor/ticket/13442#comment:1
+user_pref("security.ssl.disable_session_identifiers", false);
+
+// Disable safe mode. In case of a crash, we don't want to prompt for a
+// safe-mode browser that has extensions disabled.
+// https://support.mozilla.org/en-US/questions/951221#answer-410562
+user_pref("toolkit.startup.max_resumed_crashes", -1);
+
+// Don't raise software update windows in this browser instance.
+// https://trac.torproject.org/projects/tor/ticket/14203
+user_pref("app.update.enabled", false);
+
+// Set a failsafe blackhole proxy of 127.0.0.1:9, to prevent network 
interaction
+// in case the user manages to open this profile with a normal browser UI 
(i.e.,
+// not headless with the meek-http-helper extension running). Port 9 is
+// "discard", so it should work as a blackhole whether the port is open or
+// closed. network.proxy.type=1 means "Manual proxy configuration".
+// http://kb.mozillazine.org/Network.proxy.type
+user_pref("network.proxy.type", 1);
+user_pref("network.proxy.socks", "127.0.0.1");
+user_pref("network.proxy.socks_port", 9);
+// Make sure DNS is also blackholed. network.proxy.socks_remote_dns is
+// overridden by meek-http-helper at startup.
+user_pref("network.proxy.socks_remote_dns", true);
+
+user_pref("extensions.enabledAddons", "meek-http-hel...@bamsoftware.com:1.0");
+
+// Ensure that distribution extensions (e.g., Tor Launcher) are not copied
+// into the meek-http-helper profile.
+user_pref("extensions.installDistroAddons", false);



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Make a separate webextension/browser directory.

2019-08-28 Thread dcf
commit b1441a2135f2ae3cc2978622d008d39b73d52065
Author: David Fifield 
Date:   Thu Mar 7 14:30:41 2019 -0700

Make a separate webextension/browser directory.
---
 webextension/README | 14 +++---
 webextension/{ => browser}/Makefile |  0
 webextension/{ => browser}/background.js|  0
 webextension/{ => browser}/manifest.json|  0
 webextension/{ => native}/meek.http.helper.json |  0
 5 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/webextension/README b/webextension/README
index a728842..5b958cb 100644
--- a/webextension/README
+++ b/webextension/README
@@ -12,18 +12,18 @@ These instructions require Firefox 65.
 1. Compile the native application.
cd native && go build
 
-2. Edit meek.http.helper.json and set the "path" field to the path to
-   the native application.
+2. Edit native/meek.http.helper.json and set the "path" field to the
+   path to the native application.
"path": "/where/you/installed/native",
 
-3. Copy the edited meek.http.helper.json file to the OS-appropriate
-   location.
+3. Copy the edited native/meek.http.helper.json file to the
+   OS-appropriate location.
# macOS
mkdir -p ~/"Library/Application Support/Mozilla/NativeMessagingHosts/"
-   cp meek.http.helper.json ~/"Library/Application 
Support/Mozilla/NativeMessagingHosts/"
+   cp native/meek.http.helper.json ~/"Library/Application 
Support/Mozilla/NativeMessagingHosts/"
# other Unix
mkdir -p ~/.mozilla/native-messaging-hosts/
-   cp meek.http.helper.json ~/.mozilla/native-messaging-hosts/
+   cp native/meek.http.helper.json ~/.mozilla/native-messaging-hosts/
The meek.http.helper.json file is called the "host manifest" or "app
manifest" and it tells the browser where to find the native part of
the WebExtension. More information:
@@ -35,7 +35,7 @@ These instructions require Firefox 65.
This enables the extension to write to stdout.
 
 5. In Firefox, go to about:debugging and click "Load Temporary
-   Add-on...". Find manifest.json and click Open.
+   Add-on...". Find browser/manifest.json and click Open.
More information:

https://developer.mozilla.org/en-US/docs/Tools/about:debugging#Loading_a_temporary_add-on
In the terminal, you should see a line like this, with a random port
diff --git a/webextension/Makefile b/webextension/browser/Makefile
similarity index 100%
rename from webextension/Makefile
rename to webextension/browser/Makefile
diff --git a/webextension/background.js b/webextension/browser/background.js
similarity index 100%
rename from webextension/background.js
rename to webextension/browser/background.js
diff --git a/webextension/manifest.json b/webextension/browser/manifest.json
similarity index 100%
rename from webextension/manifest.json
rename to webextension/browser/manifest.json
diff --git a/webextension/meek.http.helper.json 
b/webextension/native/meek.http.helper.json
similarity index 100%
rename from webextension/meek.http.helper.json
rename to webextension/native/meek.http.helper.json



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Have meek-client-torbrowser write the native host manifest.

2019-08-28 Thread dcf
commit c7b99db18bb4f60c5221bf62b7bee3eb0b558434
Author: David Fifield 
Date:   Wed Feb 20 13:27:32 2019 -0700

Have meek-client-torbrowser write the native host manifest.

The WebExtension needs a JSON "host manifest" that both authorizes the
extension to run a native executable, and tells the browser where to
find the native executable. The path inside the manifest needs to be an
absolute path, so we cannot just plunk down a static file; we have to
know the path to where the browser is installed. meek-client-torbrowser
rewrites the manifest on each startup, where the browser expects to find
it.

The is mostly self-contained and compatible with previous behavior, with
one small exception on windows. On mac and linux, the browser expects to
find the manifest in a well-known location (relative to $HOME, which in
our case is inside the browser's directory tree or the ancillary
TorBrowser-Data directory). But on windows, the path to the manifest
needs to be stored in the registry. So meek-client-torbrowser not only
writes the manifest file, it also writes a registry key pointing to the
file. I'd like to try and find a way to do this that doesn't require
modifying global state like this.

This patch is tested on linux and windows but not mac.
---
 meek-client-torbrowser/linux.go  |  7 ++
 meek-client-torbrowser/mac.go| 19 +-
 meek-client-torbrowser/meek-client-torbrowser.go |  8 +++
 meek-client-torbrowser/nativemanifest.go | 86 
 meek-client-torbrowser/windows.go| 37 +-
 5 files changed, 155 insertions(+), 2 deletions(-)

diff --git a/meek-client-torbrowser/linux.go b/meek-client-torbrowser/linux.go
index 71b5cfb..f728f1d 100644
--- a/meek-client-torbrowser/linux.go
+++ b/meek-client-torbrowser/linux.go
@@ -15,6 +15,9 @@ const (
firefoxProfilePath   = 
"TorBrowser/Data/Browser/profile.meek-http-helper"
torDataDirFirefoxProfilePath = ""
profileTemplatePath  = ""
+   // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Linux
+   helperNativeManifestDir= 
"TorBrowser/Data/Browser/.mozilla/native-messaging-hosts"
+   helperNativeExecutablePath = 
"TorBrowser/Tor/PluggableTransports/meek-http-helper"
 )
 
 func osSpecificCommandSetup(cmd *exec.Cmd) {
@@ -22,3 +25,7 @@ func osSpecificCommandSetup(cmd *exec.Cmd) {
// process terminates. Only works on Linux.
cmd.SysProcAttr = {Pdeathsig: syscall.SIGTERM}
 }
+
+func installHelperNativeManifest() error {
+   return writeNativeManifestToFile(helperNativeManifestDir, 
helperNativeExecutablePath)
+}
diff --git a/meek-client-torbrowser/mac.go b/meek-client-torbrowser/mac.go
index f88ed38..995aca5 100644
--- a/meek-client-torbrowser/mac.go
+++ b/meek-client-torbrowser/mac.go
@@ -5,7 +5,11 @@
 
 package main
 
-import "os/exec"
+import (
+   "os"
+   "os/exec"
+   "path/filepath"
+)
 
 const (
// During startup of meek-client-torbrowser, the browser profile is
@@ -20,8 +24,21 @@ const (
torDataDirFirefoxProfilePath = 
"PluggableTransports/profile.meek-http-helper"
firefoxProfilePath   = 
"../../../../TorBrowser-Data/Tor/PluggableTransports/profile.meek-http-helper"
profileTemplatePath  = 
"../../Resources/TorBrowser/Tor/PluggableTransports/template-profile.meek-http-helper"
+   helperNativeExecutablePath   = 
"../Tor/PluggableTransports/meek-http-helper"
 )
 
 func osSpecificCommandSetup(cmd *exec.Cmd) {
// nothing
 }
+
+func installHelperNativeManifest() error {
+   var homeDir string
+   torDataDir := os.Getenv("TOR_BROWSER_TOR_DATA_DIR")
+   if torDataDir != "" {
+   homeDir = filepath.Join(torDataDir, "..", "Browser")
+   } else {
+   homeDir = "../../../../TorBrowser-Data/Browser"
+   }
+   // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Mac_OS_X
+   return writeNativeManifestToFile(filepath.Join(homeDir, "Mozilla", 
"NativeMessagingHosts"), helperNativeExecutablePath)
+}
diff --git a/meek-client-torbrowser/meek-client-torbrowser.go 
b/meek-client-torbrowser/meek-client-torbrowser.go
index 6ce7a12..0284280 100644
--- a/meek-client-torbrowser/meek-client-torbrowser.go
+++ b/meek-client-torbrowser/meek-client-torbrowser.go
@@ -242,6 +242,14 @@ func runFirefox() (cmd *exec.Cmd, stdout io.Reader, err 
error) {
return
}
 
+   // Install the meek.http.helper.json file that tells the browser where
+   // to find the native component of the meek-http-helper WebExtension.
+   // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests
+   err = installHelperNativeManifest()
+   if err != nil {
+   return
+   }
+
cmd = 

[tor-commits] [meek/master] Change --invisible to --headless in the firefox command.

2019-08-28 Thread dcf
commit fadb2ef6ee0df9ae69ffa5d7de27df2c1a611cf9
Author: David Fifield 
Date:   Tue Feb 19 20:23:56 2019 -0700

Change --invisible to --headless in the firefox command.

The --help output no longer mentions --invisible. About --headless it
says:
  --headless Run without a GUI.

Also use double dashes in --no-remote and --profile, to match --help
output.
---
 meek-client-torbrowser/meek-client-torbrowser.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/meek-client-torbrowser/meek-client-torbrowser.go 
b/meek-client-torbrowser/meek-client-torbrowser.go
index 38a9fc3..6ce7a12 100644
--- a/meek-client-torbrowser/meek-client-torbrowser.go
+++ b/meek-client-torbrowser/meek-client-torbrowser.go
@@ -197,7 +197,7 @@ func isBrowserProfileUpToDate(templatePath string, 
profilePath string) bool {
 func runFirefox() (cmd *exec.Cmd, stdout io.Reader, err error) {
// Unset environment variables that Firefox sets after a restart (as
// caused by, for example, an update or the installation of an add-on).
-   // XRE_PROFILE_PATH, in particular, overrides the -profile option that
+   // XRE_PROFILE_PATH, in particular, overrides the --profile option that
// runFirefox sets, causing Firefox to run with profile.default instead
// of profile.meek-http-helper, which conflicts with the profile.default
// that is already running. See https://bugs.torproject.org/13247,
@@ -242,7 +242,7 @@ func runFirefox() (cmd *exec.Cmd, stdout io.Reader, err 
error) {
return
}
 
-   cmd = exec.Command(absFirefoxPath, "--invisible", "-no-remote", 
"-profile", profilePath)
+   cmd = exec.Command(absFirefoxPath, "--headless", "--no-remote", 
"--profile", profilePath)
osSpecificCommandSetup(cmd)
cmd.Stderr = os.Stderr
stdout, err = cmd.StdoutPipe()



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Cancel onBeforeSendHeaders in case of an exception.

2019-08-28 Thread dcf
commit 73719bb3fddaaddffba7554adabff55bb5bd12ea
Author: David Fifield 
Date:   Sat Mar 30 01:29:59 2019 -0600

Cancel onBeforeSendHeaders in case of an exception.

A typo during debugging caused the callback to crash and have no effect.
---
 webextension/browser/background.js | 5 +
 1 file changed, 5 insertions(+)

diff --git a/webextension/browser/background.js 
b/webextension/browser/background.js
index d26b744..c47d06b 100644
--- a/webextension/browser/background.js
+++ b/webextension/browser/background.js
@@ -192,6 +192,11 @@ async function roundtrip(request) {
 }
 let browserHeaders = details.requestHeaders.filter(x => 
!(x.name.toLowerCase() in overrides));
 return {requestHeaders: browserHeaders.concat(headers)};
+} catch (error) {
+// In case of any error in the code above, play it safe and cancel
+// the request.
+console.log(`${browser.runtime.id}: error in onBeforeSendHeaders: 
${error.message}`);
+return {cancel: true};
 } finally {
 // Now that the listener has been called, remove it and release the
 // lock to allow the next request to set a different listener.



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Set a webRequest.onErrorOccurred error logger.

2019-08-28 Thread dcf
commit 50f0d0b8a225befaf0d560d18a4df2ba30096f97
Author: David Fifield 
Date:   Wed Feb 20 19:40:46 2019 -0700

Set a webRequest.onErrorOccurred error logger.

This is what enabled me to find the proxyDNS problem fixed by the
previous commit. Without it, there was no error message in the browser
console.
---
 webextension/background.js | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/webextension/background.js b/webextension/background.js
index 7ad06fe..d5bbac7 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -277,6 +277,12 @@ browser.webRequest.onBeforeRequest.addListener(
 ["blocking"]
 );
 
+// Set a top-level error logger for webRequest, to aid debugging.
+browser.webRequest.onErrorOccurred.addListener(
+details => console.log(`${browser.runtime.id}: webRequest error:`, 
details),
+{urls: ["http://*/*;, "https://*/*"]}
+);
+
 // Allow unproxied DNS, working around a Tor Browser patch: 
https://bugs.torproject.org/11183#comment:6.
 // We manually override the proxy for every request, and in makeProxyInfo we 
set
 // proxyDNS:true wherever necessary, so name resolution uses the proxy despite



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Make the native extension work with GOARCH=386.

2019-08-28 Thread dcf
commit 663c0c69f76c0fc86ea06a56efc0719bc3d7c4ab
Author: David Fifield 
Date:   Thu Feb 21 10:49:50 2019 -0700

Make the native extension work with GOARCH=386.
---
 webextension/native/endian_386.go |  8 
 webextension/native/main.go   | 10 --
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/webextension/native/endian_386.go 
b/webextension/native/endian_386.go
new file mode 100644
index 000..6a1e44e
--- /dev/null
+++ b/webextension/native/endian_386.go
@@ -0,0 +1,8 @@
+// The WebExtension browser–app protocol uses native-endian length prefixes 
:/
+// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging#App_side
+
+package main
+
+import "encoding/binary"
+
+var NativeEndian = binary.LittleEndian
diff --git a/webextension/native/main.go b/webextension/native/main.go
index 5d071b3..9424715 100644
--- a/webextension/native/main.go
+++ b/webextension/native/main.go
@@ -138,8 +138,11 @@ func writeResponseSpec(w io.Writer, spec *responseSpec) 
error {
panic(err)
}
 
+   // len returns int, which is specified to be either 32 or 64 bits, so it
+   // will never be truncated when converting to uint64.
+   // https://golang.org/ref/spec#Numeric_types
length := len(encodedSpec)
-   if length > math.MaxUint32 {
+   if uint64(length) > math.MaxUint32 {
return fmt.Errorf("response spec is too long to represent: %d", 
length)
}
err = binary.Write(w, binary.BigEndian, uint32(length))
@@ -177,8 +180,11 @@ func recvWebExtensionMessage(r io.Reader) ([]byte, error) {
 // Send a WebExtension message.
 // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging#App_side
 func sendWebExtensionMessage(w io.Writer, message []byte) error {
+   // len returns int, which is specified to be either 32 or 64 bits, so it
+   // will never be truncated when converting to uint64.
+   // https://golang.org/ref/spec#Numeric_types
length := len(message)
-   if length > math.MaxUint32 {
+   if uint64(length) > math.MaxUint32 {
return fmt.Errorf("WebExtension message is too long to 
represent: %d", length)
}
err := binary.Write(w, NativeEndian, uint32(length))



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] New bugzilla numbers for proxy-related bugs.

2019-08-28 Thread dcf
commit 7d8af4043209065d4d226ad2f24725b9930fb4ee
Author: David Fifield 
Date:   Thu Mar 7 13:56:44 2019 -0700

New bugzilla numbers for proxy-related bugs.
---
 webextension/background.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/webextension/background.js b/webextension/background.js
index d5bbac7..d26b744 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -206,6 +206,7 @@ async function roundtrip(request) {
 let proxyCalled = false;
 // async to make exceptions visible to proxy.onError.
 // https://bugzilla.mozilla.org/show_bug.cgi?id=1528873#c1
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1533505
 async function proxyFn(details) {
 try {
 // Sanity assertion: per-request listeners are called at most once.
@@ -264,7 +265,7 @@ async function roundtrip(request) {
 // essentially a "can't happen" state under correct configuration. Note that
 // proxy.onError doesn't get called for transient errors like a failure to
 // connect to the proxy, only for nonsensical ProxyInfo configurations.
-// https://bugzilla.mozilla.org/show_bug.cgi?id=1528873
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1533509
 // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/onError
 let proxyError = null;
 browser.proxy.onError.addListener(error => {



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Revise webextension instructions.

2019-08-28 Thread dcf
commit a53ddab24652f72680a8dc917d826f5a780b9551
Author: David Fifield 
Date:   Thu Mar 7 14:45:16 2019 -0700

Revise webextension instructions.
---
 README  |  7 ++-
 webextension/README | 13 -
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/README b/README
index e2f04bd..35568b6 100644
--- a/README
+++ b/README
@@ -45,7 +45,9 @@ Reflector web app that runs on Google App Engine. The 
reflector simply
 copies requests and responses to an instance of meek-server somewhere.
 
 firefox:
-Browser extension for TLS camouflage.
+Browser extension for TLS camouflage. Only works with versions of
+Firefox below 60.0. Use the extension in the webextension for newer
+versions of Firefox.
 
 meek-client:
 The client transport plugin, run by a censored client.
@@ -70,6 +72,9 @@ terminateprocess-buffer:
 An auxiliary program used on Windows to assist with cleanup of
 subprocesses.
 
+webextension:
+Browser extension for TLS camouflage.
+
 wsgi:
 A WSGI Python reflector.
 
diff --git a/webextension/README b/webextension/README
index 5b958cb..2b40172 100644
--- a/webextension/README
+++ b/webextension/README
@@ -9,12 +9,16 @@ meek-client, because the extension cannot open a socket by 
itself.
 
 These instructions require Firefox 65.
 
+== Native component ==
+
 1. Compile the native application.
cd native && go build
 
 2. Edit native/meek.http.helper.json and set the "path" field to the
path to the native application.
-   "path": "/where/you/installed/native",
+   "path": "/path/to/meek/webextension/native/native",
+   More information:
+   
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging#App_manifest
 
 3. Copy the edited native/meek.http.helper.json file to the
OS-appropriate location.
@@ -24,11 +28,18 @@ These instructions require Firefox 65.
# other Unix
mkdir -p ~/.mozilla/native-messaging-hosts/
cp native/meek.http.helper.json ~/.mozilla/native-messaging-hosts/
+   # Windows
+   Open regedit.exe and create a new registry key:
+ 
HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\meek.http.helper
+   Set the default value to the path to meek.http.helper.json:
+ C:\path\to\meek\webextension\native\meek.http.helper.json
The meek.http.helper.json file is called the "host manifest" or "app
manifest" and it tells the browser where to find the native part of
the WebExtension. More information:

https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Manifest_location
 
+== Browser component ==
+
 4. Run Firefox in a terminal so you can see its stdout. In Firefox, go
to about:config and set
browser.dom.window.dump.enabled=true



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Use JavaScript compatible with Firefox 60.

2019-08-28 Thread dcf
commit 7e88a21ef8db19b55c3cdb3e34591c8fa1440fff
Author: David Fifield 
Date:   Wed Feb 20 18:18:17 2019 -0700

Use JavaScript compatible with Firefox 60.

Object.fromEntries is not available until 63:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/fromEntries#Browser_compatibility
---
 webextension/background.js | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/webextension/background.js b/webextension/background.js
index b43e614..00500a0 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -182,7 +182,10 @@ async function roundtrip(request) {
 let headers = Object.entries(request.header != null ? 
request.header : {})
 .map(x => ({name: x[0], value: x[1]}));
 // Remove all browser headers that conflict with requested headers.
-let overrides = Object.fromEntries(headers.map(x => 
[x.name.toLowerCase(), true]));
+let overrides = {};
+for (let name of Object.keys(headers)) {
+overrides[name.toLowerCase()] = true;
+}
 // Also remove some unnecessary or potentially tracking-enabling 
headers.
 for (let name of ["Accept", "Accept-Language", "Cookie", "Origin", 
"User-Agent"]) {
 overrides[name.toLowerCase()] = true;



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Minimal draft of WebExtension port of meek-http-helper.

2019-08-28 Thread dcf
commit 6ea203b85aa8d98548ff6ef7cff8ce501ee401c3
Author: David Fifield 
Date:   Wed Feb 13 19:30:30 2019 -0700

Minimal draft of WebExtension port of meek-http-helper.

Doesn't yet:
 * allow control of the Host header (domain fronting)
 * support a proxy
---
 webextension/README |  51 +
 webextension/background.js  | 159 +++
 webextension/manifest.json  |  22 ++
 webextension/meek.http.helper.json  |   9 +
 webextension/native/endian_amd64.go |   8 +
 webextension/native/main.go | 387 
 6 files changed, 636 insertions(+)

diff --git a/webextension/README b/webextension/README
new file mode 100644
index 000..a728842
--- /dev/null
+++ b/webextension/README
@@ -0,0 +1,51 @@
+Installation guide for the meek-http-helper WebExtension.
+
+The WebExtension is made of two parts: the extension and the native
+application. The extension itself is JavaScript, runs in the browser,
+and is responsible for making HTTP requests as instructed. The native
+application runs as a subprocess of the browser; its job is to open a
+localhost socket and act as an intermediary between the extension and
+meek-client, because the extension cannot open a socket by itself.
+
+These instructions require Firefox 65.
+
+1. Compile the native application.
+   cd native && go build
+
+2. Edit meek.http.helper.json and set the "path" field to the path to
+   the native application.
+   "path": "/where/you/installed/native",
+
+3. Copy the edited meek.http.helper.json file to the OS-appropriate
+   location.
+   # macOS
+   mkdir -p ~/"Library/Application Support/Mozilla/NativeMessagingHosts/"
+   cp meek.http.helper.json ~/"Library/Application 
Support/Mozilla/NativeMessagingHosts/"
+   # other Unix
+   mkdir -p ~/.mozilla/native-messaging-hosts/
+   cp meek.http.helper.json ~/.mozilla/native-messaging-hosts/
+   The meek.http.helper.json file is called the "host manifest" or "app
+   manifest" and it tells the browser where to find the native part of
+   the WebExtension. More information:
+   
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests#Manifest_location
+
+4. Run Firefox in a terminal so you can see its stdout. In Firefox, go
+   to about:config and set
+   browser.dom.window.dump.enabled=true
+   This enables the extension to write to stdout.
+
+5. In Firefox, go to about:debugging and click "Load Temporary
+   Add-on...". Find manifest.json and click Open.
+   More information:
+   
https://developer.mozilla.org/en-US/docs/Tools/about:debugging#Loading_a_temporary_add-on
+   In the terminal, you should see a line like this, with a random port
+   number in place of :
+   meek-http-helper: listen 127.0.0.1:
+
+Now the extension is running and ready to start making requests. You can
+run "meek-client --helper", passing it the correct port number :
+   UseBridges 1
+   ClientTransportPlugin meek exec ./meek-client --helper 127.0.0.1: 
--log meek-client.log
+   Bridge meek 0.0.2.0:1 url=https://meek.bamsoftware.com/
+
+To debug, open the browser console with Ctrl+Shift+J.
diff --git a/webextension/background.js b/webextension/background.js
new file mode 100644
index 000..ba56e7f
--- /dev/null
+++ b/webextension/background.js
@@ -0,0 +1,159 @@
+// This program is the browser part of the meek-http-helper WebExtension. Its
+// purpose is to receive and execute commands from the native part. It
+// understands two commands: "report-address" and "roundtrip".
+//
+//
+// {
+//   "command": "report-address",
+//   "address": "127.0.0.1:"
+// }
+// The "report-address" command causes the extension to print to a line to
+// stdout:
+//   meek-http-helper: listen 127.0.0.1:
+// meek-client looks for this line to find out where the helper is listening.
+// For this to work, you must set the pref browser.dom.window.dump.enabled.
+//
+//
+// {
+//   "command": "roundtrip",
+//   "id": "...ID..."
+//   "request": {
+// "method": "POST",
+// "url": "https://allowed.example/;,
+// "header": {
+//   "Host": "forbidden.example",
+//   "X-Session-Id": ...,
+//   ...
+// },
+// "proxy": {
+//   "type": "http",
+//   "host": "proxy.example",
+//   "port": 8080
+// },
+// "body": "...base64..."
+//   }
+// }
+// The "roundtrip" command causes the extension to make an HTTP request
+// according to the given specification. It then sends a response back to the
+// native part:
+// {
+//   "id": "...ID...",
+//   "response": {
+// "status": 200,
+// "body": "...base64..."
+//   }
+// }
+// Or, if an error occurred:
+// {
+//   "id": "...ID...",
+//   "response": {
+// "error": "...error message..."
+//   }
+// }
+// The "id" field in the response will be the same as the one in the request,
+// because that is what enables the native part to match up requests 

[tor-commits] [meek/master] Allow overriding the request headers.

2019-08-28 Thread dcf
commit 0a0ab758b0442ba5561d0a0fff343604e794ef72
Author: David Fifield 
Date:   Fri Feb 15 13:14:43 2019 -0700

Allow overriding the request headers.

The fetch API itself doesn't let you change certain headers, notably
including Host which we need for domain fronting. So instead, we set an
onBeforeSendHeaders listener, with a lock to cause this shared global
setting to be used by only one request at a time.
---
 webextension/background.js | 78 +++---
 webextension/manifest.json |  2 ++
 2 files changed, 75 insertions(+), 5 deletions(-)

diff --git a/webextension/background.js b/webextension/background.js
index 8092352..1ffb828 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -79,6 +79,27 @@ function base64_encode(dec_buf) {
 return btoa(dec_str);
 }
 
+// A Mutex's lock function returns a promise that resolves to a function which,
+// when called, allows the next call to lock to proceed.
+// https://stackoverflow.com/a/51086893
+function Mutex() {
+// Initially unlocked.
+let p = Promise.resolve();
+this.lock = function() {
+let old_p = p;
+let unlock;
+// Make a new promise for the *next* caller to wait on. Copy the new
+// promise's resolve function into the outer scope as "unlock".
+p = new Promise(resolve => unlock = resolve);
+// The caller gets a promise that allows them to unlock the *next*
+// caller.
+return old_p.then(() => unlock);
+}
+}
+
+// Enforces exclusive access for onBeforeSendHeaders listeners.
+const headersMutex = new Mutex();
+
 async function roundtrip(request) {
 // Process the incoming request spec and convert it into parameters to the
 // fetch API. Also enforce some restrictions on what kinds of requests we
@@ -100,9 +121,8 @@ async function roundtrip(request) {
 }
 init.method = request.method;
 
-if (request.header != null) {
-init.headers = request.header;
-}
+// Don't set init.headers; that handled in the onBeforeSendHeaders
+// listener.
 
 if (request.body != null && request.body !== "") {
 init.body = base64_decode(request.body);
@@ -115,21 +135,69 @@ async function roundtrip(request) {
 // Don't follow redirects (we'll get resp.status:0 if there is one).
 init.redirect = "manual";
 
-// TODO: Host header
 // TODO: strip Origin header?
 // TODO: proxy
 } catch (error) {
 return {error: `request spec failed valiation: ${error.message}`};
 }
 
-// Now actually do the request and build a response object.
+// We need to use an onBeforeSendHeaders to override certain header fields,
+// including Host (passing them to fetch in init.headers does not work). 
But
+// onBeforeSendHeaders is a global setting (applies to all requests) and we
+// need to be able to set different headers per request. We make it so that
+// any onBeforeSendHeaders listener is only used for a single request, by
+// acquiring a lock here and releasing it within the listener itself. The
+// lock is acquired and released before any network communication happens;
+// i.e., it's fast.
+let headersUnlock = await headersMutex.lock();
+let headersCalled = false;
+function headersFn(details) {
+try {
+// Sanity assertion: any given listener is called at most once.
+if (headersCalled) {
+throw new Error("headersFn called more than once");
+}
+headersCalled = true;
+
+// Convert request.header from object to array form.
+// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/HttpHeaders
+let headers = Object.entries(request.header != null ? 
request.header : {})
+.map(x => ({name: x[0], value: x[1]}));
+// Remove all browser headers that conflict with requested headers.
+let overrides = Object.fromEntries(headers.map(x => 
[x.name.toLowerCase(), true]));
+let browserHeaders = details.requestHeaders.filter(x => 
!(x.name.toLowerCase() in overrides));
+return {requestHeaders: browserHeaders.concat(headers)};
+} finally {
+// Now that the listener has been called, remove it and release the
+// lock to allow the next request to set different listener.
+browser.webRequest.onBeforeSendHeaders.removeListener(headersFn);
+headersUnlock();
+}
+};
+
 try {
+// Set our listener that overrides the headers for this request.
+// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeSendHeaders
+browser.webRequest.onBeforeSendHeaders.addListener(
+headersFn,
+{"urls": ["http://*/*;, "https://*/*"]},
+

[tor-commits] [meek/master] Set network.proxy.socks_remote_dns=false inside the WebExtension.

2019-08-28 Thread dcf
commit ce6633c8be5a4b1d85106ef2ecc02cb29d97d9ac
Author: David Fifield 
Date:   Wed Feb 20 19:26:48 2019 -0700

Set network.proxy.socks_remote_dns=false inside the WebExtension.

This is to work around a Firefox patch that otherwise prevents DNS
requests from being made when proxyType=="direct".

Compare to

https://gitweb.torproject.org/pluggable-transports/meek.git/commit/?id=32ca07ca008f5d09492f4d2782130bd54c52acf5
---
 webextension/background.js | 16 
 1 file changed, 16 insertions(+)

diff --git a/webextension/background.js b/webextension/background.js
index 00500a0..7ad06fe 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -277,6 +277,22 @@ browser.webRequest.onBeforeRequest.addListener(
 ["blocking"]
 );
 
+// Allow unproxied DNS, working around a Tor Browser patch: 
https://bugs.torproject.org/11183#comment:6.
+// We manually override the proxy for every request, and in makeProxyInfo we 
set
+// proxyDNS:true wherever necessary, so name resolution uses the proxy despite
+// this pref.
+//
+// In Tor Browser, the pref changes here are only temporary. The
+// meek-http-helper profile has a user.js file that sets a default blackhole
+// proxy, as a safety feature in case something goes wrong running the headless
+// browser.
+//
+// We only care to set proxyDNS here, but must additionally set proxyType until
+// Firefox 63 because of a bug.
+// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/settings
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1487121
+browser.proxy.settings.set({value: {proxyType: "system", proxyDNS: false}});
+
 // Connect to our native process.
 let port = browser.runtime.connectNative("meek.http.helper");
 



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Make roundtrip async.

2019-08-28 Thread dcf
commit 108a89f60bc3b7617c0e8556cbcefefc8926d1da
Author: David Fifield 
Date:   Fri Feb 15 12:08:01 2019 -0700

Make roundtrip async.

roundtrip doesn't need to know the ID; tack that on in the onMessage
listener.
---
 webextension/background.js | 28 +---
 1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/webextension/background.js b/webextension/background.js
index fd39273..8092352 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -79,7 +79,7 @@ function base64_encode(dec_buf) {
 return btoa(dec_str);
 }
 
-function roundtrip(id, request) {
+async function roundtrip(request) {
 // Process the incoming request spec and convert it into parameters to the
 // fetch API. Also enforce some restrictions on what kinds of requests we
 // are willing to make.
@@ -119,28 +119,26 @@ function roundtrip(id, request) {
 // TODO: strip Origin header?
 // TODO: proxy
 } catch (error) {
-port.postMessage({id, response: {error: `request spec failed 
valiation: ${error.message}`}});
-return;
+return {error: `request spec failed valiation: ${error.message}`};
 }
 
-// Now actually do the request and send the result back to the native
-// process.
-fetch(url, init)
-.then(resp => resp.arrayBuffer().then(body => ({
-status: resp.status,
-body: base64_encode(body),
-})))
+// Now actually do the request and build a response object.
+try {
+let resp = await fetch(url, init);
+let body = await resp.arrayBuffer();
+return {status: resp.status, body: base64_encode(body)};
+} catch (error) {
 // Convert any errors into an error response.
-.catch(error => ({error: error.message}))
-// Send the response (success or failure) back to the requester, tagged
-// with its ID.
-.then(response => port.postMessage({id, response}));
+return {error: error.message};
+}
 }
 
 port.onMessage.addListener((message) => {
 switch (message.command) {
 case "roundtrip":
-roundtrip(message.id, message.request);
+// Do a roundtrip and send the result back to the native process.
+roundtrip(message.request)
+.then(response => port.postMessage({id: message.id, 
response}));
 break;
 case "report-address":
 // Tell meek-client where our subprocess (the one that actually



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Minor typo and style fixes.

2019-08-28 Thread dcf
commit 1ab1ad40006b040c2d49a1f4de6380245dad5d0a
Author: David Fifield 
Date:   Mon Feb 18 16:37:29 2019 -0700

Minor typo and style fixes.
---
 webextension/background.js | 38 --
 1 file changed, 20 insertions(+), 18 deletions(-)

diff --git a/webextension/background.js b/webextension/background.js
index da3d118..5aab472 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -54,8 +54,6 @@
 // because that is what enables the native part to match up requests and
 // responses.
 
-let port = browser.runtime.connectNative("meek.http.helper");
-
 // Decode a base64-encoded string into an ArrayBuffer.
 function base64_decode(enc_str) {
 // First step is to decode the base64. atob returns a byte string; i.e., a
@@ -97,7 +95,7 @@ function Mutex() {
 }
 }
 
-// Enforces exclusive access for onBeforeSendHeaders listeners.
+// Enforces exclusive access to onBeforeSendHeaders listeners.
 const headersMutex = new Mutex();
 
 async function roundtrip(request) {
@@ -136,21 +134,22 @@ async function roundtrip(request) {
 
 // TODO: proxy
 
-// We need to use an onBeforeSendHeaders to override certain header fields,
-// including Host (passing them to fetch in init.headers does not work). 
But
-// onBeforeSendHeaders is a global setting (applies to all requests) and we
-// need to be able to set different headers per request. We make it so that
-// any onBeforeSendHeaders listener is only used for a single request, by
-// acquiring a lock here and releasing it within the listener itself. The
-// lock is acquired and released before any network communication happens;
-// i.e., it's fast.
+// We need to use a webRequest.onBeforeSendHeaders listener to override
+// certain header fields, including Host (passing them to fetch in
+// init.headers does not work). But onBeforeSendHeaders is a global setting
+// (applies to all requests) and we need to be able to set different 
headers
+// per request. We make it so that any onBeforeSendHeaders listener is only
+// used for a single request, by acquiring a lock here and releasing it
+// within the listener itself. The lock is acquired and released before any
+// network communication happens; i.e., it's fast.
 let headersUnlock = await headersMutex.lock();
 let headersCalled = false;
 function headersFn(details) {
 try {
-// Sanity assertion: any given listener is called at most once.
+// Sanity assertion: per-request listeners are called at most once.
 if (headersCalled) {
-throw new Error("headersFn called more than once");
+console.log("headersFn called more than once");
+return {cancel: true};
 }
 headersCalled = true;
 
@@ -168,18 +167,18 @@ async function roundtrip(request) {
 return {requestHeaders: browserHeaders.concat(headers)};
 } finally {
 // Now that the listener has been called, remove it and release the
-// lock to allow the next request to set different listener.
+// lock to allow the next request to set a different listener.
 browser.webRequest.onBeforeSendHeaders.removeListener(headersFn);
 headersUnlock();
 }
-};
+}
 
 try {
 // Set our listener that overrides the headers for this request.
 // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeSendHeaders
 browser.webRequest.onBeforeSendHeaders.addListener(
 headersFn,
-{"urls": ["http://*/*;, "https://*/*"]},
+{urls: ["http://*/*;, "https://*/*"]},
 ["blocking", "requestHeaders"]
 );
 
@@ -197,7 +196,10 @@ async function roundtrip(request) {
 }
 }
 
-port.onMessage.addListener((message) => {
+// Connect to our native process.
+let port = browser.runtime.connectNative("meek.http.helper");
+
+port.onMessage.addListener(message => {
 switch (message.command) {
 case "roundtrip":
 // Do a roundtrip and send the result back to the native process.
@@ -221,7 +223,7 @@ port.onMessage.addListener((message) => {
 }
 });
 
-port.onDisconnect.addListener((p) => {
+port.onDisconnect.addListener(p => {
 // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port#Type
 // "Note that in Google Chrome port.error is not supported: instead, use
 // runtime.lastError to get the error message."



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [meek/master] Factor out roundTrip separate from handleConn.

2019-08-28 Thread dcf
commit 40e2c17304f43edfd25e67f46075d60499e9435e
Author: David Fifield 
Date:   Mon Feb 18 16:25:01 2019 -0700

Factor out roundTrip separate from handleConn.

In handleConn, take any error that roundTrip produces, and wrap it in a
responseSpec that has an Error member set. This allows us to return an
error object back to meek-client in cases like this:
$ printf 
'\x00\x00\x00\x44{"method":"POST","url":"https://meek.bamsoftware.com/","body":"abc"}'
 | ncat 127.0.0.1 1234
→ \x00\x00\x00\x2f{"error":"illegal base64 data at input byte 0"}
In this way, we separate errors that occur during the roundtrip from
errors that occur while writing the response back to the socker.
---
 webextension/native/main.go | 64 ++---
 1 file changed, 37 insertions(+), 27 deletions(-)

diff --git a/webextension/native/main.go b/webextension/native/main.go
index 4c66993..25fdab3 100644
--- a/webextension/native/main.go
+++ b/webextension/native/main.go
@@ -46,7 +46,7 @@ const (
 
 // We receive multiple (possibly concurrent) connections over our listening
 // socket, and we must multiplex all their requests/responses to/from the
-// browser over the single shared stdio stream. When handleConn sends a
+// browser over the single shared stdio stream. When roundTrip sends a
 // webExtensionRoundTripRequest to the browser, creates a channel to receive 
the
 // response, and stores the ID–channel mapping in requestResponseMap. When
 // inFromBrowserLoop receives a webExtensionRoundTripResponse from the browser,
@@ -189,30 +189,27 @@ func sendWebExtensionMessage(w io.Writer, message []byte) 
error {
return err
 }
 
-// Handle a socket connection, which is used for one request–response 
roundtrip
-// through the browser. We read a responseSpec from the socket and wrap it in a
-// webExtensionRoundTripRequest, tagging it with a random ID. We register the 
ID
-// in requestResponseMap and forward the webExtensionRoundTripRequest to the
-// browser. Then we wait for the browser to send back a
-// webExtensionRoundTripResponse, which actually happens in inFromBrowserLoop.
-// inFromBrowserLoop uses the ID to find this goroutine again.
-func handleConn(conn net.Conn, outToBrowserChan chan<- []byte) error {
-   defer conn.Close()
-
+// Read a responseSpec from the socket and wrap it in a
+// webExtensionRoundTripRequest, tagging it with a random ID. Register the ID 
in
+// requestResponseMap and forward the webExtensionRoundTripRequest to the
+// browser. Wait for the browser to send back a webExtensionRoundTripResponse
+// (which actually happens in inFromBrowserLoop--that function uses the ID to
+// find this goroutine again). Return a responseSpec object or an error.
+func roundTrip(conn net.Conn, outToBrowserChan chan<- []byte) (*responseSpec, 
error) {
err := conn.SetReadDeadline(time.Now().Add(localReadTimeout))
if err != nil {
-   return err
+   return nil, err
}
req, err := readRequestSpec(conn)
if err != nil {
-   return err
+   return nil, err
}
 
// Generate an ID that will allow us to match a response to this 
request.
idRaw := make([]byte, 8)
_, err = rand.Read(idRaw)
if err != nil {
-   return err
+   return nil, err
}
id := hex.EncodeToString(idRaw)
 
@@ -238,28 +235,41 @@ func handleConn(conn net.Conn, outToBrowserChan chan<- 
[]byte) error {
// Now wait for the browser to send the response back to us.
// inFromBrowserLoop will find the proper channel by looking up the ID
// in requestResponseMap.
+   var resp *responseSpec
timeout := time.NewTimer(roundTripTimeout)
select {
-   case resp := <-responseSpecChan:
+   case resp = <-responseSpecChan:
timeout.Stop()
-   // Encode the response send it back out over the socket.
-   err = conn.SetWriteDeadline(time.Now().Add(localWriteTimeout))
-   if err != nil {
-   return err
-   }
-   err = writeResponseSpec(conn, resp)
-   if err != nil {
-   return err
-   }
case <-timeout.C:
// But don't wait forever, so as to allow reclaiming memory in
// case of a malfunction elsewhere.
requestResponseMapLock.Lock()
delete(requestResponseMap, id)
requestResponseMapLock.Unlock()
+   err = fmt.Errorf("timed out waiting for browser to reply")
}
+   return resp, err
+}
 
-   return nil
+// Handle a socket connection, which is used for one request–response 
roundtrip
+// through the browser. Delegates the real work to roundTrip, which reads the
+// requestSpec from the socket and sends it through the browser. Here, we wrap

[tor-commits] [meek/master] Allow specifying a proxy.

2019-08-28 Thread dcf
commit 20af52a95d2d07ec43dc2299e1c064fb7c632051
Author: David Fifield 
Date:   Tue Feb 19 00:44:15 2019 -0700

Allow specifying a proxy.

Just like with headers, we can only control the proxy through a global
event listener, namely proxy.onRequest. We use the same scheme of
locking modifications to the events so that only one request at a time
is affected.
---
 webextension/background.js  | 68 -
 webextension/manifest.json  |  1 +
 webextension/native/main.go |  2 +-
 3 files changed, 63 insertions(+), 8 deletions(-)

diff --git a/webextension/background.js b/webextension/background.js
index 5aab472..3b24a37 100644
--- a/webextension/background.js
+++ b/webextension/background.js
@@ -77,6 +77,31 @@ function base64_encode(dec_buf) {
 return btoa(dec_str);
 }
 
+// Return a proxy.ProxyInfo according to the given specification.
+//
+// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/ProxyInfo
+// The specification may look like:
+//   undefined
+//   {"type": "http", "host": "example.com", "port": 8080}
+//   {"type": "socks5", "host": "example.com", "port": 1080}
+//   {"type": "socks4a", "host": "example.com", "port": 1080}
+function makeProxyInfo(spec) {
+if (spec == null) {
+return {type: "direct"};
+}
+switch (spec.type) {
+case "http":
+return {type: "http", host: spec.host, port: spec.port};
+// What tor calls "socks5", WebExtension calls "socks".
+case "socks5":
+return {type: "socks", host: spec.host, port: spec.port, proxyDNS: 
true};
+// What tor calls "socks4a", WebExtension calls "socks4".
+case "socks4a":
+return {type: "socks4", host: spec.host, port: spec.port, 
proxyDNS: true};
+};
+throw new Error(`unknown proxy type ${spec.type}`);
+}
+
 // A Mutex's lock function returns a promise that resolves to a function which,
 // when called, allows the next call to lock to proceed.
 // https://stackoverflow.com/a/51086893
@@ -95,8 +120,9 @@ function Mutex() {
 }
 }
 
-// Enforces exclusive access to onBeforeSendHeaders listeners.
+// Enforce exclusive access to onBeforeSendHeaders and onRequest listeners.
 const headersMutex = new Mutex();
+const proxyMutex = new Mutex();
 
 async function roundtrip(request) {
 // Process the incoming request spec and convert it into parameters to the
@@ -132,8 +158,6 @@ async function roundtrip(request) {
 // Don't follow redirects (we'll get resp.status:0 if there is one).
 init.redirect = "manual";
 
-// TODO: proxy
-
 // We need to use a webRequest.onBeforeSendHeaders listener to override
 // certain header fields, including Host (passing them to fetch in
 // init.headers does not work). But onBeforeSendHeaders is a global setting
@@ -173,6 +197,27 @@ async function roundtrip(request) {
 }
 }
 
+// Similarly, for controlling the proxy for each request, we set a
+// proxy.onRequest listener, use it for one request, then remove it.
+let proxyUnlock = await proxyMutex.lock();
+let proxyCalled = false;
+// async to make exceptions visible to proxy.onError.
+// https://bugzilla.mozilla.org/show_bug.cgi?id=1528873#c1
+async function proxyFn(details) {
+try {
+// Sanity assertion: per-request listeners are called at most once.
+if (proxyCalled) {
+throw new Error("proxyFn called more than once");
+}
+proxyCalled = true;
+
+return makeProxyInfo(request.proxy);
+} finally {
+browser.proxy.onRequest.removeListener(proxyFn);
+proxyUnlock();
+}
+}
+
 try {
 // Set our listener that overrides the headers for this request.
 // 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeSendHeaders
@@ -181,18 +226,27 @@ async function roundtrip(request) {
 {urls: ["http://*/*;, "https://*/*"]},
 ["blocking", "requestHeaders"]
 );
+// Set our listener that overrides the proxy for this request.
+// 
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/onRequest
+browser.proxy.onRequest.addListener(
+proxyFn,
+{urls: ["http://*/*;, "https://*/*"]}
+);
 
 // Now actually do the request and build a response object.
 let resp = await fetch(url, init);
 let body = await resp.arrayBuffer();
 return {status: resp.status, body: base64_encode(body)};
 } finally {
-// With certain errors (e.g. an invalid URL), the onBeforeSendHeaders
-// listener may never get called, and therefore never release its lock.
-// Ensure that locks are released and listeners removed in any case.
-// It's safe to release a lock or remove a listener more than once.
+

  1   2   >