[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [arm/master] Dropping getTorCtl()
commit 7591d4ad2350cd42de1e452c0951e8072241d1c9
Author: Damian Johnson <atagar@xxxxxxxxxxxxxx>
Date: Sun Dec 16 14:12:25 2012 -0800
Dropping getTorCtl()
Dropping the method that allowed for raw TorCtl usage. We were only using this
at a couple places: to make SAVECONF calls and for the interpretor. The
interpretor still needs raw controller access (that's kinda what it's there
for), so swapped it over to stem's msg() method.
This also fixes a bug where raw controller commands would spew their output on
a single line. For instance...
>>> PROTOCOLINFO
PROTOCOLINFO 1AUTH METHODS=NULLVERSION Tor="0.2.1.30"OK
... rather than...
>>> PROTOCOLINFO
PROTOCOLINFO 1
AUTH METHODS=NULL
VERSION Tor="0.2.1.30"
OK
---
src/util/torConfig.py | 2 +-
src/util/torInterpretor.py | 16 ++++++++--------
src/util/torTools.py | 25 ++++++++++++-------------
3 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/src/util/torConfig.py b/src/util/torConfig.py
index fc08393..c9ae6ef 100644
--- a/src/util/torConfig.py
+++ b/src/util/torConfig.py
@@ -463,7 +463,7 @@ def saveConf(destination = None, contents = None):
# attempts SAVECONF if we're updating our torrc with the current state
if isSaveconf:
try:
- torTools.getConn().getTorCtl().save_conf()
+ torTools.getConn().saveConf()
try: getTorrc().load()
except IOError: pass
diff --git a/src/util/torInterpretor.py b/src/util/torInterpretor.py
index d88c137..674e5e2 100644
--- a/src/util/torInterpretor.py
+++ b/src/util/torInterpretor.py
@@ -9,6 +9,8 @@ import sys
import version
+import stem
+
# TODO: util should never import from the cli. This is being done as a hack to
# simplify event listening, but we should later move the TorEventObserver into
# the util.
@@ -929,18 +931,16 @@ class ControlInterpretor:
outputEntry.append((MULTILINE_UNIMPLEMENTED_NOTICE + "\n", ERROR_FORMAT))
else:
try:
- response = conn.getTorCtl().sendAndRecv("%s\r\n" % input)
+ controller = conn.controller
+ if controller is None: raise stem.SocketClosed()
+
+ response = controller.msg(input)
if cmd == "QUIT":
raise InterpretorClosed("Closing the connection")
- for entry in response:
- # Response entries are tuples with the response code, body, and
- # extra info. For instance:
- # ('250', 'version=0.2.2.23-alpha (git-b85eb949b528f4d7)', None)
-
- if len(entry) == 3:
- outputEntry.append((entry[1], OUTPUT_FORMAT))
+ for _, _, content in response.content():
+ outputEntry.append((content + '\n', OUTPUT_FORMAT))
except Exception, exc:
if isinstance(exc, InterpretorClosed):
raise exc
diff --git a/src/util/torTools.py b/src/util/torTools.py
index 5eb04ad..36cb70f 100644
--- a/src/util/torTools.py
+++ b/src/util/torTools.py
@@ -636,19 +636,6 @@ class Controller(TorCtl.PostEventListener):
return self.lastHeartbeat
- def getTorCtl(self):
- """
- Provides the current TorCtl connection. If unset or closed then this
- returns None.
- """
-
- self.connLock.acquire()
- result = None
- if self.isAlive(): result = self.conn
- self.connLock.release()
-
- return result
-
def getInfo(self, param, default = UNDEFINED):
"""
Queries the control port for the given GETINFO option, providing the
@@ -760,6 +747,18 @@ class Controller(TorCtl.PostEventListener):
finally:
self.connLock.release()
+ def saveConf(self):
+ """
+ Calls tor's SAVECONF method.
+ """
+
+ self.connLock.acquire()
+
+ if self.isAlive():
+ self.controller.save_conf()
+
+ self.connLock.release()
+
def sendNewnym(self):
"""
Sends a newnym request to Tor. These are rate limited so if it occures
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits