22
33class Net ::SSH ::CommandStream
44
5- attr_accessor :channel , :thread , :error , :ssh , :session
5+ attr_accessor :channel , :thread , :error , :ssh , :session , :logger
66 attr_accessor :lsock , :rsock , :monitor
77
88 module PeerInfo
@@ -13,9 +13,8 @@ module PeerInfo
1313
1414 def shell_requested ( channel , success )
1515 unless success
16- error = Net ::SSH ::ChannelRequestFailed , 'Shell/exec channel request failed'
16+ error = Net ::SSH ::ChannelRequestFailed . new ( 'Shell/exec channel request failed' )
1717 handle_error ( error : error )
18- raise error
1918 end
2019
2120 self . channel = channel
@@ -42,8 +41,9 @@ def shell_requested(channel, success)
4241 end
4342 end
4443
45- def initialize ( ssh , cmd = nil , pty : false , cleanup : false , session : nil )
44+ def initialize ( ssh , cmd = nil , pty : false , cleanup : false , session : nil , logger : nil )
4645 self . session = session
46+ self . logger = logger
4747 self . lsock , self . rsock = Rex ::Socket . tcp_socket_pair ( )
4848 self . lsock . extend ( Rex ::IO ::Stream )
4949 self . lsock . extend ( PeerInfo )
@@ -79,7 +79,6 @@ def initialize(ssh, cmd = nil, pty: false, cleanup: false, session: nil)
7979 channel . on_open_failed do |ch , code , desc |
8080 error = Net ::SSH ::ChannelOpenFailed . new ( code , 'Session channel open failed' )
8181 handle_error ( error : error )
82- raise error
8382 end
8483
8584 self . monitor = Thread . new do
@@ -109,7 +108,6 @@ def initialize(ssh, cmd = nil, pty: false, cleanup: false, session: nil)
109108 rssh . close
110109 end
111110 end
112- self . thread . abort_on_exception = true
113111 rescue ::StandardError => e
114112 # XXX: This won't be set UNTIL there's a failure from a thread
115113 handle_error ( error : e )
@@ -129,6 +127,11 @@ def verify_channel
129127
130128 def handle_error ( error : nil )
131129 self . error = error if error
130+
131+ if self . logger
132+ self . logger . print_error ( "SSH Command Stream encountered an error: #{ self . error } (Server Version: #{ self . ssh . transport . server_version . version } )" )
133+ end
134+
132135 cleanup
133136 end
134137
0 commit comments