[tahoe-lafs-trac-stream] [Tahoe-LAFS] #517: make tahoe Tor- and I2P-friendly
Tahoe-LAFS
trac at tahoe-lafs.org
Fri Aug 28 22:52:52 UTC 2015
#517: make tahoe Tor- and I2P-friendly
-------------------------+-------------------------------------------------
Reporter: warner | Owner: ioerror
Type: | Status: new
enhancement | Milestone: undecided
Priority: minor | Version: 1.2.0
Component: code- | Keywords: easy privacy anonymity anti-
network | censorship i2p tor-protocol
Resolution: |
Launchpad Bug: |
-------------------------+-------------------------------------------------
Comment (by warner):
From today's meeting, we're aiming for a static approach, in which all
allocation (of hidden services and regular TCP ports) takes place during
the execution of `tahoe create-node`, and the runtime code (`tahoe start`)
just has to follow the instructions left behind in `tahoe.cfg`.
This would simplify Tahoe's main `allmydata.node.Node` constructor to be
completely synchronous, removing the awkward code that waits for the Tub
to start running before it can register FURLs for whatever services are
being exposed.
It would force server operators to choose a TCP port and a connect-hint
hostname (or IP address) when they create the server (or modify the config
file). New nodes would no longer use IP-address autodetection (but old
ones would continue to work).
The necessary tasks (many of which can be parallelized) are:
* Get http://foolscap.lothar.com/trac/ticket/236 done
* Move the controlport/logport to a separate Tub, with its own private
key, defaulting to only listening on 127.0.0.1 with a dynamically-
allocated port, and add some config knobs to control this
* Replace the remaining `Tub.setLocationAutomatically()` (in the keyserver
and stats-gatherer) with something else
* Replace the asynchronous IP-address-autodetect code used when
`tub.location=AUTO` with a synchronous form (using stdlib's `subprocess`
module). Move this call from `Node._setup_tub` into `Node.create_tub`,
which runs during the constructor. Move the `Tub.setLocation` up there
too. Replace `when_tub_ready()` with synchronous calls, and remove the
whole async `_startService` method.
* change `tahoe create-client` to make a tahoe.cfg that doesn't listen on
anything
* change "tahoe create-node" to require --listen and --location
* change "tahoe create-node" to handle the new Tor arguments, once we
figure out how they should be spelled
* add Tor support to the main tahoe runtime: launch the Tor executable if
necessary, configure and install the Foolscap plugins if necessary
* finally remove the code that writes to Node._portnumfile
We also need to figure out the override-specific-servers mechanism (to use
TCP for some whitelisted servers, even though we're using Tor for
everything else). I think this will involve a Foolscap plugin that can
either use Tor or TCP for TCP hints, depending upon some lookup function
that it calls at runtime.
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/517#comment:29>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list