[guardian-dev] how to do clean tor integration in Orfox
Hans-Christoph Steiner
hans at guardianproject.info
Thu Sep 17 09:22:53 EDT 2015
Orfox was working pretty well in general as a browser. Amogh added NetCipher
to get the automatic Tor starting. That started Orbot fine, but Orfox errored
out on any websites that it tried to load while waiting for Orbot to start
Tor. So I implemented an approach that makes the orbot starting stuff
transparent, and tries to make Orfox transparently hold loading any pages
until Tor is ready. This used the internal Fennec event "Tab:Load". The
problem with that approach is that the Fennec UI blocks and waits for the
Gecko engine to respond to any "Tab:Load" messages that have been sent.
I also tried queuing incoming Intents that cause a web page to be loaded, but
that only works for new URLs coming in. If Orfox is not running, then it is
started and wants to load a few tabs from the previous session, those will all
show the failure to connect page since they are not being started by Intents,
but rather the internal Tab:Load messages.
I also thought about just going back to the old Orbot start Intent that
launched Orbot itself, but upon thinking about that, I think it would really
handle error conditions badly, like when Orbot fails to start properly,
because going to Orfox would always just redirect to Orbot.
Now, I'm thinking the best approach includes two key pieces:
* remove the Tab:Load queuing that is there now, and switch back to the Intent
queuing method I had going before.
* update the "proxy connection failed" page so that it shows the Tor status
(OFF/STARTING/ON/STOPPING) That page will also include the "Try Again" button
that is there. Also, when STATUS_ON is received from Orbot, that page can
automatically try again. We should probably also add a button that brings up
the Orbot main screen so that users can easily troubleshoot the Tor connection
in Orbot.
.hc
--
PGP fingerprint: 5E61 C878 0F86 295C E17D 8677 9F0F E587 374B BE81
https://pgp.mit.edu/pks/lookup?op=vindex&search=0x9F0FE587374BBE81
More information about the guardian-dev
mailing list