[tor-commits] [vidalia/alpha] Adapt MainWindow behavior

chiiph at torproject.org chiiph at torproject.org
Mon Mar 5 13:01:51 UTC 2012


commit b32177a35c890073225ed863fb115e10166e1cf2
Author: Tomás Touceda <chiiph at torproject.org>
Date:   Fri Feb 3 22:38:19 2012 -0300

    Adapt MainWindow behavior
    
    We don't want to launch tor with so many arguments, we handle those through
    the torrc file.
    Also adapt the "remember previous random ports used" fix.
---
 src/vidalia/MainWindow.cpp |   49 +++++++++++++++++--------------------------
 1 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/src/vidalia/MainWindow.cpp b/src/vidalia/MainWindow.cpp
index c3b1954..f7c67e1 100644
--- a/src/vidalia/MainWindow.cpp
+++ b/src/vidalia/MainWindow.cpp
@@ -620,8 +620,6 @@ MainWindow::start()
   /* Specify Tor's data directory, if different from the default */
   QString dataDirectory = settings.getDataDirectory();
   QString expDataDirectory = expand_filename(dataDirectory);
-  if (!dataDirectory.isEmpty())
-    args << "DataDirectory" << expDataDirectory;
   
   if(settings.getControlMethod() == ControlMethod::Port) {
     if(settings.autoControlPort()) {
@@ -629,30 +627,15 @@ MainWindow::start()
       if(!QFile::remove(portconf))
         vWarn(QString("Unable to remove %1, may be it didn't existed.").arg(portconf));
 
-      QString control_str = "auto";
-      QString socks_str = "auto";
-
       if(!_previousControlPort.isEmpty()) {
-        control_str = _previousControlPort;
+        Vidalia::torrc()->setValue("ControlPort", _previousControlPort);
         _startedWithPrevious = true;
       }
       if(!_previousSocksPort.isEmpty()) {
-        socks_str = _previousSocksPort;
+        Vidalia::torrc()->setValue("ControlPort", _previousSocksPort);
         _startedWithPrevious = true;
       }
-
-      args << "ControlPort" << control_str;
-      args << "SocksPort" << socks_str;
-      args << "ControlPortWriteToFile" << QString("%1/port.conf").arg(expDataDirectory);
-    } else {
-      /* Add the intended control port value */
-      quint16 controlPort = settings.getControlPort();
-      if (controlPort)
-        args << "ControlPort" << QString::number(controlPort);
     }
-  } else {
-    QString path = settings.getSocketPath();
-    args << "ControlSocket" << path;
   }
 
   args << "__OwningControllerProcess" << QString::number(QCoreApplication::applicationPid());
@@ -664,20 +647,15 @@ MainWindow::start()
         if (settings.useRandomPassword()) {
           _controlPassword = TorSettings::randomPassword();
           _useSavedPassword = false;
-        } else {
-          _controlPassword = settings.getControlPassword();
+          Vidalia::torrc()->setValue("HashedControlPassword",
+                                     TorSettings::hashPassword(_controlPassword));
+          Vidalia::torrc()->apply(Vidalia::torControl(), new QString());
+        } else
           _useSavedPassword = true;
-        }
       }
-      args << "HashedControlPassword"
-           << TorSettings::hashPassword(_controlPassword);
-
-      break;
-    case TorSettings::CookieAuth:
-      args << "CookieAuthentication"  << "1";
       break;
     default:
-      args << "CookieAuthentication"  << "0";
+      break;
   }
 
   /* This doesn't get set to false until Tor is actually up and running, so we
@@ -753,10 +731,16 @@ MainWindow::started()
     /* Try to connect to Tor's control port */
     if(settings.getControlMethod() == ControlMethod::Port)
       _torControl->connect(settings.getControlAddress(),
-                          settings.getControlPort());
+                           settings.getControlPort());
     else
       _torControl->connect(settings.getSocketPath());
   }
+  // If we used the previous ports, set the *Port to auto again
+  if(_startedWithPrevious) {
+    Vidalia::torrc()->setValue("ControlPort", "auto");
+    Vidalia::torrc()->setValue("SocksPort", "auto");
+    Vidalia::torrc()->apply(Vidalia::torControl());
+  }
   setStartupProgress(STARTUP_PROGRESS_CONNECTING, tr("Connecting to Tor"));
 }
 
@@ -867,6 +851,9 @@ MainWindow::startFailed(QString errmsg)
     _startedWithPrevious = false;
     _previousControlPort = "";
     _previousSocksPort = "";
+    Vidalia::torrc()->setValue("ControlPort", "auto");
+    Vidalia::torrc()->setValue("SocksPort", "auto");
+    Vidalia::torrc()->apply(Vidalia::torControl());
     vWarn("Retrying with new ports");
     start();
     return;
@@ -1666,6 +1653,8 @@ MainWindow::showConfigDialog(ConfigDialog::Page page)
   ConfigDialog *configDialog = new ConfigDialog();
   connect(configDialog, SIGNAL(helpRequested(QString)),
           this, SLOT(showHelpDialog(QString)));
+  connect(configDialog, SIGNAL(restartTor()),
+          this, SLOT(restart()));
   configDialog->showWindow(page);
 }
 





More information about the tor-commits mailing list