[tor-commits] [ooni-probe/master] Make optional the execution of check_incoherences from read_config.

art at torproject.org art at torproject.org
Thu Aug 7 15:15:26 UTC 2014


commit 94a7ee19f64bf8abe8ad5178f98d10426c10e0db
Author: kudrom <kudrom at riseup.net>
Date:   Tue Jul 15 17:07:26 2014 +0200

    Make optional the execution of check_incoherences from read_config.
---
 ooni/errors.py   |    4 ++++
 ooni/oonicli.py  |   10 ++++++++--
 ooni/settings.py |   10 ++++++----
 3 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/ooni/errors.py b/ooni/errors.py
index cd71316..3c9d86f 100644
--- a/ooni/errors.py
+++ b/ooni/errors.py
@@ -302,6 +302,10 @@ class ReportLogExists(Exception):
 class InvalidConfigFile(Exception):
     pass
 
+class ConfigFileIncoherent(Exception):
+    pass
+
+
 def get_error(error_key):
     if error_key == 'test-helpers-key-missing':
         return CouldNotFindTestHelper
diff --git a/ooni/oonicli.py b/ooni/oonicli.py
index 7c3e9a2..cd9f4a9 100644
--- a/ooni/oonicli.py
+++ b/ooni/oonicli.py
@@ -4,7 +4,7 @@ import yaml
 
 from twisted.python import usage
 from twisted.python.util import spewer
-from twisted.internet import defer
+from twisted.internet import defer, reactor
 
 from ooni import errors, __version__
 
@@ -111,7 +111,13 @@ def runWithDirector(logging=True, start_tor=True):
     config.global_options = global_options
     config.set_paths()
     config.initialize_ooni_home()
-    config.read_config_file()
+    d = config.read_config_file(check_incoherences=True)
+
+    @d.addErrback
+    def shutdown(failure):
+        failure.trap(errors.ConfigFileIncoherent)
+        log.err("Shutting down until ooniprobe.conf is coherent.")
+        reactor.callWhenRunning(reactor.stop)
 
     if global_options['verbose']:
         config.advanced.debug = True
diff --git a/ooni/settings.py b/ooni/settings.py
index 91d2f76..5bc367e 100644
--- a/ooni/settings.py
+++ b/ooni/settings.py
@@ -12,6 +12,7 @@ import txtorcon
 
 from ooni import otime, geoip
 from ooni.utils import Storage, log
+from ooni import errors
 
 
 class OConfig(object):
@@ -99,7 +100,7 @@ class OConfig(object):
                         w.write(line)
 
     @defer.inlineCallbacks
-    def read_config_file(self):
+    def read_config_file(self, check_incoherences=False):
         if not os.path.exists(self.config_file):
             print "Configuration file does not exist."
             self._create_config_file()
@@ -116,9 +117,10 @@ class OConfig(object):
         self.set_paths()
 
         # The incoherent checks must be performed after OConfig is in a valid state to runWithDirector
-        coherent = yield self.check_incoherences(configuration)
-        if not coherent:
-            sys.exit(6)
+        if check_incoherences:
+            coherent = yield self.check_incoherences(configuration)
+            if not coherent:
+                raise errors.ConfigFileIncoherent
 
     @defer.inlineCallbacks
     def check_incoherences(self, configuration):





More information about the tor-commits mailing list