Fix several problems with rbssh

Review Request #2105 — Created Feb. 6, 2011 and submitted

Information

Review Board
release-1.5.x

Reviewers

This fixes several problems with rbssh on Windows and Linux.

rbssh had problems with some types of repositories. Mostly, they expected
certain command line options to be available that weren't. We now support
-q/--quiet, -s (for subsystem selection), and -V (print version).

In general, the rbssh code has been cleaned up to be a bit better structured
and less hacky. We have classes for Posix and Windows, rather than
individual functions. We also now tell OptionParser to leave behind any
unknown arguments so that we can pass them to the command to run on the
other server.

rbssh now supports a shell and sftp. If a valid key or password wasn't
available during authentication, we prompt for a new password. We do this
three times before giving up.

On Windows, the process was hanging around forever instead of properly
shutting down. We now let stdin processing drive in the main thread and
then, upon closing, we trigger a shutdown of the writer, which should
close the other end and shut down the process.

This also improves our logging situation by using the standard Python
logging module instead of our own debug() function.
With the other changes I have up, SSH worked on both Windows and Linux
for all supported types of repositories.
david
  1. You have a typo in the second sentence of your description.
  2. reviewboard/cmdline/rbssh.py (Diff revision 1)
     
     
    Can you either eliminate this or annotate it with a real comment? Same below.
  3. reviewboard/cmdline/rbssh.py (Diff revision 1)
     
     
    This shouldn't be here, should it?
  4. 
      
chipx86
Review request changed
Change Summary:
* Removed some commented out logging statements.
* Fixed a typo in the change description.
* Removed the "EOF" output.
Description:
   

This fixes several problems with rbssh on Windows and Linux.

   
~  

rbssh had problems wit some types of repositories. Mostly, they expected

  ~

rbssh had problems with some types of repositories. Mostly, they expected

    certain command line options to be available that weren't. We now support
    -q/--quiet, -s (for subsystem selection), and -V (print version).

   
   

In general, the rbssh code has been cleaned up to be a bit better structured

    and less hacky. We have classes for Posix and Windows, rather than
    individual functions. We also now tell OptionParser to leave behind any
    unknown arguments so that we can pass them to the command to run on the
    other server.

   
   

rbssh now supports a shell and sftp. If a valid key or password wasn't

    available during authentication, we prompt for a new password. We do this
    three times before giving up.

   
   

On Windows, the process was hanging around forever instead of properly

    shutting down. We now let stdin processing drive in the main thread and
    then, upon closing, we trigger a shutdown of the writer, which should
    close the other end and shut down the process.

   
   

This also improves our logging situation by using the standard Python

    logging module instead of our own debug() function.

david
  1. Ship It!
  2.