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/rex/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/rex/io/bidirectional_pipe.rb, line 25
def close
  @pipe_input.close
end
create_subscriber(id=nil) click to toggle source
# File lib/rex/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/rex/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/rex/io/bidirectional_pipe.rb, line 120
def eof?
  @pipe_input.eof?
end
fd() click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 124
def fd
  @pipe_input.fd
end
flush() click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 89
def flush
end
gets() click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 116
def gets
  @pipe_input.gets
end
has_subscriber?(id) click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 29
def has_subscriber?(id)
  @subscribers_out.has_key?(id)
end
intrinsic_shell?() click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 134
def intrinsic_shell?
  true
end
pgets() click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 146
def pgets
  gets
end
pipe_input() click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 21
def pipe_input
  @pipe_input
end
print(msg='') click to toggle source
print_error(msg='') click to toggle source
print_good(msg='') click to toggle source
print_line(msg='') click to toggle source
print_status(msg='') click to toggle source
print_warning(msg='') click to toggle source
put(msg) click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 112
def put(msg)
  @pipe_input.put(msg)
end
read_subscriber(id) click to toggle source
# File lib/rex/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/rex/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/rex/io/bidirectional_pipe.rb, line 142
def supports_color?
  false
end
supports_readline() click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 138
def supports_readline
  false
end
sysread(len = 1) click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 108
def sysread(len = 1)
  @pipe_input.sysread(len)
end
write_input(buf) click to toggle source
# File lib/rex/io/bidirectional_pipe.rb, line 49
def write_input(buf)
  @pipe_input.put(buf)
end