[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[vidalia-svn] r2032: Add support for configuring whether or not to be a bridge. A (in trunk: . src/config)



Author: edmanm
Date: 2007-10-15 22:59:44 -0400 (Mon, 15 Oct 2007)
New Revision: 2032

Modified:
   trunk/
   trunk/src/config/serversettings.cpp
   trunk/src/config/serversettings.h
Log:
 r2124@lysithea:  edmanm | 2007-10-15 22:58:24 -0400
 Add support for configuring whether or not to be a bridge. Also remove the
 notion that being a server requires both an ORPort and a Nickname; you can be
 a fine server with just an ORPort.



Property changes on: trunk
___________________________________________________________________
 svk:merge ticket from /local/vidalia/trunk [r2124] on dc66be73-d13e-47ba-a267-8dc7cda68c65

Modified: trunk/src/config/serversettings.cpp
===================================================================
--- trunk/src/config/serversettings.cpp	2007-10-15 07:31:24 UTC (rev 2031)
+++ trunk/src/config/serversettings.cpp	2007-10-16 02:59:44 UTC (rev 2032)
@@ -50,6 +50,7 @@
 #define SETTING_BANDWIDTH_BURST "BandwidthBurst"
 #define SETTING_RELAY_BANDWIDTH_RATE   "RelayBandwidthRate"
 #define SETTING_RELAY_BANDWIDTH_BURST  "RelayBandwidthBurst"
+#define SETTING_PUBLISH_DESCRIPTOR     "PublishServerDescriptor"
 
 
 /** Constructor.
@@ -59,14 +60,15 @@
 ServerSettings::ServerSettings(TorControl *torControl)
 : AbstractTorSettings("Server", torControl)
 {
-  setDefault(SETTING_ENABLED,    false);
-  setDefault(SETTING_DIRMIRROR,  true);
-  setDefault(SETTING_ORPORT,     9001);
-  setDefault(SETTING_DIRPORT,    9030);
-  setDefault(SETTING_CONTACT,    "<your@xxxxxxxxx>");
+  setDefault(SETTING_ENABLED,       false);
+  setDefault(SETTING_DIRMIRROR,     true);
+  setDefault(SETTING_ORPORT,        9001);
+  setDefault(SETTING_DIRPORT,       9030);
+  setDefault(SETTING_CONTACT,       "<your@xxxxxxxxx>");
   setDefault(SETTING_BANDWIDTH_RATE,  3145728);
   setDefault(SETTING_BANDWIDTH_BURST, 6291456);
   setDefault(SETTING_NICKNAME,        "Unnamed");
+  setDefault(SETTING_PUBLISH_DESCRIPTOR, true);
   setDefault(SETTING_EXITPOLICY,
     ExitPolicy(ExitPolicy::Default).toString());
 }
@@ -113,6 +115,10 @@
     contact = "";
   }
   conf.insert(SETTING_CONTACT, scrub_email_addr(contact));
+  
+  /* If we're a bridge, don't publish our server descriptor */
+  conf.insert(SETTING_PUBLISH_DESCRIPTOR, (isBridgeEnabled() ? "0" : "1"));
+
   return conf;
 }
 
@@ -156,23 +162,34 @@
 }
 
 /** Returns true if Tor is currently configured to run as a Tor server. If Tor
- * is running, we will check whether it has an ORPort and Nickname defined.
- * Otherwise, we will use our saved settings. */
+ * is running, we will check whether it has an ORPort defined. Otherwise, we
+ * will use our saved settings. */
 bool
 ServerSettings::isServerEnabled()
 {
-  QHash<QString,QString> confValues;
+  QString orPort;
   if (_torControl->isConnected() && !changedSinceLastApply()) {
-    confValues.insert(SETTING_ORPORT, "");
-    confValues.insert(SETTING_NICKNAME, "");
-    if (_torControl->getConf(confValues)) {
-      return (confValues.value(SETTING_ORPORT).toUInt() != 0 &&
-              !confValues.value(SETTING_NICKNAME).isEmpty());
-    }
+    if (_torControl->getConf(SETTING_ORPORT, orPort))
+      return (orPort.toUInt() > 0);
   }
   return localValue(SETTING_ENABLED).toBool();
 }
 
+/** Sets to <b>enabled</b> whether Tor should be a bridge node when acting as
+ * a server. */
+void
+ServerSettings::setBridgeEnabled(bool enabled)
+{
+  setValue(SETTING_PUBLISH_DESCRIPTOR, !enabled);
+}
+
+/** Returns true if Tor is configured to act as a bridge node. */
+bool
+ServerSettings::isBridgeEnabled()
+{
+  return (isServerEnabled() && !value(SETTING_PUBLISH_DESCRIPTOR).toBool());
+}
+
 /** Sets the server's ORPort. */
 void
 ServerSettings::setORPort(quint16 orPort)

Modified: trunk/src/config/serversettings.h
===================================================================
--- trunk/src/config/serversettings.h	2007-10-15 07:31:24 UTC (rev 2031)
+++ trunk/src/config/serversettings.h	2007-10-16 02:59:44 UTC (rev 2032)
@@ -46,6 +46,12 @@
   void setServerEnabled(bool enable);
   /** Returns true if Tor is running as a server. */
   bool isServerEnabled();
+  
+  /** Sets to <b>enabled</b> whether Tor should be a bridge node when acting
+   * as a server. */
+  void setBridgeEnabled(bool enable);
+  /** Returns true if Tor is configured to act as a bridge node. */
+  bool isBridgeEnabled();
 
   /** Sets the server's ORPort value. */
   void setORPort(quint16 orPort);