[tor-commits] [flashproxy/master] Improve client registration parsing.
infinity0 at torproject.org
infinity0 at torproject.org
Mon Oct 28 14:47:40 UTC 2013
commit fb55ab7fe6aec6182217d11999a5818869f539ca
Author: George Kadianakis <desnacked at riseup.net>
Date: Wed Sep 18 16:45:48 2013 +0300
Improve client registration parsing.
Don't differentiate between old-style and new-style registrations.
---
facilitator/facilitator.cgi | 59 +++++++++++++++----------------------------
1 file changed, 21 insertions(+), 38 deletions(-)
diff --git a/facilitator/facilitator.cgi b/facilitator/facilitator.cgi
index bf2200b..e0dbb3f 100755
--- a/facilitator/facilitator.cgi
+++ b/facilitator/facilitator.cgi
@@ -95,53 +95,36 @@ def do_post():
# New style client registration:
# client-websocket=1.2.3.4:9000&client-obfs3|websocket=1.2.3.4:10000
- is_new_style = True
-
if path_info != "/":
exit_error(400)
- if "client" in fs.keys():
- is_new_style = False
-
- if is_new_style:
- # It's a new style registration. We iterate through the items
- # in the POST body, and see if any of them look like
- # "client-websocket=1.2.3.4:9000". We then split all those
- # items and send them as separate registrations to the
- # facilitator.
- for key in fs.keys():
- if not key.startswith("client-"):
- continue
-
- # Get the "webssocket" part of "client-webscoket".
+ # We iterate through the items in the POST body, and see if any of
+ # them look like "client-websocket=1.2.3.4:9000". We then split
+ # all those items and send them as separate registrations to the
+ # facilitator.
+ for key in fs.keys():
+ if key != "client" and not key.startswith("client-"):
+ continue
+
+ if key == "client": # reg without transport info -- default to websocket.
+ transport_chain = "websocket"
+ else: # reg with transport info -- get the "websocket" part out of "client-websocket".
transport_chain = 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()
- try:
- client_addr = fac.parse_addr_spec(client_spec, defhost=remote_addr[0])
- except ValueError:
- exit_error(400)
-
- # XXX what if previous registrations passed through
- # successfully, but the last one failed and called
- # exit_error()?
-
- # 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):
- exit_error(500)
-
- else: # old-stle registration:
- client_specs = fs.getlist("client")
- if len(client_specs) != 1:
- exit_error(400)
- client_spec = client_specs[0].strip()
+
+ # Get the "1.2.3.4:9000" part of "client-websocket=1.2.3.4:9000".
+ client_spec = fs[key].value.strip()
try:
client_addr = fac.parse_addr_spec(client_spec, defhost=remote_addr[0])
except ValueError:
exit_error(400)
- if not fac.put_reg(FACILITATOR_ADDR, client_addr, "websocket", remote_addr):
+ # XXX what if previous registrations passed through
+ # successfully, but the last one failed and called
+ # exit_error()?
+
+ # 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):
exit_error(500)
print """\
More information about the tor-commits
mailing list