[tor-commits] [arm/master] Interpretor help for SETEVENTS

atagar at torproject.org atagar at torproject.org
Mon Sep 19 04:46:18 UTC 2011


commit 6bd40f61ae5e8155be787514da80668505f56e78
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Sep 18 21:15:09 2011 -0700

    Interpretor help for SETEVENTS
    
    Basic usage information and lists the event types recognized by tor. Note that
    this option still isn't implemented (issuing a SETEVENTS will likely screw up
    caching and there's currently no option for seeing the events).
---
 src/util/torInterpretor.py |   36 +++++++++++++++++++++++++++++++-----
 1 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/src/util/torInterpretor.py b/src/util/torInterpretor.py
index c2579ae..7e96d3c 100644
--- a/src/util/torInterpretor.py
+++ b/src/util/torInterpretor.py
@@ -59,7 +59,7 @@ Tor commands include:
   GETINFO - queries information from tor
   GETCONF, SETCONF, RESETCONF - show or edit a configuration option
   SIGNAL - issues control signal to the process (for resetting, stopping, etc)
-  SETEVENT - configures the events tor will notify us of
+  SETEVENTS - configures the events tor will notify us of
 
   USEFEATURE - enables custom behavior for the controller
   SAVECONF - writes tor's current configuration to our torrc
@@ -138,6 +138,16 @@ SIGNAL_DESCRIPTIONS = (
   ("NEWNYM", "clears the DNS cache and uses new circuits for future connections")
 )
 
+HELP_SETEVENTS = """Sets the events that we will receive. This turns off any events that aren't
+listed so sending 'SETEVENTS' without any values will turn off all event reporting.
+
+For Tor versions between 0.1.1.9 and 0.2.2.1 adding 'EXTENDED' causes some
+events to give us additional information. After version 0.2.2.1 this is
+always on.
+
+Events include...
+"""
+
 HELP_OPTIONS = {
   "HELP": ("/help [OPTION]", HELP_HELP),
   "WRITE": ("/write [PATH]", HELP_WRITE),
@@ -149,6 +159,7 @@ HELP_OPTIONS = {
   "SETCONF": ("SETCONF PARAM[=VALUE]", HELP_SETCONF),
   "RESETCONF": ("RESETCONF PARAM[=VALUE]", HELP_RESETCONF),
   "SIGNAL": ("SIGNAL SIG", HELP_SIGNAL),
+  "SETEVENTS": ("SETEVENTS [EXTENDED] [EVENTS]", HELP_SETEVENTS),
 }
 
 class InterpretorClosed(Exception):
@@ -233,11 +244,11 @@ class TorControlCompleter:
       self.commands.append("SETCONF ")
       self.commands.append("RESETCONF ")
     
-    # adds all of the valid SETEVENT options
+    # adds all of the valid SETEVENTS options
     eventOptions = conn.getInfo("events/names")
     if eventOptions:
-      self.commands += ["SETEVENT %s" % event for event in eventOptions.split(" ")]
-    else: self.commands.append("SETEVENT ")
+      self.commands += ["SETEVENTS %s" % event for event in eventOptions.split(" ")]
+    else: self.commands.append("SETEVENTS ")
     
     # adds all of the valid USEFEATURE options
     featureOptions = conn.getInfo("features/names")
@@ -391,7 +402,7 @@ class ControlInterpretor:
           if confOptions:
             confEntries = [opt.split(" ", 1)[0] for opt in confOptions.split("\n")]
             
-            # displays four columns of 30 characters
+            # displays two columns of 42 characters
             for i in range(0, len(confEntries), 2):
               lineEntries = confEntries[i : i+2]
               
@@ -407,6 +418,21 @@ class ControlInterpretor:
           for signal, description in SIGNAL_DESCRIPTIONS:
             outputEntry.append(("%-15s" % signal, OUTPUT_FORMAT + (Attr.BOLD, )))
             outputEntry.append((" - %s\n" % description, OUTPUT_FORMAT))
+        elif arg == "SETEVENTS":
+          # lists all of the event types
+          eventOptions = torTools.getConn().getInfo("events/names")
+          if eventOptions:
+            eventEntries = eventOptions.split()
+            
+            # displays four columns of 20 characters
+            for i in range(0, len(eventEntries), 4):
+              lineEntries = eventEntries[i : i+4]
+              
+              lineContent = ""
+              for entry in lineEntries:
+                lineContent += "%-20s" % entry
+              
+              outputEntry.append((lineContent + "\n", OUTPUT_FORMAT))
       else:
         # check if this is a configuration option
         manEntry = torConfig.getConfigDescription(arg)





More information about the tor-commits mailing list