[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