[tbb-bugs] #29080 [Applications/Tor Browser]: Merge OrbotService and TOPL
Tor Bug Tracker & Wiki
blackhole at torproject.org
Mon Jan 14 07:05:21 UTC 2019
#29080: Merge OrbotService and TOPL
-------------------------------------------------+-------------------------
Reporter: sisbell | Owner: tbb-
| team
Type: defect | Status: new
Priority: Medium | Milestone:
Component: Applications/Tor Browser | Version:
Severity: Normal | Resolution:
Keywords: tbb-mobile, TBA-a3, | Actual Points:
TorBrowserTeam201901 |
Parent ID: #27609 | Points:
Reviewer: | Sponsor:
-------------------------------------------------+-------------------------
Comment (by sisbell):
I've done an initial (ugly) merging of TOPL and orbotservice so have
enough to identify the specifics.
Changes to TOPL
* The !OnionProxyManager should be able to set the !EventHandler, rather
than use the default one. Need to add a field to the !OnionProxyManager
allowing us to pass in the custom !EventHandler that we will use.
* Currently only supports configuring one hidden service. Add support for
multiple hidden services through !OnionProxyManager.publishHiddenService
* Add fields to the !TorConfig builder: ServerDNSResolvConfFile,
!ExitNodes, Bridge, NEWNYM, Socks5ProxyUsername, Socks5ProxyPassword,
!ProxyAuthenticator, !ClientTransportPlugin, !ReachableAddresses,
!ExcludeNodes, !EntryNodes, !AutomapHostsOnResolve, DNSPort,
HTTPTunnelPort
* Add support for writing DNS File (resolv.conf)
* Add support for loading bridges from resource file
Changes to OrbotService
* TorEventHandler - Orbot delegates sending of Android broadcasts to the
TorService. We can decouple this by sending the broadcasts directly. This
interface integrates with the same one that TOPL uses and can be
configured through the OnionProxyManager with the fix defined above. [Easy
fix]
* TorService - this is a 2K line uber class.
- Dozen or so broadcast messages that the main app will display to user.
Need to replicate these where is makes sense
- HiddenService Content DB - writes out to torrc. Break into its own
class (possibly auto-generate)
- Client Cookie DB - writes out to torrc. Break into its own class
(possibly auto-generate)
- VPN - we can port this directly
- Clean circuits - a pending intent through a notification on service
startup (NEWNYM)
- Create Notifications for Network connectivity - this exists in TOPL
but does not create notif
- Start/Stop tor - we can use TOPL OnionProxyManager.start and
OnionProxyManager.stop method to replace this feature
- Tor Installer - we can use the one from TOPL
- Handle events sent to service: ACTION_START, ACTION_STATUS,
CMD_SIGNAL_HUP, CMD_NEWNYM, CMD_VPN, CMD_VPN_CLEAR, CMD_SET_EXIT
- Various torrc config params that mirror TOPL
- Loads Bridges from resource file
Most of the work is simply taking everything from the Content DB and prefs
and adding fields to torrc. The DB need to be rewritten. This should all
be done in a separate package/set of classes, not in the TorService class.
The new TorService will:
* delegate to TorConfig package when generating torrc from prefs/DB
* delegate to the OnionProxyManager for the start/stop of tor.
* delegate to the AndroidResourceInstaller (TOPL) for installing tor
* delegate to TOPL Config for loading bridges
* handle incoming events AND outgoing notifications.
* handle VPN configuration
Integration:
TOPL will be an android library. OrbotService will use TOPL. We can create
patches for both projects and then integrate into tor-browser-build. The
main Orbot app shouldn't require any changes as we can support the
existing interfaces and broadcasts.
--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/29080#comment:1>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
More information about the tbb-bugs
mailing list