Trac issueshttps://gitlab.torproject.org/legacy/trac/-/issues2012-05-28T19:44:15Zhttps://gitlab.torproject.org/legacy/trac/-/issues/5973Error launching arm because UsrMove and PATH ordering2012-05-28T19:44:15ZTracError launching arm because UsrMove and PATH orderingI cannot launch arm in Fedora 17 because the UsrMove Feature [1], and the PATH ordering causes that arm is called with /bin/arm, so the wrapper script fails to set arm_base correctly.
I attach a patch which fix it for me.
[1] https://f...I cannot launch arm in Fedora 17 because the UsrMove Feature [1], and the PATH ordering causes that arm is called with /bin/arm, so the wrapper script fails to set arm_base correctly.
I attach a patch which fix it for me.
[1] https://fedoraproject.org/wiki/Features/UsrMove
**Trac**:
**Username**: miceliuxDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5842Expanded ORPort confuses arm2016-03-13T01:49:30ZDamian JohnsonExpanded ORPort confuses armProposal 186 greatly expands the ORPort option, so it's no longer simply just a single port number (it might have addresses, multiple ports, special attributes, etc).
This change breaks arm's GETCONF calls to figure out the ORPort. We s...Proposal 186 greatly expands the ORPort option, so it's no longer simply just a single port number (it might have addresses, multiple ports, special attributes, etc).
This change breaks arm's GETCONF calls to figure out the ORPort. We should figure out how arm wants to handle and display information about these new capabilities.
On tor's side, implementation for this was added in...
5f0a8dcd2cfcbafc3deb3a6717808b607a459dac
According to the man page this stuff doesn't yet seem to be documented which is pesky...
https://www.torproject.org/docs/tor-manual-dev.html
Issue caught by swalker.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5835getstr() doesn't support the delete key2019-01-10T23:09:16ZDamian Johnsongetstr() doesn't support the delete keyCurses getstr prompts are dumb, and we need to teach it how to be a sane text editor. Arm's TextInputValidator class [1] supports the left/right arrows, home, end, and esc keys. We should add support there for the delete key too.
This s...Curses getstr prompts are dumb, and we need to teach it how to be a sane text editor. Arm's TextInputValidator class [1] supports the left/right arrows, home, end, and esc keys. We should add support there for the delete key too.
This should be easy...
- add a line here to log keycodes
- run arm, navigate to the interpretor panel, hit the delete key
- see in the log what the keycode is
- add a handler for that keycode to delete the next character
Another minor bug is that hitting backspace when at the start of the line deletes the first character.
[1] https://gitweb.torproject.org/arm.git/blob/HEAD:/src/util/textInput.py#l12Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5735Warning while parsing the desktop file2012-05-02T14:06:45ZTracWarning while parsing the desktop fileWhen I install the provided .desktop file I get a warning about a missing trailing semicolon:
warning: key "Categories" is a list and does not have a semicolon as trailing character, fixing
**Trac**:
**Username**: miceliuxWhen I install the provided .desktop file I get a warning about a missing trailing semicolon:
warning: key "Categories" is a list and does not have a semicolon as trailing character, fixing
**Trac**:
**Username**: miceliuxDamian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5678Arm crashes if it lacks write permissons for home directory2016-03-13T01:47:09ZDamian JohnsonArm crashes if it lacks write permissons for home directoryArm defaults to putting its data directory in '~/.arm'. However, in at least one reported case they lacked write permissions there resulting in...
```
Traceback (most recent call last):
File "/usr/share/arm/starter.py", line 543, in <...Arm defaults to putting its data directory in '~/.arm'. However, in at least one reported case they lacked write permissions there resulting in...
```
Traceback (most recent call last):
File "/usr/share/arm/starter.py", line 543, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/usr/share/arm/cli/controller.py", line 683, in startTorMonitor
curses.wrapper(drawTorMonitor, startTime)
File "/usr/lib/python2.6/curses/wrapper.py", line 44, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/share/arm/cli/controller.py", line 778, in drawTorMonitor
cli.wizard.showWizard()
File "/usr/share/arm/cli/wizard.py", line 313, in showWizard
relaySelection = RelayType.RESUME if manager.isTorrcAvailable() else RelayType.RELAY
File "/usr/share/arm/cli/controller.py", line 482, in isTorrcAvailable
torrcLoc = self.getTorrcPath()
File "/usr/share/arm/cli/controller.py", line 474, in getTorrcPath
return self._controller.getDataDirectory() + "torrc"
File "/usr/share/arm/cli/controller.py", line 401, in getDataDirectory
if not os.path.exists(dataDir): os.makedirs(dataDir)
File "/usr/lib/python2.6/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 13] Permission denied: '/home/ubuntu/.arm/'
```
We should make arm fall back to not having a data directory at all. This means making the getDataDirectory() callers accept a None response...
```
atagar@morrigan:~/Desktop/arm$ grep -R "getDataDirectory(" ./*
./release_rpm/src/cli/wizard.py: dataDir = cli.controller.getController().getDataDirectory()
./release_rpm/src/cli/wizard.py: dataDir = cli.controller.getController().getDataDirectory()
./release_rpm/src/cli/controller.py: def getDataDirectory(self):
./release_rpm/src/cli/controller.py: return self._controller.getDataDirectory() + "torrc"
./src/cli/wizard.py: dataDir = cli.controller.getController().getDataDirectory()
./src/cli/wizard.py: dataDir = cli.controller.getController().getDataDirectory()
./src/cli/controller.py: def getDataDirectory(self):
./src/cli/controller.py: return self._controller.getDataDirectory() + "torrc"
```
Bug reported by MoPac.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5652Add a GUI to introduce the connection password in arm2013-01-10T05:39:55ZTracAdd a GUI to introduce the connection password in armWhen launching arm in GUI mode (arm -g) you must introduce the password to connect to Tor in the command line. It would be great to have a graphical dialog for this.
This way it will improve its integration in the desktop.
**Trac**:
...When launching arm in GUI mode (arm -g) you must introduce the password to connect to Tor in the command line. It would be great to have a graphical dialog for this.
This way it will improve its integration in the desktop.
**Trac**:
**Username**: miceliuxhttps://gitlab.torproject.org/legacy/trac/-/issues/5281sudo -u debian-tor arm : 29.02 date problem2012-02-29T23:55:32ZTracsudo -u debian-tor arm : 29.02 date problemfollowing error appears:
Traceback (most recent call last):
File "/usr/share/arm/starter.py", line 543, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/usr/share/arm/cli/controller.py", line 683, in st...following error appears:
Traceback (most recent call last):
File "/usr/share/arm/starter.py", line 543, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/usr/share/arm/cli/controller.py", line 683, 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 703, 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 645, in __init__
self.reprepopulateEvents()
File "/usr/share/arm/cli/logPanel.py", line 689, in reprepopulateEvents
torEventBacklog = getLogFileEntries(setRunlevels, readLimit, addLimit, self._config)
File "/usr/share/arm/cli/logPanel.py", line 305, in getLogFileEntries
eventTimeComp = list(time.strptime(timestamp, "%b %d %H:%M:%S"))
File "/usr/lib/python2.7/_strptime.py", line 454, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/lib/python2.7/_strptime.py", line 440, in _strptime
datetime_date(year, 1, 1).toordinal() + 1
ValueError: day is out of range for month
**Trac**:
**Username**: mikkegenDamian JohnsonDamian Johnsonhttps://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/5267Erroneous 'Unable to determine fingerprint' warnings2012-04-27T02:16:11ZDamian JohnsonErroneous 'Unable to determine fingerprint' warningsSebastian reported that arm is giving him a weird warning...
```
03:00:02 [ARM_WARN] Unable to determine the fingerprint for a relay in our own circuit: BUILD_FLAGS=NEED_CAPACITY [1 duplicate hidden]
```
This is because in [torTools.py...Sebastian reported that arm is giving him a weird warning...
```
03:00:02 [ARM_WARN] Unable to determine the fingerprint for a relay in our own circuit: BUILD_FLAGS=NEED_CAPACITY [1 duplicate hidden]
```
This is because in [torTools.py](https://gitweb.torproject.org/arm.git/blob/HEAD:/src/util/torTools.py#l2404) we are misparsing a key=value entry as being the path. According to the [spec](https://gitweb.torproject.org/torspec.git/blob/HEAD:/control-spec.txt#l1160) those lines have an optional path followed by several optional key=value entries.
We should simply add a check for '=' to rule it out as being a key=value entry.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5265arm dies on "day is out of range for month"2020-06-13T14:45:07Zcypherpunksarm dies on "day is out of range for month"Leap year related?
```
$ arm
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/arm/starter.py", line 543, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/usr/local/lib/pyth...Leap year related?
```
$ arm
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/arm/starter.py", line 543, in <module>
cli.controller.startTorMonitor(time.time() - initTime)
File "/usr/local/lib/python2.7/site-packages/arm/cli/controller.py", line 683, in startTorMonitor
curses.wrapper(drawTorMonitor, startTime)
File "/usr/local/lib/python2.7/curses/wrapper.py", line 43, in wrapper
return func(stdscr, *args, **kwds)
File "/usr/local/lib/python2.7/site-packages/arm/cli/controller.py", line 703, in drawTorMonitor
initController(stdscr, startTime)
File "/usr/local/lib/python2.7/site-packages/arm/cli/controller.py", line 86, in initController
firstPagePanels.append(cli.logPanel.LogPanel(stdscr, expandedEvents, config))
File "/usr/local/lib/python2.7/site-packages/arm/cli/logPanel.py", line 645, in __init__
self.reprepopulateEvents()
File "/usr/local/lib/python2.7/site-packages/arm/cli/logPanel.py", line 689, in reprepopulateEvents
torEventBacklog = getLogFileEntries(setRunlevels, readLimit, addLimit, self._config)
File "/usr/local/lib/python2.7/site-packages/arm/cli/logPanel.py", line 305, in getLogFileEntries
eventTimeComp = list(time.strptime(timestamp, "%b %d %H:%M:%S"))
File "/usr/local/lib/python2.7/_strptime.py", line 454, in _strptime_time
return _strptime(data_string, format)[0]
File "/usr/local/lib/python2.7/_strptime.py", line 440, in _strptime
datetime_date(year, 1, 1).toordinal() + 1
ValueError: day is out of range for month
$ date
Wed Feb 29 01:02:38 UTC 2012
```
Above log is from FreeBSD with arm from ports, also dying on my Linux box.Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/5186Show streams on circuits2019-12-21T22:04:34ZcypherpunksShow streams on circuitsArm should show the targets of individual streams. For example, currently arm might show a new stream like this (spaces removed):
```
127.0.0.1:42051 --> 127.0.0.1:9050 UNKNOWN 0.0s (SOCKS)
```
Of course the destination is `127.0....Arm should show the targets of individual streams. For example, currently arm might show a new stream like this (spaces removed):
```
127.0.0.1:42051 --> 127.0.0.1:9050 UNKNOWN 0.0s (SOCKS)
```
Of course the destination is `127.0.0.1:9050`. That's just our socksport, and it provides no new information to the arm user. The destination should be shown as the target of the stream.
Once the stream is attached to a circuit, this binding should be shown explicitly. Note that this is not entirely trivial to do: for example, sometimes streams are reattached to different circuits (e.g. if a particular circuit does not work).
It might also be useful to indicate the status of a particular stream, e.g. "SENTRESOLVE", "SUCCEEDED", etc.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/4777Proc tools should account for big-endian architectures2012-01-07T18:42:59ZDamian JohnsonProc tools should account for big-endian architecturesThe psutil project on which the arm proc tools are based caught a bug I should fix...
https://code.google.com/p/psutil/source/detail?r=1113
Evidently this occurs on OpenWRT. Thanks to swalker for pointing this out!The psutil project on which the arm proc tools are based caught a bug I should fix...
https://code.google.com/p/psutil/source/detail?r=1113
Evidently this occurs on OpenWRT. Thanks to swalker for pointing this out!Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/4694Merge request: UPnP support2013-01-10T05:40:56ZKamran KhanMerge request: UPnP supportUPnP support is added in connections panel for discovering internet gateway devices and enabling port-forwarding for ORPort.
No new dependencies are added, SOAP is parsed manually. A green notice is shown below the connections panel if ...UPnP support is added in connections panel for discovering internet gateway devices and enabling port-forwarding for ORPort.
No new dependencies are added, SOAP is parsed manually. A green notice is shown below the connections panel if a UPnP device is found. (Am not so sure though about the red notice in case they're not found, it looks intrusive and UPnP isn't "critical". Will remove it if that's what others think.)
Development was done in my krkhan branch where individual commits can be found. I have squashed and formatted a patch at: https://gist.github.com/1459276Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/4621Minor help text tweak2011-12-01T15:38:02ZtwildeMinor help text tweakThe help text for "enter" on the connection panel was incorrect, I've pushed a proposed fix to the timhack branch on git://github.com/twilde/arm.git, simple one-line patch against master HEAD also inlined below in git format-patch style,...The help text for "enter" on the connection panel was incorrect, I've pushed a proposed fix to the timhack branch on git://github.com/twilde/arm.git, simple one-line patch against master HEAD also inlined below in git format-patch style, not sure which is easier. :)
---
src/cli/connections/connPanel.py | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/cli/connections/connPanel.py b/src/cli/connections/connPanel.py
index 9745176..3a8a07c 100644
--- a/src/cli/connections/connPanel.py
+++ b/src/cli/connections/connPanel.py
@@ -308,7 +308,7 @@ class ConnectionPanel(panel.Panel, threading.Thread):
options.append(("down arrow", "scroll down a line", None))
options.append(("page up", "scroll up a page", None))
options.append(("page down", "scroll down a page", None))
- options.append(("enter", "edit configuration option", None))
+ options.append(("enter", "toggle connection details", None))
options.append(("d", "raw consensus descriptor", None))
if self.isClientsAllowed():
--Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/4602Arm's torrc validation misses alternate Log default2020-06-13T02:22:18ZDamian JohnsonArm's torrc validation misses alternate Log defaultTor reports a default log value ("Log notice stdout") if none is defined as per...
https://trac.torproject.org/projects/tor/ticket/2362
However, with the deb it defaults to "Log notice file /var/log/tor/log" instead, causing validation ...Tor reports a default log value ("Log notice stdout") if none is defined as per...
https://trac.torproject.org/projects/tor/ticket/2362
However, with the deb it defaults to "Log notice file /var/log/tor/log" instead, causing validation to think that this is an issue. I should account for this too.
Thanks to Sebastian, here's the part that determines this...
12:31 < Sebastian> atagar:
12:31 < Sebastian> + if (debian_running_as_debiantor()) {
12:31 < Sebastian> + if (!options->Logs && !from_setconf)
12:31 < Sebastian> + config_line_append(&options->Logs, "Log", "notice file /var/log/tor/log");Damian JohnsonDamian Johnsonhttps://gitlab.torproject.org/legacy/trac/-/issues/4601Arm torrc validation fails on Tor Cloud2011-12-07T17:25:59ZDamian JohnsonArm torrc validation fails on Tor CloudTor's config parsing is case insensitive, so arm's validation should be too. At present having "Exitpolicy reject *:*" in the torrc is counted as both being unnecessary and missing since it doesn't match "ExitPolicy reject *:*".Tor's config parsing is case insensitive, so arm's validation should be too. At present having "Exitpolicy reject *:*" in the torrc is counted as both being unnecessary and missing since it doesn't match "ExitPolicy reject *:*".Damian JohnsonDamian Johnson