[tor-commits] [flashproxy/master] Honor both "flashproxy" and "websocket" method names.

dcf at torproject.org dcf at torproject.org
Sun Jun 9 04:00:24 UTC 2013


commit 93be030227cf96aa682f9fb8dbc9ccc986d1c36c
Author: David Fifield <david at bamsoftware.com>
Date:   Sat Jun 8 20:31:32 2013 -0700

    Honor both "flashproxy" and "websocket" method names.
    
    These are treated as synonyms. If Tor asks for "*", it gets only one of
    them.
---
 ChangeLog                   |    3 +++
 doc/flashproxy-client.1     |    2 +-
 doc/flashproxy-client.1.txt |    2 +-
 flashproxy-client           |   44 ++++++++++++++++++++++++-------------------
 4 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c342eb0..9f47f12 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,9 @@
     facilitator to estimate the level of service each client is getting.
     Proxies send a protocol revision number "r=1" to signify the change.
 
+  o The managed transport method name "flashproxy" is now recognized as
+    a synonym for "websocket".
+
 Changes in version 1.1
   o Programs that use certificate pins now take a --disable-pin option
     that causes pins to be ignored.
diff --git a/doc/flashproxy-client.1 b/doc/flashproxy-client.1
index e9fea5c..d431a58 100644
--- a/doc/flashproxy-client.1
+++ b/doc/flashproxy-client.1
@@ -38,7 +38,7 @@ Wait for connections on a local and a remote port\&. When any pair of connection
 .sp
 The local connection acts as a SOCKS4a proxy, but the host and port in the SOCKS request are ignored and the local connection is always linked to a remote connection\&.
 .sp
-By default, runs as a managed proxy: informs a parent Tor process of support for the "websocket" pluggable transport\&. In managed mode, the \fILOCAL\fR port is chosen arbitrarily instead of defaulting to 9001; however this can be overridden by including a \fILOCAL\fR port in the command\&. This is the way the program should be invoked in a torrc ClientTransportPlugin "exec" line\&. Use the \fB\-\-external\fR option to run as an external proxy that does not interact with Tor\&.
+By default, runs as a managed proxy: informs a parent Tor process of support for the "flashproxy" or "websocket" pluggable transport\&. In managed mode, the \fILOCAL\fR port is chosen arbitrarily instead of defaulting to 9001; however this can be overridden by including a \fILOCAL\fR port in the command\&. This is the way the program should be invoked in a torrc ClientTransportPlugin "exec" line\&. Use the \fB\-\-external\fR option to run as an external proxy that does not interact with Tor\&.
 .sp
 If any of the \fB\-\-register\fR, \fB\-\-register\-addr\fR, or \fB\-\-register\-methods\fR options are used, then your IP address will be sent to the facilitator so that proxies can connect to you\&. You need to register in some way in order to get any service\&. The \fB\-\-facilitator\fR option allows controlling which facilitator is used; if omitted, it uses a public default\&.
 .SH "OPTIONS"
diff --git a/doc/flashproxy-client.1.txt b/doc/flashproxy-client.1.txt
index 66eaa50..8d9a99e 100644
--- a/doc/flashproxy-client.1.txt
+++ b/doc/flashproxy-client.1.txt
@@ -25,7 +25,7 @@ request are ignored and the local connection is always linked to a remote
 connection.
 
 By default, runs as a managed proxy: informs a parent Tor process of support for
-the "websocket" pluggable transport. In managed mode, the __LOCAL__ port is chosen
+the "flashproxy" or "websocket" pluggable transport. In managed mode, the __LOCAL__ port is chosen
 arbitrarily instead of defaulting to 9001; however this can be
 overridden by including a __LOCAL__ port in the command. This is the way the
 program should be invoked in a torrc ClientTransportPlugin "exec" line.
diff --git a/flashproxy-client b/flashproxy-client
index 3c40be9..7feaefe 100755
--- a/flashproxy-client
+++ b/flashproxy-client
@@ -79,12 +79,12 @@ request are ignored and the local connection is always linked to a remote
 connection.
 
 By default, runs as a managed proxy: informs a parent Tor process of support for
-the "websocket" pluggable transport. In managed mode, the LOCAL port is chosen
-arbitrarily instead of defaulting to %(local_port)d; however this can be
-overridden by including a LOCAL port in the command. This is the way the
-program should be invoked in a torrc ClientTransportPlugin "exec" line.
-Use the --external option to run as an external proxy that does not
-interact with Tor.
+the "flashproxy" or "websocket" pluggable transport. In managed mode,
+the LOCAL port is chosen arbitrarily instead of defaulting to
+%(local_port)d; however this can be overridden by including a LOCAL port
+in the command. This is the way the program should be invoked in a torrc
+ClientTransportPlugin "exec" line. Use the --external option to run as
+an external proxy that does not interact with Tor.
 
 If any of the --register, --register-addr, or --register-methods options are
 used, then your IP address will be sent to the facilitator so that proxies can
@@ -1003,10 +1003,12 @@ def pt_cmethoderror(msg):
     pt_line("CMETHOD-ERROR", msg)
     sys.exit(1)
 
-def pt_get_client_transports(known):
+def pt_get_client_transports(known, wildcard = None):
     result = []
     if os.environ.get("TOR_PT_CLIENT_TRANSPORTS") == "*":
-        return known
+        if wildcard is None:
+            wildcard = known
+        return wildcard
     for method in os.environ.get("TOR_PT_CLIENT_TRANSPORTS", "").split(","):
         if method in known:
             result.append(method)
@@ -1033,10 +1035,11 @@ option.\
         pt_line("VERSION-ERROR", "no-version")
         sys.exit(1)
 
-    client_transports = pt_get_client_transports(["websocket"])
+    client_transports = pt_get_client_transports(["flashproxy", "websocket"], ["flashproxy"])
     if not client_transports:
         pt_cmethods_done()
         sys.exit(1)
+    return client_transports
 
 def pt_cmethod(method_name, addr):
     pt_line("CMETHOD", method_name, "socks4", format_sockaddr(addr))
@@ -1096,7 +1099,9 @@ def main():
         options.log_file = sys.stderr
 
     if options.managed:
-        pt_setup_managed()
+        method_names = pt_setup_managed()
+    else:
+        method_names = ["flashproxy"]
 
     if options.managed:
         default_local_port = DEFAULT_LOCAL_PORT_MANAGED
@@ -1154,15 +1159,16 @@ def main():
     # Local sockets, accepting SOCKS requests from localhost
     local_listen = []
     for addr in options.local_addrs:
-        try:
-            listen = listen_socket(addr)
-        except socket.error, e:
-            log(u"Failed to listen local on %s: %s." % (addr, str(e)))
-            continue
-        local_listen.append(listen)
-        log(u"Listening local on %s." % format_sockaddr(listen.getsockname()))
-        if options.managed:
-            pt_cmethod("websocket", listen.getsockname())
+        for method_name in method_names:
+            try:
+                listen = listen_socket(addr)
+            except socket.error, e:
+                log(u"Failed to listen local on %s: %s." % (addr, str(e)))
+                continue
+            local_listen.append(listen)
+            log(u"Listening local on %s." % format_sockaddr(listen.getsockname()))
+            if options.managed:
+                pt_cmethod(method_name, listen.getsockname())
     if not local_listen:
         log(u"Failed to open any local listeners, quitting.")
         pt_cmethoderror("Failed to open any local listeners.")



More information about the tor-commits mailing list