Trac issueshttps://gitlab.torproject.org/legacy/trac/-/issues2016-03-13T01:46:53Zhttps://gitlab.torproject.org/legacy/trac/-/issues/5270When pre-populating logs arm only look at the very first log config option2016-03-13T01:46:53ZSebastian HahnWhen pre-populating logs arm only look at the very first log config optionConnecting to a Tor started like this:
```
./tor log "debug file /bla" log "notice file /blub"
```
arm will show debug info in its log view, but connecting to a tor started like this:
```
./tor log "notice file /blub" log "debug file /bl...Connecting to a Tor started like this:
```
./tor log "debug file /bla" log "notice file /blub"
```
arm will show debug info in its log view, but connecting to a tor started like this:
```
./tor log "notice file /blub" log "debug file /bla"
```
arm will show notice logs. Not sure what the appropriate behaviour is in either case, but having it like it is currently surely is wrong.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5061Arm missing CIRC_MINOR, SIGNAL, CONF_CHANGED2016-03-13T01:41:20ZDamian JohnsonArm missing CIRC_MINOR, SIGNAL, CONF_CHANGEDNew tor versions have added several event types that TorCtl does not have handlers for. The result is that arm gives a notice that it's missing these handlers.
This is really a TorCtl issue, but I've pretty much forked it in arm due to ...New tor versions have added several event types that TorCtl does not have handlers for. The result is that arm gives a notice that it's missing these handlers.
This is really a TorCtl issue, but I've pretty much forked it in arm due to multiple unmerged patches so I should just add support to my fork.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5003Connection resolver chokes on UDP connections, on OS X 10.6.82016-03-13T01:40:54ZTracConnection resolver chokes on UDP connections, on OS X 10.6.8A default arm installation doesn't show me any connections, and gives me the error message as well:
`We were unable to use any of your system's resolvers to get tor's connections. This is fine, but means that the connections page will b...A default arm installation doesn't show me any connections, and gives me the error message as well:
`We were unable to use any of your system's resolvers to get tor's connections. This is fine, but means that the connections page will be empty. This is usually permissions related so if you would like to fix this then run arm with the same user as tor (ie, "sudo -u <tor user> arm").`
Here is the log line:
`2/1/2012 19:54:42 [DEBUG] system call: lsof -wnPi | egrep "^tor *26419.*((UDP.*)|(\(ESTABLISHED\)))" (runtime: 0.02)`
I fixed it by replacing the LSOF command, using the attached patch.
**Trac**:
**Username**: mphippsDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/4964Resource starvation causes arm to overwhelm server2016-03-13T01:39:37ZTracResource starvation causes arm to overwhelm serverI'm running a fast relay/exit node and as part of an audit, I ran a DoS attack upon the server which starved system resources.
Once the process was complete, it caused arm to use 51% of system ram, approx 760mb, and 99% of available CPU...I'm running a fast relay/exit node and as part of an audit, I ran a DoS attack upon the server which starved system resources.
Once the process was complete, it caused arm to use 51% of system ram, approx 760mb, and 99% of available CPU power.
The chart attached shows CPU during and after the DoS attack, and after 7.04am the light blue shows arm's affect on the server.
A second attachment is (unhelpfully a screenshot) of top showing the resources arm is using.
**Trac**:
**Username**: kerruptDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/4901Arm install fails if torctl in path2016-03-13T01:38:45ZDamian JohnsonArm install fails if torctl in pathWhen you run arm's install script it...
- checks if TorCtl is available and, if not, prompts the user to get a copy
- copies all the modules, including TorCtl, to the installation destination
If the user has python-torctl installed then...When you run arm's install script it...
- checks if TorCtl is available and, if not, prompts the user to get a copy
- copies all the modules, including TorCtl, to the installation destination
If the user has python-torctl installed then we skip fetching a local copy of torctl (since it's already available externally), then setup.py fails to copy a 'src/TorCtl' module since it's not contained within arm itself.
Issue caught by DustyDingoDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/3391add arm to the official tor deb repository2016-03-13T01:32:08ZTracadd arm to the official tor deb repositoryRight now, the arm download page (http://www.atagar.com/arm/download.php) links to the official debian repositories.
Is there any chance to get arm integrated in the official tor deb repository (http://deb.torproject.org/torproject.org)...Right now, the arm download page (http://www.atagar.com/arm/download.php) links to the official debian repositories.
Is there any chance to get arm integrated in the official tor deb repository (http://deb.torproject.org/torproject.org). This would allow users in protected environments that only trust the torproject repository to obtain and update arm easily. On top of that, as debian stable is updated only once in two years, the regular arm who do not want to struggle with installing arm manually, will pretty much lack ahind upstream.
Thank you
**Trac**:
**Username**: toruser32Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/9222Torrc's bandwidth entries are more flexible than documented2016-03-13T01:28:21ZDamian JohnsonTorrc's bandwidth entries are more flexible than documentedAccording to the tor man page the permitted format for bandwidth entries is pretty simple...
```
RelayBandwidthRate N bytes|KB|MB|GB
```
Arm parses these to check if the torrc is out of sync with tor's actual state (ie, that the user e...According to the tor man page the permitted format for bandwidth entries is pretty simple...
```
RelayBandwidthRate N bytes|KB|MB|GB
```
Arm parses these to check if the torrc is out of sync with tor's actual state (ie, that the user edited their configuration without restarting or issuing a sighup). However, a user inadvertently found that tor is actually more flexible on these lines that what the man page documents...
```
12:54 < atagar> What is the exact torrc lines that you have?
12:55 < Urban_core> RelayBandwidthRate 250Kbytes # Throttle traffic to 100KB/s (800Kbps)
12:55 < Urban_core> RelayBandwidthBurst 350Kbytes # But allow bursts up to 200KB/s (1600Kbps)
```
Once this is fixed in the tor man page please assign this to the arm component and I'll fix it on my end.https://gitlab.torproject.org/legacy/trac/-/issues/9679Man page warnings after 2.4.x nightly update to Tor2016-03-13T01:27:33ZTracMan page warnings after 2.4.x nightly update to TorAfter upgrading to the 2.4.x nightly of Tor, there's two new warnings in the TOR/ARM NOTICE section.
```
12:46:33 [ARM_NOTICE] Unrecognized category in the man page: GENERAL OPTIONS
12:46:33 [ARM_NOTICE] Unrecognized category in the m...After upgrading to the 2.4.x nightly of Tor, there's two new warnings in the TOR/ARM NOTICE section.
```
12:46:33 [ARM_NOTICE] Unrecognized category in the man page: GENERAL OPTIONS
12:46:33 [ARM_NOTICE] Unrecognized category in the man page: COMMAND-LINE OPTIONS
```
**Trac**:
**Username**: OneST8Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/18131Bandwidth history2016-03-13T01:27:12ZTracBandwidth historyI got an Arm-Notice and dont know how to handle it. How do I read the bandwidth history?
"Read the last day of bandwidth history from the state file"
**Trac**:
**Username**: TinkerbeardI got an Arm-Notice and dont know how to handle it. How do I read the bandwidth history?
"Read the last day of bandwidth history from the state file"
**Trac**:
**Username**: TinkerbeardDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/12785arm crashes on Debian Wheezy2016-03-13T01:26:31Zcypherpunksarm crashes on Debian Wheezy```
apt-cache show tor-arm
Package: tor-arm
Version: 1.4.5.0-1
Installed-Size: 1007
Maintainer: Ulises Vitulli <dererk@debian.org>
Architecture: all
Depends: python (>= 2.6.6-7~), python-torctl
Suggests: tor
Description-en: terminal stat...```
apt-cache show tor-arm
Package: tor-arm
Version: 1.4.5.0-1
Installed-Size: 1007
Maintainer: Ulises Vitulli <dererk@debian.org>
Architecture: all
Depends: python (>= 2.6.6-7~), python-torctl
Suggests: tor
Description-en: terminal status monitor for tor
The anonymizing relay monitor (arm) is a terminal status monitor for Tor
relays, intended for command-line aficionados, ssh connections, and anyone
stuck with a tty terminal. This works much like top does for system usage,
providing real time statistics for:
.
- bandwidth, cpu, and memory usage
- relay's current configuration
- logged events
- connection details (ip, hostname, fingerprint, and consensus data)
- etc.
Homepage: http://www.atagar.com/arm/
Description-md5: ec44664df4c223075aac5e459d59c2b0
Tag: implemented-in::python, role::program, use::monitor
Section: comm
Priority: extra
Filename: pool/main/t/tor-arm/tor-arm_1.4.5.0-1_all.deb
Size: 306998
MD5sum: 8276cafb2e871eec300b5704956ea199
SHA1: d07939252d8410f0802f3df52edd34ce57c7c026
SHA256: 3715c89554f0d9aab75a3b92e6a47dee15a5136a48e2d887ef393ab7516988ce
```
arm version:
```
arm --version
arm version 1.4.5.0 (released April 28, 2012)
```
arm crashes like so at startup:
```
# arm
Traceback (most recent call last):
File "/usr/share/arm/starter.py", line 578, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/usr/share/arm/cli/controller.py", line 700, in startTorMonitor
curses.wrapper(drawTorMonitor, startTime)
File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/share/arm/cli/controller.py", line 720, in drawTorMonitor
initController(stdscr, startTime)
File "/usr/share/arm/cli/controller.py", line 86, in initController
firstPagePanels.append(cli.logPanel.LogPanel(stdscr, expandedEvents, config))
File "/usr/share/arm/cli/logPanel.py", line 652, in __init__
self.reprepopulateEvents()
File "/usr/share/arm/cli/logPanel.py", line 696, in reprepopulateEvents
torEventBacklog = getLogFileEntries(setRunlevels, readLimit, addLimit, self._config)
File "/usr/share/arm/cli/logPanel.py", line 313, in getLogFileEntries
eventTimeComp = list(time.strptime(timestamp, "%Y %b %d %H:%M:%S"))
File "/usr/lib/python2.7/_strptime.py", line 467, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '2012 \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Apr 23 20:20:01' does not match format '%Y %b %d %H:%M:%S'
Exception in thread Thread-3 (most likely raised during interpreter shutdown):Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
Traceback (most recent call last):
File "/usr/share/arm/util/connections.py", line 476, in run File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
File "/usr/lib/python2.7/threading.py", line 142, in release File "/usr/share/arm/util/sysTools.py", line 546, in run
<type 'exceptions.TypeError'>: 'NoneType' object is not callable File "/usr/lib/python2.7/threading.py", line 142, in release
<type 'exceptions.TypeError'>: 'NoneType' object is not callable
```
Any ideas?Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/9403consider using PyPy with 'arm' where appropriate2016-03-13T01:25:26ZTracconsider using PyPy with 'arm' where appropriateI'm currently doing a lot of experimentation with Tor relays on single-board computers such as the Raspberry Pi. Currently, 'arm' is *very* heavy on such machines, taking a lot of memory and CPU.
It might be worth it to release a PyPy[...I'm currently doing a lot of experimentation with Tor relays on single-board computers such as the Raspberry Pi. Currently, 'arm' is *very* heavy on such machines, taking a lot of memory and CPU.
It might be worth it to release a PyPy[1] powered version if it results in significant improvements in speed and/or memory usage on resource-limited systems with ARM CPUs. Or, possibly, to build alternate packages for users of the Tor Project repos for Debian et al.
[1] http://pypy.org/
**Trac**:
**Username**: gmorehouseDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/10580arm hangs when monitoring ipv6 relay on switching to connection page2016-03-13T01:23:52ZTracarm hangs when monitoring ipv6 relay on switching to connection pageI added ipv6 support for the torland relays. When using arm I noticed that on switching to the connection page arm hangs. I could recreate the issue on 2 relays and a bridge. Once it was configured for ipv6 the connection page did not wo...I added ipv6 support for the torland relays. When using arm I noticed that on switching to the connection page arm hangs. I could recreate the issue on 2 relays and a bridge. Once it was configured for ipv6 the connection page did not work anymore.
**Trac**:
**Username**: torlandDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/7837arm crashes when I open the conenctions page2016-03-13T01:16:28ZTracarm crashes when I open the conenctions pageWhen I use the left/right buttons or the menu option.
version 1.4.6_dev
```
Traceback (most recent call last):
File "arm/src/starter.py", line 497, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/home/s...When I use the left/right buttons or the menu option.
version 1.4.6_dev
```
Traceback (most recent call last):
File "arm/src/starter.py", line 497, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/home/soakednoodle/arm/src/cli/controller.py", line 569, in startTorMonitor
curses.wrapper(drawTorMonitor, startTime)
File "/usr/lib/python2.7/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/home/soakednoodle/arm/src/cli/controller.py", line 624, in drawTorMonitor
control.redraw(False)
File "/home/soakednoodle/arm/src/cli/controller.py", line 341, in redraw
panelImpl.redraw(force)
File "/home/soakednoodle/arm/src/util/panel.py", line 408, in redraw
self.draw(self.maxX, self.maxY)
File "/home/soakednoodle/arm/src/cli/connections/connPanel.py", line 388, in draw
drawEntry = entryLine.getListingEntry(width - scrollOffset - len(prefix), currentTime, self._listingType)
File "/home/soakednoodle/arm/src/cli/connections/connEntry.py", line 290, in getListingEntry
myListing = entries.ConnectionPanelLine.getListingEntry(self, width, currentTime, listingType)
File "/home/soakednoodle/arm/src/cli/connections/entries.py", line 136, in getListingEntry
self._listingCache = self._getListingEntry(width, currentTime, listingType)
File "/home/soakednoodle/arm/src/cli/connections/connEntry.py", line 324, in _getListingEntry
(self._getListingContent(width - (12 + timeWidth) - 1, listingType), lineFormat),
File "/home/soakednoodle/arm/src/cli/connections/connEntry.py", line 545, in _getListingContent
dstAddress = self.getDestinationLabel(26, includeLocale = True)
File "/home/soakednoodle/arm/src/cli/connections/connEntry.py", line 828, in getDestinationLabel
foreignLocale = self.foreign.getLocale("??")
File "/home/soakednoodle/arm/src/cli/connections/connEntry.py", line 111, in getLocale
return conn.getInfo("ip-to-country/%s" % self.ipAddr, default)
File "/home/soakednoodle/arm/src/util/torTools.py", line 441, in getInfo
return self.controller.get_info(param, default)
File "/home/soakednoodle/arm/src/stem/control.py", line 841, in get_info
log.warn("Tor's geoip database is unavailable.")
File "/home/soakednoodle/arm/src/stem/util/log.py", line 153, in warn
def warn(message): log(Runlevel.WARN, message)
File "/home/soakednoodle/arm/src/stem/util/log.py", line 128, in log
LOGGER.log(LOG_VALUES[runlevel], message)
File "/usr/lib/python2.7/logging/__init__.py", line 1203, in log
self._log(level, msg, args, **kwargs)
File "/usr/lib/python2.7/logging/__init__.py", line 1258, in _log
self.handle(record)
File "/usr/lib/python2.7/logging/__init__.py", line 1268, in handle
self.callHandlers(record)
File "/usr/lib/python2.7/logging/__init__.py", line 1308, in callHandlers
hdlr.handle(record)
File "/usr/lib/python2.7/logging/__init__.py", line 748, in handle
self.emit(record)
File "/home/soakednoodle/arm/src/cli/logPanel.py", line 584, in emit
eventColor = RUNLEVEL_EVENT_COLOR[record.levelname]
KeyError: 'WARNING'
```
I think "Tor's geoip database is unavailable." shouldn't fail this hard, right?
**Trac**:
**Username**: SoakedNoodleDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/15160Patch to add right to left graph scrolling2016-03-11T17:13:23ZTracPatch to add right to left graph scrollingAs summary
**Trac**:
**Username**: ifraserAs summary
**Trac**:
**Username**: ifraserDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/18506Drop Stop Tor option2016-03-11T17:04:18ZsambuddhabasuDrop Stop Tor optionPresently, a Stop Tor option is seen on the Nyx menu. This was discussed on IRC with atagar and needs to be dropped.Presently, a Stop Tor option is seen on the Nyx menu. This was discussed on IRC with atagar and needs to be dropped.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/18488Menu is not seen2016-03-06T20:58:32ZsambuddhabasuMenu is not seenOn pressing 'm', the menu should be shown. The message, "Press m or esc to close the menu." can be seen but the menu is not seen.On pressing 'm', the menu should be shown. The message, "Press m or esc to close the menu." can be seen but the menu is not seen.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/18487Tor Configuration File menu throws an AttributeError2016-03-06T19:40:34ZsambuddhabasuTor Configuration File menu throws an AttributeErrorIn page 4/4(Tor Configuration File), when 'm' is pressed, Nyx throws an AttributeError.In page 4/4(Tor Configuration File), when 'm' is pressed, Nyx throws an AttributeError.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/18484Set/Unset line numbering for torrc does not work2016-03-05T20:08:39ZsambuddhabasuSet/Unset line numbering for torrc does not workSet/Unset line numbering for torrc does not work as expected. Presently, we use the character, 'n' to achieve this. However, the same character is used for creating a new identity. This can be seen at, https://gitweb.torproject.org/nyx.g...Set/Unset line numbering for torrc does not work as expected. Presently, we use the character, 'n' to achieve this. However, the same character is used for creating a new identity. This can be seen at, https://gitweb.torproject.org/nyx.git/tree/nyx/header_panel.py#n340Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/18475Use STEM_CONNECTIONS list for connection tracker tests2016-03-04T16:27:45ZsambuddhabasuUse STEM_CONNECTIONS list for connection tracker testsPresently, the connection tracker tests use `STEM_CONNECTION_1`, `STEM_CONNECTION_2` and `STEM_CONNECTION_3` variables. We can combine them into a list and use the list for the `assertEqual` rather than hard coding them.Presently, the connection tracker tests use `STEM_CONNECTION_1`, `STEM_CONNECTION_2` and `STEM_CONNECTION_3` variables. We can combine them into a list and use the list for the `assertEqual` rather than hard coding them.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/18463nyx quits with an error2016-03-03T16:09:43Zsambuddhabasunyx quits with an errornyx quits with an error,
AttributeError: Controller instance has no attribute 'close'
On checking the traceback, this arises from _shutdown_daemons() in nyx/starter.pynyx quits with an error,
AttributeError: Controller instance has no attribute 'close'
On checking the traceback, this arises from _shutdown_daemons() in nyx/starter.pyDamian JohnsonDamian Johnson