From 3d8204c242abe5d07db584a7d29477ab3161dcba Mon Sep 17 00:00:00 2001 From: Arun Pandian G Date: Mon, 6 Jan 2014 04:10:50 +0530 Subject: [PATCH] Support for Additional Tor Configurations --- data/ooniprobe.conf.sample | 5 +++++ ooni/director.py | 24 ++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/data/ooniprobe.conf.sample b/data/ooniprobe.conf.sample index 3a1b6f40..d1fd8477 100644 --- a/data/ooniprobe.conf.sample +++ b/data/ooniprobe.conf.sample @@ -57,3 +57,8 @@ tor: # This should be set to something to avoid having Tor download each time # the descriptors and consensus data. #data_dir: ~/.tor/ + torrc: + #HTTPProxy: host:port + #HTTPProxyAuthenticator: user:password + #HTTPSProxy: host:port + #HTTPSProxyAuthenticator: user:password diff --git a/ooni/director.py b/ooni/director.py index ed4517ca..a988ca00 100644 --- a/ooni/director.py +++ b/ooni/director.py @@ -264,7 +264,6 @@ def startTor(self): :param: tor_binary set in ooniprobe.conf """ log.msg("Starting Tor...") - @defer.inlineCallbacks def state_complete(state): config.tor_state = state @@ -301,17 +300,9 @@ def updates(prog, tag, summary): tor_config = TorConfig() if config.tor.control_port: tor_config.ControlPort = config.tor.control_port - else: - control_port = int(randomFreePort()) - tor_config.ControlPort = control_port - config.tor.control_port = control_port if config.tor.socks_port: tor_config.SocksPort = config.tor.socks_port - else: - socks_port = int(randomFreePort()) - tor_config.SocksPort = socks_port - config.tor.socks_port = socks_port if config.tor.data_dir: data_dir = os.path.expanduser(config.tor.data_dir) @@ -337,8 +328,22 @@ def updates(prog, tag, summary): bridges.append(bridge.strip()) tor_config.Bridge = bridges + for i in config.tor.torrc.keys(): + setattr(tor_config, i, config.tor.torrc[i]) + tor_config.save() + if not hasattr(tor_config,'ControlPort'): + control_port = int(randomFreePort()) + tor_config.ControlPort = control_port + config.tor.control_port = control_port + + if not hasattr(tor_config,'SocksPort'): + socks_port = int(randomFreePort()) + tor_config.SocksPort = socks_port + config.tor.socks_port = socks_port + + tor_config.save() log.debug("Setting control port as %s" % tor_config.ControlPort) log.debug("Setting SOCKS port as %s" % tor_config.SocksPort) @@ -349,7 +354,6 @@ def updates(prog, tag, summary): else: d = launch_tor(tor_config, reactor, progress_updates=updates) - d.addCallback(setup_complete) d.addErrback(setup_failed) return d