Ticket #9349: 0001-Add-specification-for-pluggable-transport-client-reg.patch

File 0001-Add-specification-for-pluggable-transport-client-reg.patch, 2.9 KB (added by asn, 6 years ago)
  • doc/design.txt

    From ecbac8d112587a002b9f605381eb659138361ff3 Mon Sep 17 00:00:00 2001
    From: George Kadianakis <desnacked@riseup.net>
    Date: Tue, 13 Aug 2013 16:46:18 +0300
    Subject: [PATCH] Add specification for pluggable transport client
     registration.
    
    ---
     doc/design.txt |   36 +++++++++++++++++++++++++++++-------
     1 file changed, 29 insertions(+), 7 deletions(-)
    
    diff --git a/doc/design.txt b/doc/design.txt
    index bc0f377..08eecff 100644
    a b Design of flash proxies 
    116116  flash proxy and the local Tor client.
    117117
    118118  On startup, the client transport plugin sends a registration message
    119   to the facilitator, informing the facilitator that it is waiting for a
    120   connection. The facilitator will later hand this registration to a
    121   flash proxy. The registration message is an HTTP POST request of the
    122   form:
     119  to the facilitator, informing the facilitator that it is waiting for
     120  a connection. If the client transport plugin obfuscates its
     121  connections using pluggable transports, then it also appends the
     122  listening address of its transports to the registration message.
     123
     124  The facilitator will later hand this registration to a flash
     125  proxy. The registration message is an HTTP POST request of the form:
    123126
    124127    POST / HTTP/1.0
    125128
    126     client=[<address>]:<port>
     129    client-<transport>=[<address>]:<port>[&client-<transport>=[<address>]:<port>...]
     130
     131  Where 'transport' is the name of the pluggable transport that is
     132  listening on <address>:<port>. The default flashproxy transport is
     133  named 'websocket'.
     134
     135  For example a registration message would look like this:
     136    client-websocket=1.2.3.4:9000&client-obfs3|websocket=1.2.3.4:10000
    127137
    128138  The facilitator sends a 200 reply if the registration was successful
    129139  and an error status otherwise. If the transport plugin omits the
    Design of flash proxies 
    149159  The proxy asks the facilitator for a registration with an HTTP GET
    150160  request:
    151161
    152     GET / HTTP/1.0
     162    GET /r=<version>&client=<client addr>&transport=<transport name> HTTP/1.0
    153163
     164  The 'r' parameter is the protocol revision number (should be '1' for now).
     165  The 'client' parameter carries the IP address of a flashproxy
     166  client. The client parameter can can repeat to report multiple
     167  connected clients.
     168  The 'transport' parameter signals the transports that this
     169  flashproxy supports.
     170
     171  For example:
     172   GET /r=1&client=7.1.43.21&client=1.2.3.4&transport=webrtc&transport=websocket HTTP/1.0
    154173
    155174  The response code is 200 and the body looks like this:
    156175
    157     client=[<address>:<port>]&relay=<address>:<port>
     176    client-<transport>=[<address>:<port>]&relay-<transport>=<address>:<port>
     177
     178  For example:
     179   client-obfs3|websocket=1.2.3.4:2000&relay-obfs3|websocket=10.10.10:9902
    158180
    159181  If the value for the client parameter is empty, it means that there are no
    160182  client registrations for this proxy.