[tor-commits] [vidalia/alpha] Add defaults torrc handling

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


commit 498a5416a2bc819774617d5021466dd8116b6bb2
Author: Tomás Touceda <chiiph at torproject.org>
Date:   Fri Feb 3 22:04:31 2012 -0300

    Add defaults torrc handling
---
 src/vidalia/MainWindow.cpp         |    8 +++++++-
 src/vidalia/config/TorSettings.cpp |   22 ++++++++++++++++++++++
 src/vidalia/config/TorSettings.h   |    5 +++++
 3 files changed, 34 insertions(+), 1 deletions(-)

diff --git a/src/vidalia/MainWindow.cpp b/src/vidalia/MainWindow.cpp
index 65e1e3c..c3b1954 100644
--- a/src/vidalia/MainWindow.cpp
+++ b/src/vidalia/MainWindow.cpp
@@ -576,7 +576,6 @@ MainWindow::start()
     }
   }
 
-
   /* Check if Tor is already running separately */
   if(settings.getControlMethod() == ControlMethod::Port) {
     if(!settings.autoControlPort() && net_test_connect(settings.getControlAddress(),
@@ -592,6 +591,7 @@ MainWindow::start()
   }
 
   QString torrc = settings.getTorrc();
+  QString torrc_defaults = settings.getDefaultsTorrc();
 
   if(settings.bootstrap()) {
     QString boottorrc = settings.bootstrapFrom();
@@ -603,6 +603,12 @@ MainWindow::start()
       }
     }
   }
+  
+  if(_torControl->getTorVersion() >= 0x020309) {
+    if (!torrc_defaults.isEmpty()) {
+      args << "--defaults-torrc" << torrc_defaults;
+    }
+  }
 
   /* Make sure the torrc we want to use really exists. */
   if (!torrc.isEmpty()) {
diff --git a/src/vidalia/config/TorSettings.cpp b/src/vidalia/config/TorSettings.cpp
index 57e2440..9fa5369 100644
--- a/src/vidalia/config/TorSettings.cpp
+++ b/src/vidalia/config/TorSettings.cpp
@@ -30,6 +30,7 @@
 #define SETTING_TOR_EXECUTABLE      "TorExecutable"
 #define SETTING_TORRC               "Torrc"
 #define SETTING_CONTROL_ADDR        "ControlAddr"
+#define SETTING_DEFAULTS_TORRC      "DefaultsTorrc"
 #define SETTING_CONTROL_PORT        "ControlPort"
 #define SETTING_SOCKET_PATH         "ControlSocket"
 #define SETTING_CONTROL_METHOD      "ControlMethod"
@@ -81,6 +82,7 @@ TorSettings::TorSettings(TorControl *torControl)
 #endif
 
   setDefault(SETTING_TORRC,         Vidalia::dataDirectory() + "/torrc");
+  setDefault(SETTING_DEFAULTS_TORRC,Vidalia::dataDirectory() + "/defaults_torrc");
   setDefault(SETTING_CONTROL_ADDR,  "127.0.0.1");
   setDefault(SETTING_CONTROL_PORT,  9051);
   setDefault(SETTING_AUTH_METHOD,   toString(DEFAULT_AUTH_METHOD));
@@ -196,6 +198,26 @@ TorSettings::setTorrc(const QString &torrc)
   setValue(SETTING_TORRC, torrc);
 }
 
+/** Returns the defaults torrc that will be used when starting Tor. */
+QString
+TorSettings::getDefaultsTorrc() const
+{
+  QString torrc;
+  // TorControl *tc = torControl();
+  // if (tc && tc->isConnected() && tc->getInfo("config-file", torrc))
+  //   return QDir::convertSeparators(torrc);
+  return QDir::convertSeparators(localValue(SETTING_DEFAULTS_TORRC).toString());
+}
+
+/** Sets the defaults torrc that will be used when starting Tor.
+ * \param torrc The defaults torrc to use. 
+ */
+void
+TorSettings::setDefaultsTorrc(const QString &torrc)
+{
+  setValue(SETTING_DEFAULTS_TORRC, torrc);
+}
+
 /** Get the address or hostname used to connect to Tor */
 QHostAddress
 TorSettings::getControlAddress() const
diff --git a/src/vidalia/config/TorSettings.h b/src/vidalia/config/TorSettings.h
index 5038c3d..9e6622e 100644
--- a/src/vidalia/config/TorSettings.h
+++ b/src/vidalia/config/TorSettings.h
@@ -55,6 +55,11 @@ public:
   QString getTorrc() const;
   /** Sets the torrc to use when starting Tor. */
   void setTorrc(const QString &torrc);
+
+  /** Gets the defaults torrc to use when starting Tor. */
+  QString getDefaultsTorrc() const;
+  /** Sets the defaults torrc to use when starting Tor. */
+  void setDefaultsTorrc(const QString &torrc);
   
   /** Get Tor's control interface address. */
   QHostAddress getControlAddress() const;





More information about the tor-commits mailing list