tbb-commits
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 20048 discussions
commit 0520c426f6a6b7997962ca53b4ca154ce5285dc0
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Sep 9 17:45:29 2016 +0000
Release preparations for 1.9.6.2
---
src/CHANGELOG | 8 ++++++++
src/install.rdf | 2 +-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index cd5ce27..25c4c95 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,3 +1,11 @@
+1.9.6.2
+ * Bug 18589: Clear site security settings during New Identity
+ * Bug 19906: "Maximizing Tor Browser" Notification can exist multiple times
+ * Bug 19837: Whitelist internal URLs that Firefox requires for media
+ * Bug 15852: Remove/synchronize Torbutton SOCKS pref logic
+ * Bug 19733: GETINFO response parser doesn't handle AF_UNIX entries + IPv6
+ * Bug 14271: Make Torbutton work with Unix Domain Socket option
+
1.9.6.1
* Bug 19206: Avoid SOCKS auth and NEWNYM collisions when sharing a tor client
* Bug 19417: Disable asm.js (but add code to clear on New Identity if enabled)
diff --git a/src/install.rdf b/src/install.rdf
index e33fdb9..5936299 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
<em:name>Torbutton</em:name>
<em:creator>Mike Perry</em:creator>
<em:id>torbutton(a)torproject.org</em:id>
- <em:version>1.9.6.1</em:version>
+ <em:version>1.9.6.2</em:version>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html.en</em:homepageURL>
<em:optionsURL>chrome://torbutton/content/preferences.xul</em:optionsURL>
<em:iconURL>chrome://torbutton/skin/tor.png</em:iconURL>
1
0
commit a84c726d08e9661a860eb3e8288f3acb1cc23f58
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri Sep 9 17:41:53 2016 +0000
Translation updates
---
src/chrome/locale/ar/aboutTor.dtd | 4 ++--
src/chrome/locale/es/torbutton.dtd | 6 +++---
src/chrome/locale/eu/aboutDialog.dtd | 12 ++++++------
src/chrome/locale/eu/aboutTBUpdate.dtd | 10 +++++-----
src/chrome/locale/eu/torbutton.dtd | 12 ++++++------
src/chrome/locale/eu/torbutton.properties | 20 ++++++++++----------
src/chrome/locale/fa/torbutton.properties | 2 +-
src/chrome/locale/nl/aboutDialog.dtd | 2 +-
src/chrome/locale/nl/torbutton.dtd | 2 +-
src/chrome/locale/pt/torbutton.properties | 4 ++--
src/chrome/locale/ru/aboutDialog.dtd | 2 +-
src/chrome/locale/ru/aboutTBUpdate.dtd | 6 +++---
src/chrome/locale/ru/aboutTor.dtd | 2 +-
src/chrome/locale/ru/brand.dtd | 2 +-
src/chrome/locale/vi/aboutTBUpdate.dtd | 2 +-
src/chrome/locale/vi/aboutTor.dtd | 2 +-
src/chrome/locale/vi/torbutton.dtd | 2 +-
src/chrome/locale/zh-CN/aboutDialog.dtd | 2 +-
src/chrome/locale/zh-CN/aboutTBUpdate.dtd | 8 ++++----
src/chrome/locale/zh-CN/aboutTor.dtd | 2 +-
src/chrome/locale/zh-CN/torbutton.dtd | 6 +++---
21 files changed, 55 insertions(+), 55 deletions(-)
diff --git a/src/chrome/locale/ar/aboutTor.dtd b/src/chrome/locale/ar/aboutTor.dtd
index 8945674..bf90b4f 100644
--- a/src/chrome/locale/ar/aboutTor.dtd
+++ b/src/chrome/locale/ar/aboutTor.dtd
@@ -6,13 +6,13 @@
<!ENTITY aboutTor.title "عن تور">
-<!ENTITY aboutTor.outOfDateTorOn.label "هذا المتصفح خارج التحديث">
+<!ENTITY aboutTor.outOfDateTorOn.label "تحذير: هذه نسخة قديمة من المتصفح.">
<!ENTITY aboutTor.outOfDateTorOff.label "أيضاً، هذه نسخة قديمة من المتصفح.">
<!ENTITY aboutTor.outOfDate2.label "اضغط على رمز البصلة ثم اختر "تحقق من تحديثات متصفح تور"">
<!ENTITY aboutTor.check.label "اختبر إعدادات شبكة تور.">
-<!ENTITY aboutTor.success.label "مرحبا بك في متصفح تور">
+<!ENTITY aboutTor.success.label "أهلاً بك في متصفح تور">
<!ENTITY aboutTor.success2.label "تم الإتصال بشبكة تور">
<!ENTITY aboutTor.success3.label "يمكنك الآن تصفح الانترنت بشكل يحمي هويتك.">
<!ENTITY aboutTor.failure.label "حدث خطأ ما!">
diff --git a/src/chrome/locale/es/torbutton.dtd b/src/chrome/locale/es/torbutton.dtd
index 40c1270..57f4be5 100644
--- a/src/chrome/locale/es/torbutton.dtd
+++ b/src/chrome/locale/es/torbutton.dtd
@@ -18,7 +18,7 @@
<!ENTITY torbutton.cookiedialog.domainCol "Servidor (host)">
<!ENTITY torbutton.cookiedialog.nameCol "Nombre">
<!ENTITY torbutton.cookiedialog.pathCol "Ruta">
-<!ENTITY torbutton.cookiedialog.protectCookie "Proteger cookie">
+<!ENTITY torbutton.cookiedialog.protectCookie "Cookie protegida">
<!ENTITY torbutton.cookiedialog.removeCookie "Eliminar cookie">
<!ENTITY torbutton.cookiedialog.unprotectCookie "Desproteger cookie">
<!ENTITY torbutton.cookiedialog.removeAllBut "Eliminar todas excepto las protegidas">
@@ -28,7 +28,7 @@
<!ENTITY torbutton.prefs.block_disk "No registrar historial de navegación o datos del sitio web (habilita Modo de Navegación Privada)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restringir cookies de terceros y otros datos de seguimiento">
<!ENTITY torbutton.prefs.block_plugins "Desactivar complementos del navegador (como Flash)">
-<!ENTITY torbutton.prefs.resist_fingerprinting "Cambiar los detalles que le distinguen de otros usuarios de Navegador Tor">
+<!ENTITY torbutton.prefs.resist_fingerprinting "Cambiar los detalles que le distinguen de otros usuarios del Navegador Tor">
<!ENTITY torbutton.prefs.sec_caption "Nivel de Seguridad">
<!ENTITY torbutton.prefs.sec_low "Bajo (por defecto)">
<!ENTITY torbutton.prefs.sec_low_usable_desc "Esto proporciona la mejor experiencia de usabilidad.">
@@ -37,7 +37,7 @@
<!ENTITY torbutton.prefs.sec_med_low "Medio-Bajo">
<!ENTITY torbutton.prefs.sec_gen_desc "En este nivel de seguridad, se aplican los siguientes cambios (ratón encima para detalles):">
<!ENTITY torbutton.prefs.sec_html5_desc "Los medios de vídeo y audio HTML5 se vuelven tipo clic-para-reproducir mediante NoScript.">
-<!ENTITY torbutton.prefs.sec_html5_tooltip "En algunos sitios, podría necesitar usar el botón de barra de herramientas de NoScript para habilitar estos objetos de medios.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "En algunos sitios, podría necesitar usar el botón NoScript de barra de herramientas para habilitar estos objetos de medios.">
<!ENTITY torbutton.prefs.sec_some_jit_desc "Algunas optimizaciones de rendimiento de JavaScript están deshabilitadas.">
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT (compilador JS instantáneo optimizado), Type Inference (deducción del tipo de datos por el compilador), ASM.JS (JS intermedio para alto rendimiento de otros lenguajes)">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT (compilador JS instantáneo)">
diff --git a/src/chrome/locale/eu/aboutDialog.dtd b/src/chrome/locale/eu/aboutDialog.dtd
index 93819b7..08f9426 100644
--- a/src/chrome/locale/eu/aboutDialog.dtd
+++ b/src/chrome/locale/eu/aboutDialog.dtd
@@ -1,19 +1,19 @@
-<!ENTITY project.start "&brandShortName; is developed by ">
+<!ENTITY project.start "&brandShortName; garatzen du ">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
-<!ENTITY project.tpoLink "the &vendorShortName;">
-<!ENTITY project.end ", a nonprofit working to defend your privacy and freedom online.">
+<!ENTITY project.tpoLink "&vendorShortName;">
+<!ENTITY project.end ", irabazi asmorik gabeko eta zure sareko askatasun eta pribatutasuna defendatzen duen erakunde bat.">
<!ENTITY help.start "Lagundu nahi duzu?">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
<!ENTITY help.donateLink "Egizu dohaintza">
-<!ENTITY help.or " or ">
+<!ENTITY help.or "edo">
<!-- LOCALIZATION NOTE (help.getInvolvedLink): This is a link title that links to https://www.torproject.org/getinvolved/volunteer.html.en -->
<!ENTITY help.getInvolvedLink "egizu bat">
<!ENTITY help.end "!">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/docs/trademark-faq.html.en -->
<!ENTITY bottomLinks.questions "Galderarik?">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to https://www.torproject.org/getinvolved/relays -->
-<!ENTITY bottomLinks.grow "Help the Tor Network Grow!">
+<!ENTITY bottomLinks.grow "Lagundu Tor sarea hazten!">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
<!ENTITY bottomLinks.license "Lizentziei Buruzko Informazioa">
-<!ENTITY tor.TrademarkStatement "'Tor' and the 'Onion Logo' are registered trademarks of the Tor Project, Inc.">
+<!ENTITY tor.TrademarkStatement "'Tor' eta 'Onion Logo' Tor Project, Inc.ren marka erregistratuak dira.">
diff --git a/src/chrome/locale/eu/aboutTBUpdate.dtd b/src/chrome/locale/eu/aboutTBUpdate.dtd
index 37567bd..5f2178b 100644
--- a/src/chrome/locale/eu/aboutTBUpdate.dtd
+++ b/src/chrome/locale/eu/aboutTBUpdate.dtd
@@ -1,6 +1,6 @@
-<!ENTITY aboutTBUpdate.title "Tor Browser Update">
-<!ENTITY aboutTBUpdate.updated "Tor Browser has been updated.">
-<!ENTITY aboutTBUpdate.linkPrefix "For the most up-to-date information about this release, ">
-<!ENTITY aboutTBUpdate.linkLabel "visit our website">
+<!ENTITY aboutTBUpdate.title "Tor nabigatzailearen eguneraketa">
+<!ENTITY aboutTBUpdate.updated "Tor nabigatzailea eguneratu egin da.">
+<!ENTITY aboutTBUpdate.linkPrefix "Eguneraketa honen inguruko azken informazioa lortzeko,">
+<!ENTITY aboutTBUpdate.linkLabel "ikusi ezazu gure webgunea">
<!ENTITY aboutTBUpdate.linkSuffix ".">
-<!ENTITY aboutTBUpdate.changeLogHeading "Changelog:">
+<!ENTITY aboutTBUpdate.changeLogHeading "Aldaketen zerrenda:">
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 6ee2509..c92b7f5 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -42,22 +42,22 @@
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
<!ENTITY torbutton.prefs.sec_jit_slower_desc "Scripts on some sites may run slower.">
-<!ENTITY torbutton.prefs.sec_jar_desc "Remote JAR files are blocked.">
-<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR files are extremely rare on the web, but can be a source of XSS and other attacks.">
+<!ENTITY torbutton.prefs.sec_jar_desc "Urruneko JAR fitxategiak blokeatuta daude.">
+<!ENTITY torbutton.prefs.sec_jar_tooltip "JAR fitxategiak oso bitxiak dira webean, baina XSS eta beste eraso batzuen jatorria izan daitezke.">
<!ENTITY torbutton.prefs.sec_mathml_desc "Some mechanisms of displaying math equations are disabled.">
-<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML is disabled.">
+<!ENTITY torbutton.prefs.sec_mathml_desc_tooltip "MathML ezgaituta dago.">
<!ENTITY torbutton.prefs.sec_med_high "Ertaina-altua">
<!ENTITY torbutton.prefs.sec_all_jit_desc "All JavaScript performance optimizations are disabled.">
<!ENTITY torbutton.prefs.sec_font_rend_desc "Some font rendering features are disabled.">
<!ENTITY torbutton.prefs.sec_font_rend_graphite_tooltip "The Graphite font rendering mechanism is disabled.">
<!ENTITY torbutton.prefs.sec_svg_desc "Some types of images are disabled.">
-<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG images are disabled.">
+<!ENTITY torbutton.prefs.sec_svg_desc_tooltip "SVG irudiak ezgaituta daude.">
<!ENTITY torbutton.prefs.sec_js_https_desc "JavaScript is disabled by default on all non-HTTPS sites.">
<!ENTITY torbutton.prefs.sec_js_desc_tooltip "JavaScript can be enabled on a per-site basis via the NoScript toolbar button.">
<!ENTITY torbutton.prefs.sec_high "Altua">
<!ENTITY torbutton.prefs.sec_all_js_desc "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_webfonts_desc "Some fonts and icons may display incorrectly.">
-<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Website-provided font files are blocked.">
+<!ENTITY torbutton.prefs.sec_webfonts_desc_tooltip "Webguneak hornitutako letra fitxategiak blokeatuta daude.">
<!ENTITY torbutton.prefs.sec_custom "Balio pertsonalizatuak">
-<!ENTITY torbutton.circuit_display.title "Tor circuit for this site">
+<!ENTITY torbutton.circuit_display.title "Gune honetako Tor zirkuitua">
diff --git a/src/chrome/locale/eu/torbutton.properties b/src/chrome/locale/eu/torbutton.properties
index fcc3b15..0799da2 100644
--- a/src/chrome/locale/eu/torbutton.properties
+++ b/src/chrome/locale/eu/torbutton.properties
@@ -2,10 +2,10 @@ torbutton.circuit_display.internet = Internet
torbutton.circuit_display.ip_unknown = IP ezezaguna
torbutton.circuit_display.onion_site = Onion webgunea
torbutton.circuit_display.this_browser = Nagibatzaile hau
-torbutton.circuit_display.relay = relay
+torbutton.circuit_display.relay = errele
torbutton.circuit_display.tor_bridge = Zubia
torbutton.circuit_display.unknown_country = Herrialde ezezaguna
-torbutton.content_sizer.margin_tooltip = Tor Browser adds this margin to make the width and height of your window less distinctive, and thus reduces the ability of people to track you online.
+torbutton.content_sizer.margin_tooltip = Tor nabigatzaileak marjin hau gehitzen du zure lehioaren zabalera eta altuera ez hain bereizgarria egiteko, horrela norbaitek zure jarraipena egiteko gaitasuna murriztuz.
torbutton.panel.tooltip.disabled = Sakatu Tor gaitzeko
torbutton.panel.tooltip.enabled = Sakatu Tor ezgaitzeko
torbutton.panel.label.disabled = Tor Ezgaitua
@@ -26,12 +26,12 @@ torbutton.popup.short_torbrowser = Torbutton informazio garrantzitsua!\n\nTorbut
torbutton.popup.confirm_plugins = Flash bezalako pluginek zure pribatutasuna eta anonimotasuna kaltetu dezakete.\n\nTor saltatu dezakete zure uneko kokalekua eta IP helbidea erakusteko.\n\nPluginak gaitu nahi dituzulaz ziur al zaude?\n\n
torbutton.popup.never_ask_again = Ez nazazu galdetu berriz
-torbutton.popup.confirm_newnym = Tor Browser will close all windows and tabs. All website sessions will be lost.\n\nRestart Tor Browser now to reset your identity?\n\n
+torbutton.popup.confirm_newnym = Tor nabigatzaileak lehio eta fitxa guztiak itxiko ditu. Webguneen saio guztiak galdutko dira.\n\nTor nabigatzailea orain berrabiarazi zure nortasuna berrezartzeko?\n
-torbutton.slider_notification = The green onion menu now has a security slider which lets you adjust your security level. Check it out!
-torbutton.slider_notification_button = Open security settings
+torbutton.slider_notification = Tipula berdearen menua orain zure segurtasun maila egokitzen uzten dizun barra bat du. Proba ezazu!
+torbutton.slider_notification_button = Segurtasun aukerak ireki
-torbutton.maximize_warning = Maximizing Tor Browser can allow websites to determine your monitor size, which can be used to track you. We recommend that you leave Tor Browser windows in their original default size.
+torbutton.maximize_warning = Tor nabigatzailea maximizatzeak webguneek zure pantailaren neurria zehaztea baimendu dezake, eta zure jarraipena egiteko erabili daiteke. Tor nabigatzailearen lehioa neurri lehenetsian uztea gomendatzen dugu.
# Canvas permission prompt. Strings are kept here for ease of translation.
canvas.siteprompt=Webgune hau (% S) HTML5 canvas irudi datuak ateratzen saiatu da, eta zure ordenagailua identifikatzeko erabil daitezke.\n\nTor Nabigatzailea baimendu nahi duzu webgune honetan HTML5 canvas irudiaren datuak ateratzeko?
@@ -45,7 +45,7 @@ canvas.neverAccessKey=e
# Profile/startup error messages. Strings are kept here for ease of translation.
# LOCALIZATION NOTE: %S is the application name.
profileProblemTitle=%S Profilarekin Arazoa
-profileReadOnly=You cannot run %S from a read-only file system. Please copy %S to another location before trying to use it.
-profileReadOnlyMac=You cannot run %S from a read-only file system. Please copy %S to your Desktop or Applications folder before trying to use it.
-profileAccessDenied=%S does not have permission to access the profile. Please adjust your file system permissions and try again.
-profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used.
+profileReadOnly=Ezin duzu %S exekutatu irakurtzeko soilik den fitxategi sistema batetik. Mesedez kopiatu ezazu %S beste leku batean erabiltzen saiatu baino lehenago.
+profileReadOnlyMac=Ezin duzu %S exekutatu irakurtzeko soilik den fitxategi sistema batetik. Mesedez kopiatu %S zure mahaigain edo aplikazioen karpetara erabiltzen saiatu baino lehenago.
+profileAccessDenied=%S ez du profilera sartzeko baimenik. Mesedez egokitu itzazu zure fitxategi sistemaren baimenak eta berriz saiatu.
+profileMigrationFailed=Zure %S profilaren migrazioak huts egin du.\nEzarpen berriak erabiliko dira.
diff --git a/src/chrome/locale/fa/torbutton.properties b/src/chrome/locale/fa/torbutton.properties
index 9f77531..d809651 100644
--- a/src/chrome/locale/fa/torbutton.properties
+++ b/src/chrome/locale/fa/torbutton.properties
@@ -48,4 +48,4 @@ profileProblemTitle=%S مشکل پروفایل
profileReadOnly=شما نمی توانید اجرا %S از یک فایل سیستم فقط خواندنی. لطفا کپی کنید %S به محل دیگری قبل از تلاش برای استفاده از آن.
profileReadOnlyMac=شما نمی توانید اجرا %S از یک فایل سیستم فقط خواندنی. لطفا کپی کنید %S به دسکتاپ خودتان یا پوشه برنامه قبل از تلاش برای استفاده از آن.
profileAccessDenied=٪ S اجازه دسترسی به مشخصات ندارد. لطفا مجوزهای سیستم فایل خود را تنظیم و دوباره سعی کنید.
-profileMigrationFailed=Migration of your existing %S profile failed.\nNew settings will be used.
+profileMigrationFailed=مهاجرت ناموفق از پروفایل %S.\nتنظیمات جدید استفاده خواهد شد.
diff --git a/src/chrome/locale/nl/aboutDialog.dtd b/src/chrome/locale/nl/aboutDialog.dtd
index 028e122..33e7e78 100644
--- a/src/chrome/locale/nl/aboutDialog.dtd
+++ b/src/chrome/locale/nl/aboutDialog.dtd
@@ -3,7 +3,7 @@
<!ENTITY project.tpoLink "het &vendorShortName;">
<!ENTITY project.end ", een non-profit die zich inzet om uw privacy en vrijheid online te verdedigen.">
-<!ENTITY help.start "Wilt u meehelpen?">
+<!ENTITY help.start "Wil je meehelpen?">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
<!ENTITY help.donateLink "Doneer">
<!ENTITY help.or "of">
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index e5c2b3a..66ae979 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -37,7 +37,7 @@
<!ENTITY torbutton.prefs.sec_med_low "Medium-Laag">
<!ENTITY torbutton.prefs.sec_gen_desc "Op dit beveiligingsniveau gelden de volgende wijzigingen (beweeg de muis over de items voor meer informatie)">
<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 video en audio media geworden click-to-play via NoScript.">
-<!ENTITY torbutton.prefs.sec_html5_tooltip "Op sommige sites , zou je de NoScript werkbalk knop moeten gebruiken om deze media -objecten mogelijk te maken.">
+<!ENTITY torbutton.prefs.sec_html5_tooltip "Op sommige sites zou je de NoScript werkbalk knop moeten gebruiken om deze media -objecten mogelijk te maken.">
<!ENTITY torbutton.prefs.sec_some_jit_desc "Sommige JavaScript-prestatieverbeteringen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT, Type Inference, ASM.JS.">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT.">
diff --git a/src/chrome/locale/pt/torbutton.properties b/src/chrome/locale/pt/torbutton.properties
index 2c1e704..658c96e 100644
--- a/src/chrome/locale/pt/torbutton.properties
+++ b/src/chrome/locale/pt/torbutton.properties
@@ -21,10 +21,10 @@ torbutton.popup.dontask = A partir de agora, transferir automaticamente os fiche
torbutton.popup.prompted_language = Para lhe fornecer maior privacidade, o Torbutton pode requerer o uso da versão em inglês em páginas da Internet. Isto pode causar a visualização em inglês das páginas que prefere ler em português.\n\nPretende visualizar páginas em inglês, para melhor privacidade?
torbutton.popup.no_newnym = O Torbutton não pode, em segurança, fornecer-lhe uma nova identidade. Não tem acesso à porta de controle Tor.\n\nEstá a usar o Tor Browser Bundle?
torbutton.title.prompt_torbrowser = Informação Importante do Torbutton
-torbutton.popup.prompt_torbrowser = O Torbutton funciona agora de forma diferente: já não pode desligá-lo.\n\nProcedemos a esta alteração porque não é seguro usar o Torbutton num explorador também usado para buscas fora do Tor. Havia demasiados erros que não conseguimos corrigir de outra forma.\n\nSe pretende continuar a usar o Firefox normalmente, deve desinstalar o Torbutton e carregar o Tor Browser Bundle para o seu computador. As políticas de privacidade do Explorador do Tor também são superiores às normais no Firefox, mesmo quando este é usado com o Torbutton.\n\nPara remover o Torbutton abra Ferramentas->Acessórios->Extensões e clique no botão Remover junto ao Torbutton.
+torbutton.popup.prompt_torbrowser = O Torbutton funciona agora de forma diferente: já não o poderá desligar.\n\nEfetuámos alteração porque não é seguro usar o Torbutton num navegador também usado para navegação não Tor. Havia demasiados erros que não conseguiríamos corrigir de outra forma.\n\nSe pretende continuar a usar o Firefox, deve desinstalar o Torbutton e descarregar o Tor Browser Bundle para o seu computador. As políticas de privacidade do Navegador Tor também são superiores às normais no Firefox, mesmo quando este é usado com o Torbutton.\n\nPara remover o Torbutton, aceda a Ferramentas->Acessórios->Extensões e clique no botão Remover junto ao Torbutton.
torbutton.popup.short_torbrowser = Informação importante do Torbutton!\nO Torbutton não está sempre activo.\nClique no Torbutton para mais informação.
-torbutton.popup.confirm_plugins = Plugins such as Flash can harm your privacy and anonymity.\n\nThey can also bypass Tor to reveal your current location and IP address.\n\nAre you sure you want to enable plugins?\n\n
+torbutton.popup.confirm_plugins = Os plugins tais como o Flash podem invadir a sua privacidade.\n\nTambém podem originar que o Tor revele a sua localização e o seu endereço IP.\n\nTem a certeza de que deseja ativar os plugins?\n\n
torbutton.popup.never_ask_again = Não voltar a perguntar-me
torbutton.popup.confirm_newnym = O Navegador Tor irá fechar todas as janela e separadores. Estarão perdidas todas sessões do sítio da Web.\n\nReiniciar o Navegador Tor para repor a sua identidade?\n\n
diff --git a/src/chrome/locale/ru/aboutDialog.dtd b/src/chrome/locale/ru/aboutDialog.dtd
index 19b96a0..2ea0395 100644
--- a/src/chrome/locale/ru/aboutDialog.dtd
+++ b/src/chrome/locale/ru/aboutDialog.dtd
@@ -1,4 +1,4 @@
-<!ENTITY project.start "&brandShortName; разработано">
+<!ENTITY project.start "&brandShortName; разработки">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
<!ENTITY project.tpoLink "&vendorShortName;">
<!ENTITY project.end ", проект, созданный, чтобы защитить вашу конфиденциальность и свободу в сети.">
diff --git a/src/chrome/locale/ru/aboutTBUpdate.dtd b/src/chrome/locale/ru/aboutTBUpdate.dtd
index da0a7c3..21221ac 100644
--- a/src/chrome/locale/ru/aboutTBUpdate.dtd
+++ b/src/chrome/locale/ru/aboutTBUpdate.dtd
@@ -1,6 +1,6 @@
<!ENTITY aboutTBUpdate.title "Обновление браузера Tor">
-<!ENTITY aboutTBUpdate.updated "Браузер Tor был обновлен.">
-<!ENTITY aboutTBUpdate.linkPrefix "Для наиболее актуальной информации об этом выпуске,">
+<!ENTITY aboutTBUpdate.updated "Браузер Tor обновлён.">
+<!ENTITY aboutTBUpdate.linkPrefix "Чтобы получить наиболее свежую информацию об этом выпуске,">
<!ENTITY aboutTBUpdate.linkLabel "посетите наш вебсайт">
<!ENTITY aboutTBUpdate.linkSuffix ".">
-<!ENTITY aboutTBUpdate.changeLogHeading "Список изменений:">
+<!ENTITY aboutTBUpdate.changeLogHeading "Журнал изменений:">
diff --git a/src/chrome/locale/ru/aboutTor.dtd b/src/chrome/locale/ru/aboutTor.dtd
index f2ea375..bcc257a 100644
--- a/src/chrome/locale/ru/aboutTor.dtd
+++ b/src/chrome/locale/ru/aboutTor.dtd
@@ -13,7 +13,7 @@
<!ENTITY aboutTor.check.label "Проверить настройки сети Tor">
<!ENTITY aboutTor.success.label "Добро пожаловать в обозреватель Tor">
-<!ENTITY aboutTor.success2.label "Соединены с сетью Tor">
+<!ENTITY aboutTor.success2.label "Вы подключены к сети Tor.">
<!ENTITY aboutTor.success3.label "Теперь Вы можете просматривать интернет-сайты в анонимном режиме.">
<!ENTITY aboutTor.failure.label "Что-то пошло не так!">
<!ENTITY aboutTor.failure2.label "Tor не работает в этом браузере.">
diff --git a/src/chrome/locale/ru/brand.dtd b/src/chrome/locale/ru/brand.dtd
index 416dcd8..e7e0a5e 100644
--- a/src/chrome/locale/ru/brand.dtd
+++ b/src/chrome/locale/ru/brand.dtd
@@ -2,7 +2,7 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShorterName "Tor Browser">
+<!ENTITY brandShorterName "Браузер Tor">
<!ENTITY brandShortName "Tor Browser">
<!ENTITY brandFullName "Tor Browser">
<!ENTITY vendorShortName "Проект Tor">
diff --git a/src/chrome/locale/vi/aboutTBUpdate.dtd b/src/chrome/locale/vi/aboutTBUpdate.dtd
index 37567bd..4f0a9d4 100644
--- a/src/chrome/locale/vi/aboutTBUpdate.dtd
+++ b/src/chrome/locale/vi/aboutTBUpdate.dtd
@@ -1,4 +1,4 @@
-<!ENTITY aboutTBUpdate.title "Tor Browser Update">
+<!ENTITY aboutTBUpdate.title "Cập nhật về Trình duyệt Tor">
<!ENTITY aboutTBUpdate.updated "Tor Browser has been updated.">
<!ENTITY aboutTBUpdate.linkPrefix "For the most up-to-date information about this release, ">
<!ENTITY aboutTBUpdate.linkLabel "visit our website">
diff --git a/src/chrome/locale/vi/aboutTor.dtd b/src/chrome/locale/vi/aboutTor.dtd
index 3ab6a1b..8a349b5 100644
--- a/src/chrome/locale/vi/aboutTor.dtd
+++ b/src/chrome/locale/vi/aboutTor.dtd
@@ -7,7 +7,7 @@
<!ENTITY aboutTor.title "Thông tin về Tor">
<!ENTITY aboutTor.outOfDateTorOn.label "WARNING: this browser is out of date.">
-<!ENTITY aboutTor.outOfDateTorOff.label "Ngoài ra, trình duyệt này đã lỗi thời.">
+<!ENTITY aboutTor.outOfDateTorOff.label "Thêm nữa, trình duyệt này đã lỗi thời.">
<!ENTITY aboutTor.outOfDate2.label "Click on the onion and then choose Check for Tor Browser Update.">
<!ENTITY aboutTor.check.label "Test Tor Network Settings">
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index 92c1120..d4157be 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -1,4 +1,4 @@
-<!ENTITY torbutton.context_menu.new_identity "Giám định Mới">
+<!ENTITY torbutton.context_menu.new_identity "Định danh mới">
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Vòng Tor mới cho trang này">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
diff --git a/src/chrome/locale/zh-CN/aboutDialog.dtd b/src/chrome/locale/zh-CN/aboutDialog.dtd
index 2b2bbf7..0f6da79 100644
--- a/src/chrome/locale/zh-CN/aboutDialog.dtd
+++ b/src/chrome/locale/zh-CN/aboutDialog.dtd
@@ -3,7 +3,7 @@
<!ENTITY project.tpoLink "&vendorShortName;">
<!ENTITY project.end ",一个捍卫您的隐私和自由上网权的非营利组织。">
-<!ENTITY help.start "想要提供帮助?">
+<!ENTITY help.start "需要得到帮助?">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
<!ENTITY help.donateLink "捐款">
<!ENTITY help.or "或者">
diff --git a/src/chrome/locale/zh-CN/aboutTBUpdate.dtd b/src/chrome/locale/zh-CN/aboutTBUpdate.dtd
index d5caea9..416ddae 100644
--- a/src/chrome/locale/zh-CN/aboutTBUpdate.dtd
+++ b/src/chrome/locale/zh-CN/aboutTBUpdate.dtd
@@ -1,6 +1,6 @@
-<!ENTITY aboutTBUpdate.title "Tor Browser 更新">
-<!ENTITY aboutTBUpdate.updated "Tor Browser 已更新。">
+<!ENTITY aboutTBUpdate.title "更新 Tor Browser">
+<!ENTITY aboutTBUpdate.updated "Tor Browser 更新完成。">
<!ENTITY aboutTBUpdate.linkPrefix "有关此版本的最新信息,">
-<!ENTITY aboutTBUpdate.linkLabel "请访问我们的网站">
+<!ENTITY aboutTBUpdate.linkLabel "访问我们的网站">
<!ENTITY aboutTBUpdate.linkSuffix "。">
-<!ENTITY aboutTBUpdate.changeLogHeading "变更日志:">
+<!ENTITY aboutTBUpdate.changeLogHeading "更新日志:">
diff --git a/src/chrome/locale/zh-CN/aboutTor.dtd b/src/chrome/locale/zh-CN/aboutTor.dtd
index 4d02c9b..426ec5e 100644
--- a/src/chrome/locale/zh-CN/aboutTor.dtd
+++ b/src/chrome/locale/zh-CN/aboutTor.dtd
@@ -6,7 +6,7 @@
<!ENTITY aboutTor.title "关于 Tor">
-<!ENTITY aboutTor.outOfDateTorOn.label "警告:此浏览器版本较旧。">
+<!ENTITY aboutTor.outOfDateTorOn.label "警告:此浏览器版本过旧。">
<!ENTITY aboutTor.outOfDateTorOff.label "另外,该浏览器并非最新版本。">
<!ENTITY aboutTor.outOfDate2.label "点击洋葱图标,然后选择“Tor Browser 检查更新”。">
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index 58f72fb..3146ce3 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -15,7 +15,7 @@
<!ENTITY torbutton.prefs.restore_defaults "恢复默认设置">
<!ENTITY torbutton.cookiedialog.title "管理受保护的 Cookie">
<!ENTITY torbutton.cookiedialog.lockCol "受保护">
-<!ENTITY torbutton.cookiedialog.domainCol "服务器">
+<!ENTITY torbutton.cookiedialog.domainCol "主机">
<!ENTITY torbutton.cookiedialog.nameCol "名称">
<!ENTITY torbutton.cookiedialog.pathCol "路径">
<!ENTITY torbutton.cookiedialog.protectCookie "保护 Cookie">
@@ -35,13 +35,13 @@
<!ENTITY torbutton.prefs.sec_low_desc "该安全级别将启用所有浏览器功能。">
<!ENTITY torbutton.prefs.sec_font_rend_svg_tooltip "禁用 SVG OpenType 字体渲染功能。">
<!ENTITY torbutton.prefs.sec_med_low "中低">
-<!ENTITY torbutton.prefs.sec_gen_desc "该安全级别设置如下(光标悬停查看更多信息):">
+<!ENTITY torbutton.prefs.sec_gen_desc "在这个安全级别,下列更改将会生效(鼠标悬停查看细节):">
<!ENTITY torbutton.prefs.sec_html5_desc "HTML5 视频和音频需通过 NoScript 点击播放。">
<!ENTITY torbutton.prefs.sec_html5_tooltip "在某些网站,可通过 NoScript 工具栏按钮播放这些媒体。">
<!ENTITY torbutton.prefs.sec_some_jit_desc "禁用某些 JavaScript 性能优化。">
<!ENTITY torbutton.prefs.sec_jit_desc_tooltip "ION JIT、类型推断、ASM.JS。">
<!ENTITY torbutton.prefs.sec_baseline_jit_desc_tooltip "Baseline JIT。">
-<!ENTITY torbutton.prefs.sec_jit_slower_desc "一些网站脚本执行变慢。">
+<!ENTITY torbutton.prefs.sec_jit_slower_desc "一些网站脚本可能会暂缓执行。">
<!ENTITY torbutton.prefs.sec_jar_desc "禁用远程 JAR 文件。">
<!ENTITY torbutton.prefs.sec_jar_tooltip "网站上很少出现 JAR 文件,但可能成为 XSS 及其他攻击的源头。">
<!ENTITY torbutton.prefs.sec_mathml_desc "禁用数学方程式的某些显示机制。">
1
0
[torbutton/master] Bug 14271: Make Torbutton work with Unix Domain Socket option
by gk@torproject.org 09 Sep '16
by gk@torproject.org 09 Sep '16
09 Sep '16
commit 28a55f5bf324f43373006328c5b03793096f71c4
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Fri Sep 9 11:53:23 2016 -0400
Bug 14271: Make Torbutton work with Unix Domain Socket option
Call Tor Launcher's new TorGetControlSocketFile() function to determine
if a Unix domain socket is being used for Tor control port communication
and, if it is, use it instead of a TCP connection.
---
src/chrome/content/tor-circuit-display.js | 20 +++---
src/chrome/content/torbutton.js | 101 +++++++++++++++++++-----------
src/modules/tor-control-port.js | 82 +++++++++++++-----------
3 files changed, 124 insertions(+), 79 deletions(-)
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index c99d25d..f1cf2aa 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -5,9 +5,10 @@
// call earlier functions). The file can be processed
// with docco.js to produce pretty documentation.
//
-// This script is to be embedded in torbutton.xul. It defines a single global function,
-// runTorCircuitDisplay(host, port, password), which activates the automatic Tor
-// circuit display for the current tab and any future tabs.
+// This script is to be embedded in torbutton.xul. It defines a single global
+// function, createTorCircuitDisplay(socketFile, host, port, password), which
+// activates the automatic Tor circuit display for the current tab and any
+// future tabs.
//
// See https://trac.torproject.org/8641
@@ -15,10 +16,10 @@
/* global document, gBrowser, Components */
// ### Main function
-// __createTorCircuitDisplay(host, port, password, enablePrefName)__.
+// __createTorCircuitDisplay(socketFile, host, port, password, enablePrefName)__.
// The single function that prepares tor circuit display. Connects to a tor
-// control port with the given host, port, and password, and binds to
-// a named bool pref whose value determines whether the circuit display
+// control port with the given socketFile or host plus port, and password, and
+// binds to a named bool pref whose value determines whether the circuit display
// is enabled or disabled.
let createTorCircuitDisplay = (function () {
@@ -311,11 +312,11 @@ let syncDisplayWithSelectedTab = (function() {
// ## Main function
-// __setupDisplay(host, port, password, enablePrefName)__.
+// __setupDisplay(socketFile, host, port, password, enablePrefName)__.
// Once called, the Tor circuit display will be started whenever
// the "enablePref" is set to true, and stopped when it is set to false.
// A reference to this function (called createTorCircuitDisplay) is exported as a global.
-let setupDisplay = function (host, port, password, enablePrefName) {
+let setupDisplay = function (socketFile, host, port, password, enablePrefName) {
let myController = null,
stopCollectingIsolationData = null,
stop = function() {
@@ -329,7 +330,8 @@ let setupDisplay = function (host, port, password, enablePrefName) {
},
start = function () {
if (!myController) {
- myController = controller(host, port || 9151, password, function (err) {
+ myController = controller(socketFile, host, port || 9151, password,
+ function (err) {
// An error has occurred.
logger.eclog(5, err);
logger.eclog(5, "Disabling tor display circuit because of an error.");
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index acb4b4b..bdcbc4d 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -31,9 +31,11 @@ var m_tb_window_width = window.outerWidth;
var m_tb_tbb = false;
-var m_tb_control_port = null;
-var m_tb_control_host = null;
+var m_tb_control_socket_file = null; // Set if using a UNIX domain socket.
+var m_tb_control_port = null; // Set if not using a socket.
+var m_tb_control_host = null; // Set if not using a socket.
var m_tb_control_pass = null;
+var m_tb_control_desc = null; // For logging.
var m_tb_orig_BrowserOnAboutPageLoad = null;
@@ -314,6 +316,12 @@ function torbutton_init() {
m_tb_prefs.setCharPref(k_tb_last_browser_version_pref, cur_version);
}
+ let tlps;
+ try {
+ tlps = Cc["@torproject.org/torlauncher-protocol-service;1"]
+ .getService(Ci.nsISupports).wrappedJSObject;
+ } catch(e) {}
+
// Bug 1506 P4: These vars are very important for New Identity
var environ = Components.classes["@mozilla.org/process/environment;1"]
.getService(Components.interfaces.nsIEnvironment);
@@ -329,33 +337,48 @@ function torbutton_init() {
} catch(e) {
torbutton_log(4, 'unable to read authentication cookie');
}
- } else {
+ } else try {
// Try to get password from Tor Launcher.
- try {
- let tlps = Cc["@torproject.org/torlauncher-protocol-service;1"]
- .getService(Ci.nsISupports).wrappedJSObject;
- m_tb_control_pass = tlps.TorGetPassword(false);
- } catch(e) {}
- }
+ m_tb_control_pass = tlps.TorGetPassword(false);
+ } catch(e) {}
- if (environ.exists("TOR_CONTROL_PORT")) {
- m_tb_control_port = environ.get("TOR_CONTROL_PORT");
- } else {
- try {
- const kTLControlPortPref = "extensions.torlauncher.control_port";
- m_tb_control_port = m_tb_prefs.getIntPref(kTLControlPortPref);
- } catch(e) {}
- }
+ // Try to get control port socket (an nsIFile) from Tor Launcher, since
+ // Tor Launcher knows how to handle its own preferences and how to
+ // resolve relative paths.
+ try {
+ m_tb_control_socket_file = tlps.TorGetControlSocketFile();
+ } catch(e) {}
- if (environ.exists("TOR_CONTROL_HOST")) {
- m_tb_control_host = environ.get("TOR_CONTROL_HOST");
+ if (m_tb_control_socket_file) {
+ m_tb_control_desc = m_tb_control_socket_file.path;
} else {
- try {
- const kTLControlHostPref = "extensions.torlauncher.control_host";
- m_tb_control_host = m_tb_prefs.getCharPref(kTLControlHostPref);
- } catch(e) {
- m_tb_control_host = "127.0.0.1";
- }
+ if (environ.exists("TOR_CONTROL_PORT")) {
+ m_tb_control_port = environ.get("TOR_CONTROL_PORT");
+ } else {
+ try {
+ const kTLControlPortPref = "extensions.torlauncher.control_port";
+ m_tb_control_port = m_tb_prefs.getIntPref(kTLControlPortPref);
+ } catch(e) {
+ // Since we want to disable some features when Tor Launcher is
+ // not installed (e.g., New Identity), we do not set a default
+ // port value here.
+ }
+ }
+
+ if (m_tb_control_port) {
+ m_tb_control_desc = "" + m_tb_control_port;
+ }
+
+ if (environ.exists("TOR_CONTROL_HOST")) {
+ m_tb_control_host = environ.get("TOR_CONTROL_HOST");
+ } else {
+ try {
+ const kTLControlHostPref = "extensions.torlauncher.control_host";
+ m_tb_control_host = m_tb_prefs.getCharPref(kTLControlHostPref);
+ } catch(e) {
+ m_tb_control_host = "127.0.0.1";
+ }
+ }
}
// Add event listener for about:tor page loads.
@@ -430,7 +453,8 @@ function torbutton_init() {
torbutton_notify_if_update_needed();
torbutton_update_sync_ui();
- createTorCircuitDisplay(m_tb_control_host, m_tb_control_port, m_tb_control_pass,
+ createTorCircuitDisplay(m_tb_control_socket_file, m_tb_control_host,
+ m_tb_control_port, m_tb_control_pass,
"extensions.torbutton.display_circuit");
torbutton_log(3, 'init completed');
@@ -999,9 +1023,15 @@ function torbutton_send_ctrl_cmd(command) {
m_tb_domWindowUtils.suppressEventHandling(false);
try {
- var socketTransportService = Components.classes["@mozilla.org/network/socket-transport-service;1"]
- .getService(Components.interfaces.nsISocketTransportService);
- var socket = socketTransportService.createTransport(null, 0, m_tb_control_host, m_tb_control_port, null);
+ let sts = Cc["@mozilla.org/network/socket-transport-service;1"]
+ .getService(Ci.nsISocketTransportService);
+ let socket;
+ if (m_tb_control_socket_file) {
+ socket = sts.createUnixDomainTransport(m_tb_control_socket_file);
+ } else {
+ socket = sts.createTransport(null, 0, m_tb_control_host,
+ m_tb_control_port, null);
+ }
// If we don't get a response from the control port in 2 seconds, someting is wrong..
socket.setTimeout(Ci.nsISocketTransport.TIMEOUT_READ_WRITE, 2);
@@ -1021,21 +1051,21 @@ function torbutton_send_ctrl_cmd(command) {
var bytes = torbutton_socket_readline(inputStream);
if (bytes.indexOf("250") != 0) {
- torbutton_safelog(4, "Unexpected auth response on control port "+m_tb_control_port+":", bytes);
+ torbutton_safelog(4, "Unexpected auth response on control port "+m_tb_control_desc+":", bytes);
return null;
}
outputStream.writeBytes(command, command.length);
bytes = torbutton_socket_readline(inputStream);
if(bytes.indexOf("250") != 0) {
- torbutton_safelog(4, "Unexpected command response on control port "+m_tb_control_port+":", bytes);
+ torbutton_safelog(4, "Unexpected command response on control port "+m_tb_control_desc+":", bytes);
return null;
}
// Closing these streams prevents a shutdown hang on Mac OS. See bug 10201.
inputStream.close();
outputStream.close();
- socket.close(Components.results.NS_OK);
+ socket.close(Cr.NS_OK);
return bytes.substr(4);
} catch(e) {
torbutton_log(4, "Exception on control port "+e);
@@ -1339,7 +1369,7 @@ function torbutton_do_new_identity() {
torbutton_log(3, "New Identity: Sending NEWNYM");
// We only support TBB for newnym.
- if (!m_tb_control_pass || !m_tb_control_port) {
+ if (!m_tb_control_pass || (!m_tb_control_socket_file && !m_tb_control_port)) {
var warning = torbutton_get_property_string("torbutton.popup.no_newnym");
torbutton_log(5, "Torbutton cannot safely newnym. It does not have access to the Tor Control Port.");
window.alert(warning);
@@ -1497,7 +1527,7 @@ function torbutton_do_tor_check()
const kEnvUseTransparentProxy = "TOR_TRANSPROXY";
var env = Cc["@mozilla.org/process/environment;1"]
.getService(Ci.nsIEnvironment);
- if (m_tb_control_port &&
+ if ((m_tb_control_socket_file || m_tb_control_port) &&
!env.exists(kEnvUseTransparentProxy) &&
!env.exists(kEnvSkipControlPortTest) &&
m_tb_prefs.getBoolPref("extensions.torbutton.local_tor_check")) {
@@ -2096,8 +2126,9 @@ function torbutton_check_protections()
// See https://trac.torproject.org/projects/tor/ticket/10353 for more info.
document.getElementById("torbutton-cookie-protector").hidden = m_tb_prefs.getBoolPref("extensions.torbutton.block_disk");
- if (!m_tb_control_pass || !m_tb_control_port)
+ if (!m_tb_control_pass || (!m_tb_control_socket_file && !m_tb_control_port)) {
document.getElementById("torbutton-new-identity").disabled = true;
+ }
if (!m_tb_tbb && m_tb_prefs.getBoolPref("extensions.torbutton.prompt_torbrowser")) {
torbutton_inform_about_tbb();
diff --git a/src/modules/tor-control-port.js b/src/modules/tor-control-port.js
index 63c2cd9..f23daed 100644
--- a/src/modules/tor-control-port.js
+++ b/src/modules/tor-control-port.js
@@ -7,9 +7,10 @@
//
// To import the module, use
//
-// let { controller } = Components.utils.import("path/to/controlPort.jsm");
+// let { controller } = Components.utils.import("path/to/tor-control-port.js");
//
-// See the last function defined in this file, controller(host, port, password, onError)
+// See the last function defined in this file:
+// controller(socketFile, host, port, password, onError)
// for usage of the controller function.
/* jshint esnext: true */
@@ -41,17 +42,24 @@ log("Loading tor-control-port.js\n");
// I/O utilities namespace
let io = {};
-// __io.asyncSocketStreams(host, port)__.
+// __io.asyncSocketStreams(socketFile, host, port)__.
// Creates a pair of asynchronous input and output streams for a socket at the
-// given host and port.
-io.asyncSocketStreams = function (host, port) {
- let socketTransportService = Cc["@mozilla.org/network/socket-transport-service;1"]
- .getService(Components.interfaces.nsISocketTransportService),
- UNBUFFERED = Ci.nsITransport.OPEN_UNBUFFERED,
- // Create an instance of a socket transport.
- socketTransport = socketTransportService.createTransport(null, 0, host, port, null),
- // Open unbuffered asynchronous outputStream.
- outputStream = socketTransport.openOutputStream(UNBUFFERED, 1, 1)
+// given socketFile or host and port.
+io.asyncSocketStreams = function (socketFile, host, port) {
+ let sts = Cc["@mozilla.org/network/socket-transport-service;1"]
+ .getService(Components.interfaces.nsISocketTransportService),
+ UNBUFFERED = Ci.nsITransport.OPEN_UNBUFFERED;
+
+ // Create an instance of a socket transport.
+ let socketTransport;
+ if (socketFile) {
+ socketTransport = sts.createUnixDomainTransport(socketFile);
+ } else {
+ socketTransport = sts.createTransport(null, 0, host, port, null);
+ }
+
+ // Open unbuffered asynchronous outputStream.
+ let outputStream = socketTransport.openOutputStream(UNBUFFERED, 1, 1)
.QueryInterface(Ci.nsIAsyncOutputStream),
// Open unbuffered asynchronous inputStream.
inputStream = socketTransport.openInputStream(UNBUFFERED, 1, 1)
@@ -91,14 +99,16 @@ io.pumpInputStream = function (inputStream, onInputData, onError) {
} }, null);
};
-// __io.asyncSocket(host, port, onInputData, onError)__.
-// Creates an asynchronous, text-oriented TCP socket at host:port.
+// __io.asyncSocket(socketFile, host, port, onInputData, onError)__.
+// Creates an asynchronous, text-oriented UNIX domain socket (if socketFile
+// is defined) or TCP socket at host:port.
// The onInputData callback should accept a single argument, which will be called
// repeatedly, whenever incoming text arrives. Returns a socket object with two methods:
// socket.write(text) and socket.close(). onError will be passed the error object
// whenever a write fails.
-io.asyncSocket = function (host, port, onInputData, onError) {
- let [inputStream, outputStream] = io.asyncSocketStreams(host, port),
+io.asyncSocket = function (socketFile, host, port, onInputData, onError) {
+ let [inputStream, outputStream] = io.asyncSocketStreams(socketFile, host,
+ port),
pendingWrites = [];
// Run an input stream pump to send incoming data to the onInputData callback.
io.pumpInputStream(inputStream, onInputData, onError);
@@ -243,13 +253,13 @@ io.matchRepliesToCommands = function (asyncSend, dispatcher) {
});
};
-// __io.controlSocket(host, port, password, onError)__.
-// Instantiates and returns a socket to a tor ControlPort at host:port,
-// authenticating with the given password. onError is called with an
+// __io.controlSocket(socketFile, host, port, password, onError)__.
+// Instantiates and returns a socket to a tor ControlPort at socketFile or
+// host:port, authenticating with the given password. onError is called with an
// error object as its single argument whenever an error occurs. Example:
//
// // Open the socket
-// let socket = controlSocket("127.0.0.1", 9151, "MyPassw0rd",
+// let socket = controlSocket(undefined, "127.0.0.1", 9151, "MyPassw0rd",
// function (error) { console.log(error.message || error); });
// // Send command and receive "250" reply or error message
// socket.sendCommand(commandText, replyCallback, errorCallback);
@@ -259,11 +269,11 @@ io.matchRepliesToCommands = function (asyncSend, dispatcher) {
// socket.removeNotificationCallback(callback);
// // Close the socket permanently
// socket.close();
-io.controlSocket = function (host, port, password, onError) {
+io.controlSocket = function (socketFile, host, port, password, onError) {
// Produce a callback dispatcher for Tor messages.
let mainDispatcher = io.callbackDispatcher(),
// Open the socket and convert format to Tor messages.
- socket = io.asyncSocket(host, port,
+ socket = io.asyncSocket(socketFile, host, port,
io.onDataFromOnLine(
io.onLineFromOnMessage(mainDispatcher.pushMessage)),
onError),
@@ -606,15 +616,16 @@ event.watchEvent = function (controlSocket, type, filter, onData) {
let tor = {};
// __tor.controllerCache__.
-// A map from "host:port" to controller objects. Prevents redundant instantiation
-// of control sockets.
+// A map from "unix:socketpath" or "host:port" to controller objects. Prevents
+// redundant instantiation of control sockets.
tor.controllerCache = {};
-// __tor.controller(host, port, password, onError)__.
-// Creates a tor controller at the given host and port, with the given password.
+// __tor.controller(socketFile, host, port, password, onError)__.
+// Creates a tor controller at the given socketFile or host and port, with the
+// given password.
// onError returns asynchronously whenever a connection error occurs.
-tor.controller = function (host, port, password, onError) {
- let socket = io.controlSocket(host, port, password, onError),
+tor.controller = function (socketFile, host, port, password, onError) {
+ let socket = io.controlSocket(socketFile, host, port, password, onError),
isOpen = true;
return { getInfo : key => info.getInfo(socket, key),
getConf : key => info.getConf(socket, key),
@@ -627,27 +638,28 @@ tor.controller = function (host, port, password, onError) {
// ## Export
-// __controller(host, port, password, onError)__.
+// __controller(socketFile, host, port, password, onError)__.
// Instantiates and returns a controller object connected to a tor ControlPort
-// at host:port, authenticating with the given password, if the controller doesn't yet
-// exist. Otherwise returns the existing controller to the given host:port.
+// on socketFile or at host:port, authenticating with the given password, if
+// the controller doesn't yet exist. Otherwise returns the existing controller
+// to the given socketFile or host:port.
// onError is called with an error object as its single argument whenever
// an error occurs. Example:
//
// // Get the controller
-// let c = controller("127.0.0.1", 9151, "MyPassw0rd",
+// let c = controller(undefined, "127.0.0.1", 9151, "MyPassw0rd",
// function (error) { console.log(error.message || error); });
// // Send command and receive `250` reply or error message in a promise:
// let replyPromise = c.getInfo("ip-to-country/16.16.16.16");
// // Close the controller permanently
// c.close();
-var controller = function (host, port, password, onError) {
- let dest = host + ":" + port,
+var controller = function (socketFile, host, port, password, onError) {
+ let dest = (socketFile) ? "unix:" + socketFile.path : host + ":" + port,
maybeController = tor.controllerCache[dest];
return (tor.controllerCache[dest] =
(maybeController && maybeController.isOpen()) ?
maybeController :
- tor.controller(host, port, password, onError));
+ tor.controller(socketFile, host, port, password, onError));
};
// Export the controller function for external use.
1
0
[tor-browser-bundle/hardened-builds] Bug 19528: set MOZ_BUILD_DATE based on firefox version
by gk@torproject.org 09 Sep '16
by gk@torproject.org 09 Sep '16
09 Sep '16
commit ac62d42011e18a5cf124d3265b3b62a931c17e9a
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Sep 9 14:07:39 2016 +0200
Bug 19528: set MOZ_BUILD_DATE based on firefox version
The MOZ_BUILD_DATE environment variable is used as the build id.
---
gitian/build-helpers/get-moz-build-date | 18 ++++++++++++++++++
gitian/descriptors/linux/gitian-firefox.yml | 3 ++-
gitian/descriptors/mac/gitian-firefox.yml | 3 ++-
gitian/descriptors/windows/gitian-firefox.yml | 3 ++-
tools/update-responses/update_responses | 27 ++++++++++++++++++++++++++-
5 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/gitian/build-helpers/get-moz-build-date b/gitian/build-helpers/get-moz-build-date
new file mode 100755
index 0000000..168a8c7
--- /dev/null
+++ b/gitian/build-helpers/get-moz-build-date
@@ -0,0 +1,18 @@
+#!/usr/bin/perl -w
+# Generate a MOZ_BUILD_DATE based on firefox version number
+
+use strict;
+
+my ($year) = split('-', `git show -s --format='%ci'`);
+
+die "missing argument" unless @ARGV;
+my $version = $ARGV[0];
+$version =~ s/\D+$//;
+my @v = split(/[\.ab]/, $version);
+push @v, '0' if @v < 4;
+push @v, '0' if @v < 4;
+my $day_of_month = int(($v[0] - 45) / 5);
+my $date = 101010101 + $year * 10000000000 + $day_of_month * 1000000
+ + $v[1] * 10000 + $v[2] * 100 + $v[3];
+$date += 100000000 unless $version =~ m/[ab]/;
+print "export MOZ_BUILD_DATE=$date\n";
diff --git a/gitian/descriptors/linux/gitian-firefox.yml b/gitian/descriptors/linux/gitian-firefox.yml
index f32ee40..89f68fa 100644
--- a/gitian/descriptors/linux/gitian-firefox.yml
+++ b/gitian/descriptors/linux/gitian-firefox.yml
@@ -32,6 +32,7 @@ remotes:
files:
- "binutils-linux64-utils.zip"
- "gcc-linux64-utils.zip"
+- "get-moz-build-date"
- "re-dzip.sh"
- "dzip.sh"
- "versions"
@@ -92,7 +93,7 @@ script: |
# Self-Rando wrapper
export PATH="$HOME/build/selfrando/Tools/TorBrowser/tc-wrapper/:$PATH"
export SELFRANDO_skip_shuffle=
- export MOZ_BUILD_DATE=$(date -d "$REFERENCE_DATETIME" +%Y%m%d%H%M%S)
+ eval $(~/build/get-moz-build-date $(cat browser/config/version.txt))
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL} --enable-bundled-fonts"
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
# Without disabling LSan our build is blowing up:
diff --git a/gitian/descriptors/mac/gitian-firefox.yml b/gitian/descriptors/mac/gitian-firefox.yml
index 302f2a4..fea3139 100644
--- a/gitian/descriptors/mac/gitian-firefox.yml
+++ b/gitian/descriptors/mac/gitian-firefox.yml
@@ -17,6 +17,7 @@ files:
- "gcc-linux64-precise-utils.zip"
- "MacOSX10.7.sdk.tar.gz"
- "x86_64-apple-darwin10.tar.xz"
+- "get-moz-build-date"
- "re-dzip.sh"
- "dzip.sh"
- "fix-info-plist.py"
@@ -65,7 +66,7 @@ script: |
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
- export MOZ_BUILD_DATE=$(date -d "$REFERENCE_DATETIME" +%Y%m%d%H%M%S)
+ eval $(~/build/get-moz-build-date $(cat browser/config/version.txt))
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL} --enable-bundled-fonts"
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
make $MAKEOPTS -f client.mk build
diff --git a/gitian/descriptors/windows/gitian-firefox.yml b/gitian/descriptors/windows/gitian-firefox.yml
index 3261199..788b053 100644
--- a/gitian/descriptors/windows/gitian-firefox.yml
+++ b/gitian/descriptors/windows/gitian-firefox.yml
@@ -15,6 +15,7 @@ remotes:
files:
- "gcc-linux32-precise-utils.zip"
- "mingw-w64-win32-utils.zip"
+- "get-moz-build-date"
- "re-dzip.sh"
- "dzip.sh"
- "gcclibs-win32-utils.zip"
@@ -73,7 +74,7 @@ script: |
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
- export MOZ_BUILD_DATE=$(date -d "$REFERENCE_DATETIME" +%Y%m%d%H%M%S)
+ eval $(~/build/get-moz-build-date $(cat browser/config/version.txt))
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL} --enable-bundled-fonts"
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
#
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index faa1037..498132e 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -238,6 +238,30 @@ sub channel_to_version {
return map { $config->{channels}{$_} } @channels;
}
+sub get_buildinfos {
+ my ($config, $version) = @_;
+ return if exists $config->{versions}{$version}{buildID};
+ my $files = $config->{versions}{$version}{files};
+ foreach my $os (keys %$files) {
+ foreach my $lang (keys %{$files->{$os}}) {
+ next unless $files->{$os}{$lang}{complete};
+ my $tmpdir = File::Temp->newdir();
+ extract_mar(mar_filename($version, $os, $lang), "$tmpdir");
+ my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
+ $appfile = "$tmpdir/Contents/Resources/application.ini"
+ if -f "$tmpdir/Contents/Resources/application.ini";
+ exit_error "Could not find application.ini" unless $appfile;
+ foreach my $line (read_file("$tmpdir/application.ini")) {
+ if ($line =~ m/^BuildID=(.*)$/) {
+ $config->{versions}{$version}{buildID} = $1;
+ return;
+ }
+ }
+ exit_error "Could not extract buildID from application.ini";
+ }
+ }
+}
+
sub get_response {
my ($config, $version, $os, @patches) = @_;
my $res;
@@ -257,7 +281,7 @@ sub get_response {
displayVersion => $version,
appVersion => $version,
platformVersion => get_config($config, $version, $os, 'platformVersion'),
- buildID => '20000101000000',
+ buildID => get_config($config, $version, $os, 'buildID'),
detailsURL => get_config($config, $version, $os, 'detailsURL'),
actions => 'showURL',
openURL => get_config($config, $version, $os, 'detailsURL'),
@@ -281,6 +305,7 @@ sub write_responses {
foreach my $channel (@channels) {
my $version = $config->{channels}{$channel};
get_version_files($config, $version);
+ get_buildinfos($config, $version);
my $files = $config->{versions}{$version}{files};
my $migrate_archs = $config->{versions}{$version}{migrate_archs} // {};
foreach my $old_os (keys %$migrate_archs) {
1
0
[tor-browser-bundle/master] Bug 19410: Add script to convert dmg files to mar files
by gk@torproject.org 09 Sep '16
by gk@torproject.org 09 Sep '16
09 Sep '16
commit 23bea36eb8d8d27ca00b2394757be08530cb7f19
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Sep 9 13:46:49 2016 +0200
Bug 19410: Add script to convert dmg files to mar files
We are also adding the dmg2mars and dmg2mars-alpha makefile rules to
run the script and regenerate the incremental mars.
---
gitian/Makefile | 10 +++
tools/dmg2mar | 136 +++++++++++++++++++++++++++++
tools/update-responses/get_channel_version | 1 +
tools/update-responses/update_responses | 6 ++
4 files changed, 153 insertions(+)
diff --git a/gitian/Makefile b/gitian/Makefile
index 50d4328..59efd0e 100644
--- a/gitian/Makefile
+++ b/gitian/Makefile
@@ -45,6 +45,16 @@ signmars-alpha:
signmars-nightly:
./signmars.sh versions.nightly
+dmg2mars:
+ cd $(shell ../tools/update-responses/get_channel_version release) && ../../tools/dmg2mar
+ $(TORSOCKS) ../tools/update-responses/download_missing_versions release
+ ../tools/update-responses/gen_incrementals release
+
+dmg2mars-alpha:
+ cd $(shell ../tools/update-responses/get_channel_version alpha) && ../../tools/dmg2mar
+ $(TORSOCKS) ../tools/update-responses/download_missing_versions alpha
+ ../tools/update-responses/gen_incrementals alpha
+
update_responses:
../tools/update-responses/update_responses release
diff --git a/tools/dmg2mar b/tools/dmg2mar
new file mode 100755
index 0000000..47a543a
--- /dev/null
+++ b/tools/dmg2mar
@@ -0,0 +1,136 @@
+#!/usr/bin/perl -w
+#
+# This script converts all dmg files from the current directory and
+# listed in the sha256sums-unsigned-build.txt file to full update
+# mar files. After code signing the dmg files, this script can be used
+# to update the mar files.
+#
+# A recent version of p7zip is required to extract the dmg files, such
+# as 15.14. The version in Debian Jessie (9.20) is not recent enough.
+# It is possible to install the p7zip-full package from Debian testing,
+# or build p7zip from sources:
+# $ p7zipdir=/some_directory/p7zip
+# $ mkdir $p7zipdir
+# $ cd $p7zipdir
+# $ wget http://snapshot.debian.org/archive/debian/20160417T044336Z/pool/main/p/p7zi…
+# $ echo 'e9e696e2fa77b00445a4d85fa07506debeae01943fdc1bee1472152d7d1386af p7zip_15.14.1+dfsg.orig.tar.xz' | sha256sum -c
+# $ wget http://snapshot.debian.org/archive/debian/20160515T161830Z/pool/main/p/p7zi…
+# $ echo 'f4db6803535fc30b6ae9db5aabfd9f57a851c6773d72073847ec5e3731b7af37 p7zip_15.14.1+dfsg-2.debian.tar.xz' | sha256sum -c
+# $ tar xvf p7zip_15.14.1+dfsg-2.debian.tar.xz
+# $ tar xvf p7zip_15.14.1+dfsg.orig.tar.xz
+# $ cd p7zip_15.14.1/
+# $ for patch in $(cat ../debian/patches/series ); do patch -p1 < ../debian/patches/$patch; done
+# $ make 7z
+# $ mkdir $p7zipdir/bin
+# $ echo '#!/bin/sh' > $p7zipdir/bin/7z
+# $ echo "export LD_LIBRARY_PATH=$PWD/bin" >> $p7zipdir/bin/7z
+# $ echo "exec $PWD/bin/7z "'"$@"' >> $p7zipdir/bin/7z
+# $ chmod +x $p7zipdir/bin/7z
+# $ export "PATH=$p7zipdir/bin:$PATH"
+
+use strict;
+use IO::CaptureOutput qw(capture_exec);
+use File::Slurp;
+use Parallel::ForkManager;
+use Cwd;
+
+sub exit_error {
+ print STDERR "Error: ", $_[0], "\n";
+ chdir '/';
+ exit (exists $_[1] ? $_[1] : 1);
+}
+
+sub osname {
+ my ($osname) = capture_exec('uname', '-s');
+ my ($arch) = capture_exec('uname', '-m');
+ chomp($osname, $arch);
+ if ($osname eq 'Linux' && $arch eq 'x86_64') {
+ return 'linux64';
+ }
+ if ($osname eq 'Linux' && $arch =~ m/^i.86$/) {
+ return 'linux32';
+ }
+ exit_error 'Unknown OS';
+}
+
+my $martools_tmpdir;
+sub extract_martools {
+ my $osname = osname;
+ my $marzip = getcwd . "/mar-tools-$osname.zip";
+ $martools_tmpdir = File::Temp->newdir();
+ my $old_cwd = getcwd;
+ chdir $martools_tmpdir;
+ my (undef, undef, $success) = capture_exec('unzip', $marzip);
+ chdir $old_cwd;
+ exit_error "Error extracting $marzip" unless $success;
+ $ENV{PATH} = "$martools_tmpdir/mar-tools:$ENV{PATH}";
+ if ($ENV{LD_LIBRARY_PATH}) {
+ $ENV{LD_LIBRARY_PATH} .= ":$martools_tmpdir/mar-tools";
+ } else {
+ $ENV{LD_LIBRARY_PATH} = "$martools_tmpdir/mar-tools";
+ }
+ $ENV{MAR} = "$martools_tmpdir/mar-tools/mar";
+ $ENV{MSBDIFF} = "$martools_tmpdir/mar-tools/mbsdiff";
+}
+
+sub get_nbprocs {
+ return $ENV{NUM_PROCS} if defined $ENV{NUM_PROCS};
+ if (-f '/proc/cpuinfo') {
+ return scalar grep { m/^processor\s+:\s/ } read_file '/proc/cpuinfo';
+ }
+ return 4;
+}
+
+sub get_dmg_files_from_sha256sums {
+ exit_error "Missing sha256sums-unsigned-build.txt file"
+ unless -f 'sha256sums-unsigned-build.txt';
+ my @files;
+ foreach my $line (read_file('sha256sums-unsigned-build.txt')) {
+ my (undef, $filename) = split ' ', $line;
+ chomp $filename;
+ next unless $filename =~ m/^TorBrowser-(.+)-osx64_(.+)\.dmg$/;
+ push @files, { filename => $filename, version => $1, lang => $2 };
+ }
+ return @files;
+}
+
+sub convert_files {
+ my $pm = Parallel::ForkManager->new(get_nbprocs);
+ $pm->run_on_finish(sub { print "Finished $_[2]\n" });
+ foreach my $file (get_dmg_files_from_sha256sums) {
+ my $output = "tor-browser-osx64-$file->{version}_$file->{lang}.mar";
+ my $step_name = "$file->{filename} -> $output";
+ print "Starting $step_name\n";
+ $pm->start($step_name) and next;
+ my $tmpdir = File::Temp->newdir();
+ my (undef, $err, $success) = capture_exec('7z', 'x', "-o$tmpdir",
+ $file->{filename});
+ exit_error "Error extracting $file->{filename}: $err" unless $success;
+ unlink $output;
+ (undef, $err, $success) = capture_exec('make_full_update.sh', '-q',
+ $output, "$tmpdir/TorBrowser.app");
+ exit_error "Error updating $output: $err" unless $success;
+ $pm->finish;
+ }
+ $pm->wait_all_children;
+}
+
+sub remove_incremental_mars {
+ exit_error "Missing sha256sums-unsigned-build.incrementals.txt file"
+ unless -f 'sha256sums-unsigned-build.incrementals.txt';
+ foreach my $line (read_file('sha256sums-unsigned-build.incrementals.txt')) {
+ my (undef, $filename) = split ' ', $line;
+ chomp $filename;
+ next unless $filename =~ m/^tor-browser-osx64.+\.incremental\.mar$/;
+ next unless -f $filename;
+ print "Removing $filename\n";
+ unlink $filename;
+ }
+}
+
+# Set LC_ALL=C to avoid reproducibility issues when creating mar files
+$ENV{LC_ALL} = 'C';
+
+extract_martools;
+convert_files;
+remove_incremental_mars;
diff --git a/tools/update-responses/get_channel_version b/tools/update-responses/get_channel_version
new file mode 120000
index 0000000..3766925
--- /dev/null
+++ b/tools/update-responses/get_channel_version
@@ -0,0 +1 @@
+update_responses
\ No newline at end of file
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index 498132e..b83ac29 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -596,6 +596,12 @@ my %actions = (
download_missing_versions($config, @channels);
},
check_update_responses_deployement => \&check_update_responses,
+ get_channel_version => sub {
+ my ($config) = @_;
+ exit_error "Wrong arguments" unless @ARGV == 1;
+ exit_error "Unknown channel" unless $config->{channels}{$ARGV[0]};
+ print $config->{channels}{$ARGV[0]}, "\n";
+ },
);
my $action = fileparse($PROGRAM_NAME);
1
0
[tor-browser-bundle/master] Bug 19528: set MOZ_BUILD_DATE based on firefox version
by gk@torproject.org 09 Sep '16
by gk@torproject.org 09 Sep '16
09 Sep '16
commit ba7f0fcf914e889f78c0562a46e6026462f10ac8
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Fri Sep 9 14:07:39 2016 +0200
Bug 19528: set MOZ_BUILD_DATE based on firefox version
The MOZ_BUILD_DATE environment variable is used as the build id.
---
gitian/build-helpers/get-moz-build-date | 18 ++++++++++++++++++
gitian/descriptors/linux/gitian-firefox.yml | 3 ++-
gitian/descriptors/mac/gitian-firefox.yml | 3 ++-
gitian/descriptors/windows/gitian-firefox.yml | 3 ++-
tools/update-responses/update_responses | 27 ++++++++++++++++++++++++++-
5 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/gitian/build-helpers/get-moz-build-date b/gitian/build-helpers/get-moz-build-date
new file mode 100755
index 0000000..168a8c7
--- /dev/null
+++ b/gitian/build-helpers/get-moz-build-date
@@ -0,0 +1,18 @@
+#!/usr/bin/perl -w
+# Generate a MOZ_BUILD_DATE based on firefox version number
+
+use strict;
+
+my ($year) = split('-', `git show -s --format='%ci'`);
+
+die "missing argument" unless @ARGV;
+my $version = $ARGV[0];
+$version =~ s/\D+$//;
+my @v = split(/[\.ab]/, $version);
+push @v, '0' if @v < 4;
+push @v, '0' if @v < 4;
+my $day_of_month = int(($v[0] - 45) / 5);
+my $date = 101010101 + $year * 10000000000 + $day_of_month * 1000000
+ + $v[1] * 10000 + $v[2] * 100 + $v[3];
+$date += 100000000 unless $version =~ m/[ab]/;
+print "export MOZ_BUILD_DATE=$date\n";
diff --git a/gitian/descriptors/linux/gitian-firefox.yml b/gitian/descriptors/linux/gitian-firefox.yml
index 1316ed8..14799d6 100644
--- a/gitian/descriptors/linux/gitian-firefox.yml
+++ b/gitian/descriptors/linux/gitian-firefox.yml
@@ -33,6 +33,7 @@ files:
- "binutils-linux64-utils.zip"
- "gcc-linux32-utils.zip"
- "gcc-linux64-utils.zip"
+- "get-moz-build-date"
- "re-dzip.sh"
- "dzip.sh"
- "versions"
@@ -92,7 +93,7 @@ script: |
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
- export MOZ_BUILD_DATE=$(date -d "$REFERENCE_DATETIME" +%Y%m%d%H%M%S)
+ eval $(~/build/get-moz-build-date $(cat browser/config/version.txt))
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL} --enable-bundled-fonts"
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
make $MAKEOPTS -f client.mk build
diff --git a/gitian/descriptors/mac/gitian-firefox.yml b/gitian/descriptors/mac/gitian-firefox.yml
index fdec679..bd7d7f7 100644
--- a/gitian/descriptors/mac/gitian-firefox.yml
+++ b/gitian/descriptors/mac/gitian-firefox.yml
@@ -19,6 +19,7 @@ files:
- "clang-linux64-wheezy-utils.zip"
- "cctools.tar.gz"
- "MacOSX10.7.sdk.tar.gz"
+- "get-moz-build-date"
- "re-dzip.sh"
- "dzip.sh"
- "fix-info-plist.py"
@@ -48,7 +49,7 @@ script: |
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
- export MOZ_BUILD_DATE=$(date -d "$REFERENCE_DATETIME" +%Y%m%d%H%M%S)
+ eval $(~/build/get-moz-build-date $(cat browser/config/version.txt))
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL} --enable-bundled-fonts"
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
make $MAKEOPTS -f client.mk build
diff --git a/gitian/descriptors/windows/gitian-firefox.yml b/gitian/descriptors/windows/gitian-firefox.yml
index 3261199..788b053 100644
--- a/gitian/descriptors/windows/gitian-firefox.yml
+++ b/gitian/descriptors/windows/gitian-firefox.yml
@@ -15,6 +15,7 @@ remotes:
files:
- "gcc-linux32-precise-utils.zip"
- "mingw-w64-win32-utils.zip"
+- "get-moz-build-date"
- "re-dzip.sh"
- "dzip.sh"
- "gcclibs-win32-utils.zip"
@@ -73,7 +74,7 @@ script: |
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
rm -f configure
rm -f js/src/configure
- export MOZ_BUILD_DATE=$(date -d "$REFERENCE_DATETIME" +%Y%m%d%H%M%S)
+ eval $(~/build/get-moz-build-date $(cat browser/config/version.txt))
make -f client.mk configure CONFIGURE_ARGS="--with-tor-browser-version=${TORBROWSER_VERSION} --enable-update-channel=${TORBROWSER_UPDATE_CHANNEL} --enable-bundled-fonts"
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
#
diff --git a/tools/update-responses/update_responses b/tools/update-responses/update_responses
index faa1037..498132e 100755
--- a/tools/update-responses/update_responses
+++ b/tools/update-responses/update_responses
@@ -238,6 +238,30 @@ sub channel_to_version {
return map { $config->{channels}{$_} } @channels;
}
+sub get_buildinfos {
+ my ($config, $version) = @_;
+ return if exists $config->{versions}{$version}{buildID};
+ my $files = $config->{versions}{$version}{files};
+ foreach my $os (keys %$files) {
+ foreach my $lang (keys %{$files->{$os}}) {
+ next unless $files->{$os}{$lang}{complete};
+ my $tmpdir = File::Temp->newdir();
+ extract_mar(mar_filename($version, $os, $lang), "$tmpdir");
+ my $appfile = "$tmpdir/application.ini" if -f "$tmpdir/application.ini";
+ $appfile = "$tmpdir/Contents/Resources/application.ini"
+ if -f "$tmpdir/Contents/Resources/application.ini";
+ exit_error "Could not find application.ini" unless $appfile;
+ foreach my $line (read_file("$tmpdir/application.ini")) {
+ if ($line =~ m/^BuildID=(.*)$/) {
+ $config->{versions}{$version}{buildID} = $1;
+ return;
+ }
+ }
+ exit_error "Could not extract buildID from application.ini";
+ }
+ }
+}
+
sub get_response {
my ($config, $version, $os, @patches) = @_;
my $res;
@@ -257,7 +281,7 @@ sub get_response {
displayVersion => $version,
appVersion => $version,
platformVersion => get_config($config, $version, $os, 'platformVersion'),
- buildID => '20000101000000',
+ buildID => get_config($config, $version, $os, 'buildID'),
detailsURL => get_config($config, $version, $os, 'detailsURL'),
actions => 'showURL',
openURL => get_config($config, $version, $os, 'detailsURL'),
@@ -281,6 +305,7 @@ sub write_responses {
foreach my $channel (@channels) {
my $version = $config->{channels}{$channel};
get_version_files($config, $version);
+ get_buildinfos($config, $version);
my $files = $config->{versions}{$version}{files};
my $migrate_archs = $config->{versions}{$version}{migrate_archs} // {};
foreach my $old_os (keys %$migrate_archs) {
1
0
[torbutton/master] Bug 19733: GETINFO response parser doesn't handle AF_UNIX entries.
by gk@torproject.org 08 Sep '16
by gk@torproject.org 08 Sep '16
08 Sep '16
commit 5ea022aadf6416a1f046eac47a3ec28ea2a5dd7d
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Sep 8 10:50:49 2016 -0400
Bug 19733: GETINFO response parser doesn't handle AF_UNIX entries.
When performing the local Tor check (which compares the configured
Firefox SOCKS proxy to the one reported by GETINFO net/listeners/socks),
correctly handle UNIX domain sockets as well as IPv6 addresses.
---
src/chrome/content/torbutton.js | 78 ++++++++++++++++++++++++++++++-----------
1 file changed, 58 insertions(+), 20 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index e0fc931..acb4b4b 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -1534,48 +1534,86 @@ function torbutton_local_tor_check()
{
if (!didLogError) {
didLogError = true;
- torbutton_log(5, "unexpected tor response: " + resp);
+ torbutton_log(5, "Local Tor check: unexpected GETINFO response: " + resp);
}
}
+ function removeBrackets(aStr)
+ {
+ // Remove enclosing square brackets if present.
+ if (aStr.startsWith('[') && aStr.endsWith(']'))
+ return aStr.substr(1, aStr.length - 2);
+
+ return aStr;
+ }
+
// Sample response: net/listeners/socks="127.0.0.1:9149" "127.0.0.1:9150"
// First, check for command argument prefix.
- resp = resp.toLowerCase();
if (0 != resp.indexOf(kCmdArg + '=')) {
logUnexpectedResponse();
return false;
}
// Retrieve configured proxy settings and check each listener against them.
+ // When a Unix domain socket is configured, a file URL should be present in
+ // network.proxy.socks.
+ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1211567
let socksAddr = m_tb_prefs.getCharPref("network.proxy.socks");
let socksPort = m_tb_prefs.getIntPref("network.proxy.socks_port");
+ let socketPath;
+ if (socksAddr && socksAddr.startsWith("file:")) {
+ // Convert the file URL to a file path.
+ try {
+ let ioService = Cc["@mozilla.org/network/io-service;1"]
+ .getService(Ci.nsIIOService);
+ let fph = ioService.getProtocolHandler("file")
+ .QueryInterface(Ci.nsIFileProtocolHandler);
+ socketPath = fph.getFileFromURLSpec(socksAddr).path;
+ } catch (e) {
+ torbutton_log(5, "Local Tor check: Unix domain socket error: " + e);
+ return false;
+ }
+ } else {
+ socksAddr = removeBrackets(socksAddr);
+ }
+
let addrArray = resp.substr(kCmdArg.length + 1).split(' ');
let foundSocksListener = false;
- for (let i = 0; !foundSocksListener && (i < addrArray.length); ++i)
- {
- var addr = addrArray[i];
+ for (let i = 0; !foundSocksListener && (i < addrArray.length); ++i) {
+ let addr = addrArray[i];
// Remove double quotes if present.
let len = addr.length;
if ((len > 2) && ('"' == addr.charAt(0)) && ('"' == addr.charAt(len - 1)))
addr = addr.substring(1, len - 1);
- // Check against the configured proxy.
- let tokens = addr.split(':');
- if (tokens.length < 2)
- logUnexpectedResponse();
- else
- {
- let torSocksAddr = tokens[0];
- let torSocksPort = parseInt(tokens[1], 10);
- if ((torSocksAddr.length < 1) || isNaN(torSocksPort))
+ if (addr.startsWith("unix:")) {
+ if (!socketPath)
+ continue;
+
+ // Check against the configured UNIX domain socket proxy.
+ let path = addr.substring(5);
+ torbutton_log(2, "Tor socks listener (socket): " + path);
+ foundSocksListener = (socketPath === path);
+ } else if (!socketPath) {
+ // Check against the configured TCP proxy. We expect addr:port where addr
+ // may be an IPv6 address; that is, it may contain colon characters.
+ // Also, we remove enclosing square brackets before comparing addresses
+ // because tor requires them but Firefox does not.
+ let idx = addr.lastIndexOf(':');
+ if (idx < 0) {
logUnexpectedResponse();
- else
- {
- torbutton_log(2, "Tor socks listener: " + torSocksAddr + ':'
- + torSocksPort);
- foundSocksListener = ((socksAddr == torSocksAddr) &&
- (socksPort == torSocksPort));
+ } else {
+ let torSocksAddr = removeBrackets(addr.substring(0, idx));
+ let torSocksPort = parseInt(addr.substring(idx + 1), 10);
+ if ((torSocksAddr.length < 1) || isNaN(torSocksPort)) {
+ logUnexpectedResponse();
+ } else {
+ torbutton_log(2, "Tor socks listener: " + torSocksAddr + ':'
+ + torSocksPort);
+ foundSocksListener = ((socksAddr === torSocksAddr) &&
+ (socksPort === torSocksPort));
+ }
}
}
}
1
0
[tor-browser-bundle/master] Bug 19856: Make OS X builds reproducible again
by gk@torproject.org 08 Sep '16
by gk@torproject.org 08 Sep '16
08 Sep '16
commit 73a698d2e1875763c153282a0eb19c259bd3788b
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Aug 15 12:10:19 2016 +0000
Bug 19856: Make OS X builds reproducible again
We recently found a machine that includes actual timestamps into
OpenSSL libraries we need for tor. The reason for this is unknown as
other KVM and LXC machines are generating matching builds.
Resorting to libfaketime again solves this issue.
---
gitian/descriptors/mac/gitian-utils.yml | 34 ++++++++++++++++++++++-----------
1 file changed, 23 insertions(+), 11 deletions(-)
diff --git a/gitian/descriptors/mac/gitian-utils.yml b/gitian/descriptors/mac/gitian-utils.yml
index 33db2e8..f54d5cb 100644
--- a/gitian/descriptors/mac/gitian-utils.yml
+++ b/gitian/descriptors/mac/gitian-utils.yml
@@ -7,6 +7,7 @@ architectures:
- "i386"
- "amd64"
packages:
+- "faketime"
- "automake"
- "libtool"
- "zip"
@@ -14,6 +15,8 @@ reference_datetime: "2000-01-01 00:00:00"
remotes:
- "url": "https://github.com/libevent/libevent.git"
"dir": "libevent"
+- "url": "https://github.com/wolfcw/libfaketime"
+ "dir": "faketime"
- "url": "https://github.com/llvm-mirror/llvm"
"dir": "llvm"
- "url": "https://github.com/llvm-mirror/clang"
@@ -24,14 +27,13 @@ files:
- "apple-uni-sdk-10.6_20110407-0.flosoft1_i386.deb"
- "multiarch-darwin11-cctools127.2-gcc42-5666.3-llvmgcc42-2336.1-Linux-120724.tar.xz"
- "openssl.tar.gz"
-- "openssl-Make-build-reproducible.patch"
- "gmp.tar.bz2"
- "versions"
- "dzip.sh"
+- "libfaketime.patch"
script: |
INSTDIR="$HOME/install"
source versions
- export REFERENCE_DATETIME
export TZ=UTC
export LC_ALL=C
umask 0022
@@ -54,13 +56,21 @@ script: |
make $MAKEOPTS
make install
cd $INSTDIR
- # Since we stopped using libfaketime, the clang archive is no longer
- # reproducible. The reason is that it includes some .a archives and
- # other files which include timestamps.
- # Those files are however not part of the files we ship.
~/build/dzip.sh clang-$CLANG_VER-linux64-wheezy-utils.zip clang
cp *utils.zip $OUTDIR/
else
+ # Building libfaketime.
+ cd faketime
+ export GIT_COMMITTER_NAME="nobody"
+ export GIT_COMMITTER_EMAIL="nobody@localhost"
+ export GIT_COMMITTER_DATE="$REFERENCE_DATETIME"
+ git am ~/build/libfaketime.patch
+ make
+ DESTDIR="$INSTDIR/faketime" make install
+ export FAKETIME_SKIP_CMDS="make"
+ export FAKETIME=$REFERENCE_DATETIME
+ cd ..
+
# dpkg requires sbin directories in the PATH
export PATH="/usr/sbin:/sbin:$PATH"
sudo dpkg -i *.deb
@@ -81,14 +91,15 @@ script: |
./autogen.sh
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
./configure --disable-static --host=i686-apple-darwin11 --prefix=$INSTDIR/libevent
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
make $MAKEOPTS
make install
cd ..
# Building OpenSSL
+ # We still need libfaketime here it seems, see #19856 for details.
tar xzf openssl.tar.gz
cd openssl-*
- patch -p1 < ../openssl-Make-build-reproducible.patch
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
# TODO: Add enable-ec_nistp_64_gcc_128 for 64bit OS X.
./Configure --cross-compile-prefix=i686-apple-darwin11- $CFLAGS darwin64-x86_64-cc --prefix=$INSTDIR/openssl enable-ec_nistp_64_gcc_128
@@ -101,19 +112,20 @@ script: |
# Building GMP
tar xjf gmp.tar.bz2
cd gmp-*
+ # |configure| can't cope with nano seconds faked. And even if we would revert
+ # that feature it would hang sometimes for unknown but to libfaketime related
+ # reasons.
+ export LD_PRELOAD=""
find -type f -print0 | xargs -0 touch --date="$REFERENCE_DATETIME"
# Even if we are not shipping libgmpxx anymore we still need --enable-xcc
# during compile time.
./configure --host=x86_64-apple-darwin11 --prefix=$INSTDIR/gmp --disable-static --enable-shared --enable-cxx
+ export LD_PRELOAD="$INSTDIR/faketime/usr/local/lib/faketime/libfaketime.so.1"
make
make install
cd ..
# Grabbing the results
- # Since we stopped using libfaketime, the openssl archive is no
- # longer reproducible. The main reason is that it includes some .a
- # archives which include timestamps.
- # Those files are however not part of the files we ship.
cd $INSTDIR
~/build/dzip.sh openssl-$OPENSSL_VER-mac64-utils.zip openssl
~/build/dzip.sh libevent-${LIBEVENT_TAG#release-}-mac64-utils.zip libevent
1
0
07 Sep '16
commit b071421fa87b8f75bd6447b5cadf3288918c1fbd
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Sep 7 09:01:19 2016 +0000
Release preparations for 6.0.5
Changelog update, version bumps, and config.yml update
---
Bundle-Data/Docs/ChangeLog.txt | 20 ++++++++++++++++++++
gitian/versions | 10 +++++-----
tools/update-responses/config.yml | 11 +++++------
3 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/Bundle-Data/Docs/ChangeLog.txt b/Bundle-Data/Docs/ChangeLog.txt
index 2bdf3e2..4000a57 100644
--- a/Bundle-Data/Docs/ChangeLog.txt
+++ b/Bundle-Data/Docs/ChangeLog.txt
@@ -1,3 +1,23 @@
+Tor Browser 6.0.5 -- September 13
+ * All Platforms
+ * Update Firefox to 45.4.0esr
+ * Update Tor to 0.2.8.7
+ * Update Torbutton to 1.9.5.7
+ * Bug 18589: Clear site security settings during New Identity
+ * Bug 19906: "Maximizing Tor Browser" Notification can exist multiple times
+ * Update HTTPS-Everywhere to 5.2.4
+ * Bug 20092: Rotate ports for default obfs4 bridges
+ * Bug 20040: Add update support for unpacked HTTPS Everywhere
+ * Windows
+ * Bug 19725: Remove old updater files left on disk after upgrade to 6.x
+ * Linux
+ * Bug 19725: Remove old updater files left on disk after upgrade to 6.x
+ * Android
+ * Bug 19706: Store browser data in the app home directory
+ * Build system
+ * All platforms
+ * Upgrade Go to 1.4.3
+
Tor Browser 6.0.4 -- August 16
* All Platforms
* Update Tor to 0.2.8.6
diff --git a/gitian/versions b/gitian/versions
index cb482cc..410b15b 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -10,15 +10,15 @@ DATA_OUTSIDE_APP_DIR=1
VERIFY_TAGS=1
-FIREFOX_VERSION=45.3.0esr
+FIREFOX_VERSION=45.4.0esr
TORBROWSER_UPDATE_CHANNEL=release
-TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-6.0-1-build2
-TOR_TAG=tor-0.2.8.6
+TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-6.0-1-build1
+TOR_TAG=tor-0.2.8.7
TORLAUNCHER_TAG=0.2.9.3
-TORBUTTON_TAG=1.9.5.6
-HTTPSE_TAG=5.2.1
+TORBUTTON_TAG=1.9.5.7
+HTTPSE_TAG=5.2.4
NSIS_TAG=v0.3.1
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.22-stable
diff --git a/tools/update-responses/config.yml b/tools/update-responses/config.yml
index f20e9b1..d81d102 100644
--- a/tools/update-responses/config.yml
+++ b/tools/update-responses/config.yml
@@ -16,14 +16,13 @@ build_targets:
osx64: Darwin_x86_64-gcc3
channels:
alpha: 6.5a2
- release: 6.0.4
+ release: 6.0.5
versions:
- 6.0.4:
- platformVersion: 45.3.0
- detailsURL: https://blog.torproject.org/blog/tor-browser-604-released
+ 6.0.5:
+ platformVersion: 45.4.0
+ detailsURL: https://blog.torproject.org/blog/tor-browser-605-released
incremental_from:
- - 6.0.2
- - 6.0.3
+ - 6.0.4
migrate_archs:
osx32: osx64
osx32:
1
0
[tor-browser-bundle/maint-6.0] Bug 20092: Change ports for 6 default obfs4 bridges.
by gk@torproject.org 07 Sep '16
by gk@torproject.org 07 Sep '16
07 Sep '16
commit 8ca70d898ca83618915289af226fd6f82ff58f85
Author: Lynn Tsai <lynntsai(a)gmail.com>
Date: Tue Sep 6 16:06:17 2016 -0700
Bug 20092: Change ports for 6 default obfs4 bridges.
83.212.101.3 - LeifEricson
154.35.22.9 - GreenBelt
154.35.22.10 - Mosaddegh
154.35.22.11 - MaBishomarim
154.35.22.12 - JonbesheSabz
154.35.22.13 - Azadi
The previous ports will remain open for users of older versions.
Link of plan to make previously blocked bridges unblocked:
https://lists.torproject.org/pipermail/tor-project/2016-August/000664.html
Update: Place ports 154.35.22.12:80 and 154.35.22.13:443 back in order since
some users need those specific ports.
---
Bundle-Data/PTConfigs/bridge_prefs.js | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/Bundle-Data/PTConfigs/bridge_prefs.js b/Bundle-Data/PTConfigs/bridge_prefs.js
index 0b33d8c..f3b9d9f 100644
--- a/Bundle-Data/PTConfigs/bridge_prefs.js
+++ b/Bundle-Data/PTConfigs/bridge_prefs.js
@@ -15,22 +15,24 @@ pref("extensions.torlauncher.default_bridge.fte.4", "fte 128.105.214.163:8080 A1
pref("extensions.torlauncher.default_bridge.scramblesuit.1", "scramblesuit 83.212.101.3:443 A09D536DD1752D542E1FBB3C9CE4449D51298239 password=XTCXLG2JAMJKZW2POLBAOWOQETQSMASH");
-pref("extensions.torlauncher.default_bridge.obfs4.1", "obfs4 154.35.22.10:41835 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.1", "obfs4 154.35.22.10:2934 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.2", "obfs4 198.245.60.50:443 752CF7825B3B9EA6A98C83AC41F7099D67007EA5 cert=xpmQtKUqQ/6v5X7ijgYE/f03+l2/EuQ1dexjyUhh16wQlu/cpXUGalmhDIlhuiQPNEKmKw iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.3", "obfs4 192.99.11.54:443 7B126FAB960E5AC6A629C729434FF84FB5074EC2 cert=VW5f8+IBUWpPFxF+rsiVy2wXkyTQG7vEd+rHeN2jV5LIDNu8wMNEOqZXPwHdwMVEBdqXEw iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.4", "obfs4 109.105.109.165:10527 8DFCD8FB3285E855F5A55EDDA35696C743ABFC4E cert=Bvg/itxeL4TWKLP6N1MaQzSOC6tcRIBv6q57DYAZc3b2AzuM+/TfB7mqTFEfXILCjEwzVA iat-mode=0");
-pref("extensions.torlauncher.default_bridge.obfs4.5", "obfs4 83.212.101.3:41213 A09D536DD1752D542E1FBB3C9CE4449D51298239 cert=lPRQ/MXdD1t5SRZ9MquYQNT9m5DV757jtdXdlePmRCudUU9CFUOX1Tm7/meFSyPOsud7Cw iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.5", "obfs4 83.212.101.3:50000 A09D536DD1752D542E1FBB3C9CE4449D51298239 cert=lPRQ/MXdD1t5SRZ9MquYQNT9m5DV757jtdXdlePmRCudUU9CFUOX1Tm7/meFSyPOsud7Cw iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.6", "obfs4 109.105.109.147:13764 BBB28DF0F201E706BE564EFE690FE9577DD8386D cert=KfMQN/tNMFdda61hMgpiMI7pbwU1T+wxjTulYnfw+4sgvG0zSH7N7fwT10BI8MUdAD7iJA iat-mode=0");
-pref("extensions.torlauncher.default_bridge.obfs4.7", "obfs4 154.35.22.11:49868 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.7", "obfs4 154.35.22.11:2413 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.8", "obfs4 154.35.22.12:80 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.9", "obfs4 154.35.22.13:443 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.10", "obfs4 154.35.22.10:80 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.11", "obfs4 154.35.22.10:443 8FB9F4319E89E5C6223052AA525A192AFBC85D55 cert=GGGS1TX4R81m3r0HBl79wKy1OtPPNR2CZUIrHjkRg65Vc2VR8fOyo64f9kmT1UAFG7j0HQ iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.12", "obfs4 154.35.22.11:443 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.13", "obfs4 154.35.22.11:80 A832D176ECD5C7C6B58825AE22FC4C90FA249637 cert=YPbQqXPiqTUBfjGFLpm9JYEFTBvnzEJDKJxXG5Sxzrr/v2qrhGU4Jls9lHjLAhqpXaEfZw iat-mode=0");
-pref("extensions.torlauncher.default_bridge.obfs4.14", "obfs4 154.35.22.9:60873 C73ADBAC8ADFDBF0FC0F3F4E8091C0107D093716 cert=gEGKc5WN/bSjFa6UkG9hOcft1tuK+cV8hbZ0H6cqXiMPLqSbCh2Q3PHe5OOr6oMVORhoJA iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.14", "obfs4 154.35.22.9:5881 C73ADBAC8ADFDBF0FC0F3F4E8091C0107D093716 cert=gEGKc5WN/bSjFa6UkG9hOcft1tuK+cV8hbZ0H6cqXiMPLqSbCh2Q3PHe5OOr6oMVORhoJA iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.15", "obfs4 154.35.22.9:80 C73ADBAC8ADFDBF0FC0F3F4E8091C0107D093716 cert=gEGKc5WN/bSjFa6UkG9hOcft1tuK+cV8hbZ0H6cqXiMPLqSbCh2Q3PHe5OOr6oMVORhoJA iat-mode=0");
pref("extensions.torlauncher.default_bridge.obfs4.16", "obfs4 154.35.22.9:443 C73ADBAC8ADFDBF0FC0F3F4E8091C0107D093716 cert=gEGKc5WN/bSjFa6UkG9hOcft1tuK+cV8hbZ0H6cqXiMPLqSbCh2Q3PHe5OOr6oMVORhoJA iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.17", "obfs4 154.35.22.12:1894 00DC6C4FA49A65BD1472993CF6730D54F11E0DBB cert=N86E9hKXXXVz6G7w2z8wFfhIDztDAzZ/3poxVePHEYjbKDWzjkRDccFMAnhK75fc65pYSg iat-mode=0");
+pref("extensions.torlauncher.default_bridge.obfs4.18", "obfs4 154.35.22.13:4319 FE7840FE1E21FE0A0639ED176EDA00A3ECA1E34D cert=fKnzxr+m+jWXXQGCaXe4f2gGoPXMzbL+bTBbXMYXuK0tMotd+nXyS33y2mONZWU29l81CA iat-mode=0");
pref("extensions.torlauncher.default_bridge.meek-amazon.1", "meek 0.0.2.0:2 B9E7141C594AF25699E0079C1F0146F409495296 url=https://d2zfqthxsdq309.cloudfront.net/ front=a0.awsstatic.com");
pref("extensions.torlauncher.default_bridge.meek-azure.1", "meek 0.0.2.0:3 A2C13B7DFCAB1CBF3A884B6EB99A98067AB6EF44 url=https://az786092.vo.msecnd.net/ front=ajax.aspnetcdn.com");
1
0