tbb-commits
Threads by month
- ----- 2025 -----
- 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
October 2015
- 1 participants
- 55 discussions

[torbutton/master] Bug 17351: Remove "fix_google_srch" code/entities (unused).
by gk@torproject.org 19 Oct '15
by gk@torproject.org 19 Oct '15
19 Oct '15
commit 508c0926d0b8f0f52e3c5360df4c865939634fc3
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Wed Oct 14 15:54:29 2015 -0400
Bug 17351: Remove "fix_google_srch" code/entities (unused).
Removed torbutton_wrap_search_service() function,
torbutton.prefs.fix_google_srch entities, and
extensions.torbutton.fix_google_srch default pref.
---
src/chrome/content/torbutton.js | 50 -------------------------------
src/chrome/locale/af/torbutton.dtd |…
[View More] 1 -
src/chrome/locale/ak/torbutton.dtd | 1 -
src/chrome/locale/am/torbutton.dtd | 1 -
src/chrome/locale/ar/torbutton.dtd | 1 -
src/chrome/locale/arn/torbutton.dtd | 1 -
src/chrome/locale/ast/torbutton.dtd | 1 -
src/chrome/locale/az/torbutton.dtd | 1 -
src/chrome/locale/be/torbutton.dtd | 1 -
src/chrome/locale/bg/torbutton.dtd | 1 -
src/chrome/locale/bms/torbutton.dtd | 1 -
src/chrome/locale/bn-IN/torbutton.dtd | 1 -
src/chrome/locale/bn/torbutton.dtd | 1 -
src/chrome/locale/bo/torbutton.dtd | 1 -
src/chrome/locale/br/torbutton.dtd | 1 -
src/chrome/locale/bs/torbutton.dtd | 1 -
src/chrome/locale/ca/torbutton.dtd | 1 -
src/chrome/locale/cs/torbutton.dtd | 1 -
src/chrome/locale/csb/torbutton.dtd | 1 -
src/chrome/locale/cy/torbutton.dtd | 1 -
src/chrome/locale/da/torbutton.dtd | 1 -
src/chrome/locale/de/torbutton.dtd | 1 -
src/chrome/locale/dz/torbutton.dtd | 1 -
src/chrome/locale/el/torbutton.dtd | 1 -
src/chrome/locale/en/torbutton.dtd | 1 -
src/chrome/locale/eo/torbutton.dtd | 1 -
src/chrome/locale/es/torbutton.dtd | 1 -
src/chrome/locale/et/torbutton.dtd | 1 -
src/chrome/locale/eu/torbutton.dtd | 1 -
src/chrome/locale/fa/torbutton.dtd | 1 -
src/chrome/locale/fi/torbutton.dtd | 1 -
src/chrome/locale/fil/torbutton.dtd | 1 -
src/chrome/locale/fo/torbutton.dtd | 1 -
src/chrome/locale/fr/torbutton.dtd | 1 -
src/chrome/locale/fur/torbutton.dtd | 1 -
src/chrome/locale/fy/torbutton.dtd | 1 -
src/chrome/locale/ga/torbutton.dtd | 1 -
src/chrome/locale/gl/torbutton.dtd | 1 -
src/chrome/locale/gu/torbutton.dtd | 1 -
src/chrome/locale/gun/torbutton.dtd | 1 -
src/chrome/locale/ha/torbutton.dtd | 1 -
src/chrome/locale/he/torbutton.dtd | 1 -
src/chrome/locale/hi/torbutton.dtd | 1 -
src/chrome/locale/hr/torbutton.dtd | 1 -
src/chrome/locale/ht/torbutton.dtd | 1 -
src/chrome/locale/hu/torbutton.dtd | 1 -
src/chrome/locale/hy/torbutton.dtd | 1 -
src/chrome/locale/id/torbutton.dtd | 1 -
src/chrome/locale/is/torbutton.dtd | 1 -
src/chrome/locale/it/torbutton.dtd | 1 -
src/chrome/locale/ja/torbutton.dtd | 1 -
src/chrome/locale/jv/torbutton.dtd | 1 -
src/chrome/locale/ka/torbutton.dtd | 1 -
src/chrome/locale/km/torbutton.dtd | 1 -
src/chrome/locale/kn/torbutton.dtd | 1 -
src/chrome/locale/ko/torbutton.dtd | 1 -
src/chrome/locale/ku/torbutton.dtd | 1 -
src/chrome/locale/kw/torbutton.dtd | 1 -
src/chrome/locale/ky/torbutton.dtd | 1 -
src/chrome/locale/lb/torbutton.dtd | 1 -
src/chrome/locale/lg/torbutton.dtd | 1 -
src/chrome/locale/ln/torbutton.dtd | 1 -
src/chrome/locale/lo/torbutton.dtd | 1 -
src/chrome/locale/lt/torbutton.dtd | 1 -
src/chrome/locale/lv/torbutton.dtd | 1 -
src/chrome/locale/mg/torbutton.dtd | 1 -
src/chrome/locale/mi/torbutton.dtd | 1 -
src/chrome/locale/mk/torbutton.dtd | 1 -
src/chrome/locale/ml/torbutton.dtd | 1 -
src/chrome/locale/mn/torbutton.dtd | 1 -
src/chrome/locale/mr/torbutton.dtd | 1 -
src/chrome/locale/ms/torbutton.dtd | 1 -
src/chrome/locale/mt/torbutton.dtd | 1 -
src/chrome/locale/my/torbutton.dtd | 1 -
src/chrome/locale/nah/torbutton.dtd | 1 -
src/chrome/locale/nap/torbutton.dtd | 1 -
src/chrome/locale/nb/torbutton.dtd | 1 -
src/chrome/locale/ne/torbutton.dtd | 1 -
src/chrome/locale/nl/torbutton.dtd | 1 -
src/chrome/locale/nn/torbutton.dtd | 1 -
src/chrome/locale/nso/torbutton.dtd | 1 -
src/chrome/locale/oc/torbutton.dtd | 1 -
src/chrome/locale/or/torbutton.dtd | 1 -
src/chrome/locale/pa/torbutton.dtd | 1 -
src/chrome/locale/pap/torbutton.dtd | 1 -
src/chrome/locale/pl/torbutton.dtd | 1 -
src/chrome/locale/pms/torbutton.dtd | 1 -
src/chrome/locale/ps/torbutton.dtd | 1 -
src/chrome/locale/pt-BR/torbutton.dtd | 1 -
src/chrome/locale/pt/torbutton.dtd | 1 -
src/chrome/locale/ro/torbutton.dtd | 1 -
src/chrome/locale/ru/torbutton.dtd | 1 -
src/chrome/locale/sco/torbutton.dtd | 1 -
src/chrome/locale/sk/torbutton.dtd | 1 -
src/chrome/locale/sl/torbutton.dtd | 1 -
src/chrome/locale/so/torbutton.dtd | 1 -
src/chrome/locale/son/torbutton.dtd | 1 -
src/chrome/locale/sq/torbutton.dtd | 1 -
src/chrome/locale/sr/torbutton.dtd | 1 -
src/chrome/locale/st/torbutton.dtd | 1 -
src/chrome/locale/su/torbutton.dtd | 1 -
src/chrome/locale/sv/torbutton.dtd | 1 -
src/chrome/locale/sw/torbutton.dtd | 1 -
src/chrome/locale/ta/torbutton.dtd | 1 -
src/chrome/locale/te/torbutton.dtd | 1 -
src/chrome/locale/tg/torbutton.dtd | 1 -
src/chrome/locale/th/torbutton.dtd | 1 -
src/chrome/locale/ti/torbutton.dtd | 1 -
src/chrome/locale/tk/torbutton.dtd | 1 -
src/chrome/locale/tr/torbutton.dtd | 1 -
src/chrome/locale/uk/torbutton.dtd | 1 -
src/chrome/locale/ur/torbutton.dtd | 1 -
src/chrome/locale/ve/torbutton.dtd | 1 -
src/chrome/locale/vi/torbutton.dtd | 1 -
src/chrome/locale/wa/torbutton.dtd | 1 -
src/chrome/locale/wo/torbutton.dtd | 1 -
src/chrome/locale/zh-CN/torbutton.dtd | 1 -
src/chrome/locale/zh-HK/torbutton.dtd | 1 -
src/chrome/locale/zh-TW/torbutton.dtd | 1 -
src/chrome/locale/zu/torbutton.dtd | 1 -
src/defaults/preferences/preferences.js | 1 -
website/design/design.xml | 21 -------------
website/design/index.html.en | 10 -------
123 files changed, 201 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 11591dc..fb9c8c3 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -2901,53 +2901,6 @@ function torbutton_fixup_old_prefs()
// ---------------------- Event handlers -----------------
-// Bug 1506 P1/P3: This removes any platform-specific junk
-// from the omnibox. In Tor Browser, it should not be needed.
-function torbutton_wrap_search_service()
-{
- var ss = Cc["@mozilla.org/browser/search-service;1"]
- .getService(Ci.nsIBrowserSearchService);
- var junk = {"value":0};
- var engines = ss.getEngines(junk);
-
- for(var i = 0; i < engines.length; ++i) {
- var origEngineObj = engines[i].wrappedJSObject;
- torbutton_log(2, "Got engine: "+origEngineObj._name);
- // hrmm.. could use
- // searchForm.match(/^www\.google\.(co\.\S\S|com|\S\S|com\.\S\S)$/);
- if(origEngineObj._name.indexOf("Google") != -1) {
- torbutton_log(3, "Found google search plugin to wrap.");
- if (typeof(origEngineObj.oldGetSubmission) == "undefined") {
- torbutton_log(3, "Original window for google search");
- origEngineObj.oldGetSubmission=origEngineObj.getSubmission;
- } else {
- torbutton_log(3, "Secondary window for google search");
- }
- origEngineObj.getSubmission = function lmbd(aData, respType) {
- var sub = this.oldGetSubmission(aData, respType);
- if(!m_tb_prefs.getBoolPref("extensions.torbutton.tor_enabled")
- || !m_tb_prefs.getBoolPref("extensions.torbutton.fix_google_srch")) {
- return sub;
- }
-
- var querymatch = sub.uri.path.match("[\?\&](q=[^&]+)(?:[\&]|$)")[1];
- var querypath = sub.uri.path.split("?")[0];
- torbutton_log(3, "Got submission call to Google search.");
-
- var newURI = Cc["@mozilla.org/network/standard-url;1"]
- .createInstance(Ci.nsIStandardURL);
- newURI.init(Ci.nsIStandardURL.URLTYPE_STANDARD, 80,
- sub.uri.scheme+"://"+sub.uri.host+querypath+"?"+querymatch,
- sub.uri.originCharset, null);
- newURI = newURI.QueryInterface(Components.interfaces.nsIURI);
- sub._uri = newURI;
- torbutton_log(3, "Returning new search url.");
- return sub;
- };
- }
- }
-}
-
// Bug 1506 P1-P3: Most of these observers aren't very important.
// See their comments for details
function torbutton_do_main_window_startup()
@@ -2963,9 +2916,6 @@ function torbutton_do_main_window_startup()
progress.addProgressListener(torbutton_weblistener,
Components.interfaces.nsIWebProgress.NOTIFY_LOCATION);
- // Wrap Google search service.
- //torbutton_wrap_search_service();
-
torbutton_unique_pref_observer.register();
}
diff --git a/src/chrome/locale/af/torbutton.dtd b/src/chrome/locale/af/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/af/torbutton.dtd
+++ b/src/chrome/locale/af/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ak/torbutton.dtd b/src/chrome/locale/ak/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ak/torbutton.dtd
+++ b/src/chrome/locale/ak/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/am/torbutton.dtd b/src/chrome/locale/am/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/am/torbutton.dtd
+++ b/src/chrome/locale/am/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index bf5e04f..b1cc509 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "أزل المنصة واللغة من استفسارات محرك بحث غوغل">
<!ENTITY torbutton.prefs.transparentTor "شفافية توريفكيشن (تحتاج موجه تور أو ترانسبوكسي مخصص)">
<!ENTITY torbutton.prefs.priv_caption "إعدادات الخصوصية">
<!ENTITY torbutton.prefs.block_disk "لا تسجل سجل التصفح أو بيانات المواقع الألكترونية (تفعيل التصفح الخصوصي)">
diff --git a/src/chrome/locale/arn/torbutton.dtd b/src/chrome/locale/arn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/arn/torbutton.dtd
+++ b/src/chrome/locale/arn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ast/torbutton.dtd b/src/chrome/locale/ast/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ast/torbutton.dtd
+++ b/src/chrome/locale/ast/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/az/torbutton.dtd b/src/chrome/locale/az/torbutton.dtd
index 0f6aba3..2953324 100644
--- a/src/chrome/locale/az/torbutton.dtd
+++ b/src/chrome/locale/az/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google axtarış qutusunun Strip platformu və qapalı dil sorğusu">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/be/torbutton.dtd b/src/chrome/locale/be/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/be/torbutton.dtd
+++ b/src/chrome/locale/be/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bg/torbutton.dtd b/src/chrome/locale/bg/torbutton.dtd
index 2cc09d1..d0cd061 100644
--- a/src/chrome/locale/bg/torbutton.dtd
+++ b/src/chrome/locale/bg/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bms/torbutton.dtd b/src/chrome/locale/bms/torbutton.dtd
index fe6a4fd..0bee3a1 100644
--- a/src/chrome/locale/bms/torbutton.dtd
+++ b/src/chrome/locale/bms/torbutton.dtd
@@ -128,5 +128,4 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "scroogle.org">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google Search Box queries မွ platform ႏွင့္ language မ်ားေျပာင္းရန္">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
diff --git a/src/chrome/locale/bn-IN/torbutton.dtd b/src/chrome/locale/bn-IN/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/bn-IN/torbutton.dtd
+++ b/src/chrome/locale/bn-IN/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bn/torbutton.dtd b/src/chrome/locale/bn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/bn/torbutton.dtd
+++ b/src/chrome/locale/bn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bo/torbutton.dtd b/src/chrome/locale/bo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/bo/torbutton.dtd
+++ b/src/chrome/locale/bo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/br/torbutton.dtd b/src/chrome/locale/br/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/br/torbutton.dtd
+++ b/src/chrome/locale/br/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/bs/torbutton.dtd b/src/chrome/locale/bs/torbutton.dtd
index 5afe852..cc23948 100644
--- a/src/chrome/locale/bs/torbutton.dtd
+++ b/src/chrome/locale/bs/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ca/torbutton.dtd b/src/chrome/locale/ca/torbutton.dtd
index 9a298e2..38408ec 100644
--- a/src/chrome/locale/ca/torbutton.dtd
+++ b/src/chrome/locale/ca/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Desactiva les prioritats d'idioma dels suggeriments de la barra Google Search">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/cs/torbutton.dtd b/src/chrome/locale/cs/torbutton.dtd
index 55957a6..f02122e 100644
--- a/src/chrome/locale/cs/torbutton.dtd
+++ b/src/chrome/locale/cs/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/csb/torbutton.dtd b/src/chrome/locale/csb/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/csb/torbutton.dtd
+++ b/src/chrome/locale/csb/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/cy/torbutton.dtd b/src/chrome/locale/cy/torbutton.dtd
index 4fb31ab..550acef 100644
--- a/src/chrome/locale/cy/torbutton.dtd
+++ b/src/chrome/locale/cy/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/da/torbutton.dtd b/src/chrome/locale/da/torbutton.dtd
index acfc614..214f2aa 100644
--- a/src/chrome/locale/da/torbutton.dtd
+++ b/src/chrome/locale/da/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Fjern platform og sprog fra forespørgsler i Google-søgninger">
<!ENTITY torbutton.prefs.transparentTor "Gennemsigtig Torifikation (Kræver tilpasset transproxy eller Tor-router)">
<!ENTITY torbutton.prefs.block_disk "Undlad at registrere historik for browsing eller data for websteder (aktiverer tilstanden Privat browsing)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Begræns tredjeparts-cookies og andre registreringsdata">
diff --git a/src/chrome/locale/de/torbutton.dtd b/src/chrome/locale/de/torbutton.dtd
index dbf16ac..ebfdb3d 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Betriebssystem und Sprache bei Google Suchabfragen nicht übermitteln">
<!ENTITY torbutton.prefs.transparentTor "Transparente-Torification (Erfordert eigenen Transproxy oder Tor-Router)">
<!ENTITY torbutton.prefs.priv_caption "Privatsphären-Einstellungen">
<!ENTITY torbutton.prefs.block_disk "Browser-Verlauf und Internetdaten nicht speichern (aktiviert den privaten Browser-Modus)">
diff --git a/src/chrome/locale/dz/torbutton.dtd b/src/chrome/locale/dz/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/dz/torbutton.dtd
+++ b/src/chrome/locale/dz/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/el/torbutton.dtd b/src/chrome/locale/el/torbutton.dtd
index 2886f59..f0fbbe6 100644
--- a/src/chrome/locale/el/torbutton.dtd
+++ b/src/chrome/locale/el/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Αφαίρεσε την πλατφόρμα και τη γλώσσα (του συστήματος) απο τα ερωτήματα στα κουτιά αναζήτησης">
<!ENTITY torbutton.prefs.transparentTor "Διαφανής Torification (Απαιτεί προσαρμοσμένο proxy ή Tor δρομολογητή)">
<!ENTITY torbutton.prefs.block_disk "Καμμια καταγραφη του ιστορικυυ περιήγησης ή δεδομένων ιστοσελίδας (ενεργοποιηση της κατάστασης ιδιωτικής περιήγησης) ">
<!ENTITY torbutton.prefs.restrict_thirdparty "Περιορισμος των cookies τριτων και αλλων δεδομενων παρακολουθησης">
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en/torbutton.dtd
index 4a7bf7e..8ff33c5 100644
--- a/src/chrome/locale/en/torbutton.dtd
+++ b/src/chrome/locale/en/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.priv_caption "Privacy Settings">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
diff --git a/src/chrome/locale/eo/torbutton.dtd b/src/chrome/locale/eo/torbutton.dtd
index 6b4c927..07499c0 100644
--- a/src/chrome/locale/eo/torbutton.dtd
+++ b/src/chrome/locale/eo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/es/torbutton.dtd b/src/chrome/locale/es/torbutton.dtd
index ac84de0..94a7219 100644
--- a/src/chrome/locale/es/torbutton.dtd
+++ b/src/chrome/locale/es/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Despojar de información de su plataforma e idioma a las consultas en los cuadros de búsqueda de Google">
<!ENTITY torbutton.prefs.transparentTor "Torificación transparente (requiere un transproxy personalizado o un router Tor)">
<!ENTITY torbutton.prefs.priv_caption "Parámetros de privacidad">
<!ENTITY torbutton.prefs.block_disk "No registrar historial de navegación o datos del sitio web (habilita Modo de Navegación Privada)">
diff --git a/src/chrome/locale/et/torbutton.dtd b/src/chrome/locale/et/torbutton.dtd
index 0fa119b..8240b08 100644
--- a/src/chrome/locale/et/torbutton.dtd
+++ b/src/chrome/locale/et/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 9bb8698..066fbc3 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Kendu plataforma eta hizkuntza Google Searh Box eskaeretatik">
<!ENTITY torbutton.prefs.transparentTor "Torifikazio Gardena (transproxy pertsonalizatua edo Tor routerra behar du)">
<!ENTITY torbutton.prefs.priv_caption "Pribatutasun ezarpenak">
<!ENTITY torbutton.prefs.block_disk "Ez grabatu nabigatze historia edo webgune datuak (Nabigatze pribatu modua gaitzen du)">
diff --git a/src/chrome/locale/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index 518a836..d860beb 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "اطلاعات مربوط به نوع سيستم عامل و مرورگر و زبان مورد استفاده شما را از ورودیهای جستجوگر گوگل حذف کن">
<!ENTITY torbutton.prefs.transparentTor "سازگارسازی با تُر به صورت شفاف (نياز به رهياب تُر يا Tor router و يا transproxy سفارشی دارد)">
<!ENTITY torbutton.prefs.priv_caption "تنظیمات حریم خصوصی">
<!ENTITY torbutton.prefs.block_disk "ثبتنكردن تاريخچه يا دادههاى وبگاه (گشت و گذار خصوصى فعال مىكند)">
diff --git a/src/chrome/locale/fi/torbutton.dtd b/src/chrome/locale/fi/torbutton.dtd
index 1118dd9..db531b9 100644
--- a/src/chrome/locale/fi/torbutton.dtd
+++ b/src/chrome/locale/fi/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Poista yksilöintitiedot (laitteisto ja kieliasetukset) Google hakuja suoritettaessa ">
<!ENTITY torbutton.prefs.transparentTor "Käytä Toria läpinäkyvästi (edellyttää mukautetun transproxyn tai Tor-reitittimen käyttöä)">
<!ENTITY torbutton.prefs.block_disk "Älä säilytä selaushistoriaa tai verkkosivuston tietoa (käynnistää yksityisen selauksen)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Estä kolmannen osapuolen evästeet ja muut seurantatiedot">
diff --git a/src/chrome/locale/fil/torbutton.dtd b/src/chrome/locale/fil/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fil/torbutton.dtd
+++ b/src/chrome/locale/fil/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/fo/torbutton.dtd b/src/chrome/locale/fo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fo/torbutton.dtd
+++ b/src/chrome/locale/fo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index c7976bc..64dcd96 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Supprimer les informations relatives à la plateforme et à la langue des requêtes Google">
<!ENTITY torbutton.prefs.transparentTor "Torification transparente (requiert un transproxy personnalisé ou un routeur Tor)">
<!ENTITY torbutton.prefs.priv_caption "Paramètres de vie privé">
<!ENTITY torbutton.prefs.block_disk "Ne pas sauvegarder l'historique de navigation et les données des sites webs (active le Mode de Navigation Privée)">
diff --git a/src/chrome/locale/fur/torbutton.dtd b/src/chrome/locale/fur/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fur/torbutton.dtd
+++ b/src/chrome/locale/fur/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/fy/torbutton.dtd b/src/chrome/locale/fy/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/fy/torbutton.dtd
+++ b/src/chrome/locale/fy/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ga/torbutton.dtd b/src/chrome/locale/ga/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ga/torbutton.dtd
+++ b/src/chrome/locale/ga/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/gl/torbutton.dtd b/src/chrome/locale/gl/torbutton.dtd
index 6cfbf8d..e71657a 100644
--- a/src/chrome/locale/gl/torbutton.dtd
+++ b/src/chrome/locale/gl/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/gu/torbutton.dtd b/src/chrome/locale/gu/torbutton.dtd
index 0aa8fce..ff1d104 100644
--- a/src/chrome/locale/gu/torbutton.dtd
+++ b/src/chrome/locale/gu/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/gun/torbutton.dtd b/src/chrome/locale/gun/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/gun/torbutton.dtd
+++ b/src/chrome/locale/gun/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ha/torbutton.dtd b/src/chrome/locale/ha/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ha/torbutton.dtd
+++ b/src/chrome/locale/ha/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/he/torbutton.dtd b/src/chrome/locale/he/torbutton.dtd
index 3f16cfa..aaf1ff2 100644
--- a/src/chrome/locale/he/torbutton.dtd
+++ b/src/chrome/locale/he/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "פלטפורמת רצועה ושפה משל שאילתות תיבת חיפוש של גוגל">
<!ENTITY torbutton.prefs.transparentTor "הפעלת טור בצורה בלתי נראית (דורש transproxy או Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/hi/torbutton.dtd b/src/chrome/locale/hi/torbutton.dtd
index 38c8171..081cbba 100644
--- a/src/chrome/locale/hi/torbutton.dtd
+++ b/src/chrome/locale/hi/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/hr/torbutton.dtd b/src/chrome/locale/hr/torbutton.dtd
index 695962e..83d400d 100644
--- a/src/chrome/locale/hr/torbutton.dtd
+++ b/src/chrome/locale/hr/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ht/torbutton.dtd b/src/chrome/locale/ht/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ht/torbutton.dtd
+++ b/src/chrome/locale/ht/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/hu/torbutton.dtd b/src/chrome/locale/hu/torbutton.dtd
index 2e07252..557f4a9 100644
--- a/src/chrome/locale/hu/torbutton.dtd
+++ b/src/chrome/locale/hu/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Szedje ki az operációs rendszert és a nyelvet a Google kereső ablakokból">
<!ENTITY torbutton.prefs.transparentTor "Átlátszó Tor-osítás (Egyedi transproxy-t vagy Tor routert igényel)">
<!ENTITY torbutton.prefs.block_disk "Ne rögzítsen böngésző előzményeket, vagy weboldal adatot (engedélyezi a Privát böngésző módot)">
<!ENTITY torbutton.prefs.restrict_thirdparty "A harmadik féltől származó sütik és nyomkövetési adatok korlátozása">
diff --git a/src/chrome/locale/hy/torbutton.dtd b/src/chrome/locale/hy/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/hy/torbutton.dtd
+++ b/src/chrome/locale/hy/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/id/torbutton.dtd b/src/chrome/locale/id/torbutton.dtd
index 8b0a7c4..cf2ecde 100644
--- a/src/chrome/locale/id/torbutton.dtd
+++ b/src/chrome/locale/id/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Lepaskan serambi dan bahasa dari Kotak Pencarian Google">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/is/torbutton.dtd b/src/chrome/locale/is/torbutton.dtd
index 35a7503..6893200 100644
--- a/src/chrome/locale/is/torbutton.dtd
+++ b/src/chrome/locale/is/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index 418fa4c..c42fb54 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Estrai sistema e idioma dalle interrogazioni di Google Search Box">
<!ENTITY torbutton.prefs.transparentTor "Torificazione trasparente (richiede un transproxy personalizzato o un tor router)">
<!ENTITY torbutton.prefs.priv_caption "Impostazioni Privacy">
<!ENTITY torbutton.prefs.block_disk "Non registrare la cronologia di navigazione o i dati dei siti (attiva la Navigazione Anonima)">
diff --git a/src/chrome/locale/ja/torbutton.dtd b/src/chrome/locale/ja/torbutton.dtd
index 0222021..4582b06 100644
--- a/src/chrome/locale/ja/torbutton.dtd
+++ b/src/chrome/locale/ja/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google検索ボックスのクエリからプラットフォームと言語を外す">
<!ENTITY torbutton.prefs.transparentTor "透過型Tor化 (カスタム透過型プロキシかTorのルーターが必要)">
<!ENTITY torbutton.prefs.priv_caption "プライバシー設定">
<!ENTITY torbutton.prefs.block_disk "ブラウジング履歴やウェブサイトのデータを記録しない (プライベートブラウジングモードを有効化)">
diff --git a/src/chrome/locale/jv/torbutton.dtd b/src/chrome/locale/jv/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/jv/torbutton.dtd
+++ b/src/chrome/locale/jv/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ka/torbutton.dtd b/src/chrome/locale/ka/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ka/torbutton.dtd
+++ b/src/chrome/locale/ka/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/km/torbutton.dtd b/src/chrome/locale/km/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/km/torbutton.dtd
+++ b/src/chrome/locale/km/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/kn/torbutton.dtd b/src/chrome/locale/kn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/kn/torbutton.dtd
+++ b/src/chrome/locale/kn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ko/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index 46aede2..95b0852 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "구글 검색 쿼리시 플랫폼과 언어 정보를 벗겨냄">
<!ENTITY torbutton.prefs.transparentTor "투명 Toritication (사용자 transproxy나 Tor 라우터 필요)">
<!ENTITY torbutton.prefs.priv_caption "개인 정보 설정">
<!ENTITY torbutton.prefs.block_disk "브라우징 히스토리나 웹사이트 데이터를 기록하지 마십시오 (Private Browsing 모드 활성화)">
diff --git a/src/chrome/locale/ku/torbutton.dtd b/src/chrome/locale/ku/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ku/torbutton.dtd
+++ b/src/chrome/locale/ku/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/kw/torbutton.dtd b/src/chrome/locale/kw/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/kw/torbutton.dtd
+++ b/src/chrome/locale/kw/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ky/torbutton.dtd b/src/chrome/locale/ky/torbutton.dtd
index b13f2bf..50a94d9 100644
--- a/src/chrome/locale/ky/torbutton.dtd
+++ b/src/chrome/locale/ky/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lb/torbutton.dtd b/src/chrome/locale/lb/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/lb/torbutton.dtd
+++ b/src/chrome/locale/lb/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lg/torbutton.dtd b/src/chrome/locale/lg/torbutton.dtd
index 056cc52..b3b9968 100644
--- a/src/chrome/locale/lg/torbutton.dtd
+++ b/src/chrome/locale/lg/torbutton.dtd
@@ -129,5 +129,4 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "scroogle.org">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
diff --git a/src/chrome/locale/ln/torbutton.dtd b/src/chrome/locale/ln/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ln/torbutton.dtd
+++ b/src/chrome/locale/ln/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lo/torbutton.dtd b/src/chrome/locale/lo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/lo/torbutton.dtd
+++ b/src/chrome/locale/lo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lt/torbutton.dtd b/src/chrome/locale/lt/torbutton.dtd
index 1d76f49..10c3b14 100644
--- a/src/chrome/locale/lt/torbutton.dtd
+++ b/src/chrome/locale/lt/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/lv/torbutton.dtd b/src/chrome/locale/lv/torbutton.dtd
index 146b036..aed59e9 100644
--- a/src/chrome/locale/lv/torbutton.dtd
+++ b/src/chrome/locale/lv/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Noņemt platformu un valodu no gūgļa meklēšanas lodziņu jeb Google Search Box vaicājumiem">
<!ENTITY torbutton.prefs.transparentTor "Pārredzama torifikācija (nepieciešams pielāgots pārstarpnieks jeb transproxy vai Tor'a maršrutētājs)">
<!ENTITY torbutton.prefs.block_disk "Nereģistrēt pārlūkošanas vēsturi vai tīmekļa vietņu datus (iespējo Privātas pārlūkošanas režīmu)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Ierobežot trešo personu sīkdatnes un citus izsekošanas datus">
diff --git a/src/chrome/locale/mg/torbutton.dtd b/src/chrome/locale/mg/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mg/torbutton.dtd
+++ b/src/chrome/locale/mg/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mi/torbutton.dtd b/src/chrome/locale/mi/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mi/torbutton.dtd
+++ b/src/chrome/locale/mi/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mk/torbutton.dtd b/src/chrome/locale/mk/torbutton.dtd
index 92fc727..34895dd 100644
--- a/src/chrome/locale/mk/torbutton.dtd
+++ b/src/chrome/locale/mk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Скриј ја платформата и јазикот при барањата преку полето за пребарување со Google">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ml/torbutton.dtd b/src/chrome/locale/ml/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ml/torbutton.dtd
+++ b/src/chrome/locale/ml/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mn/torbutton.dtd b/src/chrome/locale/mn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mn/torbutton.dtd
+++ b/src/chrome/locale/mn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mr/torbutton.dtd b/src/chrome/locale/mr/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mr/torbutton.dtd
+++ b/src/chrome/locale/mr/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ms/torbutton.dtd b/src/chrome/locale/ms/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ms/torbutton.dtd
+++ b/src/chrome/locale/ms/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/mt/torbutton.dtd b/src/chrome/locale/mt/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/mt/torbutton.dtd
+++ b/src/chrome/locale/mt/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/my/torbutton.dtd b/src/chrome/locale/my/torbutton.dtd
index d2a6e73..1f31c3c 100644
--- a/src/chrome/locale/my/torbutton.dtd
+++ b/src/chrome/locale/my/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "ဂူဂဲ ရှာဖွေရေး အကွက်ရှိ မေးခွန်းများမှ ပလက်ဖောင်းနှင့် ဘာသာစကား တို့ကို ဖယ်ထုတ်ရန်">
<!ENTITY torbutton.prefs.transparentTor "ပွင့်လင်းမြင်သာသော Tor သုံးစွဲမှု (စိတ်ကြိုက် transproxy နှင့် Tor Router လိုအပ်သည်)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nah/torbutton.dtd b/src/chrome/locale/nah/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nah/torbutton.dtd
+++ b/src/chrome/locale/nah/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nap/torbutton.dtd b/src/chrome/locale/nap/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nap/torbutton.dtd
+++ b/src/chrome/locale/nap/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nb/torbutton.dtd b/src/chrome/locale/nb/torbutton.dtd
index 120667c..92ff5d9 100644
--- a/src/chrome/locale/nb/torbutton.dtd
+++ b/src/chrome/locale/nb/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Fjern platform og språk fra Google Search Box søk.">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (krever egendefinert transproxy eller Tor-router)">
<!ENTITY torbutton.prefs.block_disk "Ikke lagre nettleserhistorikk eller nettsidedata (aktiverer privat nettleser økt)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Begrens tredjeparts informasjonskapsler og andre sporingsdata.">
diff --git a/src/chrome/locale/ne/torbutton.dtd b/src/chrome/locale/ne/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ne/torbutton.dtd
+++ b/src/chrome/locale/ne/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index 17b5b8b..e92bb6d 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Systeem- en taalgegevens verwijderen bij gebruik van de Google zoekbalk">
<!ENTITY torbutton.prefs.transparentTor "Transparante Torificatie (Heeft aangepaste transparente proxy of Tor router nodig)">
<!ENTITY torbutton.prefs.priv_caption "Privacyinstellingen">
<!ENTITY torbutton.prefs.block_disk "Bewaar geen surfgeschiedenis of websitegegevens. (Schakelt Privénavigatie in.)">
diff --git a/src/chrome/locale/nn/torbutton.dtd b/src/chrome/locale/nn/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nn/torbutton.dtd
+++ b/src/chrome/locale/nn/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/nso/torbutton.dtd b/src/chrome/locale/nso/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/nso/torbutton.dtd
+++ b/src/chrome/locale/nso/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/oc/torbutton.dtd b/src/chrome/locale/oc/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/oc/torbutton.dtd
+++ b/src/chrome/locale/oc/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/or/torbutton.dtd b/src/chrome/locale/or/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/or/torbutton.dtd
+++ b/src/chrome/locale/or/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pa/torbutton.dtd b/src/chrome/locale/pa/torbutton.dtd
index 515f81f..1058026 100644
--- a/src/chrome/locale/pa/torbutton.dtd
+++ b/src/chrome/locale/pa/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pap/torbutton.dtd b/src/chrome/locale/pap/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/pap/torbutton.dtd
+++ b/src/chrome/locale/pap/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pl/torbutton.dtd b/src/chrome/locale/pl/torbutton.dtd
index 78b5062..7ead4b6 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Usuń nazwę systemu i język z zapytań Google">
<!ENTITY torbutton.prefs.transparentTor "Przezroczysta toryfikacja (wymaga własnego transproxy lub routera Tora)">
<!ENTITY torbutton.prefs.priv_caption "Ustawienia Prywatności">
<!ENTITY torbutton.prefs.block_disk "Nie zapisuj historii przeglądania i danych o stronach (włącza Tryb Prywatny)">
diff --git a/src/chrome/locale/pms/torbutton.dtd b/src/chrome/locale/pms/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/pms/torbutton.dtd
+++ b/src/chrome/locale/pms/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ps/torbutton.dtd b/src/chrome/locale/ps/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ps/torbutton.dtd
+++ b/src/chrome/locale/ps/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/pt-BR/torbutton.dtd b/src/chrome/locale/pt-BR/torbutton.dtd
index df466f4..97f4bc0 100644
--- a/src/chrome/locale/pt-BR/torbutton.dtd
+++ b/src/chrome/locale/pt-BR/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Remover plataforma e idioma das consultas da Caixa de Busca do Google">
<!ENTITY torbutton.prefs.transparentTor "Torificação Transparente (Requer transpoxy customizado ou roteador Tor)">
<!ENTITY torbutton.prefs.block_disk "Não gravar o histórico de navegação ou dados do site (permite Navegação em modo privado)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restringir os cookies de terceiros e outros dados de controle">
diff --git a/src/chrome/locale/pt/torbutton.dtd b/src/chrome/locale/pt/torbutton.dtd
index bb521a3..503b4fa 100644
--- a/src/chrome/locale/pt/torbutton.dtd
+++ b/src/chrome/locale/pt/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Retirar plataforma e língua dos pedidos da caixa de pesquisa do Google">
<!ENTITY torbutton.prefs.transparentTor "Torificação transparente (Necessita transpoxy customizado ou router Tor)">
<!ENTITY torbutton.prefs.priv_caption "Configurações de Privacidade">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
diff --git a/src/chrome/locale/ro/torbutton.dtd b/src/chrome/locale/ro/torbutton.dtd
index 35a3c49..eae1bc6 100644
--- a/src/chrome/locale/ro/torbutton.dtd
+++ b/src/chrome/locale/ro/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Eliminați informații despre platformă și limbă din cererile câmpurilor de căutare Google">
<!ENTITY torbutton.prefs.transparentTor "Torificare transparentă (Necesită transproy sau Tor modificat)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index 2b0156a..2c40381 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Удалять сведения о платформе и языке из запросов строки поиска Google">
<!ENTITY torbutton.prefs.transparentTor "Прозрачная "торификация" (требует пользовательских transproxy или Tor-маршрутизатора)">
<!ENTITY torbutton.prefs.priv_caption "Настройки конфиденциальности">
<!ENTITY torbutton.prefs.block_disk "Не сохранять историю журнала посещений и данные с посещаемых сайтов (активирует функцию конфиденциального просмотра)">
diff --git a/src/chrome/locale/sco/torbutton.dtd b/src/chrome/locale/sco/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/sco/torbutton.dtd
+++ b/src/chrome/locale/sco/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sk/torbutton.dtd b/src/chrome/locale/sk/torbutton.dtd
index 1ffcb5b..867764b 100644
--- a/src/chrome/locale/sk/torbutton.dtd
+++ b/src/chrome/locale/sk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sl/torbutton.dtd b/src/chrome/locale/sl/torbutton.dtd
index 6a6d25d..81140cd 100644
--- a/src/chrome/locale/sl/torbutton.dtd
+++ b/src/chrome/locale/sl/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/so/torbutton.dtd b/src/chrome/locale/so/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/so/torbutton.dtd
+++ b/src/chrome/locale/so/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/son/torbutton.dtd b/src/chrome/locale/son/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/son/torbutton.dtd
+++ b/src/chrome/locale/son/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sq/torbutton.dtd b/src/chrome/locale/sq/torbutton.dtd
index bda0c2a..c7ce160 100644
--- a/src/chrome/locale/sq/torbutton.dtd
+++ b/src/chrome/locale/sq/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sr/torbutton.dtd b/src/chrome/locale/sr/torbutton.dtd
index 1e36255..a639874 100644
--- a/src/chrome/locale/sr/torbutton.dtd
+++ b/src/chrome/locale/sr/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Скини платформу и језик са Google претраживача">
<!ENTITY torbutton.prefs.transparentTor "Транспарента Торификација (захтева посебан Tor прокси или Tor рутер)">
<!ENTITY torbutton.prefs.block_disk "Ne pamti moji istoriju pretrazivanja ili podatke sa web sajtova(Omogucava Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Ogranici cookies i druge podatke o pracenju">
diff --git a/src/chrome/locale/st/torbutton.dtd b/src/chrome/locale/st/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/st/torbutton.dtd
+++ b/src/chrome/locale/st/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/su/torbutton.dtd b/src/chrome/locale/su/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/su/torbutton.dtd
+++ b/src/chrome/locale/su/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/sv/torbutton.dtd b/src/chrome/locale/sv/torbutton.dtd
index 07e8fa5..c384b60 100644
--- a/src/chrome/locale/sv/torbutton.dtd
+++ b/src/chrome/locale/sv/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Ta bort plattform och språk från Google Sök Box förfrågningar">
<!ENTITY torbutton.prefs.transparentTor "Transparent torifikation (Kräver skräddarsydd transproxy eller Tor router)">
<!ENTITY torbutton.prefs.priv_caption "Sekretessinställningar">
<!ENTITY torbutton.prefs.block_disk "Spara ingen historik eller webbplatsdata (aktiverar privat surfning)">
diff --git a/src/chrome/locale/sw/torbutton.dtd b/src/chrome/locale/sw/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/sw/torbutton.dtd
+++ b/src/chrome/locale/sw/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ta/torbutton.dtd b/src/chrome/locale/ta/torbutton.dtd
index 887a018..d4307cb 100644
--- a/src/chrome/locale/ta/torbutton.dtd
+++ b/src/chrome/locale/ta/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/te/torbutton.dtd b/src/chrome/locale/te/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/te/torbutton.dtd
+++ b/src/chrome/locale/te/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/tg/torbutton.dtd b/src/chrome/locale/tg/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/tg/torbutton.dtd
+++ b/src/chrome/locale/tg/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/th/torbutton.dtd b/src/chrome/locale/th/torbutton.dtd
index e318725..c2d103c 100644
--- a/src/chrome/locale/th/torbutton.dtd
+++ b/src/chrome/locale/th/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ti/torbutton.dtd b/src/chrome/locale/ti/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ti/torbutton.dtd
+++ b/src/chrome/locale/ti/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/tk/torbutton.dtd b/src/chrome/locale/tk/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/tk/torbutton.dtd
+++ b/src/chrome/locale/tk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index 6039178..ae45b7b 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Google Arama Kutusu sorgularında platform ve dil bilgileri ayıklansın">
<!ENTITY torbutton.prefs.transparentTor "Saydam Tor İletişimi (özel transproxy yada Tor yönelticisi gerekir)">
<!ENTITY torbutton.prefs.priv_caption "Gizlilik Ayarları">
<!ENTITY torbutton.prefs.block_disk "Tarama geçmişini ve web sitesi bilgileri kaydedilmesin (Gizli Tarama Kipi kullanılır)">
diff --git a/src/chrome/locale/uk/torbutton.dtd b/src/chrome/locale/uk/torbutton.dtd
index 720a83f..68bfa9b 100644
--- a/src/chrome/locale/uk/torbutton.dtd
+++ b/src/chrome/locale/uk/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Видаляти відомості про платформу і мову із запитів рядка пошуку Google">
<!ENTITY torbutton.prefs.transparentTor "Прозора Торіфікація (Вимагає користувацьких transproxy або Tor-маршрутизатора)">
<!ENTITY torbutton.prefs.block_disk "Не зберігати історію переглядів або дані з відвідуваних сайтів (активує функцію приватного перегляду)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Блокувати сторонні куки та інші дані відстеження">
diff --git a/src/chrome/locale/ur/torbutton.dtd b/src/chrome/locale/ur/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ur/torbutton.dtd
+++ b/src/chrome/locale/ur/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/ve/torbutton.dtd b/src/chrome/locale/ve/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/ve/torbutton.dtd
+++ b/src/chrome/locale/ve/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index b310687..c99f72c 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.priv_caption "Cài đặt Riêng tư">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
diff --git a/src/chrome/locale/wa/torbutton.dtd b/src/chrome/locale/wa/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/wa/torbutton.dtd
+++ b/src/chrome/locale/wa/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/wo/torbutton.dtd b/src/chrome/locale/wo/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/wo/torbutton.dtd
+++ b/src/chrome/locale/wo/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index 76910e8..757c4da 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -144,7 +144,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "在 Google 搜索栏搜索时去掉平台和语言信息。">
<!ENTITY torbutton.prefs.transparentTor "Tor 强化透明代理(需要自设 TransProxy 或 Tor 路由)">
<!ENTITY torbutton.prefs.priv_caption "隐私设置">
<!ENTITY torbutton.prefs.block_disk "禁止记录浏览历史或网站数据(启用隐私浏览模式)">
diff --git a/src/chrome/locale/zh-HK/torbutton.dtd b/src/chrome/locale/zh-HK/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/zh-HK/torbutton.dtd
+++ b/src/chrome/locale/zh-HK/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/zh-TW/torbutton.dtd b/src/chrome/locale/zh-TW/torbutton.dtd
index 9f1b919..2df0e4d 100644
--- a/src/chrome/locale/zh-TW/torbutton.dtd
+++ b/src/chrome/locale/zh-TW/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/chrome/locale/zu/torbutton.dtd b/src/chrome/locale/zu/torbutton.dtd
index 1457b20..d59c0c2 100644
--- a/src/chrome/locale/zu/torbutton.dtd
+++ b/src/chrome/locale/zu/torbutton.dtd
@@ -142,7 +142,6 @@
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
<!ENTITY torbutton.prefs.engine4 "startpage.com">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
-<!ENTITY torbutton.prefs.fix_google_srch "Strip platform and language off of Google Search Box queries">
<!ENTITY torbutton.prefs.transparentTor "Transparent Torification (Requires custom transproxy or Tor router)">
<!ENTITY torbutton.prefs.block_disk "Don't record browsing history or website data (enables Private Browsing Mode)">
<!ENTITY torbutton.prefs.restrict_thirdparty "Restrict third party cookies and other tracking data">
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index c481546..cae5fbd 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -206,7 +206,6 @@ pref("extensions.torbutton.redir_url.2", "http://www.bing.com/search?q=");
pref("extensions.torbutton.redir_url.3", "http://search.yahoo.com/search?p=");
pref("extensions.torbutton.redir_url.4", "https://www.startpage.com/rto/search?query=");
pref("extensions.torbutton.redir_url.5", "https://duckduckgo.com/?q=");
-pref("extensions.torbutton.fix_google_srch", true);
// User agent prefs:
pref("extensions.torbutton.appname_override","Netscape");
diff --git a/website/design/design.xml b/website/design/design.xml
index 588d6f4..bc0d5b8 100644
--- a/website/design/design.xml
+++ b/website/design/design.xml
@@ -2058,27 +2058,6 @@ some may desire to mask their referer for general privacy concerns.
</sect3>
<sect3>
- <title>Strip platform and language off of Google Search Box queries</title>
-
-<para>Option: <command>extensions.torbutton.fix_google_srch</command>
-</para>
-
-<para>
-
-This option causes Torbutton to use the <ulink
-url="https://wiki.mozilla.org/Search_Service:API">@mozilla.org/browser/search-service;1</ulink>
-component to wrap the Google search plugin. On many platforms, notably Debian
-and Ubuntu, the Google search plugin is set to reveal a lot of language and
-platform information. This setting strips off that info while Tor is enabled.
-
-</para>
-<para>
-This setting helps Torbutton to fulfill its <link
-linkend="setpreservation">Anonymity Set Preservation</link> requirement.
-</para>
-</sect3>
-
-<sect3>
<title>Automatically use an alternate search engine when presented with a
Google Captcha</title>
diff --git a/website/design/index.html.en b/website/design/index.html.en
index 1afe9e4..88f305d 100644
--- a/website/design/index.html.en
+++ b/website/design/index.html.en
@@ -1065,16 +1065,6 @@ sent. The default value is 1. The smart referer spoofing is implemented by the
</p><p>
This setting also does not directly satisfy any Torbutton requirement, but
some may desire to mask their referer for general privacy concerns.
-</p></div><div class="sect3" title="Strip platform and language off of Google Search Box queries"><div class="titlepage"><div><div><h4 class="title"><a id="id2706480"></a>Strip platform and language off of Google Search Box queries</h4></div></div></div><p>Option: <span class="command"><strong>extensions.torbutton.fix_google_srch</strong></span>
-</p><p>
-
-This option causes Torbutton to use the <a class="ulink" href="https://wiki.mozilla.org/Search_Service:API" target="_top">@mozilla.org/browser/search-service;1</a>
-component to wrap the Google search plugin. On many platforms, notably Debian
-and Ubuntu, the Google search plugin is set to reveal a lot of language and
-platform information. This setting strips off that info while Tor is enabled.
-
-</p><p>
-This setting helps Torbutton to fulfill its <a class="link" href="#setpreservation">Anonymity Set Preservation</a> requirement.
</p></div><div class="sect3" title="Automatically use an alternate search engine when presented with a Google Captcha"><div class="titlepage"><div><div><h4 class="title"><a id="id2706521"></a>Automatically use an alternate search engine when presented with a
Google Captcha</h4></div></div></div><p>Options:
</p><table border="0" summary="Simple list" class="simplelist"><tr><td><span class="command"><strong>extensions.torbutton.asked_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.dodge_google_captcha</strong></span></td></tr><tr><td><span class="command"><strong>extensions.torbutton.google_redir_url</strong></span></td></tr></table><p>
[View Less]
1
0

[tor-launcher/master] Bug 12967: Prompt for language during first run.
by gk@torproject.org 16 Oct '15
by gk@torproject.org 16 Oct '15
16 Oct '15
commit 919ccb92304fe86bda1d11ad6758871ccd483185
Author: Kathy Brade <brade(a)pearlcrescent.com>
Date: Thu Oct 15 15:59:59 2015 -0400
Bug 12967: Prompt for language during first run.
The intl.locale.matchOS pref is set to true by default so that the
lanuage prompt is presented in the OS/system language.
To skip the language prompt, set the TOR_SKIP_LOCALE_PROMPT env variable
to 1 or set the hidden pref extensions.torlauncher.prompt_for_locale
to false.
…
[View More]---
src/chrome/content/localePicker.xul | 62 +++++++++++
src/chrome/content/network-settings.js | 158 ++++++++++++++++++++++-------
src/chrome/locale/en/network-settings.dtd | 4 +
src/chrome/skin/network-settings.css | 5 +
src/components/tl-process.js | 59 ++++++++---
src/defaults/preferences/prefs.js | 4 +
src/modules/tl-util.jsm | 20 ++++
7 files changed, 260 insertions(+), 52 deletions(-)
diff --git a/src/chrome/content/localePicker.xul b/src/chrome/content/localePicker.xul
new file mode 100644
index 0000000..be82e14
--- /dev/null
+++ b/src/chrome/content/localePicker.xul
@@ -0,0 +1,62 @@
+<?xml version="1.0"?>
+<!--
+ - Copyright (c) 2015, The Tor Project, Inc.
+ - See LICENSE for licensing information.
+ - vim: set sw=2 sts=2 ts=8 et syntax=xml:
+ -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://torlauncher/skin/network-settings.css"
+ type="text/css"?>
+
+<!DOCTYPE overlay SYSTEM "chrome://torlauncher/locale/network-settings.dtd">
+
+<?xul-overlay href="chrome://torlauncher/content/network-settings-overlay.xul"?>
+
+<wizard id="TorLauncherLocalePicker"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ title="&torlauncher.localePicker.title;"
+ windowtype="TorLauncher:LocalePicker"
+ persist="screenX screenY"
+ onwizardfinish="return setLocale();"
+ onwizardcancel="return onCancel();"
+ onload="initLocaleDialog();">
+
+ <script type="application/x-javascript"
+ src="chrome://torlauncher/content/network-settings.js"/>
+
+ <wizardpage pageid="localePicker">
+ <hbox class="tbb-header">
+ <vbox class="tbb-logo-box" align="start">
+ <image class="tbb-logo" />
+ </vbox>
+ </hbox>
+ <separator />
+ <vbox>
+ <label class="question">&torlauncher.localePicker.prompt;</label>
+ <separator/>
+ <listbox id="localeList" ondblclick="onLocaleListDoubleClick()">
+ <listitem value="en-US" label="English" selected="true" />
+ <listitem value="ar" label="العربية" />
+ <listitem value="de" label="Deutsch" />
+ <listitem value="es-ES" label="Español" />
+ <listitem value="fa" label="فارسی" />
+ <listitem value="fr" label="Français" />
+ <listitem value="it" label="Italiano" />
+ <listitem value="ja" label="日本語" />
+ <listitem value="ko" label="한국어" />
+ <listitem value="nl" label="Nederlands" />
+ <listitem value="pl" label="Polski" />
+ <listitem value="pt-PT" label="Português (Europeu)" />
+ <listitem value="ru" label="Русский" />
+ <listitem value="tr" label="Türkçe" />
+ <listitem value="vi" label="Tiếng Việt" />
+ <listitem value="zh-CN" label="简体字" />
+ </listbox>
+ </vbox>
+ </wizardpage>
+
+ <hbox pack="start">
+ <label id="forAssistance" />
+ </hbox>
+</wizard>
diff --git a/src/chrome/content/network-settings.js b/src/chrome/content/network-settings.js
index e4ebeaa..2382ea6 100644
--- a/src/chrome/content/network-settings.js
+++ b/src/chrome/content/network-settings.js
@@ -15,6 +15,10 @@ XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherUtil",
XPCOMUtils.defineLazyModuleGetter(this, "TorLauncherLogger",
"resource://torlauncher/modules/tl-logger.jsm");
+const kPrefPromptForLocale = "extensions.torlauncher.prompt_for_locale";
+const kPrefLocale = "general.useragent.locale";
+const kPrefMatchOSLocale = "intl.locale.matchOS";
+
const kPrefDefaultBridgeRecommendedType =
"extensions.torlauncher.default_bridge_recommended_type";
const kPrefDefaultBridgeType = "extensions.torlauncher.default_bridge_type";
@@ -31,6 +35,7 @@ const kTorLogHasWarnOrErrTopic = "TorLogHasWarnOrErr";
const kWizardProxyRadioGroup = "proxyRadioGroup";
const kWizardUseBridgesRadioGroup = "useBridgesRadioGroup";
+const kLocaleList = "localeList";
const kUseProxyCheckbox = "useProxy";
const kProxyTypeMenulist = "proxyType";
const kProxyAddr = "proxyAddr";
@@ -58,29 +63,78 @@ const kTorConfKeyBridgeList = "Bridge";
var gProtocolSvc = null;
var gTorProcessService = null;
var gObsService = null;
+var gHasQuitButton = false;
var gIsInitialBootstrap = false;
var gIsBootstrapComplete = false;
var gRestoreAfterHelpPanelID = null;
var gActiveTopics = []; // Topics for which an observer is currently installed.
-function initDialog()
+function initDialogCommon(aHasQuitButton)
{
- var isWindows = TorLauncherUtil.isWindows;
+ gHasQuitButton = aHasQuitButton;
+
+ gObsService = Cc["@mozilla.org/observer-service;1"]
+ .getService(Ci.nsIObserverService);
+
+ let isWindows = TorLauncherUtil.isWindows;
if (isWindows)
document.documentElement.setAttribute("class", "os-windows");
else if (TorLauncherUtil.isMac)
document.documentElement.setAttribute("class", "os-mac");
- var forAssistance = document.getElementById("forAssistance");
+ let forAssistance = document.getElementById("forAssistance");
if (forAssistance)
{
forAssistance.textContent = TorLauncherUtil.getFormattedLocalizedString(
"forAssistance", [kSupportAddr], 1);
}
- var cancelBtn = document.documentElement.getButton("cancel");
+ if (aHasQuitButton)
+ {
+ let cancelBtn = document.documentElement.getButton("cancel");
+ if (cancelBtn)
+ {
+ let quitKey = isWindows ? "quit_win" : "quit";
+ cancelBtn.label = TorLauncherUtil.getLocalizedString(quitKey);
+ }
+ }
+
+ let wizardElem = getWizard();
+ let haveWizard = (wizardElem != null);
+ if (haveWizard)
+ {
+ // Hide the Tor Browser logo and associated separator element if the
+ // TOR_HIDE_BROWSER_LOGO environment variable is set.
+ let env = Cc["@mozilla.org/process/environment;1"]
+ .getService(Ci.nsIEnvironment);
+ if (env.exists("TOR_HIDE_BROWSER_LOGO"))
+ wizardElem.setAttribute("tor_hide_browser_logo", true);
+ }
+}
+
+
+function resizeDialogToFitContent()
+{
+ // Resize this window to fit content. sizeToContent() alone will not do
+ // the job (it has many limitations and it is buggy).
+ sizeToContent();
+ let w = maxWidthOfContent();
+ if (w)
+ {
+ let windowFrameWidth = window.outerWidth - window.innerWidth;
+ w += windowFrameWidth;
+
+ if (w > window.outerWidth)
+ window.resizeTo(w, window.outerHeight);
+ }
+}
+
+
+function initDialog()
+{
gIsInitialBootstrap = window.arguments[0];
+ initDialogCommon(gIsInitialBootstrap);
var startAtPanel;
if (window.arguments.length > 1)
@@ -88,12 +142,6 @@ function initDialog()
if (gIsInitialBootstrap)
{
- if (cancelBtn)
- {
- var quitKey = isWindows ? "quit_win" : "quit";
- cancelBtn.label = TorLauncherUtil.getLocalizedString(quitKey);
- }
-
var okBtn = document.documentElement.getButton("accept");
if (okBtn)
okBtn.label = TorLauncherUtil.getLocalizedString("connect");
@@ -115,25 +163,16 @@ function initDialog()
}
catch (e) { dump(e + "\n"); }
- gObsService = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
-
var wizardElem = getWizard();
var haveWizard = (wizardElem != null);
if (haveWizard)
{
- // Hide the Tor Browser logo and associated separator element if the
- // TOR_HIDE_BROWSER_LOGO environment variable is set.
- let env = Cc["@mozilla.org/process/environment;1"]
- .getService(Ci.nsIEnvironment);
- if (env.exists("TOR_HIDE_BROWSER_LOGO"))
- wizardElem.setAttribute("tor_hide_browser_logo", true);
-
// Set "Copy Tor Log" label and move it after the Quit (cancel) button.
var copyLogBtn = document.documentElement.getButton("extra2");
if (copyLogBtn)
{
copyLogBtn.label = wizardElem.getAttribute("buttonlabelextra2");
+ var cancelBtn = document.documentElement.getButton("cancel");
if (cancelBtn && TorLauncherUtil.isMac)
cancelBtn.parentNode.insertBefore(copyLogBtn, cancelBtn.nextSibling);
}
@@ -191,20 +230,44 @@ function initDialog()
showPanel();
}
- // Resize this window to fit content. sizeToContent() alone will not do
- // the job (it has many limitations and it is buggy).
- sizeToContent();
- let w = maxWidthOfContent();
- if (w)
+ resizeDialogToFitContent();
+
+ TorLauncherLogger.log(2, "initDialog done");
+}
+
+
+function initLocaleDialog()
+{
+ initDialogCommon(true);
+
+ // Replace the finish button's label ("Done") with the next button's
+ // label ("Next" or "Continue").
+ let nextBtn = document.documentElement.getButton("next");
+ let doneBtn = document.documentElement.getButton("finish");
+ if (nextBtn && doneBtn)
+ doneBtn.label = nextBtn.label;
+
+ // Select the current language by default.
+ try
{
- let windowFrameWidth = window.outerWidth - window.innerWidth;
- w += windowFrameWidth;
+ let chromeRegSvc = Cc["@mozilla.org/chrome/chrome-registry;1"]
+ .getService(Ci.nsIXULChromeRegistry);
+ let curLocale = chromeRegSvc.getSelectedLocale("global").toLowerCase();
+ let localeList = document.getElementById(kLocaleList);
+ for (let i = 0; i < localeList.itemCount; ++i)
+ {
+ let item = localeList.getItemAtIndex(i);
+ if (item.value.toLowerCase() == curLocale)
+ {
+ localeList.selectedIndex = i;
+ break;
+ }
+ }
+ } catch (e) {}
- if (w > window.outerWidth)
- window.resizeTo(w, window.outerHeight);
- }
+ resizeDialogToFitContent();
- TorLauncherLogger.log(2, "initDialog done");
+ TorLauncherLogger.log(2, "initLocaleDialog done");
}
@@ -243,7 +306,9 @@ function maxWidthOfContent()
function getWizard()
{
- var elem = document.getElementById("TorNetworkSettings");
+ let elem = document.getElementById("TorNetworkSettings");
+ if (!elem)
+ elem = document.getElementById("TorLauncherLocalePicker");
return (elem && (elem.tagName == "wizard")) ? elem : null;
}
@@ -677,6 +742,27 @@ function restoreButtonLabel(aID)
}
+function onLocaleListDoubleClick()
+{
+ getWizard().advance();
+}
+
+
+function setLocale()
+{
+ let locale = getElemValue(kLocaleList, "en-US");
+ if (TorLauncherUtil.isMac && ("ja" == locale))
+ locale = "ja-JP-mac";
+ TorLauncherUtil.setCharPref(kPrefLocale, locale);
+ TorLauncherUtil.setBoolPref(kPrefPromptForLocale, false);
+ TorLauncherUtil.setBoolPref(kPrefMatchOSLocale, false);
+
+ // Clear cached strings so the new locale takes effect.
+ TorLauncherUtil.flushLocalizedStringCache();
+ gObsService.notifyObservers(null, "chrome-flush-caches", null);
+}
+
+
function onProxyTypeChange()
{
var proxyType = getElemValue(kProxyTypeMenulist, null);
@@ -707,11 +793,9 @@ function onCancel()
return false;
}
- if (gIsInitialBootstrap) try
+ if (gHasQuitButton) try
{
- var obsSvc = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
- obsSvc.notifyObservers(null, "TorUserRequestedQuit", null);
+ gObsService.notifyObservers(null, "TorUserRequestedQuit", null);
} catch (e) {}
return true;
@@ -1389,6 +1473,7 @@ function setElemValue(aID, aValue)
}
// fallthru
case "menulist":
+ case "listbox":
elem.value = (val) ? val : "";
break;
}
@@ -1435,6 +1520,7 @@ function getElemValue(aID, aDefaultValue)
break;
case "textbox":
case "menulist":
+ case "listbox":
rv = elem.value;
break;
}
diff --git a/src/chrome/locale/en/network-settings.dtd b/src/chrome/locale/en/network-settings.dtd
index 07d3d09..b193750 100644
--- a/src/chrome/locale/en/network-settings.dtd
+++ b/src/chrome/locale/en/network-settings.dtd
@@ -1,5 +1,9 @@
<!ENTITY torsettings.dialog.title "Tor Network Settings">
+<!-- For locale picker: -->
+<!ENTITY torlauncher.localePicker.title "Tor Browser Language">
+<!ENTITY torlauncher.localePicker.prompt "Please select a language.">
+
<!-- For "first run" wizard: -->
<!ENTITY torsettings.prompt "Before you connect to the Tor network, you need to provide information about this computer's Internet connection.">
diff --git a/src/chrome/skin/network-settings.css b/src/chrome/skin/network-settings.css
index 6e173c3..610ab26 100644
--- a/src/chrome/skin/network-settings.css
+++ b/src/chrome/skin/network-settings.css
@@ -99,6 +99,11 @@ wizard[tor_hide_browser_logo="true"] .tbb-logo-separator {
display: none;
}
+wizard#TorLauncherLocalePicker button[dlgtype="back"],
+wizard#TorLauncherLocalePicker button[dlgtype="next"] {
+ display: none;
+}
+
.tbb-wizardpage-title {
font-size: 115%;
font-weight: bold;
diff --git a/src/components/tl-process.js b/src/components/tl-process.js
index 216c962..5113203 100644
--- a/src/components/tl-process.js
+++ b/src/components/tl-process.js
@@ -425,6 +425,17 @@ TorProcessService.prototype =
_controlTor: function()
{
+ // Optionally prompt for locale. Blocks until dialog is closed.
+ if (TorLauncherUtil.shouldPromptForLocale)
+ {
+ this._openLocalePicker();
+ if (this.mQuitSoon)
+ {
+ this._quitApp();
+ return;
+ }
+ }
+
try
{
this._monitorTorProcessStartup();
@@ -446,7 +457,7 @@ TorProcessService.prototype =
if (this.mObsSvc)
this.mObsSvc.notifyObservers(null, "TorOpenProgressDialog", null);
}
- else
+ else if (!this.TorIsBootstrapDone)
{
this._openProgressDialog();
@@ -457,21 +468,8 @@ TorProcessService.prototype =
}
// If the user pressed "Quit" within settings/progress, exit.
- if (this.mQuitSoon) try
- {
- this.mQuitSoon = false;
-
- var asSvc = Cc["@mozilla.org/toolkit/app-startup;1"]
- .getService(Ci.nsIAppStartup);
- var flags = asSvc.eAttemptQuit;
- if (this.mRestartWithQuit)
- flags |= asSvc.eRestart;
- asSvc.quit(flags);
- }
- catch (e)
- {
- TorLauncherLogger.safelog(4, "unable to quit browser", e);
- }
+ if (this.mQuitSoon)
+ this._quitApp();
}
catch (e)
{
@@ -482,6 +480,25 @@ TorProcessService.prototype =
}
}, // controlTor()
+ _quitApp: function()
+ {
+ try
+ {
+ this.mQuitSoon = false;
+
+ var asSvc = Cc["@mozilla.org/toolkit/app-startup;1"]
+ .getService(Ci.nsIAppStartup);
+ var flags = asSvc.eAttemptQuit;
+ if (this.mRestartWithQuit)
+ flags |= asSvc.eRestart;
+ asSvc.quit(flags);
+ }
+ catch (e)
+ {
+ TorLauncherLogger.safelog(4, "unable to quit", e);
+ }
+ },
+
_monitorTorProcessStartup: function()
{
this.mControlConnDelayMS = this.kInitialControlConnDelayMS;
@@ -579,6 +596,16 @@ TorProcessService.prototype =
TorLauncherUtil.showSaveSettingsAlert(null, errObj.details);
},
+ _openLocalePicker: function()
+ {
+ const kLocalePickerURL = "chrome://torlauncher/content/localePicker.xul";
+
+ var wwSvc = Cc["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Ci.nsIWindowWatcher);
+ var winFeatures = "chrome,dialog=yes,modal,all";
+ wwSvc.openWindow(null, kLocalePickerURL, "_blank", winFeatures, undefined);
+ },
+
// If this window is already open, put up "starting tor" panel, focus it and return.
// Otherwise, open the network settings dialog and block until it is closed.
_openNetworkSettings: function(aIsInitialBootstrap, aStartAtWizardPanel)
diff --git a/src/defaults/preferences/prefs.js b/src/defaults/preferences/prefs.js
index 34bf1a7..3057f6a 100644
--- a/src/defaults/preferences/prefs.js
+++ b/src/defaults/preferences/prefs.js
@@ -1,3 +1,7 @@
+// When presenting the setup wizard, first prompt for locale.
+pref("intl.locale.matchOS", true);
+pref("extensions.torlauncher.prompt_for_locale", true);
+
pref("extensions.torlauncher.loglevel", 4); // 1=verbose, 2=debug, 3=info, 4=note, 5=warn
pref("extensions.torlauncher.logmethod", 1); // 0=stdout, 1=errorconsole, 2=debuglog
pref("extensions.torlauncher.max_tor_log_entries", 1000);
diff --git a/src/modules/tl-util.jsm b/src/modules/tl-util.jsm
index ac680a8..812b32b 100644
--- a/src/modules/tl-util.jsm
+++ b/src/modules/tl-util.jsm
@@ -112,6 +112,10 @@ let TorLauncherUtil = // Public
},
// Localized Strings
+ flushLocalizedStringCache: function()
+ {
+ TLUtilInternal.mStringBundle = undefined;
+ },
// "torlauncher." is prepended to aStringName.
getLocalizedString: function(aStringName)
@@ -258,6 +262,22 @@ let TorLauncherUtil = // Public
return this.getBoolPref(kPrefStartTor, true);
},
+ get shouldPromptForLocale()
+ {
+ const kPrefPromptForLocale = "extensions.torlauncher.prompt_for_locale";
+ try
+ {
+ const kEnvSkipLocalePrompt = "TOR_SKIP_LOCALE_PROMPT";
+
+ var env = Cc["@mozilla.org/process/environment;1"]
+ .getService(Ci.nsIEnvironment);
+ if (env.exists(kEnvSkipLocalePrompt))
+ return ("1" != env.get(kEnvSkipLocalePrompt));
+ } catch(e) {}
+
+ return this.getBoolPref(kPrefPromptForLocale, true);
+ },
+
get shouldShowNetworkSettings()
{
const kPrefPromptAtStartup = "extensions.torlauncher.prompt_at_startup";
[View Less]
1
0

[torbutton/maint-1.9.3] Revert "remove obsolete files, re Bug 1506 P0"
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit 9f37464b6f446feec96147b32b3e2f2537f93636
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:08:36 2014 -0700
Revert "remove obsolete files, re Bug 1506 P0"
This reverts commit 80b06cdf422238f5eece38a1974d31e6e7be7a17.
---
src/chrome.manifest | 12 +++
src/components/tor-protocol.js | 103 ++++++++++++++++++++++
src/components/torRefSpoofer.js | 125 +++++++++++++++++++++++++++
src/components/tors-protocol.js | 103 ++++++++++++++++++++++
src/…
[View More]components/window-mapper.js | 180 +++++++++++++++++++++++++++++++++++++++
5 files changed, 523 insertions(+)
diff --git a/src/chrome.manifest b/src/chrome.manifest
index 8323e66..ddf582e 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,6 +159,18 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
+# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
+# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
+
+# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
+
+# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+
+# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+
category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
new file mode 100644
index 0000000..4ba5cf4
--- /dev/null
+++ b/src/components/tor-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tor";
+const kPROTOCOL_NAME = "tor";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "http";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID,
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
new file mode 100644
index 0000000..8b50075
--- /dev/null
+++ b/src/components/torRefSpoofer.js
@@ -0,0 +1,125 @@
+// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
+// Kill this code.
+
+const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
+const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
+
+function RefSpoofer() {
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+}
+
+
+RefSpoofer.prototype = {
+ observe: function(subject, topic, data)
+ {
+ if (topic == "http-on-modify-request") {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+
+ if (!tor_enabled)
+ return;
+
+ subject.QueryInterface(Components.interfaces.nsIHttpChannel);
+ this.onModifyRequest(subject);
+ return;
+ }
+ if (topic == "profile-after-change") {
+ this.logger.log(3, "RefSpoof got profile-after-change");
+ var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ os.addObserver(this, "http-on-modify-request", false);
+ return;
+ }
+ },
+ onModifyRequest: function(oHttpChannel)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+
+ var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
+
+ var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
+ if (spoofmode == 0)
+ try {
+ oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
+ var referer;
+ try{
+ referer = oHttpChannel.getRequestHeader("Referer");
+ referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
+ }catch(referr) {
+ return;//no referer available or invalid uri
+ }
+ var requestURI = oHttpChannel.URI; //request nsIURI object
+ var destHost = referer.host; //referer host w/o scheme
+ var srcHost = oHttpChannel.URI.host;//request host without scheme
+
+ // match is not what we want, unless we escape dots:
+ var destHostMatch = destHost.replace(this.specials, "\\$&");
+ var srcHostMatch = srcHost.replace(this.specials, "\\$&");
+
+ // FIXME: This isn't exactly bulletproof security here, but it still
+ // may need to be more lenient not to break sites...
+ //
+ // If we suspect issues, we can try doing the following first:
+ // 1. Strip off all TLD suffixes, up to but not including '.'
+ // 2. If more than one domain part is till left, strip off prefix
+
+ //if they're in the same domain(if we can tell) or have the same host, keep the referer
+ if (srcHost.split(".").length >= destHost.split(".").length
+ && srcHost.match(destHostMatch)) // dest is a substring of src
+ return;
+ else if (destHost.split(".").length >= srcHost.split(".").length
+ && destHost.match(srcHostMatch)) // src is a substring of dest
+ return;
+ //if they do not have the same host
+ this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
+ this.logger.safe_log(3, "Adjusting Referer, ",
+ "from " + destHost + " to " + requestURI.host);
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ }
+ else if (spoofmode == 2)
+ this.adjustRef(oHttpChannel, "");
+ },
+ adjustRef: function(oChannel, sRef)
+ {
+ try {
+ if (oChannel.referrer)
+ {
+ oChannel.referrer.spec = sRef;
+ oChannel.setRequestHeader("Referer", sRef, false);
+ }
+ return true;
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof adjustRef: " +ex);
+ }
+ return false;
+ },
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+ _xpcom_categories: [{category:"profile-after-change"}],
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+ classDescription: "Tor Ref Spoofer"
+};
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
new file mode 100644
index 0000000..f075e43
--- /dev/null
+++ b/src/components/tors-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tors";
+const kPROTOCOL_NAME = "tors";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "https";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
new file mode 100644
index 0000000..a04f12b
--- /dev/null
+++ b/src/components/window-mapper.js
@@ -0,0 +1,180 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+/*************************************************************************
+ * ContentWindowMapper (JavaScript XPCOM component)
+ *
+ * Allows you to find a tabbrowser tab for a top level content window.
+ *
+ *************************************************************************/
+
+// Module specific constants
+const kMODULE_NAME = "Content Window Mapper";
+const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
+const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
+
+const Cr = Components.results;
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const EXPIRATION_TIME = 60000; // 60 seconds
+
+const nsISupports = Components.interfaces.nsISupports;
+const nsIClassInfo = Components.interfaces.nsIClassInfo;
+const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
+const nsIObserverService = Components.interfaces.nsIObserverService;
+
+function ContentWindowMapper() {
+ this.cache = {};
+
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
+ .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
+ this.last_expired = Date.now();
+ // This JSObject is exported directly to chrome
+ this.wrappedJSObject = this;
+}
+
+ContentWindowMapper.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIClassInfo) &&
+ !iid.equals(nsISupports)) {
+ Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
+ return null;
+ }
+ return this;
+ },
+
+ wrappedJSObject: null, // Initialized by constructor
+
+ // make this an nsIClassInfo object
+ flags: nsIClassInfo.DOM_OBJECT,
+
+ // method of nsIClassInfo
+ classDescription: kMODULE_NAME,
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+
+ // method of nsIClassInfo
+ getInterfaces: function(count) {
+ var interfaceList = [nsIClassInfo];
+ count.value = interfaceList.length;
+ return interfaceList;
+ },
+
+ // method of nsIClassInfo
+ getHelperForLanguage: function(count) { return null; },
+
+ checkCache: function(topContentWindow) {
+ if(typeof(topContentWindow.ghetto_guid) != "undefined"
+ && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
+ return this.cache[topContentWindow.ghetto_guid].browser;
+ }
+
+ return null;
+ },
+
+ addCache: function(topContentWindow, browser) {
+ var insertion = new Object();
+ insertion.browser = browser;
+ insertion.time = Date.now();
+ topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
+ this.cache[topContentWindow.ghetto_guid] = insertion;
+ },
+
+ expireOldCache: function() {
+ var now = Date.now();
+
+ if((now - this.last_expired) < EXPIRATION_TIME) {
+ this.logger.log(3, "Early mapper check.");
+ return;
+ }
+
+ var delkeys = [];
+ for(var elem in this.cache) {
+ if((now - this.cache[elem].time) > EXPIRATION_TIME) {
+ this.logger.log(2, "Deleting cached element: "+elem.location);
+ delkeys.push(elem);
+ }
+ }
+
+ for(var k in delkeys) {
+ delete this.cache[k];
+ }
+
+ this.last_expired = now;
+ },
+
+ getBrowserForContentWindow: function(topContentWindow) {
+ if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
+ if(topContentWindow.browserDOMWindow) {
+ var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
+ this.logger.log(3, "Chrome browser at "
+ +browser.contentWindow.location+" found for: "
+ +topContentWindow.location);
+ return browser;
+ }
+ // Allow strange chrome to go through..
+ this.logger.log(3, "Odd chome window"+topContentWindow.location);
+ return topContentWindow;
+ }
+
+ var cached = this.checkCache(topContentWindow);
+ if(cached != null) {
+ return cached;
+ }
+
+ try {
+ this.logger.log(3, "Cache failed for: "+topContentWindow.location);
+ } catch(e) {
+ this.logger.log(3, "Cache failed for unknown location?");
+ }
+
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var enumerator = wm.getEnumerator("navigator:browser");
+ while(enumerator.hasMoreElements()) {
+ var win = enumerator.getNext();
+ var browser = win.getBrowser();
+ for (var i = 0; i < browser.browsers.length; ++i) {
+ var b = browser.browsers[i];
+ if (b && b.contentWindow == topContentWindow) {
+ this.addCache(topContentWindow, b);
+ return b;
+ }
+ }
+ }
+
+ // SpeedDial, google notebook and other extensions can create their
+ // own "<browser>" tag elements. AFAICT, there is no way to enumerate
+ // these... Just punt and return the most recently used browser
+ try {
+ if(topContentWindow.name != "speedDialLoaderBrowser") {
+ if(topContentWindow && topContentWindow.location)
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
+ else
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
+ } else {
+ this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
+ }
+ } catch(e) {
+ this.logger.log(4, "No browser found.");
+ }
+
+ // Punt..
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
+ getService(Components.interfaces.nsIWindowMediator);
+ var recentWindow = wm.getMostRecentWindow("navigator:browser");
+ return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
+ }
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
[View Less]
1
0

[torbutton/maint-1.9.3] Bug 9263: Spoof referer when leaving a .onion domain
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit d5234a3e37fb717d5c2f65ef039cd7872cbd1de3
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:36:27 2014 -0700
Bug 9263: Spoof referer when leaving a .onion domain
---
makexpi.sh | 2 +-
src/chrome.manifest | 15 +--
src/components/tor-protocol.js | 103 ------------------
src/components/torRefSpoofer.js | 103 ++++++------------
src/components/tors-protocol.js | 103 ------------------
src/…
[View More]components/window-mapper.js | 180 -------------------------------
src/defaults/preferences/preferences.js | 1 -
7 files changed, 39 insertions(+), 468 deletions(-)
diff --git a/makexpi.sh b/makexpi.sh
index 4d01e2c..243fbd6 100755
--- a/makexpi.sh
+++ b/makexpi.sh
@@ -21,7 +21,7 @@ echo ---------- create $APP_NAME.xpi ----------
mkdir -p pkg
cd src
echo zip -X -9r ../pkg/$XPI_NAME ./ -x "chrome/*" -x "*.diff" -x "*.svn/*"
-zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" -x "components/torRefSpoofer.js" #-x "chrome/*"
+zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" #-x "chrome/*"
#mv ../$APP_NAME.jar ./chrome
#zip -9m ../pkg/$XPI_NAME chrome/$APP_NAME.jar
cd ..
diff --git a/src/chrome.manifest b/src/chrome.manifest
index ddf582e..1d3efb4 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,18 +159,11 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
-# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
-# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
-
-# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
-# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-
-# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
-# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
+category profile-after-change RefSpoofer @torproject.org/torRefSpoofer;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
deleted file mode 100644
index 4ba5cf4..0000000
--- a/src/components/tor-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tor";
-const kPROTOCOL_NAME = "tor";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "http";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID,
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
index 8b50075..b69f8e0 100644
--- a/src/components/torRefSpoofer.js
+++ b/src/components/torRefSpoofer.js
@@ -1,89 +1,60 @@
-// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
-// Kill this code.
+// Clear referer on cross-domain requests to/from Tor Hidden Services: #9623
+// ("Smart referer" previously spoofed referer on all cross-domain requests.)
const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
function RefSpoofer() {
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "RefSpoof component created");
- this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].
+ getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.onionDomainRegex = new RegExp("\\.onion$", "i"); // THS hosts
+ this.thirdPartyUtil = Components.classes["@mozilla.org/thirdpartyutil;1"].
+ getService(Components.interfaces.mozIThirdPartyUtil);
+ this.ios = Components.classes["@mozilla.org/network/io-service;1"].
+ getService(Components.interfaces.nsIIOService);
}
-RefSpoofer.prototype = {
+RefSpoofer.prototype = {
observe: function(subject, topic, data)
{
if (topic == "http-on-modify-request") {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
-
- if (!tor_enabled)
- return;
-
subject.QueryInterface(Components.interfaces.nsIHttpChannel);
this.onModifyRequest(subject);
return;
}
if (topic == "profile-after-change") {
this.logger.log(3, "RefSpoof got profile-after-change");
- var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ var os = Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
os.addObserver(this, "http-on-modify-request", false);
return;
}
},
onModifyRequest: function(oHttpChannel)
{
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
-
- var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
-
- var ios = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
+ var referer;
- if (spoofmode == 0)
try {
oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
- var referer;
- try{
+ try {
referer = oHttpChannel.getRequestHeader("Referer");
- referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
- }catch(referr) {
- return;//no referer available or invalid uri
+ referer = this.ios.newURI(referer, null, null); //make a nsIURI object for referer
+ } catch (referr) {
+ return; //no referer available or invalid uri
}
- var requestURI = oHttpChannel.URI; //request nsIURI object
- var destHost = referer.host; //referer host w/o scheme
- var srcHost = oHttpChannel.URI.host;//request host without scheme
-
- // match is not what we want, unless we escape dots:
- var destHostMatch = destHost.replace(this.specials, "\\$&");
- var srcHostMatch = srcHost.replace(this.specials, "\\$&");
-
- // FIXME: This isn't exactly bulletproof security here, but it still
- // may need to be more lenient not to break sites...
- //
- // If we suspect issues, we can try doing the following first:
- // 1. Strip off all TLD suffixes, up to but not including '.'
- // 2. If more than one domain part is till left, strip off prefix
-
- //if they're in the same domain(if we can tell) or have the same host, keep the referer
- if (srcHost.split(".").length >= destHost.split(".").length
- && srcHost.match(destHostMatch)) // dest is a substring of src
- return;
- else if (destHost.split(".").length >= srcHost.split(".").length
- && destHost.match(srcHostMatch)) // src is a substring of dest
- return;
- //if they do not have the same host
- this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
- this.logger.safe_log(3, "Adjusting Referer, ",
- "from " + destHost + " to " + requestURI.host);
- }
- catch (ex) {
- this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ // Only spoof referer for cross-domain requests from .onions
+ if (this.onionDomainRegex.test(referer.host) &&
+ this.thirdPartyUtil.isThirdPartyURI(referer, oHttpChannel.URI)) {
+ // Set the referer to the domain being requested. This makes it harder
+ // to tell that we are referer-spoofing.
+ this.adjustRef(oHttpChannel,
+ [oHttpChannel.URI.scheme, oHttpChannel.URI.host].join("://"));
+ }
+ } catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " + ex);
}
- else if (spoofmode == 2)
- this.adjustRef(oHttpChannel, "");
},
adjustRef: function(oChannel, sRef)
{
@@ -94,7 +65,7 @@ RefSpoofer.prototype = {
oChannel.setRequestHeader("Referer", sRef, false);
}
return true;
- }
+ }
catch (ex) {
this.logger.log(5, "RefSpoof adjustRef: " +ex);
}
@@ -103,9 +74,10 @@ RefSpoofer.prototype = {
QueryInterface: function(iid)
{
if (!iid.equals(Components.interfaces.nsISupports) &&
- !iid.equals(Components.interfaces.nsIObserver) &&
- !iid.equals(Components.interfaces.nsISupportsWeakReference))
- throw Components.results.NS_ERROR_NO_INTERFACE;
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference)) {
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
return this;
},
_xpcom_categories: [{category:"profile-after-change"}],
@@ -114,12 +86,5 @@ RefSpoofer.prototype = {
classDescription: "Tor Ref Spoofer"
};
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
deleted file mode 100644
index f075e43..0000000
--- a/src/components/tors-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tors";
-const kPROTOCOL_NAME = "tors";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "https";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
deleted file mode 100644
index a04f12b..0000000
--- a/src/components/window-mapper.js
+++ /dev/null
@@ -1,180 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-/*************************************************************************
- * ContentWindowMapper (JavaScript XPCOM component)
- *
- * Allows you to find a tabbrowser tab for a top level content window.
- *
- *************************************************************************/
-
-// Module specific constants
-const kMODULE_NAME = "Content Window Mapper";
-const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
-const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
-
-const Cr = Components.results;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const EXPIRATION_TIME = 60000; // 60 seconds
-
-const nsISupports = Components.interfaces.nsISupports;
-const nsIClassInfo = Components.interfaces.nsIClassInfo;
-const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-const nsIObserverService = Components.interfaces.nsIObserverService;
-
-function ContentWindowMapper() {
- this.cache = {};
-
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
- this.last_expired = Date.now();
- // This JSObject is exported directly to chrome
- this.wrappedJSObject = this;
-}
-
-ContentWindowMapper.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIClassInfo) &&
- !iid.equals(nsISupports)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
- return this;
- },
-
- wrappedJSObject: null, // Initialized by constructor
-
- // make this an nsIClassInfo object
- flags: nsIClassInfo.DOM_OBJECT,
-
- // method of nsIClassInfo
- classDescription: kMODULE_NAME,
- classID: kMODULE_CID,
- contractID: kMODULE_CONTRACTID,
-
- // method of nsIClassInfo
- getInterfaces: function(count) {
- var interfaceList = [nsIClassInfo];
- count.value = interfaceList.length;
- return interfaceList;
- },
-
- // method of nsIClassInfo
- getHelperForLanguage: function(count) { return null; },
-
- checkCache: function(topContentWindow) {
- if(typeof(topContentWindow.ghetto_guid) != "undefined"
- && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
- return this.cache[topContentWindow.ghetto_guid].browser;
- }
-
- return null;
- },
-
- addCache: function(topContentWindow, browser) {
- var insertion = new Object();
- insertion.browser = browser;
- insertion.time = Date.now();
- topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
- this.cache[topContentWindow.ghetto_guid] = insertion;
- },
-
- expireOldCache: function() {
- var now = Date.now();
-
- if((now - this.last_expired) < EXPIRATION_TIME) {
- this.logger.log(3, "Early mapper check.");
- return;
- }
-
- var delkeys = [];
- for(var elem in this.cache) {
- if((now - this.cache[elem].time) > EXPIRATION_TIME) {
- this.logger.log(2, "Deleting cached element: "+elem.location);
- delkeys.push(elem);
- }
- }
-
- for(var k in delkeys) {
- delete this.cache[k];
- }
-
- this.last_expired = now;
- },
-
- getBrowserForContentWindow: function(topContentWindow) {
- if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
- if(topContentWindow.browserDOMWindow) {
- var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
- this.logger.log(3, "Chrome browser at "
- +browser.contentWindow.location+" found for: "
- +topContentWindow.location);
- return browser;
- }
- // Allow strange chrome to go through..
- this.logger.log(3, "Odd chome window"+topContentWindow.location);
- return topContentWindow;
- }
-
- var cached = this.checkCache(topContentWindow);
- if(cached != null) {
- return cached;
- }
-
- try {
- this.logger.log(3, "Cache failed for: "+topContentWindow.location);
- } catch(e) {
- this.logger.log(3, "Cache failed for unknown location?");
- }
-
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var enumerator = wm.getEnumerator("navigator:browser");
- while(enumerator.hasMoreElements()) {
- var win = enumerator.getNext();
- var browser = win.getBrowser();
- for (var i = 0; i < browser.browsers.length; ++i) {
- var b = browser.browsers[i];
- if (b && b.contentWindow == topContentWindow) {
- this.addCache(topContentWindow, b);
- return b;
- }
- }
- }
-
- // SpeedDial, google notebook and other extensions can create their
- // own "<browser>" tag elements. AFAICT, there is no way to enumerate
- // these... Just punt and return the most recently used browser
- try {
- if(topContentWindow.name != "speedDialLoaderBrowser") {
- if(topContentWindow && topContentWindow.location)
- this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
- else
- this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
- } else {
- this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
- }
- } catch(e) {
- this.logger.log(4, "No browser found.");
- }
-
- // Punt..
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
- getService(Components.interfaces.nsIWindowMediator);
- var recentWindow = wm.getMostRecentWindow("navigator:browser");
- return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
- }
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 83706ef..7985b21 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -165,7 +165,6 @@ pref("extensions.torbutton.tor_memory_jar",false);
pref("extensions.torbutton.nontor_memory_jar",false);
pref("extensions.torbutton.tz_string","");
pref("extensions.torbutton.launch_warning",true);
-pref("extensions.torbutton.refererspoof", 0); //0=no spoof, 1=root spoof, 2=domain spoof, 3=blank spoof, 4=custom spoof
pref("extensions.torbutton.fakerefresh", false);
pref("extensions.torbutton.customeref","");
pref("extensions.torbutton.disable_livemarks",true);
[View Less]
1
0

13 Oct '15
commit 9fe9cdfe816ed030e615643e35b9e0dcaa5a8635
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:08:36 2014 -0700
Revert "remove obsolete files, re Bug 1506 P0"
This reverts commit 80b06cdf422238f5eece38a1974d31e6e7be7a17.
---
src/chrome.manifest | 12 +++
src/components/tor-protocol.js | 103 ++++++++++++++++++++++
src/components/torRefSpoofer.js | 125 +++++++++++++++++++++++++++
src/components/tors-protocol.js | 103 ++++++++++++++++++++++
src/…
[View More]components/window-mapper.js | 180 +++++++++++++++++++++++++++++++++++++++
5 files changed, 523 insertions(+)
diff --git a/src/chrome.manifest b/src/chrome.manifest
index 8323e66..ddf582e 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,6 +159,18 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
+# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
+# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
+
+# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
+
+# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+
+# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
+# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+
category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
new file mode 100644
index 0000000..4ba5cf4
--- /dev/null
+++ b/src/components/tor-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tor";
+const kPROTOCOL_NAME = "tor";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "http";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID,
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
new file mode 100644
index 0000000..8b50075
--- /dev/null
+++ b/src/components/torRefSpoofer.js
@@ -0,0 +1,125 @@
+// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
+// Kill this code.
+
+const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
+const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
+
+function RefSpoofer() {
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+}
+
+
+RefSpoofer.prototype = {
+ observe: function(subject, topic, data)
+ {
+ if (topic == "http-on-modify-request") {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+
+ if (!tor_enabled)
+ return;
+
+ subject.QueryInterface(Components.interfaces.nsIHttpChannel);
+ this.onModifyRequest(subject);
+ return;
+ }
+ if (topic == "profile-after-change") {
+ this.logger.log(3, "RefSpoof got profile-after-change");
+ var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ os.addObserver(this, "http-on-modify-request", false);
+ return;
+ }
+ },
+ onModifyRequest: function(oHttpChannel)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+
+ var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
+
+ var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
+ if (spoofmode == 0)
+ try {
+ oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
+ var referer;
+ try{
+ referer = oHttpChannel.getRequestHeader("Referer");
+ referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
+ }catch(referr) {
+ return;//no referer available or invalid uri
+ }
+ var requestURI = oHttpChannel.URI; //request nsIURI object
+ var destHost = referer.host; //referer host w/o scheme
+ var srcHost = oHttpChannel.URI.host;//request host without scheme
+
+ // match is not what we want, unless we escape dots:
+ var destHostMatch = destHost.replace(this.specials, "\\$&");
+ var srcHostMatch = srcHost.replace(this.specials, "\\$&");
+
+ // FIXME: This isn't exactly bulletproof security here, but it still
+ // may need to be more lenient not to break sites...
+ //
+ // If we suspect issues, we can try doing the following first:
+ // 1. Strip off all TLD suffixes, up to but not including '.'
+ // 2. If more than one domain part is till left, strip off prefix
+
+ //if they're in the same domain(if we can tell) or have the same host, keep the referer
+ if (srcHost.split(".").length >= destHost.split(".").length
+ && srcHost.match(destHostMatch)) // dest is a substring of src
+ return;
+ else if (destHost.split(".").length >= srcHost.split(".").length
+ && destHost.match(srcHostMatch)) // src is a substring of dest
+ return;
+ //if they do not have the same host
+ this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
+ this.logger.safe_log(3, "Adjusting Referer, ",
+ "from " + destHost + " to " + requestURI.host);
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ }
+ else if (spoofmode == 2)
+ this.adjustRef(oHttpChannel, "");
+ },
+ adjustRef: function(oChannel, sRef)
+ {
+ try {
+ if (oChannel.referrer)
+ {
+ oChannel.referrer.spec = sRef;
+ oChannel.setRequestHeader("Referer", sRef, false);
+ }
+ return true;
+ }
+ catch (ex) {
+ this.logger.log(5, "RefSpoof adjustRef: " +ex);
+ }
+ return false;
+ },
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+ _xpcom_categories: [{category:"profile-after-change"}],
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+ classDescription: "Tor Ref Spoofer"
+};
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
new file mode 100644
index 0000000..f075e43
--- /dev/null
+++ b/src/components/tors-protocol.js
@@ -0,0 +1,103 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+// Test protocol related
+const kSCHEME = "tors";
+const kPROTOCOL_NAME = "tors";
+const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
+const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
+
+// Mozilla defined
+const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
+const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
+const nsISupports = Components.interfaces.nsISupports;
+const nsIIOService = Components.interfaces.nsIIOService;
+const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
+const nsIURI = Components.interfaces.nsIURI;
+
+function Protocol()
+{
+}
+
+Protocol.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIProtocolHandler) &&
+ !iid.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ scheme: kSCHEME,
+ defaultPort: -1,
+ protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
+ nsIProtocolHandler.URI_NOAUTH,
+
+ allowPort: function(port, scheme)
+ {
+ return false;
+ },
+
+ newURI: function(spec, charset, baseURI)
+ {
+ const nsIStandardURL = Components.interfaces.nsIStandardURL;
+ var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
+ uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
+
+ return uri.QueryInterface(Components.interfaces.nsIURI);
+
+ },
+
+ newChannel: function(aURI)
+ {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
+ throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
+ }
+
+ /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
+ var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
+ var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var chrome = wm.getMostRecentWindow("navigator:browser");
+ if (!ios.allowPort(aURI.port, aURI.scheme))
+ throw Components.results.NS_ERROR_FAILURE;
+
+ if (!tor_enabled)
+ {
+ var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
+ if (!result)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ chrome.torbutton_enable_tor(true);
+ }
+
+ //if tor is turned on then, else we should throw exception of some sort.
+ tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
+ if (!tor_enabled)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+ else
+ {
+ aURI.scheme = "https";
+ return ios.newChannelFromURI(aURI);
+ }
+ },
+
+ // method of nsIClassInfo
+ classDescription: "Tor protocol handler",
+ classID: kPROTOCOL_CID,
+ contractID: kPROTOCOL_CONTRACTID
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
new file mode 100644
index 0000000..a04f12b
--- /dev/null
+++ b/src/components/window-mapper.js
@@ -0,0 +1,180 @@
+// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
+
+/*************************************************************************
+ * ContentWindowMapper (JavaScript XPCOM component)
+ *
+ * Allows you to find a tabbrowser tab for a top level content window.
+ *
+ *************************************************************************/
+
+// Module specific constants
+const kMODULE_NAME = "Content Window Mapper";
+const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
+const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
+
+const Cr = Components.results;
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+const EXPIRATION_TIME = 60000; // 60 seconds
+
+const nsISupports = Components.interfaces.nsISupports;
+const nsIClassInfo = Components.interfaces.nsIClassInfo;
+const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
+const nsIObserverService = Components.interfaces.nsIObserverService;
+
+function ContentWindowMapper() {
+ this.cache = {};
+
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
+ .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
+ this.last_expired = Date.now();
+ // This JSObject is exported directly to chrome
+ this.wrappedJSObject = this;
+}
+
+ContentWindowMapper.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (!iid.equals(nsIClassInfo) &&
+ !iid.equals(nsISupports)) {
+ Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
+ return null;
+ }
+ return this;
+ },
+
+ wrappedJSObject: null, // Initialized by constructor
+
+ // make this an nsIClassInfo object
+ flags: nsIClassInfo.DOM_OBJECT,
+
+ // method of nsIClassInfo
+ classDescription: kMODULE_NAME,
+ classID: kMODULE_CID,
+ contractID: kMODULE_CONTRACTID,
+
+ // method of nsIClassInfo
+ getInterfaces: function(count) {
+ var interfaceList = [nsIClassInfo];
+ count.value = interfaceList.length;
+ return interfaceList;
+ },
+
+ // method of nsIClassInfo
+ getHelperForLanguage: function(count) { return null; },
+
+ checkCache: function(topContentWindow) {
+ if(typeof(topContentWindow.ghetto_guid) != "undefined"
+ && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
+ return this.cache[topContentWindow.ghetto_guid].browser;
+ }
+
+ return null;
+ },
+
+ addCache: function(topContentWindow, browser) {
+ var insertion = new Object();
+ insertion.browser = browser;
+ insertion.time = Date.now();
+ topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
+ this.cache[topContentWindow.ghetto_guid] = insertion;
+ },
+
+ expireOldCache: function() {
+ var now = Date.now();
+
+ if((now - this.last_expired) < EXPIRATION_TIME) {
+ this.logger.log(3, "Early mapper check.");
+ return;
+ }
+
+ var delkeys = [];
+ for(var elem in this.cache) {
+ if((now - this.cache[elem].time) > EXPIRATION_TIME) {
+ this.logger.log(2, "Deleting cached element: "+elem.location);
+ delkeys.push(elem);
+ }
+ }
+
+ for(var k in delkeys) {
+ delete this.cache[k];
+ }
+
+ this.last_expired = now;
+ },
+
+ getBrowserForContentWindow: function(topContentWindow) {
+ if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
+ if(topContentWindow.browserDOMWindow) {
+ var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
+ this.logger.log(3, "Chrome browser at "
+ +browser.contentWindow.location+" found for: "
+ +topContentWindow.location);
+ return browser;
+ }
+ // Allow strange chrome to go through..
+ this.logger.log(3, "Odd chome window"+topContentWindow.location);
+ return topContentWindow;
+ }
+
+ var cached = this.checkCache(topContentWindow);
+ if(cached != null) {
+ return cached;
+ }
+
+ try {
+ this.logger.log(3, "Cache failed for: "+topContentWindow.location);
+ } catch(e) {
+ this.logger.log(3, "Cache failed for unknown location?");
+ }
+
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var enumerator = wm.getEnumerator("navigator:browser");
+ while(enumerator.hasMoreElements()) {
+ var win = enumerator.getNext();
+ var browser = win.getBrowser();
+ for (var i = 0; i < browser.browsers.length; ++i) {
+ var b = browser.browsers[i];
+ if (b && b.contentWindow == topContentWindow) {
+ this.addCache(topContentWindow, b);
+ return b;
+ }
+ }
+ }
+
+ // SpeedDial, google notebook and other extensions can create their
+ // own "<browser>" tag elements. AFAICT, there is no way to enumerate
+ // these... Just punt and return the most recently used browser
+ try {
+ if(topContentWindow.name != "speedDialLoaderBrowser") {
+ if(topContentWindow && topContentWindow.location)
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
+ else
+ this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
+ } else {
+ this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
+ }
+ } catch(e) {
+ this.logger.log(4, "No browser found.");
+ }
+
+ // Punt..
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
+ getService(Components.interfaces.nsIWindowMediator);
+ var recentWindow = wm.getMostRecentWindow("navigator:browser");
+ return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
+ }
+}
+
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+ var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
+else
+ var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
[View Less]
1
0

[torbutton/master] Bug 9263: Spoof referer when leaving a .onion domain
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit f98243cfed952d1a1375fb1f486d728e6ca1bd44
Author: Yan Zhu <yan(a)mit.edu>
Date: Tue Jul 29 17:36:27 2014 -0700
Bug 9263: Spoof referer when leaving a .onion domain
---
makexpi.sh | 2 +-
src/chrome.manifest | 15 +--
src/components/tor-protocol.js | 103 ------------------
src/components/torRefSpoofer.js | 103 ++++++------------
src/components/tors-protocol.js | 103 ------------------
src/…
[View More]components/window-mapper.js | 180 -------------------------------
src/defaults/preferences/preferences.js | 1 -
7 files changed, 39 insertions(+), 468 deletions(-)
diff --git a/makexpi.sh b/makexpi.sh
index 4d01e2c..243fbd6 100755
--- a/makexpi.sh
+++ b/makexpi.sh
@@ -21,7 +21,7 @@ echo ---------- create $APP_NAME.xpi ----------
mkdir -p pkg
cd src
echo zip -X -9r ../pkg/$XPI_NAME ./ -x "chrome/*" -x "*.diff" -x "*.svn/*"
-zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" -x "components/torRefSpoofer.js" #-x "chrome/*"
+zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" #-x "chrome/*"
#mv ../$APP_NAME.jar ./chrome
#zip -9m ../pkg/$XPI_NAME chrome/$APP_NAME.jar
cd ..
diff --git a/src/chrome.manifest b/src/chrome.manifest
index ddf582e..1d3efb4 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -159,18 +159,11 @@ contract @torproject.org/torbutton-logger;1 {f36d72c9-9718-4134-b550-e109638331d
component {e33fd6d4-270f-475f-a96f-ff3140279f68} components/domain-isolator.js
contract @torproject.org/domain-isolator;1 {e33fd6d4-270f-475f-a96f-ff3140279f68}
-# component {b985e49c-12cb-4f29-9d14-b62603332ec4} components/window-mapper.js
-# contract @torproject.org/content-window-mapper;1 {b985e49c-12cb-4f29-9d14-b62603332ec4}
-
-# component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
-# contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-
-# component {52183e20-4d4b-11de-8a39-0800200c9a66} components/tor-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tor {52183e20-4d4b-11de-8a39-0800200c9a66}
+category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
-# component {a5a4bc50-5e8d-11de-8a39-0800200c9a66} components/tors-protocol.js
-# contract @mozilla.org/network/protocol;1?name=tors {a5a4bc50-5e8d-11de-8a39-0800200c9a66}
+component {65be2be0-ceb4-44c2-91a5-9c75c53430bf} components/torRefSpoofer.js
+contract @torproject.org/torRefSpoofer;1 {65be2be0-ceb4-44c2-91a5-9c75c53430bf}
-category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
+category profile-after-change RefSpoofer @torproject.org/torRefSpoofer;1
category profile-after-change StartupObserver @torproject.org/startup-observer;1
category profile-after-change DomainIsolator @torproject.org/domain-isolator;1
diff --git a/src/components/tor-protocol.js b/src/components/tor-protocol.js
deleted file mode 100644
index 4ba5cf4..0000000
--- a/src/components/tor-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tor";
-const kPROTOCOL_NAME = "tor";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("52183e20-4d4b-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 80, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of http.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "http";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID,
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/torRefSpoofer.js b/src/components/torRefSpoofer.js
index 8b50075..b69f8e0 100644
--- a/src/components/torRefSpoofer.js
+++ b/src/components/torRefSpoofer.js
@@ -1,89 +1,60 @@
-// Bug 1506 P0: I don't really believe referers matter in the grand scheme.
-// Kill this code.
+// Clear referer on cross-domain requests to/from Tor Hidden Services: #9623
+// ("Smart referer" previously spoofed referer on all cross-domain requests.)
const kMODULE_CID = Components.ID("65be2be0-ceb4-44c2-91a5-9c75c53430bf");
const kMODULE_CONTRACTID = "@torproject.org/torRefSpoofer;1";
function RefSpoofer() {
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"].getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "RefSpoof component created");
- this.specials = /[-[\]{}()*+?.,\\^$|#\s]/g;
+ this.logger = Components.classes["@torproject.org/torbutton-logger;1"].
+ getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger.log(3, "RefSpoof component created");
+ this.onionDomainRegex = new RegExp("\\.onion$", "i"); // THS hosts
+ this.thirdPartyUtil = Components.classes["@mozilla.org/thirdpartyutil;1"].
+ getService(Components.interfaces.mozIThirdPartyUtil);
+ this.ios = Components.classes["@mozilla.org/network/io-service;1"].
+ getService(Components.interfaces.nsIIOService);
}
-RefSpoofer.prototype = {
+RefSpoofer.prototype = {
observe: function(subject, topic, data)
{
if (topic == "http-on-modify-request") {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
-
- if (!tor_enabled)
- return;
-
subject.QueryInterface(Components.interfaces.nsIHttpChannel);
this.onModifyRequest(subject);
return;
}
if (topic == "profile-after-change") {
this.logger.log(3, "RefSpoof got profile-after-change");
- var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
+ var os = Components.classes["@mozilla.org/observer-service;1"].
+ getService(Components.interfaces.nsIObserverService);
os.addObserver(this, "http-on-modify-request", false);
return;
}
},
onModifyRequest: function(oHttpChannel)
{
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
-
- var spoofmode = prefs.getIntPref("extensions.torbutton.refererspoof");
-
- var ios = Components.classes["@mozilla.org/network/io-service;1"]
- .getService(Components.interfaces.nsIIOService);
+ var referer;
- if (spoofmode == 0)
try {
oHttpChannel.QueryInterface(Components.interfaces.nsIChannel);
- var referer;
- try{
+ try {
referer = oHttpChannel.getRequestHeader("Referer");
- referer = ios.newURI(referer,null,null);//make a nsIURI object for referer
- }catch(referr) {
- return;//no referer available or invalid uri
+ referer = this.ios.newURI(referer, null, null); //make a nsIURI object for referer
+ } catch (referr) {
+ return; //no referer available or invalid uri
}
- var requestURI = oHttpChannel.URI; //request nsIURI object
- var destHost = referer.host; //referer host w/o scheme
- var srcHost = oHttpChannel.URI.host;//request host without scheme
-
- // match is not what we want, unless we escape dots:
- var destHostMatch = destHost.replace(this.specials, "\\$&");
- var srcHostMatch = srcHost.replace(this.specials, "\\$&");
-
- // FIXME: This isn't exactly bulletproof security here, but it still
- // may need to be more lenient not to break sites...
- //
- // If we suspect issues, we can try doing the following first:
- // 1. Strip off all TLD suffixes, up to but not including '.'
- // 2. If more than one domain part is till left, strip off prefix
-
- //if they're in the same domain(if we can tell) or have the same host, keep the referer
- if (srcHost.split(".").length >= destHost.split(".").length
- && srcHost.match(destHostMatch)) // dest is a substring of src
- return;
- else if (destHost.split(".").length >= srcHost.split(".").length
- && destHost.match(srcHostMatch)) // src is a substring of dest
- return;
- //if they do not have the same host
- this.adjustRef(oHttpChannel, requestURI.scheme + "://" + requestURI.host);
- this.logger.safe_log(3, "Adjusting Referer, ",
- "from " + destHost + " to " + requestURI.host);
- }
- catch (ex) {
- this.logger.log(5, "RefSpoof onModifyRequest: " +ex);
+ // Only spoof referer for cross-domain requests from .onions
+ if (this.onionDomainRegex.test(referer.host) &&
+ this.thirdPartyUtil.isThirdPartyURI(referer, oHttpChannel.URI)) {
+ // Set the referer to the domain being requested. This makes it harder
+ // to tell that we are referer-spoofing.
+ this.adjustRef(oHttpChannel,
+ [oHttpChannel.URI.scheme, oHttpChannel.URI.host].join("://"));
+ }
+ } catch (ex) {
+ this.logger.log(5, "RefSpoof onModifyRequest: " + ex);
}
- else if (spoofmode == 2)
- this.adjustRef(oHttpChannel, "");
},
adjustRef: function(oChannel, sRef)
{
@@ -94,7 +65,7 @@ RefSpoofer.prototype = {
oChannel.setRequestHeader("Referer", sRef, false);
}
return true;
- }
+ }
catch (ex) {
this.logger.log(5, "RefSpoof adjustRef: " +ex);
}
@@ -103,9 +74,10 @@ RefSpoofer.prototype = {
QueryInterface: function(iid)
{
if (!iid.equals(Components.interfaces.nsISupports) &&
- !iid.equals(Components.interfaces.nsIObserver) &&
- !iid.equals(Components.interfaces.nsISupportsWeakReference))
- throw Components.results.NS_ERROR_NO_INTERFACE;
+ !iid.equals(Components.interfaces.nsIObserver) &&
+ !iid.equals(Components.interfaces.nsISupportsWeakReference)) {
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
return this;
},
_xpcom_categories: [{category:"profile-after-change"}],
@@ -114,12 +86,5 @@ RefSpoofer.prototype = {
classDescription: "Tor Ref Spoofer"
};
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([RefSpoofer]);
+var NSGetFactory = XPCOMUtils.generateNSGetFactory([RefSpoofer]);
diff --git a/src/components/tors-protocol.js b/src/components/tors-protocol.js
deleted file mode 100644
index f075e43..0000000
--- a/src/components/tors-protocol.js
+++ /dev/null
@@ -1,103 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-// Test protocol related
-const kSCHEME = "tors";
-const kPROTOCOL_NAME = "tors";
-const kPROTOCOL_CONTRACTID = "@mozilla.org/network/protocol;1?name=" + kSCHEME;
-const kPROTOCOL_CID = Components.ID("a5a4bc50-5e8d-11de-8a39-0800200c9a66");
-
-// Mozilla defined
-const kSIMPLEURI_CONTRACTID = "@mozilla.org/network/simple-uri;1";
-const kIOSERVICE_CONTRACTID = "@mozilla.org/network/io-service;1";
-const nsISupports = Components.interfaces.nsISupports;
-const nsIIOService = Components.interfaces.nsIIOService;
-const nsIProtocolHandler = Components.interfaces.nsIProtocolHandler;
-const nsIURI = Components.interfaces.nsIURI;
-
-function Protocol()
-{
-}
-
-Protocol.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIProtocolHandler) &&
- !iid.equals(nsISupports))
- throw Components.results.NS_ERROR_NO_INTERFACE;
- return this;
- },
-
- scheme: kSCHEME,
- defaultPort: -1,
- protocolFlags: nsIProtocolHandler.URI_NORELATIVE |
- nsIProtocolHandler.URI_NOAUTH,
-
- allowPort: function(port, scheme)
- {
- return false;
- },
-
- newURI: function(spec, charset, baseURI)
- {
- const nsIStandardURL = Components.interfaces.nsIStandardURL;
- var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(nsIStandardURL);
- uri.init(nsIStandardURL.URLTYPE_STANDARD, 433, spec, charset, baseURI);
-
- return uri.QueryInterface(Components.interfaces.nsIURI);
-
- },
-
- newChannel: function(aURI)
- {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- if (!prefs.getBoolPref("extensions.torbutton.tor_urls")) {
- throw Components.results.NS_ERROR_UNKNOWN_PROTOCOL;
- }
-
- /*The protocol has been called, therefore we want to enable tor, wait for it to activate return the new channel with the scheme of https.*/
- var ios = Components.classes[kIOSERVICE_CONTRACTID].getService(nsIIOService);
- var prompt = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
- var tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var chrome = wm.getMostRecentWindow("navigator:browser");
- if (!ios.allowPort(aURI.port, aURI.scheme))
- throw Components.results.NS_ERROR_FAILURE;
-
- if (!tor_enabled)
- {
- var result = prompt.confirm(null, "Allow Tor toggle?", "Do you want to enable Tor and navigate to " + aURI.spec + "?");
- if (!result)
- throw Components.results.NS_ERROR_UNEXPECTED;
- chrome.torbutton_enable_tor(true);
- }
-
- //if tor is turned on then, else we should throw exception of some sort.
- tor_enabled = prefs.getBoolPref("extensions.torbutton.tor_enabled");
- if (!tor_enabled)
- throw Components.results.NS_ERROR_UNEXPECTED;
- else
- {
- aURI.scheme = "https";
- return ios.newChannelFromURI(aURI);
- }
- },
-
- // method of nsIClassInfo
- classDescription: "Tor protocol handler",
- classID: kPROTOCOL_CID,
- contractID: kPROTOCOL_CONTRACTID
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([Protocol]);
diff --git a/src/components/window-mapper.js b/src/components/window-mapper.js
deleted file mode 100644
index a04f12b..0000000
--- a/src/components/window-mapper.js
+++ /dev/null
@@ -1,180 +0,0 @@
-// Bug 1506 P0: This code is toggle-mode code and is unused. Kill it.
-
-/*************************************************************************
- * ContentWindowMapper (JavaScript XPCOM component)
- *
- * Allows you to find a tabbrowser tab for a top level content window.
- *
- *************************************************************************/
-
-// Module specific constants
-const kMODULE_NAME = "Content Window Mapper";
-const kMODULE_CONTRACTID = "@torproject.org/content-window-mapper;1";
-const kMODULE_CID = Components.ID("b985e49c-12cb-4f29-9d14-b62603332ec4");
-
-const Cr = Components.results;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const EXPIRATION_TIME = 60000; // 60 seconds
-
-const nsISupports = Components.interfaces.nsISupports;
-const nsIClassInfo = Components.interfaces.nsIClassInfo;
-const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-const nsIObserverService = Components.interfaces.nsIObserverService;
-
-function ContentWindowMapper() {
- this.cache = {};
-
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
- this.logger.log(3, "Component Load 2: Content window mapper online: "+kMODULE_CONTRACTID);
- this.last_expired = Date.now();
- // This JSObject is exported directly to chrome
- this.wrappedJSObject = this;
-}
-
-ContentWindowMapper.prototype =
-{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIClassInfo) &&
- !iid.equals(nsISupports)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
- return this;
- },
-
- wrappedJSObject: null, // Initialized by constructor
-
- // make this an nsIClassInfo object
- flags: nsIClassInfo.DOM_OBJECT,
-
- // method of nsIClassInfo
- classDescription: kMODULE_NAME,
- classID: kMODULE_CID,
- contractID: kMODULE_CONTRACTID,
-
- // method of nsIClassInfo
- getInterfaces: function(count) {
- var interfaceList = [nsIClassInfo];
- count.value = interfaceList.length;
- return interfaceList;
- },
-
- // method of nsIClassInfo
- getHelperForLanguage: function(count) { return null; },
-
- checkCache: function(topContentWindow) {
- if(typeof(topContentWindow.ghetto_guid) != "undefined"
- && typeof(this.cache[topContentWindow.ghetto_guid]) != "undefined") {
- return this.cache[topContentWindow.ghetto_guid].browser;
- }
-
- return null;
- },
-
- addCache: function(topContentWindow, browser) {
- var insertion = new Object();
- insertion.browser = browser;
- insertion.time = Date.now();
- topContentWindow.ghetto_guid = Math.random().toString()+Math.random().toString();
- this.cache[topContentWindow.ghetto_guid] = insertion;
- },
-
- expireOldCache: function() {
- var now = Date.now();
-
- if((now - this.last_expired) < EXPIRATION_TIME) {
- this.logger.log(3, "Early mapper check.");
- return;
- }
-
- var delkeys = [];
- for(var elem in this.cache) {
- if((now - this.cache[elem].time) > EXPIRATION_TIME) {
- this.logger.log(2, "Deleting cached element: "+elem.location);
- delkeys.push(elem);
- }
- }
-
- for(var k in delkeys) {
- delete this.cache[k];
- }
-
- this.last_expired = now;
- },
-
- getBrowserForContentWindow: function(topContentWindow) {
- if(topContentWindow instanceof Components.interfaces.nsIDOMChromeWindow) {
- if(topContentWindow.browserDOMWindow) {
- var browser = topContentWindow.getBrowser().selectedTab.linkedBrowser;
- this.logger.log(3, "Chrome browser at "
- +browser.contentWindow.location+" found for: "
- +topContentWindow.location);
- return browser;
- }
- // Allow strange chrome to go through..
- this.logger.log(3, "Odd chome window"+topContentWindow.location);
- return topContentWindow;
- }
-
- var cached = this.checkCache(topContentWindow);
- if(cached != null) {
- return cached;
- }
-
- try {
- this.logger.log(3, "Cache failed for: "+topContentWindow.location);
- } catch(e) {
- this.logger.log(3, "Cache failed for unknown location?");
- }
-
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
- var enumerator = wm.getEnumerator("navigator:browser");
- while(enumerator.hasMoreElements()) {
- var win = enumerator.getNext();
- var browser = win.getBrowser();
- for (var i = 0; i < browser.browsers.length; ++i) {
- var b = browser.browsers[i];
- if (b && b.contentWindow == topContentWindow) {
- this.addCache(topContentWindow, b);
- return b;
- }
- }
- }
-
- // SpeedDial, google notebook and other extensions can create their
- // own "<browser>" tag elements. AFAICT, there is no way to enumerate
- // these... Just punt and return the most recently used browser
- try {
- if(topContentWindow.name != "speedDialLoaderBrowser") {
- if(topContentWindow && topContentWindow.location)
- this.logger.safe_log(4, "No browser found: ", topContentWindow.location);
- else
- this.logger.safe_log(4, "No browser found: ", topContentWindow.name);
- } else {
- this.logger.log(3, "SpeedDial browser found: "+topContentWindow.name);
- }
- } catch(e) {
- this.logger.log(4, "No browser found.");
- }
-
- // Punt..
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].
- getService(Components.interfaces.nsIWindowMediator);
- var recentWindow = wm.getMostRecentWindow("navigator:browser");
- return recentWindow ? recentWindow.getBrowser().selectedTab.linkedBrowser : null;
- }
-}
-
-/**
-* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
-* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
-*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
-if (XPCOMUtils.generateNSGetFactory)
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([ContentWindowMapper]);
-else
- var NSGetModule = XPCOMUtils.generateNSGetModule([ContentWindowMapper]);
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 164abbf..c481546 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -165,7 +165,6 @@ pref("extensions.torbutton.tor_memory_jar",false);
pref("extensions.torbutton.nontor_memory_jar",false);
pref("extensions.torbutton.tz_string","");
pref("extensions.torbutton.launch_warning",true);
-pref("extensions.torbutton.refererspoof", 0); //0=no spoof, 1=root spoof, 2=domain spoof, 3=blank spoof, 4=custom spoof
pref("extensions.torbutton.fakerefresh", false);
pref("extensions.torbutton.customeref","");
pref("extensions.torbutton.disable_livemarks",true);
[View Less]
1
0

[tor-browser-bundle/master] Merge remote-tracking branch 'arthur/17220+1'
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit bf18016f9066faab660ebff8f8b1a9e49adbfb70
Merge: fed9df7 19bde77
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Oct 13 08:41:33 2015 +0000
Merge remote-tracking branch 'arthur/17220+1'
gitian/descriptors/linux/gitian-bundle.yml | 3 +++
gitian/descriptors/mac/gitian-bundle.yml | 3 +++
gitian/fetch-inputs.sh | 4 ++--
gitian/verify-tags.sh | 2 +-
gitian/versions | 3 +++
gitian/…
[View More]versions.alpha | 3 +++
gitian/versions.beta | 3 +++
gitian/versions.nightly | 3 +++
8 files changed, 21 insertions(+), 3 deletions(-)
[View Less]
1
0

[tor-browser-bundle/master] Revert "Revert "Bug 16909: Adapt to HTTPS-Everyhwere build changes""
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit 21a4618ade947a8dac9b422f4be3e0945388967a
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Oct 12 09:53:27 2015 +0000
Revert "Revert "Bug 16909: Adapt to HTTPS-Everyhwere build changes""
This reverts commit 2b50a8cb7d2f4e43f41f82c13704b9af15ba6b4e.
---
gitian/README.build | 2 +-
gitian/check-prerequisites.sh | 25 ++++++++++++++++---------
gitian/descriptors/linux/gitian-bundle.yml | 18 ++++++++++++------
gitian/…
[View More]descriptors/mac/gitian-bundle.yml | 18 ++++++++++++------
gitian/descriptors/windows/gitian-bundle.yml | 18 ++++++++++++------
gitian/fetch-inputs.sh | 9 ++++++++-
gitian/versions | 2 +-
gitian/versions.alpha | 2 +-
gitian/versions.beta | 2 +-
9 files changed, 64 insertions(+), 32 deletions(-)
diff --git a/gitian/README.build b/gitian/README.build
index 656dddd..f289791 100644
--- a/gitian/README.build
+++ b/gitian/README.build
@@ -1,6 +1,6 @@
QuickStart:
- On an Ubuntu 12.04+/Debian Wheezy+ machine or VM, run:
+ On an Ubuntu 14.04+/Debian Wheezy+ machine or VM, run:
$ make
diff --git a/gitian/check-prerequisites.sh b/gitian/check-prerequisites.sh
index 32c9b7b..cc16d0e 100755
--- a/gitian/check-prerequisites.sh
+++ b/gitian/check-prerequisites.sh
@@ -6,7 +6,7 @@ if [ ! -f /etc/debian_version ];
then
echo "Gitian is dependent upon the Ubuntu Virtualization Tools."
echo
- echo "You need to run Ubuntu 12.04 LTS/Debian Wheezy or newer."
+ echo "You need to run Ubuntu 14.04 LTS/Debian Wheezy or newer."
exit 1
fi
@@ -14,15 +14,22 @@ DISTRO=`cat /etc/issue | grep -Eo 'Ubuntu|Debian*'`
if [ $DISTRO = "Ubuntu" ];
then
- dpkg -s ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion torsocks tor 2>/dev/null >/dev/null
-
- if [ $? -ne 0 ];
+ VERSION=`cat /etc/issue | grep -Eo '[0-9]{2}' | head -1`
+ if [ "$VERSION" -ge "14" ];
then
- echo "You are missing one or more Gitian build tool dependencies."
- echo
- echo "Please run:"
- echo " sudo apt-get install torsocks tor"
- echo " sudo torsocks apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion"
+ dpkg -s ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion torsocks tor 2>/dev/null >/dev/null
+
+ if [ $? -ne 0 ];
+ then
+ echo "You are missing one or more Gitian build tool dependencies."
+ echo
+ echo "Please run:"
+ echo " sudo apt-get install torsocks tor"
+ echo " sudo torsocks apt-get install ruby apache2 git apt-cacher-ng python-vm-builder qemu-kvm virt-what lxc lxctl fakeroot faketime zip unzip subversion"
+ exit 1
+ fi
+ else
+ echo "Your Ubuntu is too old. You need Ubuntu 14.04 LTS or newer to build Tor Browser with Gitian."
exit 1
fi
elif [ $DISTRO = "Debian" ];
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index 27bbec0..b90356b 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -67,7 +67,7 @@ script: |
umask 0022
#
mkdir -p $OUTDIR/
- mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org
+ mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
mkdir -p tor-browser/Browser/TorBrowser/Data/Browser/Caches
mkdir -p tor-browser/Browser/TorBrowser/Docs/sources/
@@ -101,10 +101,16 @@ script: |
cd ../../../
#
cd https-everywhere
- # XXX: Bloody hack to workaround a bug in HTTPS_E's git hash extraction in
- # makexpi.sh. See https://trac.torproject.org/projects/tor/ticket/10066
- rm -f .git/refs/heads/master
- ./makexpi.sh
+ # We are invoking the build script with a particular tag to avoid #10066. This
+ # does not work for nightlies as there is no "master" tag in that sense. But
+ # we don't need to care about that as we don't need reproducibility for
+ # nightly builds.
+ if [ $HTTPSE_TAG != "master" ];
+ then
+ ./makexpi.sh $HTTPSE_TAG
+ else
+ ./makexpi.sh
+ fi
# Since 5.0.2 a .xpi for AMO is built, too. We don't need it.
rm ./pkg/*-amo.xpi
cp pkg/*.xpi ../tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org.xpi
@@ -113,7 +119,7 @@ script: |
cp *.xpi tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions/
cd tor-browser/Browser/TorBrowser/Data/Browser/profile.default/extensions
mv noscript(a)noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
- cd https-everywhere(a)eff.org/
+ cd https-everywhere-eff(a)eff.org/
unzip ../https-everywhere(a)eff.org.xpi
rm ../https-everywhere(a)eff.org.xpi
cd ~/build
diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml
index a80311e..c4477e2 100644
--- a/gitian/descriptors/mac/gitian-bundle.yml
+++ b/gitian/descriptors/mac/gitian-bundle.yml
@@ -75,7 +75,7 @@ script: |
MARTOOLS=~/build/mar-tools
#
mkdir -p $OUTDIR/
- mkdir -p $TORBROWSER_NAME.app/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org
+ mkdir -p $TORBROWSER_NAME.app/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
mkdir -p $TORBROWSER_NAME.app/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
mkdir -p $TORBROWSER_NAME.app/TorBrowser/Data/Browser/Caches
mkdir -p $TORBROWSER_NAME.app/TorBrowser/Docs/sources
@@ -103,10 +103,16 @@ script: |
cd ../../../
#
cd https-everywhere
- # XXX: Bloody hack to workaround a bug in HTTPS_E's git hash extraction in
- # makexpi.sh. See https://trac.torproject.org/projects/tor/ticket/10066
- rm -f .git/refs/heads/master
- ./makexpi.sh
+ # We are invoking the build script with a particular tag to avoid #10066. This
+ # does not work for nightlies as there is no "master" tag in that sense. But
+ # we don't need to care about that as we don't need reproducibility for
+ # nightly builds.
+ if [ $HTTPSE_TAG != "master" ];
+ then
+ ./makexpi.sh $HTTPSE_TAG
+ else
+ ./makexpi.sh
+ fi
# Since 5.0.2 a .xpi for AMO is built, too. We don't need it.
rm ./pkg/*-amo.xpi
cp pkg/*.xpi ../$TORBROWSER_NAME.app/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org.xpi
@@ -115,7 +121,7 @@ script: |
cp *.xpi ./$TORBROWSER_NAME.app/TorBrowser/Data/Browser/profile.default/extensions/
cd $TORBROWSER_NAME.app/TorBrowser/Data/Browser/profile.default/extensions/
mv noscript(a)noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
- cd https-everywhere(a)eff.org
+ cd https-everywhere-eff(a)eff.org
unzip ../https-everywhere(a)eff.org.xpi
rm ../https-everywhere(a)eff.org.xpi
cd ~/build/
diff --git a/gitian/descriptors/windows/gitian-bundle.yml b/gitian/descriptors/windows/gitian-bundle.yml
index 6028601..dc8ad05 100644
--- a/gitian/descriptors/windows/gitian-bundle.yml
+++ b/gitian/descriptors/windows/gitian-bundle.yml
@@ -65,7 +65,7 @@ script: |
MARTOOLS=~/build/mar-tools
#
mkdir -p $OUTDIR/
- mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org
+ mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere-eff(a)eff.org
mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.meek-http-helper/extensions
mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/Caches
mkdir -p tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Docs/sources
@@ -90,10 +90,16 @@ script: |
cd ../../../
#
cd https-everywhere
- # XXX: Bloody hack to workaround a bug in HTTPS_E's git hash extraction in
- # makexpi.sh. See https://trac.torproject.org/projects/tor/ticket/10066
- rm -f .git/refs/heads/master
- ./makexpi.sh
+ # We are invoking the build script with a particular tag to avoid #10066. This
+ # does not work for nightlies as there is no "master" tag in that sense. But
+ # we don't need to care about that as we don't need reproducibility for
+ # nightly builds.
+ if [ $HTTPSE_TAG != "master" ];
+ then
+ ./makexpi.sh $HTTPSE_TAG
+ else
+ ./makexpi.sh
+ fi
# Since 5.0.2 a .xpi for AMO is built, too. We don't need it.
rm ./pkg/*-amo.xpi
cp ./pkg/*.xpi ../tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions/https-everywhere(a)eff.org.xpi
@@ -102,7 +108,7 @@ script: |
cp *.xpi tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions
cd tbb-windows-installer/"Tor Browser"/Browser/TorBrowser/Data/Browser/profile.default/extensions
mv noscript(a)noscript.net.xpi {73a6fe31-595d-460b-a920-fcc0f8843232}.xpi
- cd https-everywhere(a)eff.org
+ cd https-everywhere-eff(a)eff.org
unzip ../https-everywhere(a)eff.org.xpi
rm ../https-everywhere(a)eff.org.xpi
cd ~/build/
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 881e556..9252aea 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -162,7 +162,7 @@ do
get "${!PACKAGE}" "${!URL}"
done
-# NoScript and HTTPS-Everywhere are magikal and special:
+# NoScript is magikal and special:
wget -U "" -N ${NOSCRIPT_URL}
# Verify packages with weak or no signatures via direct sha256 check
@@ -281,5 +281,12 @@ obfs4 https://git.torproject.org/pluggable-transports/obfs4.git
noto-fonts https://github.com/googlei18n/noto-fonts $NOTOFONTS_TAG
EOF
+# HTTPS-Everywhere is special, too. We need to initialize the git submodules and
+# update them here. Otherwise it would happen during the build.
+cd https-everywhere
+git submodule init
+git submodule update
+cd ..
+
exit 0
diff --git a/gitian/versions b/gitian/versions
index ee7f459..8e35391 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -16,7 +16,7 @@ TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.0-1-build2
TOR_TAG=tor-0.2.6.10
TORLAUNCHER_TAG=0.2.7.7
TORBUTTON_TAG=1.9.3.2
-HTTPSE_TAG=5.0.7
+HTTPSE_TAG=5.1.0
NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.21-stable
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index eaae8d2..3588096 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -15,7 +15,7 @@ TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-5.5-2-build4
TOR_TAG=tor-0.2.7.2-alpha
TORLAUNCHER_TAG=0.2.7.7
TORBUTTON_TAG=1.9.4
-HTTPSE_TAG=5.0.7
+HTTPSE_TAG=5.1.1
NSIS_TAG=v0.3
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.22-stable
diff --git a/gitian/versions.beta b/gitian/versions.beta
index 501a891..43c5fde 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -15,7 +15,7 @@ TORBROWSER_TAG=tor-browser-${FIREFOX_VERSION}-1-build4
TOR_TAG=tor-0.2.4.21
TORLAUNCHER_TAG=0.2.5.4
TORBUTTON_TAG=1.6.9.0
-HTTPSE_TAG=5.0.2
+HTTPSE_TAG=5.1.0
NSIS_TAG=v0.1
ZLIB_TAG=v1.2.8
LIBEVENT_TAG=release-2.0.21-stable
[View Less]
1
0

[tor-browser-bundle/master] Bug 16909: Workaround for old git in 10.04
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit c88cf009396bac20601b2de35eba2d9d98905438
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Oct 12 10:00:17 2015 +0000
Bug 16909: Workaround for old git in 10.04
---
gitian/descriptors/linux/gitian-bundle.yml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index b90356b..8cd38b6 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-…
[View More]bundle.yml
@@ -101,6 +101,9 @@ script: |
cd ../../../
#
cd https-everywhere
+ # Workaround for git not knowing `git submodule -f` in the version shipped in
+ # 10.04.
+ sed 's/recursive -f/recursive/' -i makexpi.sh
# We are invoking the build script with a particular tag to avoid #10066. This
# does not work for nightlies as there is no "master" tag in that sense. But
# we don't need to care about that as we don't need reproducibility for
[View Less]
1
0

[tor-browser-bundle/master] Bug 17220: Bundle STIX Math font for Linux and OS X
by gk@torproject.org 13 Oct '15
by gk@torproject.org 13 Oct '15
13 Oct '15
commit 19bde773ac5dbd3d204f17aeee15549bd562bb6f
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue Oct 6 00:46:00 2015 +0000
Bug 17220: Bundle STIX Math font for Linux and OS X
---
gitian/descriptors/linux/gitian-bundle.yml | 3 +++
gitian/descriptors/mac/gitian-bundle.yml | 3 +++
gitian/fetch-inputs.sh | 4 ++--
gitian/verify-tags.sh | 2 +-
gitian/versions | 3 +++
gitian/versions.…
[View More]alpha | 3 +++
gitian/versions.beta | 3 +++
gitian/versions.nightly | 3 +++
8 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/gitian/descriptors/linux/gitian-bundle.yml b/gitian/descriptors/linux/gitian-bundle.yml
index ce743df..27bbec0 100644
--- a/gitian/descriptors/linux/gitian-bundle.yml
+++ b/gitian/descriptors/linux/gitian-bundle.yml
@@ -54,6 +54,7 @@ files:
- "mar-tools-linux64.zip"
- "tbb-docs.zip"
- "NotoSansCJKsc-Regular.otf"
+- "STIXv1.1.1-latex.zip"
script: |
INSTDIR="$HOME/install"
source versions
@@ -132,6 +133,8 @@ script: |
cp "noto-fonts/unhinted/$fontfile" tor-browser/Browser/fonts/
done
cp NotoSansCJKsc-Regular.otf tor-browser/Browser/fonts/
+ unzip -o STIXv1.1.1-latex.zip -d STIX
+ cp "STIX/Fonts/fonts/opentype/public/stix/STIXMath-Regular.otf" tor-browser/Browser/fonts/
#
unzip relativelink-src.zip
cp RelativeLink/* tor-browser/Browser/
diff --git a/gitian/descriptors/mac/gitian-bundle.yml b/gitian/descriptors/mac/gitian-bundle.yml
index e250365..a80311e 100644
--- a/gitian/descriptors/mac/gitian-bundle.yml
+++ b/gitian/descriptors/mac/gitian-bundle.yml
@@ -56,6 +56,7 @@ files:
- "mar-tools-mac64.zip"
- "tbb-docs.zip"
- "mac-tor.sh"
+- "STIXv1.1.1-latex.zip"
script: |
INSTDIR="$HOME/install"
source versions
@@ -133,6 +134,8 @@ script: |
for fontfile in $NOTO_FONTS_UNHINTED; do
cp "noto-fonts/unhinted/$fontfile" $TORBROWSER_NAME.app/Contents/Resources/fonts/
done
+ unzip -o STIXv1.1.1-latex.zip -d STIX
+ cp "STIX/Fonts/fonts/opentype/public/stix/STIXMath-Regular.otf" $TORBROWSER_NAME.app/Contents/Resources/fonts/
#
unzip tor-mac$GBUILD_BITS-gbuilt.zip
if [ $BUILD_PT_BUNDLES ]; then
diff --git a/gitian/fetch-inputs.sh b/gitian/fetch-inputs.sh
index 42efa33..881e556 100755
--- a/gitian/fetch-inputs.sh
+++ b/gitian/fetch-inputs.sh
@@ -155,7 +155,7 @@ do
get "${!PACKAGE}" "${MIRROR_URL_ASN}${!PACKAGE}"
done
-for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS PARSLEY GO NOTOCJKFONT
+for i in ZOPEINTERFACE TWISTED PY2EXE SETUPTOOLS PARSLEY GO NOTOCJKFONT STIXMATHFONT
do
URL="${i}_URL"
PACKAGE="${i}_PACKAGE"
@@ -167,7 +167,7 @@ wget -U "" -N ${NOSCRIPT_URL}
# Verify packages with weak or no signatures via direct sha256 check
# (OpenSSL is signed with MD5, and OSXSDK + OSXSDK_OLD are not signed at all)
-for i in OSXSDK OSXSDK_OLD TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC NOTOCJKFONT
+for i in OSXSDK OSXSDK_OLD TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC NOTOCJKFONT STIXMATHFONT
do
PACKAGE="${i}_PACKAGE"
HASH="${i}_HASH"
diff --git a/gitian/verify-tags.sh b/gitian/verify-tags.sh
index b8fc0e0..a1ce6a1 100755
--- a/gitian/verify-tags.sh
+++ b/gitian/verify-tags.sh
@@ -142,7 +142,7 @@ done
# Verify packages with weak or no signatures via direct sha256 check
# (OpenSSL is signed with MD5, and OSXSDK + OSXSDK_OLD are not signed at all)
-for i in OSXSDK OSXSDK_OLD TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC NOTOCJKFONT
+for i in OSXSDK OSXSDK_OLD TOOLCHAIN4 TOOLCHAIN4_OLD NOSCRIPT MSVCR100 PYCRYPTO ARGPARSE PYYAML ZOPEINTERFACE TWISTED M2CRYPTO SETUPTOOLS OPENSSL GMP PARSLEY GO GCC NOTOCJKFONT STIXMATHFONT
do
PACKAGE="${i}_PACKAGE"
HASH="${i}_HASH"
diff --git a/gitian/versions b/gitian/versions
index b833342..ee7f459 100755
--- a/gitian/versions
+++ b/gitian/versions
@@ -85,6 +85,7 @@ LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
NOTOCJKFONT_PACKAGE=NotoSansCJKsc-Regular.otf
+STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
# Hashes for packages with weak sigs or no sigs
OPENSSL_HASH=bd5ee6803165c0fb60bbecbacacf244f1f90d2aa0d71353af610c29121e9b2f1
@@ -107,6 +108,7 @@ PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
NOTOCJKFONT_HASH=1652500938055a232cfbfa321de6ebaadfc5635dd9f75e369bc991d14a6512dd
+STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
## Non-git package URLs
OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_PACKAGE}
@@ -132,3 +134,4 @@ LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
GO_URL=https://golang.org/dl/${GO_PACKAGE}
NOTOCJKFONT_URL=https://github.com/googlei18n/noto-cjk/raw/f36eda03dfa5582a…
+STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%20Release/${STIXMATHFONT_PACKAGE}
diff --git a/gitian/versions.alpha b/gitian/versions.alpha
index c856979..eaae8d2 100755
--- a/gitian/versions.alpha
+++ b/gitian/versions.alpha
@@ -84,6 +84,7 @@ LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
NOTOCJKFONT_PACKAGE=NotoSansCJKsc-Regular.otf
+STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
# Hashes for packages with weak sigs or no sigs
OPENSSL_HASH=bd5ee6803165c0fb60bbecbacacf244f1f90d2aa0d71353af610c29121e9b2f1
@@ -106,6 +107,7 @@ PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
NOTOCJKFONT_HASH=1652500938055a232cfbfa321de6ebaadfc5635dd9f75e369bc991d14a6512dd
+STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
## Non-git package URLs
OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_PACKAGE}
@@ -131,3 +133,4 @@ LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
GO_URL=https://golang.org/dl/${GO_PACKAGE}
NOTOCJKFONT_URL=https://github.com/googlei18n/noto-cjk/raw/f36eda03dfa5582a…
+STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%20Release/${STIXMATHFONT_PACKAGE}
diff --git a/gitian/versions.beta b/gitian/versions.beta
index c2143a0..501a891 100755
--- a/gitian/versions.beta
+++ b/gitian/versions.beta
@@ -78,6 +78,7 @@ LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
NOTOCJKFONT_PACKAGE=NotoSansCJKsc-Regular.otf
+STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
# Hashes for packages with weak sigs or no sigs
OPENSSL_HASH=53cb818c3b90e507a8348f4f5eaedb05d8bfe5358aabb508b7263cc670c3e028
@@ -99,6 +100,7 @@ SETUPTOOLS_HASH=75d288687066ed124311d6ca5f40ffa92a0e81adcd7fff318c6e84082713cf39
PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
NOTOCJKFONT_HASH=1652500938055a232cfbfa321de6ebaadfc5635dd9f75e369bc991d14a6512dd
+STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
## Non-git package URLs
OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_PACKAGE}
@@ -124,3 +126,4 @@ LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
GO_URL=https://golang.org/dl/${GO_PACKAGE}
NOTOCJKFONT_URL=https://github.com/googlei18n/noto-cjk/raw/f36eda03dfa5582a…
+STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%20Release/${STIXMATHFONT_PACKAGE}
diff --git a/gitian/versions.nightly b/gitian/versions.nightly
index 85e4128..04d2214 100755
--- a/gitian/versions.nightly
+++ b/gitian/versions.nightly
@@ -87,6 +87,7 @@ LXML_PACKAGE=lxml-${LXML_VER}.tar.gz
PARSLEY_PACKAGE=Parsley-${PARSLEY_VER}.tar.gz
GO_PACKAGE=go${GO_VER}.src.tar.gz
NOTOCJKFONT_PACKAGE=NotoSansCJKsc-Regular.otf
+STIXMATHFONT_PACKAGE=STIXv1.1.1-latex.zip
# Hashes for packages with weak sigs or no sigs
OPENSSL_HASH=bd5ee6803165c0fb60bbecbacacf244f1f90d2aa0d71353af610c29121e9b2f1
@@ -109,6 +110,7 @@ PARSLEY_HASH=50d30cee70770fd44db7cea421cb2fb75af247c3a1cd54885c06b30a7c85dd23
GO_HASH=299a6fd8f8adfdce15bc06bde926e7b252ae8e24dd5b16b7d8791ed79e7b5e9b
GCC_HASH=b7dafdf89cbb0e20333dbf5b5349319ae06e3d1a30bf3515b5488f7e89dca5ad
NOTOCJKFONT_HASH=1652500938055a232cfbfa321de6ebaadfc5635dd9f75e369bc991d14a6512dd
+STIXMATHFONT_HASH=e3b0f712e2644438eee2d0dcd2b10b2d54f1b972039de95b2f8e800bae1adbd8
## Non-git package URLs
OPENSSL_URL=https://www.openssl.org/source/${OPENSSL_PACKAGE}
@@ -134,3 +136,4 @@ LXML_URL=https://pypi.python.org/packages/source/l/lxml/${LXML_PACKAGE}
PARSLEY_URL=https://pypi.python.org/packages/source/P/Parsley/${PARSLEY_PAC…
GO_URL=https://golang.org/dl/${GO_PACKAGE}
NOTOCJKFONT_URL=https://github.com/googlei18n/noto-cjk/raw/f36eda03dfa5582a…
+STIXMATHFONT_URL=http://iweb.dl.sourceforge.net/project/stixfonts/Current%20Release/${STIXMATHFONT_PACKAGE}
[View Less]
1
0