Browse code

Initial 'Python Tor Client' project idea

Posting the SoP project Tim and I have been brainstorming. This is just the
first draft - I still need to run this by Tim and hopefully come up with more
ideas on subtasks.

Damian Johnson authored on23/02/2018 21:13:44
Showing1 changed files
... ...
@@ -519,6 +519,11 @@ meetings around the world.</li>
519 519
     Tor.
520 520
     </p>
521 521
 
522
+    <p>
523
+    <b>Project Ideas:</b><br />
524
+    <i><a href="#pythonTorClient">Python Tor Client</a></i>
525
+    </p>
526
+
522 527
     <a id="project-txtorcon"></a>
523 528
     <h3><a href="https://txtorcon.readthedocs.io/en/latest/">Txtorcon</a> (<a
524 529
     href="https://github.com/meejah/txtorcon">code</a>, <a
... ...
@@ -730,6 +735,37 @@ meetings around the world.</li>
730 735
     <ol>
731 736
 
732 737
 	#Keep old ids in case of incoming links.
738
+    <a id="pythonTorClient"></a><a id="pythonTorClient"></a>
739
+    <li>
740
+    <b>Python Tor Client</b>
741
+    <br>
742
+    Language: <i>Python</i>
743
+    <br>
744
+    Likely Mentors: <i>Damian (atagar), Tim (teor)</i>
745
+    <br><br>
746
+    <p>
747
+<b><a href="https://stem.torproject.org/">Stem</a></b> is our Python implementation of Tor's varous protocols. Traditionally this included <a href="https://stem.torproject.org/tutorials/the_little_relay_that_could.html">stem.control</a> for Tor's <a href="https://gitweb.torproject.org/torspec.git/tree/control-spec.txt">ControlPort</a> and <a href="https://stem.torproject.org/tutorials/mirror_mirror_on_the_wall.html">stem.descriptor</a> to download from Tor's <a href="https://gitweb.torproject.org/torspec.git/tree/dir-spec.txt">DirPort</a>. But recently we added a third to this family, <b><a href="https://lists.torproject.org/pipermail/tor-dev/2018-February/012905.html">stem.client</a></b>, that speaks Tor's <a href="https://gitweb.torproject.org/torspec.git/tree/tor-spec.txt">ORPort protocol</a>: the relay protocol for usage of the Tor network itself.
748
+    </p>
749
+
750
+    <p>
751
+This opens interesting opportunities we've never had before such as...
752
+    </p>
753
+
754
+    <ul>
755
+      <li>Construct a full three-hop circuit that can make GET requests and DNS lookups. If done right this might allow simple usage of the Tor network without even having Tor installed!</li>
756
+      <li>Expand <a href="https://stem.torproject.org/tutorials/mirror_mirror_on_the_wall.html#where-can-i-get-the-current-descriptors">descriptor downloading</a> to use Tor's ORPort as an optional alternative for the DirPort. Following this we could adjust Tor so <a href="https://trac.torproject.org/projects/tor/ticket/19129">Fallback Directories no longer require a DirPort</a>.</li>
757
+      <li>Add protocol level integration test of Tor's ORPort, for instance exercising edge cases in circuit construction and extension.</li>
758
+    </ul>
759
+
760
+    <p>
761
+And more! Applicants are encouraged to get a decent understanding of <a href="https://gitweb.torproject.org/torspec.git/tree/tor-spec.txt">Tor's ORPort protocol</a> and come up with ideas of their own for neat directions that we can take this. To be clear this is <b>not</b> a particularly easy beginner project as it involves expanding stem.client to support more of Tor's ORPort protocol and crypto.
762
+    </p>
763
+
764
+    <p>
765
+<b>As part of applying for this project please get your hands wet with the codebase by contributing some patches for <a href="https://stem.torproject.org/faq.html#how-do-i-get-started">Stem</a>!</b>
766
+    </p>
767
+    </li>
768
+
733 769
     <a id="improveOnionServices"></a><a id="improveHiddenServices"></a>
734 770
     <li>
735 771
     <b>Help improve Tor onion services</b>