aboutsummaryrefslogtreecommitdiff
path: root/proposals/ideas
diff options
context:
space:
mode:
authorGeorge Kadianakis <desnacked@riseup.net>2013-03-14 12:26:32 -0400
committerGeorge Kadianakis <desnacked@riseup.net>2013-03-14 12:26:32 -0400
commit1648ca676aa2ae251b6d751fb826470eadc699f3 (patch)
treea68df378e4b2df80d6ca7ea6c083d0f3fbef5f9f /proposals/ideas
parent6a3234ad8116eb495b375cfc2fbfd9593c1e80f4 (diff)
downloadtorspec-1648ca676aa2ae251b6d751fb826470eadc699f3.tar.gz
torspec-1648ca676aa2ae251b6d751fb826470eadc699f3.zip
Edit the xxx-pluggable-transports-through-proxy.txt proposal a bit
Diffstat (limited to 'proposals/ideas')
-rw-r--r--proposals/ideas/xxx-pluggable-transports-through-proxy.txt73
1 files changed, 36 insertions, 37 deletions
diff --git a/proposals/ideas/xxx-pluggable-transports-through-proxy.txt b/proposals/ideas/xxx-pluggable-transports-through-proxy.txt
index 221c0d1..3fc7754 100644
--- a/proposals/ideas/xxx-pluggable-transports-through-proxy.txt
+++ b/proposals/ideas/xxx-pluggable-transports-through-proxy.txt
@@ -6,14 +6,14 @@ Status: Draft
Overview
- Tor introduced Pluggable Transports in proposal 180 Pluggable Transports
- for circumvention.
-
- The problem is that Tor currently cannot use a Pluggable Transport proxy
- and a SOCKS proxy at the same time. This has been noticed by users in
- #5195, where Tor would be failing saying "Unacceptable option value:
- You have configured more than one proxy type".
+ Tor introduced Pluggable Transports in proposal "180 Pluggable
+ Transports for circumvention".
+ The problem is that Tor currently cannot use a pluggable transport
+ proxy and a normal (SOCKS/HTTP) proxy at the same time. This has
+ been noticed by users in #5195, where Tor would be failing saying
+ "Unacceptable option value: You have configured more than one proxy
+ type".
Trivia
@@ -21,7 +21,7 @@ Trivia
to write a proposal for it if I wanted to hear what he had to say.
Nick spoke and I am writing this proposal.
-Acknowledgements
+Acknowledgments
Most of the credit goes to Nick Mathewson for the main idea and
the rest of it goes to George Kadianakis for helping me out in writing
@@ -29,51 +29,50 @@ Acknowledgements
Motivation
- After looking at some options we decided to go for this solution solution
+ After looking at some options we decided to go for this solution
since it guarantees backwards compatibility and is not particularly
costly to implement.
Design overview
- When Tor is configured to use both a Pluggable Transport proxy and SOCKS
- proxy it should delegate the proxying to the pluggable transport proxy.
-
- This can be achieved by setting the environment variables for the SOCKS
- proxy to that specified inside of the torrc.
+ When Tor is configured to use both a pluggable transport proxy and a
+ normal proxy it should delegate the proxying to the pluggable
+ transport proxy.
- When the pluggable transport proxy starts it will first read the environment
- variables and if it detects that it should be using a SOCKS proxy make
- all it's traffic go through it. Once the pluggable transport proxy has successfully
- established a connection to the SOCKS proxy it should notify Tor of it's
- success or failure.
- When both the SOCKS and the PluggableTransport directives are set Tor
- should set the environemnt variable start the pluggabletransport proxy and wait
- for it to report back on the SOCKS proxy status. If the pluggable transport
- reports back a failure or it does not report back at all (maybe because
- it is an outdated version), Tor should notify the user of the failure
- and exit with an error.
+ This can be achieved by specifying the address and port of the normal
+ proxy to the pluggable transport proxy using environment variables:
+ When both a normal proxy and the ClientTransportPlugin directives
+ are set in the torrc, Tor should put the address of the normal proxy
+ in an environment variable and start the pluggable transport
+ proxy. When the pluggable transport proxy starts, it should read the
+ address of the normal proxy and route all its traffic through it.
+ After connecting to the normal proxy, the pluggable transport proxy
+ notifies Tor whether it managed to connect or not.
- The environment variables can also contain the credentials for accessing
- the proxy.
+ The environment variables also contain the authentication
+ credentials for accessing the proxy.
Specifications: Tor Pluggable Transport communication
- When Tor detects a SOCKS proxy directive and a Pluggable Transport
- proxy directive it sets the environment variable:
+ When Tor detects a normal proxy directive and a pluggable transport
+ proxy directive, it sets the environment variable:
"TOR_PT_PROXY" -- This is the address of the proxy to be used by
the pluggable transport proxy. It is in the format:
- <proxy_type>://<user_name?>:<password?>@<ip>:<port>
+ <proxy_type>://[<user_name>][:<password>][@]<ip>:<port>
ex. socks5://tor:test1234@198.51.100.1:8000
socks4a://198.51.100.2:8001
+ Acceptable values for <proxy_type> are: 'socks5', 'socks4a' and 'http'.
+ If no <password> can be specified (e.g. in 'socks4a'), it is left out.
+
+ If the pluggable transport proxy detects that the TOR_PT_PROXY
+ environment variable is set, it attempts connecting to it. On
+ success it writes to stdout: "PROXY true".
+ On failure it writes: "PROXY-ERROR <errormessage>".
- If the pluggable transport proxy detects that the TOR_PT_PROXY environment
- variable is set it attempts connecting to it. On successs it will
- write to stdout (as specified in 180-pluggable-transport.txt)
- PROXY true. On failure it should write PROXY-ERROR <errormessage>.
+ If Tor does not read a PROXY line or it reads a PROXY-ERROR line
+ from its stdout and it is configured to use both a normal proxy and
+ a pluggable transport it should kill the transport proxy.
- If Tor does not read any PROXY line or it reads a PROXY-ERROR line
- and it is configured to use both SOCKS and PluggableTransport it should
- exit with error.