[tor-commits] [torbutton/master] Bug 2843: Update preferences window to support env var.

mikeperry at torproject.org mikeperry at torproject.org
Thu Jun 23 00:37:46 UTC 2011


commit 8ba1b90bd4b0d4309b96288239fded1e4bd099ee
Author: Mike Perry <mikeperry-git at 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;





More information about the tor-commits mailing list