Author: atagar Date: 2011-03-03 03:37:40 +0000 (Thu, 03 Mar 2011) New Revision: 24293
Modified: arm/trunk/armrc.sample arm/trunk/src/interface/connections/listings.py arm/trunk/src/interface/controller.py Log: Adding a config option for connection panel column visability.
Modified: arm/trunk/armrc.sample =================================================================== --- arm/trunk/armrc.sample 2011-03-02 21:16:07 UTC (rev 24292) +++ arm/trunk/armrc.sample 2011-03-03 03:37:40 UTC (rev 24293) @@ -151,6 +151,16 @@ features.graph.bw.accounting.rate 10 features.graph.bw.accounting.isTimeLong false
+# Parameters for connection display +# --------------------------------- +# features.connection.showColumn.* +# toggles the visability of the connection table columns + +features.connection.showColumn.fingerprint true +features.connection.showColumn.nickname true +features.connection.showColumn.destination true +features.connection.showColumn.expanedIp true + # Thread pool size for hostname resolutions # Determines the maximum number of concurrent requests. Upping this to around # thirty or so seems to be problematic, causing intermittently seizing.
Modified: arm/trunk/src/interface/connections/listings.py =================================================================== --- arm/trunk/src/interface/connections/listings.py 2011-03-02 21:16:07 UTC (rev 24292) +++ arm/trunk/src/interface/connections/listings.py 2011-03-03 03:37:40 UTC (rev 24293) @@ -7,15 +7,14 @@ from util import connections, enum, hostnames, torTools, uiTools
# Connection Categories: -# Inbound Relay connection, coming to us. -# Outbound Relay connection, leaving us. -# Exit Outbound relay connection leaving the Tor network. -# Socks Application client connection. -# Client Circuits for our client traffic. -# Directory Fetching tor consensus information. -# Control Tor controller (arm, vidalia, etc). +# Inbound Relay connection, coming to us. +# Outbound Relay connection, leaving us. +# Exit Outbound relay connection leaving the Tor network. +# Client Circuits for our client traffic. +# Application Socks connections using Tor. +# Directory Fetching tor consensus information. +# Control Tor controller (arm, vidalia, etc).
-# TODO: add recognizing of CLIENT connection type DestAttr = enum.Enum("NONE", "LOCALE", "HOSTNAME") Category = enum.Enum("INBOUND", "OUTBOUND", "EXIT", "CLIENT", "APPLICATION", "DIRECTORY", "CONTROL") CATEGORY_COLOR = {Category.INBOUND: "green", Category.OUTBOUND: "blue", @@ -28,6 +27,14 @@ LABEL_FORMAT = "%s --> %s %s%s" LABEL_MIN_PADDING = 2 # min space between listing label and following data
+CONFIG = {"features.connection.showColumn.fingerprint": True, + "features.connection.showColumn.nickname": True, + "features.connection.showColumn.destination": True, + "features.connection.showColumn.expanedIp": True} + +def loadConfig(config): + config.update(CONFIG) + class Endpoint: """ Collection of attributes associated with a connection endpoint. This is a @@ -348,18 +355,18 @@
usedSpace += len(src) + len(dst) # base data requires 47 characters
- if width > usedSpace + 42: + if width > usedSpace + 42 and CONFIG["features.connection.showColumn.fingerprint"]: # show fingerprint (column width: 42 characters) etc += "%-40s " % self.foreign.getFingerprint() usedSpace += 42
- if addrDiffer and width > usedSpace + 28: + if addrDiffer and width > usedSpace + 28 and CONFIG["features.connection.showColumn.expanedIp"]: # include the internal address in the src (extra 28 characters) internalAddress = "%s:%s" % (self.local.getIpAddr(), self.local.getPort()) src = "%-21s --> %s" % (internalAddress, src) usedSpace += 28
- if width > usedSpace + 10: + if width > usedSpace + 10 and CONFIG["features.connection.showColumn.nickname"]: # show nickname (column width: remainder) nicknameSpace = width - usedSpace nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0) @@ -371,17 +378,17 @@ usedSpace += len(stc) minHostnameSpace = 40
- if width > usedSpace + minHostnameSpace + 28: + if width > usedSpace + minHostnameSpace + 28 and CONFIG["features.connection.showColumn.destination"]: # show destination ip/port/locale (column width: 28 characters) etc += "%-26s " % dstAddress usedSpace += 28
- if width > usedSpace + minHostnameSpace + 42: + if width > usedSpace + minHostnameSpace + 42 and CONFIG["features.connection.showColumn.fingerprint"]: # show fingerprint (column width: 42 characters) etc += "%-40s " % self.foreign.getFingerprint() usedSpace += 42
- if width > usedSpace + minHostnameSpace + 17: + if width > usedSpace + minHostnameSpace + 17 and CONFIG["features.connection.showColumn.nickname"]: # show nickname (column width: min 17 characters, uses half of the remainder) nicknameSpace = 15 + (width - (usedSpace + minHostnameSpace + 17)) / 2 nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0) @@ -417,12 +424,14 @@ # if there's room then also show a column with the destination # ip/port/locale (column width: 28 characters) isIpLocaleIncluded = width > usedSpace + 45 + isIpLocaleIncluded &= CONFIG["features.connection.showColumn.destination"] if isIpLocaleIncluded: nicknameSpace -= 28
- nicknameSpace = width - usedSpace - 28 if isIpLocaleVisible else width - usedSpace - nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0) - etc += ("%%-%is " % nicknameSpace) % nicknameLabel - usedSpace += nicknameSpace + 2 + if CONFIG["features.connection.showColumn.nickname"]: + nicknameSpace = width - usedSpace - 28 if isIpLocaleVisible else width - usedSpace + nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0) + etc += ("%%-%is " % nicknameSpace) % nicknameLabel + usedSpace += nicknameSpace + 2
if isIpLocaleIncluded: etc += "%-26s " % dstAddress @@ -434,12 +443,12 @@ else: dst = self.foreign.getNickname() minBaseSpace = 50
- if width > usedSpace + minBaseSpace + 42: + if width > usedSpace + minBaseSpace + 42 and CONFIG["features.connection.showColumn.fingerprint"]: # show fingerprint (column width: 42 characters) etc += "%-40s " % self.foreign.getFingerprint() usedSpace += 42
- if width > usedSpace + minBaseSpace + 28: + if width > usedSpace + minBaseSpace + 28 and CONFIG["features.connection.showColumn.destination"]: # show destination ip/port/locale (column width: 28 characters) etc += "%-26s " % dstAddress usedSpace += 28
Modified: arm/trunk/src/interface/controller.py =================================================================== --- arm/trunk/src/interface/controller.py 2011-03-02 21:16:07 UTC (rev 24292) +++ arm/trunk/src/interface/controller.py 2011-03-03 03:37:40 UTC (rev 24293) @@ -25,6 +25,7 @@ import fileDescriptorPopup
import interface.connections.connPanel +import interface.connections.listings from util import conf, log, connections, hostnames, panel, sysTools, torConfig, torTools, uiTools import graphing.bandwidthStats import graphing.connStats @@ -426,6 +427,7 @@ config = conf.getConfig("arm") config.update(CONFIG) graphing.graphPanel.loadConfig(config) + interface.connections.listings.loadConfig(config)
# adds events needed for arm functionality to the torTools REQ_EVENTS mapping # (they're then included with any setControllerEvents call, and log a more