commit 8ba1b90bd4b0d4309b96288239fded1e4bd099ee Author: Mike Perry mikeperry-git@fscked.org Date: Wed Jun 22 15:40:58 2011 -0700
Bug 2843: Update preferences window to support env var.
These changes only make the preferences window sane wrt to the TOR_SOCKS_PORT environment var. We still need some code to set the pref during startup. --- src/chrome/content/preferences.js | 47 ++++++++++++++++++++++++--------- src/chrome/content/torbutton_util.js | 21 +++++++++++++++ 2 files changed, 55 insertions(+), 13 deletions(-)
diff --git a/src/chrome/content/preferences.js b/src/chrome/content/preferences.js index c18d40a..d72509a 100644 --- a/src/chrome/content/preferences.js +++ b/src/chrome/content/preferences.js @@ -14,26 +14,34 @@ function torbutton_prefs_set_field_attributes(doc) doc.getElementById('torbutton_panelStyle').setAttribute("disabled", !doc.getElementById('torbutton_displayStatusPanel').checked); doc.getElementById('torbutton_panelStyleText').setAttribute("disabled", !doc.getElementById('torbutton_displayStatusPanel').checked); doc.getElementById('torbutton_panelStyleIcon').setAttribute("disabled", !doc.getElementById('torbutton_displayStatusPanel').checked); + // Privoxy is always recommended for Firefoxes not supporting socks_remote_dns if (doc.getElementById('torbutton_transparentTor').selected) { doc.getElementById('torbutton_settingsMethod').value = 'transparent'; - } - else if (!torbutton_check_socks_remote_dns()) { + } else if (!torbutton_check_socks_remote_dns()) { doc.getElementById('torbutton_usePrivoxy').setAttribute("disabled", true); } else { doc.getElementById('torbutton_usePrivoxy').setAttribute("disabled", doc.getElementById('torbutton_settingsMethod').value != 'recommended'); } - var proxy_port; - var proxy_host; - if (doc.getElementById('torbutton_usePrivoxy').checked) { - proxy_host = '127.0.0.1'; - proxy_port = 8118; - } else { - proxy_host = ''; - proxy_port = 0; - }
if (doc.getElementById('torbutton_settingsMethod').value == 'recommended') { + var proxy_port; + var proxy_host; + if (torbutton_has_good_socks()) { + doc.getElementById('torbutton_usePrivoxy').checked = false; + doc.getElementById('torbutton_usePrivoxy').setAttribute("disabled", true); + proxy_host = ''; + proxy_port = 0; + } else { + if (doc.getElementById('torbutton_usePrivoxy').checked) { + proxy_host = '127.0.0.1'; + proxy_port = 8118; + } else { + proxy_host = ''; + proxy_port = 0; + } + } + torbutton_log(2, "using recommended settings"); if (!torbutton_check_socks_remote_dns()) { doc.getElementById('torbutton_httpProxy').value = proxy_host; @@ -55,8 +63,21 @@ function torbutton_prefs_set_field_attributes(doc) doc.getElementById('torbutton_gopherProxy').value = ''; doc.getElementById('torbutton_gopherPort').value = 0; } - doc.getElementById('torbutton_socksHost').value = '127.0.0.1'; - doc.getElementById('torbutton_socksPort').value = 9050; + + var environ = Components.classes["@mozilla.org/process/environment;1"] + .getService(Components.interfaces.nsIEnvironment); + + if (environ.exists("TOR_SOCKS_PORT")) { + doc.getElementById('torbutton_socksPort').value = parseInt(environ.get("TOR_SOCKS_PORT")); + } else { + doc.getElementById('torbutton_socksPort').value = 9050; + } + + if (environ.exists("TOR_SOCKS_HOST")) { + doc.getElementById('torbutton_socksHost').value = environ.get("TOR_SOCKS_HOST"); + } else { + doc.getElementById('torbutton_socksHost').value = '127.0.0.1'; + }
doc.getElementById('torbutton_httpProxy').disabled = true; doc.getElementById('torbutton_httpPort').disabled = true; diff --git a/src/chrome/content/torbutton_util.js b/src/chrome/content/torbutton_util.js index fb17932..808c826 100644 --- a/src/chrome/content/torbutton_util.js +++ b/src/chrome/content/torbutton_util.js @@ -6,6 +6,7 @@ var appInfo = Components.classes["@mozilla.org/xre/app-info;1"] .getService(Components.interfaces.nsIXULAppInfo); var versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"] .getService(Components.interfaces.nsIVersionComparator); +var m_tb_ff5 = false; var m_tb_ff4 = false;
if(versionChecker.compare(appInfo.version, "4.0a1") >= 0) { @@ -13,6 +14,11 @@ if(versionChecker.compare(appInfo.version, "4.0a1") >= 0) { } else { m_tb_ff4 = false; } +if(versionChecker.compare(appInfo.version, "5.0a1") >= 0) { + m_tb_ff5 = true; +} else { + m_tb_ff5 = false; +}
function torbutton_eclog(nLevel, sMsg) { @@ -97,6 +103,21 @@ function torbutton_check_socks_remote_dns() } }
+function torbutton_has_good_socks() { + if(m_tb_ff5) { + return true; + } + + // TBB will set this pref if it has the SOCKS timeout patch applied + var environ = Components.classes["@mozilla.org/process/environment;1"] + .getService(Components.interfaces.nsIEnvironment); + + if (environ.exists("TOR_SOCKS_PORT")) + return true; + + return false; +} + function torbutton_check_status() { var liveprefs = false; var torprefs = false;