[tor-commits] [vidalia/alpha] Add the configured router to the router list immediately

chiiph at torproject.org chiiph at torproject.org
Sat Mar 17 17:01:07 UTC 2012


commit 62d910fa32174c1edc53598d88979193fe30e244
Author: Tomás Touceda <chiiph at torproject.org>
Date:   Fri Mar 16 14:35:59 2012 -0300

    Add the configured router to the router list immediately
---
 src/torcontrol/RouterDescriptor.cpp |   22 ++++++++++++++++++++++
 src/torcontrol/RouterDescriptor.h   |    5 +++++
 src/vidalia/network/NetViewer.cpp   |    5 +++++
 3 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/src/torcontrol/RouterDescriptor.cpp b/src/torcontrol/RouterDescriptor.cpp
index 26051c1..0fead9c 100644
--- a/src/torcontrol/RouterDescriptor.cpp
+++ b/src/torcontrol/RouterDescriptor.cpp
@@ -14,6 +14,7 @@
 */
 
 #include "RouterDescriptor.h"
+#include "TorControl.h"
 
 #include <QtGlobal>
 
@@ -110,3 +111,24 @@ RouterDescriptor::appendRouterStatusInfo(const RouterStatus &rs)
   _burstBandwidth = rs.bandwidth();
   _observedBandwidth = rs.bandwidth();
 }
+
+RouterDescriptor *
+RouterDescriptor::fromTorControl(TorControl *tc)
+{
+  RouterDescriptor *rd = new RouterDescriptor(QStringList(), true);
+
+  if(tc->isConnected()) {
+    rd->_id = tc->getInfo("fingerprint").toString();
+    rd->_name = tc->getConf("Nickname").toString();
+    rd->_ip = QHostAddress(tc->getInfo("address").toString());
+    rd->_orPort = (quint16)tc->getConf("ORPort").toUInt();
+    rd->_dirPort = (quint16)tc->getConf("DirPort").toUInt();
+    rd->_avgBandwidth = (quint64)tc->getConf("BandwidthRate").toLongLong();
+    rd->_burstBandwidth = (quint64)tc->getConf("BandwidthBurst").toLongLong();
+    rd->_observedBandwidth = rd->_avgBandwidth;
+
+    rd->_status = Offline;
+  }
+
+  return rd;
+}
diff --git a/src/torcontrol/RouterDescriptor.h b/src/torcontrol/RouterDescriptor.h
index fdedae4..a43821b 100644
--- a/src/torcontrol/RouterDescriptor.h
+++ b/src/torcontrol/RouterDescriptor.h
@@ -24,6 +24,8 @@
 
 #include "RouterStatus.h"
 
+class TorControl;
+
 class RouterDescriptor
 {
   Q_DECLARE_TR_FUNCTIONS(RouterDescriptor)
@@ -99,6 +101,9 @@ public:
    *  descriptor */
   void appendRouterStatusInfo(const RouterStatus &rs);
 
+  /** Creates a RouterDescriptor from the control port information */
+  static RouterDescriptor *fromTorControl(TorControl *tc);
+
 private:
   /** Parses this router's descriptor for relevant information. */
   void parseDescriptor(QStringList descriptor);
diff --git a/src/vidalia/network/NetViewer.cpp b/src/vidalia/network/NetViewer.cpp
index 052bc90..4407588 100644
--- a/src/vidalia/network/NetViewer.cpp
+++ b/src/vidalia/network/NetViewer.cpp
@@ -18,6 +18,7 @@
 #include "RouterListItem.h"
 #include "Vidalia.h"
 #include "VMessageBox.h"
+#include "ServerSettings.h"
 
 #include <QMessageBox>
 #include <QToolBar>
@@ -345,6 +346,10 @@ NetViewer::preLoadNetworkStatus()
 {
   NetworkStatus networkStatus = _torControl->getNetworkStatus();
 
+  ServerSettings settings(_torControl);
+  if(settings.isServerEnabled())
+    _routers << *RouterDescriptor::fromTorControl(_torControl);
+
   foreach(RouterStatus rs, networkStatus) {
     if (!rs.isRunning())
       continue;





More information about the tor-commits mailing list