[tor-commits] [arm/master] Using new argument parsing for interfaces

atagar at torproject.org atagar at torproject.org
Sun Sep 15 22:29:20 UTC 2013


commit 75c6cb920f6eb40dca4f5f11886de5e4f544e588
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Sep 8 15:36:35 2013 -0700

    Using new argument parsing for interfaces
    
    Replacing the startup.interface.* config attributes with our _get_args()
    results.
---
 arm/starter.py |   49 ++++++++++++-------------------------------------
 armrc.sample   |    3 ---
 2 files changed, 12 insertions(+), 40 deletions(-)

diff --git a/arm/starter.py b/arm/starter.py
index 42f325a..ec074c1 100644
--- a/arm/starter.py
+++ b/arm/starter.py
@@ -40,9 +40,6 @@ DEFAULT_CONFIG = os.path.expanduser("~/.arm/armrc")
 
 CONFIG = stem.util.conf.config_dict("arm", {
   "startup.controlPassword": None,
-  "startup.interface.ipAddress": "127.0.0.1",
-  "startup.interface.port": 9051,
-  "startup.interface.socket": "/var/run/tor/control",
   "startup.blindModeEnabled": False,
   "startup.events": "N3",
   "startup.dataDirectory": "~/.arm",
@@ -86,7 +83,9 @@ os.putenv("LANG", "C")
 ARGS = {
   'control_address': '127.0.0.1',
   'control_port': 9051,
+  'user_provided_port': False,
   'control_socket': '/var/run/tor/control',
+  'user_provided_socket': False,
   'config': None,
   'debug': False,
   'blind': False,
@@ -131,8 +130,10 @@ def _get_args(argv):
         raise ValueError("'%s' isn't a valid port number" % port)
 
       args['control_port'] = int(port)
+      args['user_provided_port'] = True
     elif opt in ("-s", "--socket"):
       args['control_socket'] = arg
+      args['user_provided_socket'] = True
     elif opt in ("-c", "--config"):
       args['config'] = arg
     elif opt in ("-d", "--debug"):
@@ -335,26 +336,7 @@ def main():
     sys.exit()
   
   for opt, arg in opts:
-    if opt in ("-i", "--interface"):
-      # defines control interface address/port
-      controlAddr, controlPort = None, None
-      divIndex = arg.find(":")
-      
-      try:
-        if divIndex == -1:
-          controlPort = int(arg)
-        else:
-          controlAddr = arg[0:divIndex]
-          controlPort = int(arg[divIndex + 1:])
-      except ValueError:
-        print "'%s' isn't a valid port number" % arg
-        sys.exit()
-      
-      param["startup.interface.ipAddress"] = controlAddr
-      param["startup.interface.port"] = controlPort
-    elif opt in ("-s", "--socket"):
-      param["startup.interface.socket"] = arg
-    elif opt in ("-c", "--config"): configPath = arg  # sets path of user's config
+    if opt in ("-c", "--config"): configPath = arg  # sets path of user's config
     elif opt in ("-d", "--debug"): isDebugMode = True # dumps all logs
     elif opt in ("-b", "--blind"):
       param["startup.blindModeEnabled"] = True        # prevents connection lookups
@@ -401,8 +383,8 @@ def main():
     else: config.set(key, str(param[key]))
   
   # validates that input has a valid ip address and port
-  controlAddr = param["startup.interface.ipAddress"]
-  controlPort = param["startup.interface.port"]
+  controlAddr = args.control_address
+  controlPort = args.control_port
   
   if not arm.util.connections.isValidIpAddress(controlAddr):
     print "'%s' isn't a valid IP address" % controlAddr
@@ -425,15 +407,8 @@ def main():
   
   controller = None
 
-  confKeys = stem.util.conf.get_config("arm").keys()
-  isPortArgPresent = "startup.interface.ipAddress" in confKeys or "startup.interface.port" in confKeys
-  isSocketArgPresent = "startup.interface.socket" in confKeys
-  
-  allowPortConnection = not (isSocketArgPresent and not isPortArgPresent)
-  allowSocketConnection = not (isPortArgPresent and not isSocketArgPresent)
-  
-  socketPath = param["startup.interface.socket"]
-  if os.path.exists(socketPath) and allowSocketConnection:
+  socketPath = args.control_socket
+  if os.path.exists(socketPath) and not args.user_provided_port:
     try:
       # TODO: um... what about passwords?
       # https://trac.torproject.org/6881
@@ -441,12 +416,12 @@ def main():
       controller = Controller.from_socket_file(socketPath)
       controller.authenticate()
     except IOError, exc:
-      if not allowPortConnection:
+      if args.user_provided_socket:
         print "Unable to use socket '%s': %s" % (socketPath, exc)
-  elif not allowPortConnection:
+  elif args.user_provided_socket:
     print "Socket '%s' doesn't exist" % socketPath
   
-  if not controller and allowPortConnection:
+  if not controller and not args.user_provided_socket:
     # sets up stem connection, prompting for the passphrase if necessary and
     # sending problems to stdout if they arise
     authPassword = config.get("startup.controlPassword", CONFIG["startup.controlPassword"])
diff --git a/armrc.sample b/armrc.sample
index 8c57d33..253da0d 100644
--- a/armrc.sample
+++ b/armrc.sample
@@ -1,8 +1,5 @@
 # Startup options
 startup.controlPassword
-startup.interface.ipAddress 127.0.0.1
-startup.interface.port 9051
-startup.interface.socket /var/run/tor/control
 startup.blindModeEnabled false
 startup.events N3
 startup.dataDirectory ~/.arm





More information about the tor-commits mailing list