Tor Launcher should set ClientTransportPlugin according to the bridge list
If one wants to create a Tor Launcher distribution that supports some pluggable transports, one has to configure them statically with a ClientTransportPlugin
line in torrc
before running Tor Launcher. However, since ClientTransportPlugin
and the *Proxy
options are mutually exclusive, any such distribution prevents usage of proxies even if the user doesn't want to use bridges.
We should fix this by making Tor Launcher itself set ClientTransportPlugin
, when necessary, by extracting any plugin parts from the bridge list inputted by the user.
See the set_ClientTransportPlugin
branch on git://git.tails.boum.org/tor-launcher
for what we do in Tails to achieve that. Note that it is not a complete fix but more of an emergency fix that works for Tails. To make it into a proper, robust fix we'd need at least the following additions:
-
Support for IPv6 bridges. Currently a naive regex is used to detect the IPv4 address part of the bridge line (so we can determine the transport plugin part, if it exists) which is fine in Tails, since we only do IPv4. If possible a real IPv{4,6} validator should be used instead of some cheap regexes but I have thus far failed to figure out if xulrunner provides anything like that.
-
The path to the pluggable transport proxy binary should be obtained using
_getTorFile()
, so a default path can be set like for the other TBB files used by Tor Launcher. Therefore_getTorFile()
should be moved to thetl-util
module. In my branch a working path must be set inextensions.torlauncher.transportproxy_path
which clearly is insufficient. -
Tor Launcher should disable the GUI controls when a mutually exclusive option is set, e.g., if a proxy is configured, one should not be able to select "Yes" in the bridge wizard page (and vice versa). It'd be helpful if an explanation was given too. My branch does not do this.
-
Tor Launcher should show a warning if an unsupported transport plugin is inputted by the user. My branch does not do this.