[tor-commits] [flashproxy/master] Patch for ticket #7110, adding a get_query_param_boolean() function.

dcf at torproject.org dcf at torproject.org
Wed Oct 17 17:56:08 UTC 2012


commit 3001f18b435ee9192bb4538acbf646f3ae1e063b
Author: Alexandre Allaire <aallai at functor.local>
Date:   Wed Oct 17 13:03:44 2012 -0400

    Patch for ticket #7110, adding a get_query_param_boolean() function.
---
 proxy/flashproxy-test.js |   37 +++++++++++++++++++++++++++++++++++++
 proxy/flashproxy.js      |   32 +++++++++++++++++++++++++++-----
 2 files changed, 64 insertions(+), 5 deletions(-)

diff --git a/proxy/flashproxy-test.js b/proxy/flashproxy-test.js
index 2dc185a..f38182e 100755
--- a/proxy/flashproxy-test.js
+++ b/proxy/flashproxy-test.js
@@ -159,6 +159,42 @@ function test_parse_query_string()
     }
 }
 
+function test_get_query_param_boolean()
+{
+    var TESTS = [
+        {qs: "param=true",
+         expected: true},
+        {qs: "param",
+         expected: true},
+        {qs: "param=",
+         expected: true},
+        {qs: "param=1",
+         expected: true},
+        {qs: "param=0",
+         expected: false},
+        {qs: "param=false",
+         expected: false},
+        {qs: "param=unexpected",
+         expected: null},
+        {qs: "pram=true",
+         expected: false},
+    ];
+
+    announce("test_get_query_param_boolean");
+    for (var i = 0; i < TESTS.length; i++) {
+        var test = TESTS[i];
+        var actual;
+        var query;
+
+        query = parse_query_string(test.qs);
+        actual = get_query_param_boolean(query, "param", false);
+        if (objects_equal(actual, test.expected))
+            pass(test.qs);
+        else
+            fail(test.qs, test.expected, actual);
+    }
+}
+
 function test_parse_addr_spec()
 {
     var TESTS = [
@@ -230,6 +266,7 @@ function test_get_query_param_addr()
 
 test_build_url();
 test_parse_query_string();
+test_get_query_param_boolean();
 test_parse_addr_spec();
 test_get_query_param_addr();
 
diff --git a/proxy/flashproxy.js b/proxy/flashproxy.js
index 327c9a5..ec7d550 100644
--- a/proxy/flashproxy.js
+++ b/proxy/flashproxy.js
@@ -7,9 +7,10 @@
  * information from the facilitator. When this option is used, the facilitator
  * query is not done. The "relay" parameter must be given as well.
  *
- * debug=1
- * If set (to any value), show verbose terminal-like output instead of the
- * badge.
+ * debug=<value>
+ * If set to true, 1, or present in the query string with no value, show
+ * verbose terminal-like output instead of the badge. To disable debug output,
+ * omit the debug parameter, or set it to false or 0.
  *
  * facilitator=https://host:port/
  * The URL of the facilitator CGI script. By default it is
@@ -67,9 +68,10 @@ var RATE_LIMIT_HISTORY = 5.0;
 var WebSocket = window.WebSocket || window.MozWebSocket;
 
 var query = parse_query_string(window.location.search.substr(1));
+var DEBUG = get_query_param_boolean(query, "debug", false);
 var debug_div;
 
-if (query.debug) {
+if (DEBUG) {
     debug_div = document.createElement("pre");
     debug_div.className = "debug";
 }
@@ -178,6 +180,26 @@ function build_url(scheme, host, port, path, params) {
     return parts.join("");
 }
 
+/* Get a query string parameter and return it as a boolean, or return
+    default_val if param is not present in the query string.
+    Parameter values of "true", "1" and "" evalutate to true.
+    "false" and "0" evalutate to false.
+    Any other value evaluates to null.
+*/
+function get_query_param_boolean(query, param, default_val) {
+    var val;
+
+    val = query[param];
+    if (val === undefined)
+        return default_val;
+    else if (val === "true" || val === "1" || val === "")
+        return true;
+    else if (val === "false" || val === "0")
+        return false;
+    else
+        return null;
+}
+
 /* Get a query string parameter and return it as a string. Returns default_val
    if param is not defined in the query string. */
 function get_query_param_string(query, param, default_val) {
@@ -358,7 +380,7 @@ function make_websocket(addr) {
 }
 
 function FlashProxy() {
-    if (query.debug) {
+    if (DEBUG) {
         this.badge_elem = debug_div;
     } else {
         this.badge = new Badge();





More information about the tor-commits mailing list