class Rex::IO::BidirectionalPipe
Attributes
input[RW]
Wrappers for shell methods
output[RW]
Wrappers for shell methods
prompt[RW]
Wrappers for shell methods
Public Class Methods
new()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 10 def initialize @subscribers_out = {} @subscribers_ref = {} @subscribers_idx = 0 @pipe_input = Rex::Ui::Text::Input::Buffer.new # We are the shell, the input, and the output self.output = self self.input = self end
Public Instance Methods
close()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 25 def close @pipe_input.close end
create_subscriber(id=nil)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 33 def create_subscriber(id=nil) id ||= (@subscribers_idx += 1).to_s @subscribers_out[id] = Rex::Ui::Text::Output::Buffer.new return id end
create_subscriber_proc(id=nil, &block)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 39 def create_subscriber_proc(id=nil, &block) id = create_subscriber(id) @subscribers_ref[id] = block end
eof?()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 124 def eof? @pipe_input.eof? end
fd()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 128 def fd @pipe_input.fd end
flush()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 93 def flush end
gets()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 120 def gets @pipe_input.gets end
has_subscriber?(id)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 29 def has_subscriber?(id) @subscribers_out.has_key?(id) end
intrinsic_shell?()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 138 def intrinsic_shell? true end
pgets()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 150 def pgets gets end
pipe_input()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 21 def pipe_input @pipe_input end
print(msg='')
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 65 def print(msg='') @subscribers_out.each_pair { |id, buf| begin @subscribers_ref[id] ? @subscribers_ref[id].call(msg) : buf.print(msg) rescue ::Exception => e # $stderr.puts "Error handling subscriber #{id}: #{e} #{e.backtrace.inspect}" raise e end } msg end
print_debug(msg='')
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 89 def print_debug(msg='') print_line('[!] ' + msg) end
print_error(msg='')
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 77 def print_error(msg='') print_line('[-] ' + msg) end
print_good(msg='')
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 85 def print_good(msg='') print_line('[+] ' + msg) end
print_line(msg='')
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 81 def print_line(msg='') print(msg + "\n") end
print_status(msg='')
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 96 def print_status(msg='') print_line('[*] ' + msg) end
print_warning(msg='')
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 100 def print_warning(msg='') print_line('[!] ' + msg) end
put(msg)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 116 def put(msg) @pipe_input.put(msg) end
read_subscriber(id)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 53 def read_subscriber(id) output = @subscribers_out[id] return '' if output.nil? buf = output.buf output.reset buf end
remove_subscriber(id)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 44 def remove_subscriber(id) @subscribers_out.delete(id) @subscribers_ref.delete(id) end
supports_color?()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 146 def supports_color? false end
supports_readline()
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 142 def supports_readline false end
sysread(len = 1)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 112 def sysread(len = 1) @pipe_input.sysread(len) end
write_input(buf)
click to toggle source
# File lib/ssl_scan/io/bidirectional_pipe.rb, line 49 def write_input(buf) @pipe_input.put(buf) end