"Yup, all done hacking on arm!" I told myself. I’m such a liar. My August was mostly spent adding features that didn’t make it into the 1.4.3 release. In particular…
- a dialog with stats for exiting port usage (for exits) and client locales (for guards and bridges)
- control socket support
- torctl event parsing rewrite
- descriptor dialog rewrite
- expanded the projects listed on the tor front page
Google Summer of Code finished last week with all students passing. For me the real question of how we did will be answered in another few weeks when we discover which students stay and which evaporate. Most have expressed an interest in staying so that’s a good sign.
Finally, I’ve spent this last week writing a control port interpretor. Its purpose is to provide raw control port access (like a telnet session with the control port) but with usability improvements. In particular…
- auto-negotiate authentication
- tab completion for valid controller commands (which are fetched from the attached tor instance via the ‘GETINFO */names’ options)
- up/down cycles through the history and ctrl+r provides history auto-completion
- * nice formatting for the responses (context specific color/bolding)
- * support for mutli-line controller commands and event listening
- irc style interpretor commands…
- /write [PATH] – saves interpretor backlog to the given path (PATH defaults to the last used location)
- /find PATTERN – regex search through the backlog, highlighting matches
- /quit – I’ll let you guess
- * /help [OPTION] – provides usage information for both interpretor and tor commands
- * /window [0-9] – switches between workspaces (like multiple telnet connections in screen sessions)
- * /info RELAY – dumps consensus/descriptor entries for a relay by fingerprint or nickname (see the arm descriptor dialog for what this’ll look like)
* these are the todo items, everything else is done – ideas welcome for other features, especially if it’ll make your life easier!
This interpretor can both be a terminal prompt (by running “arm –prompt” or “arm -p”):
or used from the arm interface:
They work from the same backend, but the curses/getstr vs prompt/readline frontends provide different capabilities…
- Only the prompt provides line wrapping. I haven’t decided if I’ll do this in the panel or not since it’s a pita to code (many gory details due to scrolling) and not desirable for all commands…
- Only the prompt provides suggested tab completion results or ctrl+r history search.
- Only the panel can provide input syntax highlighting and nice scrolling keybindings.
- Only the panel will be able to have a /window option.
Most of this next month will be spent polishing this new addition, then making the 1.4.4 arm release.