[tor-commits] [arm/master] Wizard option to use the last configuration

atagar at torproject.org atagar at torproject.org
Sun Jul 10 01:05:31 UTC 2011


commit 8e74e50a7adaec6d1f786248f2600658328292da
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Jul 9 18:03:14 2011 -0700

    Wizard option to use the last configuration
---
 src/cli/wizard.py |   23 ++++++++++++++++++-----
 src/settings.cfg  |    2 ++
 2 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/cli/wizard.py b/src/cli/wizard.py
index 8a5a138..e2419e8 100644
--- a/src/cli/wizard.py
+++ b/src/cli/wizard.py
@@ -20,7 +20,7 @@ from util import connections, enum, log, torConfig, torTools, uiTools
 TORRC_TEMPLATE = "resources/torrcTemplate.txt"
 
 # basic configuration types we can run as
-RelayType = enum.Enum("RELAY", "EXIT", "BRIDGE", "CLIENT")
+RelayType = enum.Enum("RESUME", "RELAY", "EXIT", "BRIDGE", "CLIENT")
 
 # all options that can be configured
 Options = enum.Enum("DIVIDER", "CONTROL", "NICKNAME", "CONTACT", "NOTIFY", "BANDWIDTH", "LIMIT", "CLIENT", "LOWPORTS", "PORTFORWARD", "STARTUP", "NOTICE", "POLICY", "WEBSITES", "EMAIL", "IM", "MISC", "PLAINTEXT", "DISTRIBUTE", "BRIDGED", "BRIDGE1", "BRIDGE2", "BRIDGE3", "REUSE")
@@ -252,15 +252,20 @@ def showWizard():
   _toggleEnabledAction(bridgeEntries, useBridgeOpt, useBridgeOpt.getValue())
   
   # remembers the last selection made on the type prompt page
-  relaySelection = RelayType.RELAY
   controller = cli.controller.getController()
   manager = controller.getTorManager()
+  relaySelection = RelayType.RESUME if manager.isTorrcAvailable() else RelayType.RELAY
   
   while True:
     if relayType == None:
       selection = promptRelayType(relaySelection)
       
       if selection == CANCEL: break
+      elif selection == RelayType.RESUME:
+        if not manager.isManaged(torTools.getConn()):
+          manager.startManagedInstance()
+        
+        break
       else: relayType, relaySelection = selection, selection
     else:
       selection = promptConfigOptions(relayType, config)
@@ -310,12 +315,20 @@ def promptRelayType(initialSelection):
   dialog was canceled.
   """
   
-  popup, _, _ = cli.popups.init(25, 58)
-  if not popup: return
-  control = cli.controller.getController()
   options = [ConfigOption(opt, "role", opt) for opt in RelayType.values()]
   options.append(ConfigOption(CANCEL, "general", CANCEL))
   selection = RelayType.indexOf(initialSelection)
+  height = 28
+  
+  # drops the resume option if it isn't applicable
+  control = cli.controller.getController()
+  if not control.getTorManager().isTorrcAvailable():
+    options.pop(0)
+    height -= 3
+    selection -= 1
+  
+  popup, _, _ = cli.popups.init(height, 58)
+  if not popup: return
   
   try:
     popup.win.box()
diff --git a/src/settings.cfg b/src/settings.cfg
index f15aa49..4551b43 100644
--- a/src/settings.cfg
+++ b/src/settings.cfg
@@ -397,6 +397,7 @@ wizard.blankValue Bridge3 => <ip address>:<port>
 wizard.label.general Cancel => Cancel
 wizard.label.general Back => Previous
 wizard.label.general Next => Next
+wizard.label.role Resume => Use Last Configuration
 wizard.label.role Relay => Internal Relay
 wizard.label.role Exit => Exit Relay
 wizard.label.role Bridge => Bridge
@@ -425,6 +426,7 @@ wizard.label.opt Bridge3 => Third Bridge
 wizard.label.opt Reuse => Circuit Duration
 
 wizard.description.general Cancel => Close without starting Tor.
+wizard.description.role Resume => Start Tor with the last configuration you made.
 wizard.description.role Relay => Provides interconnections with other Tor relays. This is a safe and easy of making the network better.
 wizard.description.role Exit => Connects between Tor network and the outside Internet. This is a vital role, but can lead to abuse complaints.
 wizard.description.role Bridge => Non-public relay specifically for helping censored users.



More information about the tor-commits mailing list