commit 011e04c8856fc768e53374bf9c83667ac5d40af1 Author: Ximin Luo infinity0@gmx.com Date: Mon Oct 7 16:54:33 2013 +0100
drop the "chain" terminology and use PROXY_TRANSPORT to describe the proxy's capabilities --- facilitator/fac.py | 12 ++++-------- facilitator/facilitator | 17 ++++++++--------- facilitator/facilitator.cgi | 6 +++--- 3 files changed, 15 insertions(+), 20 deletions(-)
diff --git a/facilitator/fac.py b/facilitator/fac.py index c08ee2a..9cbfa79 100644 --- a/facilitator/fac.py +++ b/facilitator/fac.py @@ -250,14 +250,12 @@ def transact(f, command, *params): raise ValueError("No newline at end of string returned by facilitator: %r" % line) return parse_transaction(line[:-1])
-def put_reg(facilitator_addr, client_addr, transport_chain, registrant_addr=None): +def put_reg(facilitator_addr, client_addr, transport, registrant_addr=None): """Send a registration to the facilitator using a one-time socket. Returns true iff the command was successful.""" - # TODO(infinity0): replace "transport_chain" with better terminology, e.g. - # transport_pair f = fac_socket(facilitator_addr) params = [("CLIENT", format_addr(client_addr))] - params.append(("TRANSPORT_CHAIN", transport_chain)) + params.append(("TRANSPORT", transport)) if registrant_addr is not None: params.append(("FROM", format_addr(registrant_addr))) try: @@ -266,7 +264,7 @@ def put_reg(facilitator_addr, client_addr, transport_chain, registrant_addr=None f.close() return command == "OK"
-def get_reg(facilitator_addr, proxy_addr, transport_list): +def get_reg(facilitator_addr, proxy_addr, proxy_transport_list): """ Get a client registration for proxy 'proxy_addr' from the facilitator at 'facilitator_addr' using a one-time @@ -277,15 +275,13 @@ def get_reg(facilitator_addr, proxy_addr, transport_list): "relay-<transport>" if successful, or a dict with the key "client" mapped to the value "" if there are no registrations available for proxy_addr. Raises an exception otherwise.""" - # TODO(infinity0): replace "transport_list" with better terminology, e.g. - # transport_suffix_list f = fac_socket(facilitator_addr)
# Form a list (in transact() format) with the transports that we # should send to the facilitator. Then pass that list to the # transact() function. # For example, TRANSPORT=obfs2 TRANSPORT=obfs3. - transports = [("TRANSPORT", transport) for transport in transport_list] + transports = [("PROXY_TRANSPORT", tp) for tp in proxy_transport_list]
try: command, params = transact(f, "GET", ("FROM", format_addr(proxy_addr)), *transports) diff --git a/facilitator/facilitator b/facilitator/facilitator index d4088ff..9c8de92 100755 --- a/facilitator/facilitator +++ b/facilitator/facilitator @@ -111,8 +111,7 @@ class Reg(namedtuple("Reg", "addr transport")):
class Endpoints(object): """ - Tracks endpoints (either client/server) and the transport chains that - they support. + Tracks endpoints (either client/server) and the transports they support. """
matchingLock = threading.Condition() @@ -357,9 +356,9 @@ class Handler(SocketServer.StreamRequestHandler): except ValueError as e: return self.error(u"syntax error in proxy address %s: %%(cause)s" % safe_str(repr(proxy_spec)), e)
- transport_list = fac.param_getlist("TRANSPORT", params) + transport_list = fac.param_getlist("PROXY_TRANSPORT", params) if not transport_list: - return self.error(u"TRANSPORT missing FROM param") + return self.error(u"PROXY_TRANSPORT missing FROM param")
try: client_reg, relay_reg = get_match_for_proxy(proxy_addr, transport_list) @@ -382,15 +381,15 @@ class Handler(SocketServer.StreamRequestHandler): return True
# Handle a PUT request (client made a registration request; register it.) - # Example: PUT CLIENT="1.1.1.1:5555" TRANSPORT_CHAIN="obfs3|websocket" + # Example: PUT CLIENT="1.1.1.1:5555" TRANSPORT="obfs3|websocket" def do_PUT(self, params): - # Check out if we recognize the transport chain in this registration request - transport = fac.param_first("TRANSPORT_CHAIN", params) + # Check out if we recognize the transport in this registration request + transport = fac.param_first("TRANSPORT", params) if transport is None: - return self.error(u"PUT missing TRANSPORT_CHAIN param") + return self.error(u"PUT missing TRANSPORT param")
transport = Transport.parse(transport) - # See if we have relays that support this transport chain + # See if we have relays that support this transport if all(not pts.supports(transport) for pts in SERVERS.itervalues()): return self.error(u"Unrecognized transport: %s" % transport)
diff --git a/facilitator/facilitator.cgi b/facilitator/facilitator.cgi index c3eadf4..a68d84e 100755 --- a/facilitator/facilitator.cgi +++ b/facilitator/facilitator.cgi @@ -107,9 +107,9 @@ def do_post(): continue
if key == "client": # reg without transport info -- default to websocket. - transport_chain = "websocket" + transport = "websocket" else: # reg with transport info -- get the "websocket" part out of "client-websocket". - transport_chain = key[len("client-"):] + transport = key[len("client-"):]
# Get the "1.2.3.4:9000" part of "client-websocket=1.2.3.4:9000". client_spec = fs[key].value.strip() @@ -124,7 +124,7 @@ def do_post():
# XXX need to link these registrations together, so that # when one is answerered the rest are invalidated. - if not fac.put_reg(FACILITATOR_ADDR, client_addr, transport_chain, remote_addr): + if not fac.put_reg(FACILITATOR_ADDR, client_addr, transport, remote_addr): exit_error(500)
print """\
tor-commits@lists.torproject.org