CHANGE LOG 9/25/11 - version 1.4.4 (881c67a) Besides the normal bug fixes and minor features, this release introduces the control port interpretor. This is a new page or standalone prompt that gives raw control port access with several usability improvements (tab completion, history, irc style help, interpretor commands, etc). * added: control port interpretor which provides... o tab completion o history scrollback o /help option which provides usage information for all of the tor/interpretor commands and tor configuration options o /info option for querying relay information via fingerprint, nickname, or IP address o /find option which searches the backlog for the given regex o /events option which displays any events that we've listened for o /write option which dumps the interpretor backlog to a file * added: control socket support (feature request by dererk, https://trac.torproject.org/projects/tor/ticket/3638) * added: optional system wide torrc integration (thanks to ioerror, https://trac.torproject.org/projects/tor/ticket/3629) * added: dialog for guards, bridges, and exits with exit port usage and client locales (feature request by waltman and ioerror) * added: configuration editor for the gui interface (implemented by krkhan) * added: notice that warns the user against running tor or arm as root * change: doing a manual redraw when the user presses ctrl+L (https://trac.torproject.org/projects/tor/ticket/2830) * change: moving download location to archive.torproject.org so downloads will have ssl (suggested by arma) * change: rewrite of the descriptor popup, cleaning up the code and minor performance improvements * fix: preventing arm from starting if there's a running tor instance that we can't connect to * fix: when the config-text GETINFO option was unavailable we'd write a blank torrc (caught by Runa) * fix: appending path prefix to auth cookie path (caught by sid77) * fix: skipping log parsing if misformatted (caught by Sjon) * fix: incorrect armrc path in man page (caught by dererk) * fix: toning down the warning when all connection resolvers fail (suggested by Sebastian) * fix: quitting wizard when the user presses 'q' instead of just esc (suggested by monochromec, https://trac.torproject.org/projects/tor/ticket/3995) * fix: quitting could cause unclean curses shutdown * fix: relay address fetching would ignore default values at shutdown, causing a stacktrace * fix: concurrency bug could crash arm if a CIRC event occurs while caching attached relays * fix: crashing issue from use of an uninitialized buffer when paused with accounting stats * fix: periodically redrawing content to prevent weird terminal glitches from persisting * fix: pressing 'enter' on config panel when never attached to tor would crash * fix: hotkey for saving the torrc conflicted with the relay setup wizard * fix: avoiding catch-all during controller init * fix: listener wasn't registering GUARD events * fix: dropping nonexistent ORCONN attributes * fix: clarifying the missing torrc message * fix (9/29/11, edcde43): dropping gtk/cagraph requirements (caught by monochromec, vinc3nt, and Bill White) * fix (9/29/11, edcde43): crash from esc in interpretor panel prompt (caught by Sebastian, https://trac.torproject.org/projects/tor/ticket/4098) * fix (9/29/11, edcde43): deduplicating 'Circuit build timeout' and 'looks like we don't need to wait so long' messages (patch by StrangeCharm, https://trac.torproject.org/projects/tor/ticket/4096) * fix (9/29/11, edcde43): forcing redraw on ctrl+L reguardless of need (caught by np, https://trac.torproject.org/projects/tor/ticket/2830) 7/16/11 - version 1.4.3 (6cf4836) This completes the codebase refactoring project that's been a year in the works and provides numerous performance and usability improvements. Most notably this includes a setup wizard for new relays, menuing interface, gui prototype, substantial performance improvements, and support for Mac OSX. * added: relay setup wizard for autogenerating a torrc configuration * added: menu interface with all of arm's functionality (thanks to help from krkhan) * added: option for reconnecting to tor if it's been shut down and restarted * added: fetching the download and upload bandwidth totals from Tor if it's available * added: option for requesting a new identity * added: file descriptor usage in the header panel when running low * added: logging a notice when file descriptor usage is high * added: making interface components optionally excludeable * added: reintroduced the descriptor popup for the new connection panel * added: moved arm's codebase to git, with helper scripts to replace svn:externals and export * added: option for overriding all displayed color * change: renaming our process from "python src/starter.py " to "arm " (thanks to help from ioerror) * change: hiding connection init latency, dropping arm's startup time from 0.84 seconds to 0.14 (83% improvement) * change: using blank space to display the nickname for circuit connections * change: dropping the file descriptor popup (it was both unused and inaccurate) * change: dropping deprecated connection panel from the codebase * change: using SAVECONF rather than writing directly when able * change: closing all message prompts when a key is pressed * change: using a more intuitive mode toggling for resizing the graph * change: added summaries for new tor config options * fix: avoiding mass memory allocation in torctl, lowering arm's perceived base memory footprint by 2.5 MB (12%) (https://trac.torproject.org/projects/tor/ticket/3406) * fix: fixing shutdown concurrency in torctl, lowering arm's shutdown time from a second to being almost instantaneous (https://trac.torproject.org/projects/tor/ticket/2412) * fix: sighups that caused tor to crash would also crash torctl and arm (https://trac.torproject.org/projects/tor/ticket/1329) * fix: crash when connecting to tor's socks port rather than control port (https://trac.torproject.org/projects/tor/ticket/2580) * fix: shutting down torctl zombie connections to the control port (https://trac.torproject.org/projects/tor/ticket/2812) * fix: moving connection component negotiation into torctl (https://trac.torproject.org/projects/tor/ticket/3409) * fix: all pid resolution was failing on macs, causing much of arm's functionality to fail * fix: dropping straight to lsof on macs to avoid fallback process, which was both lengthy and raised warnings * fix: misparsing circuit paths for Tor < 0.2.2.1 (caught by asn) * fix: pressing enter on an empty connection page caused crash (caught by asn, https://trac.torproject.org/projects/tor/ticket/3128) * fix: edited config entries weren't displaying their new value * fix: ns/desc lookup failures could crash descriptor popup (caught by asn) * fix: autogenerated Nickname field caused a torrc validation false positive * fix: crashing issue when querying locales with an unavailable geoip file * fix: misparsing config option types for some older tor versions * fix: stacktrace from unjoined thread at shutdown * fix: intermediate graphing bounds were either inaccurate or missing * fix: man page typo (caught by tagnaq) * fix: --debug flag broke if config-text unavailable (caught by trogdor) * fix: man page had author's hard coded home rather than ~ (caught by kuhkatz) * fix: dropping remaining addfstr usage from the codebase * fix: indicating when tor's shut down in client mode * fix: miscropping strings that broke on their first word, causing alignment issues in the config panel * fix: cropping whitespace-only strings could crash * fix: display was cropped by an extra cell * fix: utilizing extra horizontal space for the configuration value field if wide * fix: providing a more descriptive controller password prompt (suggestion by weasel) * fix: fallback configuration descriptions weren't being installed (caught by ioerror) * fix: daemons weren't being shut down on keyboard interrupt, causing occasional stacktrace 4/4/11 - version 1.4.2 (r24555) This release chiefly consists of a fully reimplemented connection panel. Besides being a sane, maintainable implementation this includes numerous new features and improvements like full circuit paths, applications involved for local connections, and better type identification. * added: full rewrite of the connection panel, providing: o listing the full paths involved in active circuits o identification of socks, hidden service, and controller applications (arm, vidalia, polipo, etc) o identification of exit connections with the common usage for the port they're using o display of the local -> internal -> external address when room is available (original patch by Fabian Keil) o better accuracy and performance in identifying client and directory connections o marking the uptimes for initial connections (arm only tracks connection uptimes since starting, so these entries are just minimum durations) o lazily loading the initial IP -> fingerprint mappings to improve the startup time o using the circuit-status to disambiguating multiple relays on the same IP address o smarter space utilization, filling in smaller columns if there isn't room for higher priority but larger entries o connection details popup changes: + using the consensus exit policies rather than the longer descriptor versions when available + displaying connection details no longer freezes the rest of the display + detail panel uses the full screen width and is dynamically resizable + more resilient to missing descriptors * change: hiding most tor config values by default (idea by arma) * change: dropping warning suggesting that users set the FetchUselessDescriptors option (suggestion by Sebastian and others) * change: always starting the bandwidth field from zero rather than using the state file total, which only contains the last day's worth of data (thanks to guilhem) * change: suggesting authentication and giving steps for it in the readme (suggestion by Sebastian) * change: caching config display lines, which reduces the CPU usage when scrolling by around 40% * change: added summaries for the remaining tor configuration options * change: using a dedicated enum class rather than tuple sets * fix: torrc validation requires 'GETINFO config-text' which was introduced in Tor verison 0.2.2.7 (caught by Sjon, talion, and torland, https://trac.torproject.org/projects/tor/ticket/2501) * fix: off-by-one issue with the displayed line numbers for torrc errors (caught by Sjon) * fix: bin function wasn't available before python 2.6 (caught by Paul Menzel) * fix: mis-parsing family entries when there's no entry after the comma (caught by StrangeCharm, https://trac.torproject.org/projects/tor/ticket/2414) * fix: preventing SOCKS and CONTROL connections from being expanded (patch by Fabian Keil) * fix: disabling name resolution for application queries to avoid leaking to resolvers (patch by Fabian Keil) * fix: reversing src and dst addresses of SOCKS and CONTROL connections (caught by Fabian Keil) * fix: changing the 'APPLICATION' type to 'SOCKS' since the previous label was too long (caught by Fabian Keil) * fix: crashing issue from unknown relay nicknames (caught by krkhan) * fix: concurrency bug occasionally causing "syshook" stacktraces when shutting down * fix: header panel displayed the wrong IP address if it changed since we first started (https://trac.torproject.org/projects/tor/ticket/2776) * fix: unchecked OSError could cause us to crash when making directories (for instance if there was a permissions issue) * fix: the availability check for bsd resolvers was broken, probably causing resolution to fail for a few seconds on that platform * fix: dropping the pointless 'Log notice stdout' entry provided by config-text queries (https://trac.torproject.org/projects/tor/ticket/2362) * fix: taking DirServer and AlternateDirAuthority into account when determining the directory authorities * fix: consuming a little extra space in the connection panel when scrollbars aren't visible * fix: dropping the deprecated 'features.config.descriptions.persistPath' config option * fix: failed connection attempts to the control port were generating zombie connections (https://trac.torproject.org/projects/tor/ticket/2812) * fix: concurrency bug in joining on the TorCtl thread when tor shut down * fix: the 'startup.dataDirectory' config option was being ignored * fix: recognizing the proper private ip ranges of the 172.* block * fix: missing 'is default' option from config sort ordering * fix (4/4/11, r24562): hidden service parsing issue when there's multiple spaces in the HiddenServicePort opition (caught by Nicolas Pouillard) * fix (4/6/11, r24570): missing new connection components from installations (caught by Anthony Basile) * fix (4/13/11, r24613): failed requests for our flags cause a syntax error (caught by qbi) 1/7/11 - version 1.4.1 (r24054) Platform specific enhancements including BSD compatibility and vastly improved performance on Linux. * added: querying the proc contents when able for tor resource and connection samplings to *greatly* reduce arm's resource usage (many thanks to psutil) * added: vastly improved BSD compatibility, thanks to patches by Fabian Keil o pid resolution via pgrep (all platforms) and sockstat (bsd only) o connection resolution via sockstat (all platforms) and procstat (bsd only) o autodetecting the path prefix for FreeBSD jails * added: displaying summaries of the options on the configuration panel (idea by Sebastian) * added: arm cpu usage to the header panel and logs (with an estimate for system call usages) * added: testing script for checking connection resolution performance, connection dumps, and the glyph demo * added: option to dump arm debug logs (better failsafe option) * change: incrementing the uptime field of the header panel each second * change: centralizing arm resources in ~/.arm (suggested by Sebastian and also thanks to feedback from rransom) * change: using exponential backoff of ps/proc resource resolutions when calls fail or tor isn't running * change: reordered resolvers by order of performance * change: when tor's man page is unavailable falling back to descriptions provided with arm (often the case with tbb) * change: dropping support for graphing of custom ps attributes (feature was never used, kinda pointless, and incompatible with the proc enhancement) * fix: providing proper cpu samplings rather than an average over the life of the process * fix: expanding relative paths for the authentication cookie (mostly a problem for tbb instances) * fix: crashing error when querying hidden service parameters (caught by StrangeCharm, fixed by katmagic and chiiph) * fix: initially built diff differed from rebuilt version since it was missing the pycompat (caught by weasel) * fix: startup script wasn't handling unusual paths, such as with spaces and dashes (caught by weasel) * fix: startup script was forking the final process instead of calling exec (caught by weasel) * fix: log entries weren't being bracketed by date dividers when no scroll bars were visible (caught thanks to twur) * fix: workaround for config-text providing Log entries regardless of if it matches the default (caught thanks to Trystero) * fix: config validation mistakenly thought that Tor stripped spaces from CSV getconf responses (caught by murble) * fix: presenting a text input field with python 2.5 would crash (caught by murble) * fix: reloading torrc contents when a sighup is issued (caught by StrangeCharm) * fix: modifying lsof resolution to work with additional platforms (patch by Fabian Keil) * fix: dropping the locale for internal connections (patch by Fabian Keil) * fix: labeling connections to our socks port as being client connections (caught by Fabian Keil) * fix: skipping internal -> external address translation when the external address is private (caught by Fabian Keil) * fix: suppressing superfluous lsof warnings (patch by Hans Schnehl) * fix: when the pid was unavailable some resolvers failed to work * fix: including udp connection results (needed since exits proxy dns traffic) * fix: crashing issue when nickname was undefined but displayed on the connection panel * fix: concurrency issue caused the first connection resolution to often not have the pid * fix: connection resolution wasn't finding results if tor was running under a different name * fix: brought all Linux connection resolvers into parity (established tcp connections only) * fix: commands with quoted pipes were being mis-parsed by the sysTools' call function * fix (1/11/11, r24064): including platform, python version, and arm/tor configurations in debug dumps * fix (1/11/11, r24064): properly parse the ps field when displaying decimal seconds (patch by Fabian) * fix (1/11/11, r24064): error when initial resource lookups fail (caught by Trystero) * fix (1/12/11, r24075): decimal seconds in the ps uptime field were being misparsed (patch by Fabian) * fix (1/15/11, r24092): adding a --docPath argument to help Gentoo ebuilds (https://bugs.gentoo.org/349792) 11/27/10 - version 1.4.0 (r23873) Introducing a new page for managing tor's configuration, along with several other improvements. * added: editor for the tor configuration, providing: o a simple method for setting config values and saving the new torrc o descriptions and usage information for the tor configuration options, fetched from its man page o color and bolding to indication option categories and if they're default or custom values o sorting by any of the config attributes * change: numerous revisions in preparation for being included in debian, thanks to weasel o moved deb/rpm build resources out of the source repository and added helper scripts o moved the arm install location to /usr/share/arm o purging the autogenerated egg file from the deb build o using temporary file utility for man page compression to avoid potential security issues (thanks to asn) o including dh_pysupport flag so it'll recognize the private python module (thanks to Emilio Pozuelo Monfort) o small revisions to several bits of debian metadata * change: full rewrite of the log panel, providing: o added: scrollbar and scrolling by displayed content rather than line numbers o added: checking for torrc entries that are pointless due to matching the default value o added: validation warning when custom entries are missing from the torrc o added: handling for the multiline torrc entry support that was added in tor 0.2.2.17-alpha o change: simplified and expanded on the config display and validation (performance improvements, human friendly units for torrc corrections, etc) o fix: torrc validation didn't recognize 'second' and 'byte' arguments o fix: scrolling was buggy if comments were being stripped o fix: more helpful messages for validation errors o fix: unnecessary whitespace was being stripped * added: INFO level logging for the arm startup time * change: removing all references to the controller password after we've connected to tor (request by ioerror) * change: using curses.textpad to improve text fields (supports arrow keys, emacs keybindings, etc) * change: revised the arm config interface (simplified and expanded to include maps) * fix: verbose logging was causing the application to freeze due to an n^2 deduplication implementation, disabling this feature for now when it takes too long (caught by NightMonkey) * fix: wasn't loading the settings.cfg if starting starter from the src directory (caught by NightMonkey) * fix: displaying empty conf contents caused crashes when calling math.log10(0) (caught by NightMonkey) * fix: persisting results from scraping the man page to greatly reduce startup time (idea by nickm) * fix: path for the sample armrc was wrong in the man page (caught by weasel) * fix: the arm starter was only executable from the arm directory * fix: not all worker threads were daemons, causing the process to persist in a broken state after exceptions and when quitting via ctrl+c * fix: custom armrcs resulted in the parsing config options being unavailable * fix: rounding error in rendering the scrollbar, causing it to shrink a line when at the bottom * fix: crashing issue when the 'queries.ps.rate' config value was undefined and the stats graph was displayed * fix: making the interface more resilient to being resized while popups are visible * fix: log panel wasn't respecting the prepopulate* log level config options * fix: off by one error when wrapping lines in the log panel * fix (11/30/10, r23882): install script was failing to make the temporary directory for the compressed man page * fix (11/30/10, r23882): a torrc validation log entries had a typo 10/6/10 - version 1.3.7 (r23439) Numerous improvements, most notably being an expanded log panel, installer, and deb/rpm builds. * added: installation/removal scripts and man page (thanks to kaner) * added: scripts and resources for making deb and rpm releases (thanks to ioerror, and also requested by helmut) * added: path prefix option for chroot jails (requested by asn) * added: customizable graph size (requested by voidzero) * added: incremental y-axis measurements to the graph (requested by voidzero) * added: caching for static GETINFO parameter * added: logging for the refresh rate metric * change: full rewrite of the log panel, providing: o dividers for the date, bordering all events that occurred on the same day o hiding duplicate log entries (feature request by asn) o coalescing updates if they're numerous, such as running at the DEBUG runlevel o providing a notice if tor supports event types that arm doesn't, and logging them as the 'UNKNOWN' type o condensing the label for runlevel event ranges further if they're identical for multiple types o options for: + saving logged events to a file, either via snapshots or running persistence + presenting torctl events of arbitrary runlevels + clearing the event log + maximum lines displayed from individual log entries + cropping based on time (requested by voidzero) o numerous performance improvements (for log prepopulation, determining the content length, caching for helper functions, etc) o minor bug fixes including: + added handling for BUILDTIMEOUT_SET events + dropping brackets from label if no events are being logged + merging tor and arm backlogs according to timestamps + regex matches were failing for multiline log entries * change: using PidFile entry to fetch pid if available (idea by arma) * change: dropping irrelevant information from the header when not running as a relay * change: updated torctl version to the current git head release * change: measuring by bits for transfer rates (config can set it back to bytes) * change: home/end keys jump to start/end of all scroll areas (request by dun) * change: trimmed last couple letters off downloaded/uploaded labels (requested by asn) * change: dropping the 'frequentRefresh' parameter in favor of just doing refreshes when there's new graph stats available * fix: shifting bandwidth prepopulation by a sampling interval to account for tor's internal behavior (thanks to voidzero, nickm, arma, and Sebastian) * fix: making rdns resolution disabled by defaut due to possible connection disclosure to upstream resolver (thanks to Sebastian) * fix: skipping bandwidth prepopulation if not running as a relay (caught by arma) * fix: bandwidth stats above the graph weren't getting reset by sighups (caught by voidzero) * fix: config and connection panels were failing to parse a torrc with tabs (caught by voidzero) * fix: remapping torrc aliases so GETCONF calls don't fail (caught by voidzero) * fix: crashing error in bandwidth panel for wide screen displays (caught by cjb) * fix: changing debian arch to all rather than any (suggestion by murb) * fix: had case sensitive check for the torrc logging types (caught by asn) * fix: crashing error when ExitPolicy was undefined (caught by asn) * fix: dumping a stacktrace to /tmp and exiting immediately if exceptions are raised while redrawing * fix: connection panel failed to handle family entries identified by its nickname * fix: race condition between heartbeat detection and getting the first BW event * fix: refreshing after popups to make the interface seem more responsive * fix: crashing and minor display issues if orport was left unset * fix (10/7/10, r23463): crashing from type issue in the graph panel (caught by tomb) 6/7/10 - version 1.3.6 (r22617) Rewrite of the first third of the interface, providing vastly improved performance, maintainability, and a few very nice features. This improved the refresh rate (which is also related to system resource usage) from 30ms to 4ms (an 87% improvement). * added: settings are fetched from an optional armrc (update rates, controller password, caching, runlevels, etc) * added: system tools util providing simplified usage, suppression of leaks to stdout, logging, and optional caching * added: wrapper for accessing TorCtl providing: o client side caching for commonly fetched relay information (fingerprint, descriptor, etc) o singleton accessor and convenience functions, simplifying interface code o wrapper allowing reattachment to new controllers (ie, arm still works if tor's stopped then restarted - still in the works) * change: full rewrite of the header panel, providing: o notice for when tor's disconnected (with time-stamp) o lightweight redrawing (smarter caching and moved updating into a daemon thread) o more graceful handling of tiny displays * change: rewrite of graph panel and related stats, providing: o prepopulation of bandwidth information from the state file if possible o observed and measured bandwidth stats (requested by arma) o graph can be configured to display any numeric ps stat o third option for graphing bounds (restricting to both local minima and maxima) o substantially reduced redraw rate and making use of cached ps parameters (reducing call volume) * fix: preventing 'command unavailable' error messages from going to stdout, which disrupts the display (caught by sid77) * fix: removed -p option due to being a gaping security problem (caught by ioerror and nickm) * fix: crashing issue if TorCtl reports TorCtlClosed before the first refresh (caught by Tas) * fix: preventing the connection panel from initiating or resetting while in blind mode (caught by micah) * fix: ss resolution wasn't specifying the use of numeric ports (caught by data) * fix: parsing error when ExitPolicy is undefined (caught by Paul Menzel) * fix: revised sleep pattern used for threads, greatly reducing the time it takes to quit * fix: bug in defaulting the connection resolver to something predetermined to be available * fix: stopping connection resolution (and related failover message) when tor's stopped * fix: crashing issue when trying to resolve addresses without network connectivity * fix: forgot to join on connection resolver when quitting * fix: revised calculation for effective bandwidth rate to take MaxAdvertisedBandwidth into account 4/8/10 - version 1.3.5 (r22148) Utility and service rewrite (refactored roughly a third of the codebase, including revised APIs and much better documentation). * added: centralized logging utility for handling arm events, simplifying several parts of the interface * added: rewrote connection resolver, including: o fallback support for 'ss' and 'lsof' (requested by dun, John Case, and Christopher Davis) o readjusts resolution rate if calls prove burdensome o ui option for selecting mode of resolution * added: rewrote hostname resolver, including: o optional resolution via socket module (seems worse so disabled by default... pity) o non-blocking thread safety o extra error info * change: revised curses wrapper utilities (plus some hacks of the interface to accommodate it) * fix: issuing resets via RELOAD signal rather than sighup (thanks to Sebastian for pointing this out) * fix: taking into account potential None values when running get_option on arbitrary values (caught by pipe and enki) * fix: crashing problem if use_default_colors() calls failed (caught by sid77) * fix: removed workaround for mysterious torrc validation bug (was accidentally already fixed - thanks to dun for lending a test environment) * fix: size and time labels weren't doing integer truncation (rounding was unintended and frustratingly difficult to get rid of) * fix: hack to prevent log panel from drawing before being positioned * fix: arm crashed if torrc was an empty file * fix: wasn't consistently bolding help keys 3/7/10 - version 1.3.4 (r21852) Weekend bugfix bundle. * added: returned option to reload torrc and added option to issue a sighup * fix: header panel wasn't interpreting multi-line exit policies (caught by dun) * fix: substantial display bug when stripping comments and torrc is bigger than the panel (caught by Paul Menzel) * fix: deb specific hack for estimating the file descriptor limit was broken (caught by Paul Menzel) * fix: skip printing stack trace in case of keyboard interrupt * fix: updated listing of directory authorities (for tor version 0.2.1.24) * fix: several uncaught exceptions when the network consensus couldn't be fetched * fix: torrc comment stripping wasn't removing comments on the same lines as commands * fix: torrc validation was failing under some conditions for CSV values (like ExitPolicy) * fix (3/9/10, r21888): initializing error when processing family connections (caught by dun) * fix (4/7/10, r22134): scrubbing wrong data for inbound connections (caught by waltman) 2/27/10 - version 1.3.3 (r21772) Hiding client/exit information to address privacy concerns and fixes for numerous issues brought up in irc. * added: scrubbing connection details of possible client and exit connections * change: providing file descriptions in README, updated known issues and future plans in TODO * change: added precision for bandwidth cap and burst if uneven values (requested by mete1989) * fix: HiddenService* parameters fetched via a special option (caught by dun, karsten, and grumpy3) * fix: workaround for os specific torrc validation bug - unfortunately haven't managed to repro yet so no fix (caught by grumpy3, Tas, and dun) * fix: checking for python curses bindings at startup (caught by dun) * fix: import error - TorCtl and socket missing from confPanel.py (caught by grumpy3) * fix: showing external ip in connection panel rather than local nat address (caught by mete1989) * fix: raised minimum width at which graph stats are displayed beside label (caught by dun) * fix: wasn't treating "accept *" and "reject *" as catch-all policies * fix: wasn't resizing graph panel properly in case of a sighup 2/14/10 - version 1.3.2 (r21646) Refactoring goodness and bug fixes. * change: revised curses utilities to further simplify interface implementations * change: substantial layout changes (adding util and init packages) and including a copy of the gpl * fix: bug with handing of DST for accounting's 'Time to reset' (patch provided by waltman) * fix: header and connection panels weren't accounting for having ORListenAddress set (caught by waltman) * fix: crashing bug when shrank too much for scrollbars to be drawn * fix: couple system commands weren't redirecting their stderr to /dev/null 2/7/10 - version 1.3.1 (r21580) Had enough of a siesta - getting back into development beginning with a rewrite if the starter. * added: made authentication a little smarter, using PROTOCOLINFO to autodetect authentication type and cookie location * change: made 'blind mode' (disables connection queries) a startup option rather than flag in source (request by Sebastian) * change: all log events (including arm) are now set via character flags, with TorCtl events log as their own toggleable type * change: starting log label with runlevel events, condensing if logging a range * change: simplifying command line parsing via getopt * fix: blind mode now prevents all netstats (including connection counts and halting resolver thread), improving performance 11/29/09 - version 1.3.0 (r21062) Weekend bugfix bundle. * added: most commands can be immediately executed from the help page (feature request by arma) * fix: truncating header's version fields if too long (caught by hexa) * fix: file descriptor dialog now provides a wider variety of error messages in case of failure * fix: offset issue in connections listing when scroll bar was visible * fix: removing family connections from listing when control port is closed * fix: preventing TorCtl startup issues from going to stdout (duplicates warnings) 11/8/09 - version 1.2.2 (r20927) This will be the last update for a while since I'm about to start a new job. * added: including family relays on connections listing * added: file descriptors dialog (stats and scrollable listing) * change: logs warning if torrc fails to load * fix: size and time labels used in torrc are expanded for validation * fix: duplicate torrc entries weren't being detected if not erroneous * fix: crashing issue when cleaning up hostname cache * fix: stretching connection lines to fill full screen 10/21/09 - version 1.2.1 (r20814) Substantial bundle of changes including torrc validation, improved arm event logging, and numerous bug fixes. * added: verifies loaded torrc consistency against tor's actual state (gives warning and providing corrections) * added: checks for torrc entries that are irrelevant due to duplication (gives notices and highlights) * added: log provides TorCtl events (hack... so ugly...) * added: option for logging runlevel events of arm, tor, or both * added: ARM-DEBUG event for netstat query time * added: providing progress bar when resolving a batch of hostnames * change: providing prompt notice when tor's control port is closed * fix: limiting pre-loaded events to this tor instance * fix: limits log entries used to pre-load events (big logs caused issue with startup time) * fix: properly closing TorCtl when quitting (was occasionally screwing up terminal) * fix: at several points TorCtlClosed exceptions were uncaught, causing crashes when tor was closed * fix: netstat and geoip failures were being noisy when tor quits * fix: bug in tracking connection counts if tor quits when paused * fix: sighup wasn't resetting all relevant internal variables * fix: pausing bypassed connection sorting 10/16/09 - version 1.2.0 (r20798) Resolving a few small issues that bugged me. * change: using log file to pre-populate events if available * change: asks for confirmation when quitting * change: provides warning when tor's descriptors won't be updated * change: event log now allows for multi-line messages * fix: occasional crashing error concerning connection cache when paused * fix: issue with tracking connection times when paused or not visible 9/28/09 - version 1.1.3 (r20678) More issues discussed on irc. * fix: made netstat lookups a best-effort service, separate from draw thread (caught by arma and StrangeCharm) * fix: using ps as final fallback if otherwise unable to determine pid (suggested by Sebastian) * fix: appends tor's pwd if torrc path is relative (caught by arma) 9/27/09 - version 1.1.2 (r20674) Few issues discussed on irc. * added: changelog and cleaned up todo documents (requested by arma) * added: option in controller.py to disable connection panel (feature request by Sebastian) * fix: failed to work on osx and bsd due to crashes after failed system calls (caught by Sebastian and Christopher Davis) * fix: reloading static data in bandwidth panel after HUP (caught by hexa) * fix: couple alignment issues with the connection listings 9/23/09 - version 1.1.1 (r20655) Bundle of semi-low hanging fruit, including a few issues discussed on irc. * added: showing extra parameters in connection listings if room's available * added: identifying directory server connections * change: providing an error message if running an incompatible python version (issue spotted by arma) * change: giving arm a version to help in bug reports * change: minor tweak to the wording of a faq entry (requested by Sebastian) * fix: wasn't accounting for RelayBandwidthRate/Burst in effective bandwidth (caught by hexa and arma) * fix: timing issue when shutting down (caught by arma) * fix: couple issues with connection time being tracked when paused * fix: preserving old results when netstat fails 9/6/09 - r20493 Several substantial features (last tasks for arm's todo list). * added: scroll bars for connections listing and event log * added: made log scrollable (feature request by StrangeCharm) * added: regular expression filtering for log (feature request by StrangeCharm) * added: connection uptimes (time since connection was first made) * added: identifying client from server connections and providing popup for client circuits * added: graph for system resource usage (cpu/memory) * change: removed cursor toggling option for connection page * fix: minor display issue when changing event types 8/22/09 - r20354 Several fixes and changes, mostly concerning the graph panel and making better use of screen real estate. * added: labeled the graph's x-axis and reordered the information with changes omitted for small (tty sized) terminals (feature request by StrangeCharm) * added: doubling up contents of header panel in case of wide screens to take advantage of added space * added: exit policy to header if a wide display * change: added precision for bandwidth measurements * change: using "orconn-status" info to eliminated ambiguity in identifying inbound connection fingerprints (clever idea, but had very little impact) * fix: when sighup signal is received reloads torrc and internal state (caught by StrangeCharm) * fix: probable resolution of nasty concurrent bug concerning access to connection cache * fix: minor issues concerning connection panel including graph widths and miscalculating local maxima * fix: short circuits fingerprint cache when looking up localhost descriptor (preventing lookup failures) * fix: minor issues with connection panel and description popups when no connections are available * fix: descriptor popup wasn't determining if the first visible line belonged to an encryption block * fix: made interface more resilient against arbitrary resizing (such as during popups) 8/17/09 - r20331 Work done over this last week. * added: popup for raw consensus description * added: total bandwidth measurement (feature request by StrangeCharm) * added: connection entry for lookup of local consensus data * change: widened graphs to utilize full screen width (clever idea by StrangeCharm) * change: preserving runtime and pid when shutting down * change: few tweaks to the readme * fix: joining on worker daemon threads to exit gracefully (had a noisy race condition) * fix: using BW events to keep connection count graph in sync with bandwidth graph * fix: can now support graphs of multiple sizes 8/8/09 - r20233 Rewrote graph panel so it can handle any real time statistics. * added: option to graph connection counts (feature request by phobos) * added: custom graph bounds (global or local maxima) 8/4/09 Announced the project on the or-talk mailing list today which spurred an interview with Brenno Winter (who works on the cleverly named Little Sister project). The interview is available here. 8/3/09 - r20210 Added start of a faq to the readme in preparation for announcement on or-talk. 7/30/09 - r20198 Work done over the trip. * added: customizable update interval for bandwidth graph (feature request by StrangeCharm) * change: noted new project page in the readme (www.atagar.com/arm) * change: added word wrapping to conf panel * change: added function for custom popup menus * change: logs error message when required event types are unsupported rather than throwing an exception * change: using different screenshot images * fix: resolved issue that caused monitor to think tor was resumed when quit * fix: bug with panel utility's resize detection * fix: resorts connections after NEWDESC and NEWCONSENSUS events * fix: forgetting to to resume monitor at multiple points after a temporary pause * fix: minor refactoring based on suggestions from pylint (unused imports and such) 7/22/09 - r20115 Another small grab bag update. * added: version status to header panel * change: noted "Common *nix commands including: ps, pidof, host, and netstat" among requirements in readme * change: took some tricks from Mike's ConsensusTracker to further improve match rate * fix: type mismatch that greatly diminished fingerprint matching * fix: accidentally used idhash rather than idhex for fingerprints when updating cache with the contents of a NEWDESC event 7/21/09 - r20100 Quick fixes based on discussion on irc. * change: provides warning when geoip database is unavailable (thanks to SwissTorExit and karsten) * fix: missing import for the socket module 7/20/09 - r20096, r20097, r20098 Couple fixes so arm plays nicely in the case of multiple running tor instances. * fix: can now deal with multiple tor instances: checks pid of process with the open control port * fix: if only one tor process is running use that pid (netstat fails if running as a different user 7/19/09 - r20087, r20090 Last substantial feature on my to-do list. * added: connections can be selected to view consensus details (very spiffy!) * added: listing selection is by menu rather than cycling * fix: couple bugs, the most interesting being when netstat can't resolve a connections listing (spotted by phobos) 7/18/09 - r20078, r20079 Miscellaneous fix and feature batch. * added: relay's flags to the header * added: listing by relay nickname * added: additional event aliases and option for NEWCONSENSUS * added (phobos): screenshot of arm in action so people can see what it looks like * change: use constant "Listing" label for sorting rather than current view * change: removed 'reload torrc' option (deceptive and useless) * fix: updates cached consensus mappings with NEWDESC and NEWCONSENSUS events 7/14/09 - r20016 Resolved a few quick bugs: * fix: added fingerprint lookup cache to resolve substantial performance issue * fix: hostname resolution progress accounts for newly added entries (no more negative progress) * fix: resolved bug that prevented arm from starting if too small * fix: ordering issue when sorting unresolved ip addresses 7/11/09 - r19975 Connections panel can now list by IP, hostname, or fingerprint: reverse resolution was easy, but comparing three different implementations and making it non-blocking with a pausable thread-pool backend? Not so much. 7/8/09 - r19953, r19957 Just got back from Toorcamp. Preliminary connection page and miscellaneous additions. * added: basic connection listing page (using netstat results) * added: connection listing now has user configurable sort functionality (it's actually pretty spiffy: supports secondary and tertiary sub-keys) * added: 'addfstr' to util which allows for embedded formatting tags (VERY helpful) * added: help shows page's current settings * added: made bandwidth panel toggleable * added: avg bandwidth to bottom of panel * fix: prevented header from being paused on page change * fix: prevented bandwidth accounting events from being lost when paused 6/14/09 - r19716 Decently big batch of feature additions and bug fixes. * added: second page that presents torrc with syntax highlighting, optional comment stripping, etc * added: ps sampling (cpu/memory usage, pid, and uptime) * added: help popup with page controls * fix: corrected issue that caused periodic refreshing to fail * fix: accounting reset time takes into account DST * fix: make accounting input and header pausable 6/10/09 - r19708, r19709 Couple quick changes. * change: removed '--path-to-torctl' startup option * fix: accounting 'time to reset' now includes gmt to local conversion 6/7/09 - r19646, r19655, r19656 Couple features. * added: svn external inclusion of TorCtl * added: bandwidth panel now displays accounting data if set 6/6/09 - r19636, r19637 Quick change based on discussion on irc. * added: command line argument to specify location of TorCtl without changing Python path first (feature request by phobos) 6/5/09 - r19629 Substantial refactoring changes. * change: switched from a functional to an OO implementation which further simplified the controller: as an added plus this should make adding additional 'pages' trivial * change: offloaded resizing to the curses wrapper * fix: dealt with another curses wtf bug where panels wouldn't repaint unless done in a specific order 6/4/09 - r19626 Tested and corrected formatting for all event types except STREAM and STREAM_BW (not sure how to make those occur...). 6/2/09 - r19615, r19619, r19620 Introduced layer of abstraction from curses, simplifying its use and greatly improving reliability. * added: introduced wrapper to hide curses ugliness which greatly simplified interface code * added: notice when relay's been silent for five seconds (based on BW events so probably due to Tor being closed), another idea by karsten * changed: unchecked events have stubs to present information and provide debugging information in case of type mismatch * fix: all problems with resizing: it's now rock solid 5/29/09 - r19580, r19594 Fixes for several rather sinister reliability problems: * added: allows logged events to be changed while running (suggested feature by karsten) and experimenting with a more modular design * fix: added non-blocking reentrant locks to fix concurrency errors that caused chaotic terminal glitches (such as switching to a Chinese character set) * fix: now fully handles resizing (including vertical) * fix: using new capabilities in TorCtl including cookie authentication and disabling logging * fix: bandwidth graph bug when paused * fix: occasionally refreshes static content in case of graphical hiccups * fix: added workaround for obscure curses caching bug that prevented portions of the screen from being redrawn * fix: bug preventing initialization if too small 5/25/09 - r19567 Few small tweaks including: * added: tiny shell script to alias starting * added: more informative error message if TorCtl isn't available * change: defaultly logged events * change: make inclusion of 'unknown' events toggleable 5/24/09 - r19548, r19549, r19550, r19551 Initial version of arm (terminal relay status monitor). Repository set up by arma. * fix: bug concerning undefined exit policy * fix: resolved issue that prevented monitor from functioning in terminals without curs_set support