Class: Rex::IO::BidirectionalPipe
Constant Summary
Ui::Text::Color::AnsiAttributes
Instance Attribute Summary collapse
#config, #eof, #prompt_char
Instance Method Summary
collapse
#auto_color, #disable_color, #enable_color, #reset_color, #reset_tab_completion, #update_prompt
#ansi, #colorize, #do_colorize, #reset_color, #substitute_colors
Constructor Details
Returns a new instance of BidirectionalPipe.
10
11
12
13
14
15
16
17
18
19
|
# 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
self.output = self
self.input = self
end
|
Instance Attribute Details
Wrappers for shell methods
132
133
134
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 132
def input
@input
end
|
#output ⇒ Object
Wrappers for shell methods
132
133
134
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 132
def output
@output
end
|
#prompt ⇒ Object
Wrappers for shell methods
132
133
134
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 132
def prompt
@prompt
end
|
Instance Method Details
#close ⇒ Object
Wrappers for the pipe_input methods
104
105
106
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 104
def close
@pipe_input.close
end
|
#create_subscriber(id = nil) ⇒ Object
33
34
35
36
37
|
# 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) ⇒ Object
39
40
41
42
|
# 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? ⇒ Boolean
120
121
122
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 120
def eof?
@pipe_input.eof?
end
|
#fd ⇒ Object
124
125
126
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 124
def fd
@pipe_input.fd
end
|
#flush ⇒ Object
93
94
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 93
def flush
end
|
#gets ⇒ Object
116
117
118
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 116
def gets
@pipe_input.gets
end
|
#has_subscriber?(id) ⇒ Boolean
29
30
31
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 29
def has_subscriber?(id)
@subscribers_out.has_key?(id)
end
|
#intrinsic_shell? ⇒ Boolean
134
135
136
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 134
def intrinsic_shell?
true
end
|
#pgets ⇒ Object
146
147
148
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 146
def pgets
gets
end
|
21
22
23
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 21
def pipe_input
@pipe_input
end
|
#print(msg = '') ⇒ Object
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/rex/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
raise e
end
}
msg
end
|
#print_debug(msg = '') ⇒ Object
89
90
91
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 89
def print_debug(msg='')
print_line('[!] ' + msg)
end
|
#print_error(msg = '') ⇒ Object
77
78
79
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 77
def print_error(msg='')
print_line('[-] ' + msg)
end
|
#print_good(msg = '') ⇒ Object
85
86
87
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 85
def print_good(msg='')
print_line('[+] ' + msg)
end
|
#print_line(msg = '') ⇒ Object
81
82
83
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 81
def print_line(msg='')
print(msg + "\n")
end
|
#print_status(msg = '') ⇒ Object
96
97
98
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 96
def print_status(msg='')
print_line('[*] ' + msg)
end
|
#put(msg) ⇒ Object
112
113
114
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 112
def put(msg)
@pipe_input.put(msg)
end
|
#read_subscriber(id) ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
|
# 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) ⇒ Object
44
45
46
47
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 44
def remove_subscriber(id)
@subscribers_out.delete(id)
@subscribers_ref.delete(id)
end
|
#supports_color? ⇒ Boolean
142
143
144
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 142
def supports_color?
false
end
|
#supports_readline ⇒ Object
138
139
140
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 138
def supports_readline
false
end
|
#sysread(len = 1) ⇒ Object
108
109
110
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 108
def sysread(len = 1)
@pipe_input.sysread(len)
end
|
49
50
51
|
# File 'lib/rex/io/bidirectional_pipe.rb', line 49
def write_input(buf)
@pipe_input.put(buf)
end
|