Land #7739, async output revert until fixed
commit
445af29d07
|
@ -133,16 +133,27 @@ begin
|
||||||
private
|
private
|
||||||
|
|
||||||
def readline_with_output(prompt, add_history=false)
|
def readline_with_output(prompt, add_history=false)
|
||||||
# rb-readlines's Readline.readline hardcodes the input and output to $stdin and $stdout, which means setting
|
# rb-readlines's Readline.readline hardcodes the input and output to
|
||||||
# `Readline.input` or `Readline.ouput` has no effect when running `Readline.readline` with rb-readline, so need
|
# $stdin and $stdout, which means setting `Readline.input` or
|
||||||
# to reimplement []`Readline.readline`](https://github.com/luislavena/rb-readline/blob/ce4908dae45dbcae90a6e42e3710b8c3a1f2cd64/lib/readline.rb#L36-L58)
|
# `Readline.ouput` has no effect when running `Readline.readline` with
|
||||||
# for rb-readline to support setting input and output. Output needs to be set so that colorization works for the
|
# rb-readline, so need to reimplement
|
||||||
# prompt on Windows.
|
# []`Readline.readline`](https://github.com/luislavena/rb-readline/blob/ce4908dae45dbcae90a6e42e3710b8c3a1f2cd64/lib/readline.rb#L36-L58)
|
||||||
|
# for rb-readline to support setting input and output. Output needs to
|
||||||
|
# be set so that colorization works for the prompt on Windows.
|
||||||
self.prompt = prompt
|
self.prompt = prompt
|
||||||
|
|
||||||
|
# TODO: there are unhandled quirks in async output buffering that
|
||||||
|
# we have not solved yet, for instance when loading meterpreter
|
||||||
|
# extensions, supporting Windows, printing output from commands, etc.
|
||||||
|
# Remove this guard when issues are resolved.
|
||||||
|
=begin
|
||||||
reset_sequence = "\n\001\r\033[K\002"
|
reset_sequence = "\n\001\r\033[K\002"
|
||||||
if (/mingw/ =~ RUBY_PLATFORM)
|
if (/mingw/ =~ RUBY_PLATFORM)
|
||||||
reset_sequence = ""
|
reset_sequence = ""
|
||||||
end
|
end
|
||||||
|
=end
|
||||||
|
reset_sequence = ""
|
||||||
|
|
||||||
if defined? RbReadline
|
if defined? RbReadline
|
||||||
RbReadline.rl_instream = fd
|
RbReadline.rl_instream = fd
|
||||||
RbReadline.rl_outstream = output
|
RbReadline.rl_outstream = output
|
||||||
|
|
|
@ -58,6 +58,11 @@ class Output::Stdio < Rex::Ui::Text::Output
|
||||||
# Use ANSI Control chars to reset prompt position for async output
|
# Use ANSI Control chars to reset prompt position for async output
|
||||||
# SEE https://github.com/rapid7/metasploit-framework/pull/7570
|
# SEE https://github.com/rapid7/metasploit-framework/pull/7570
|
||||||
def print_line(msg = '')
|
def print_line(msg = '')
|
||||||
|
# TODO: there are unhandled quirks in async output buffering that
|
||||||
|
# we have not solved yet, for instance when loading meterpreter
|
||||||
|
# extensions, supporting Windows, printing output from commands, etc.
|
||||||
|
# Remove this guard when issues are resolved.
|
||||||
|
=begin
|
||||||
if (/mingw/ =~ RUBY_PLATFORM)
|
if (/mingw/ =~ RUBY_PLATFORM)
|
||||||
print(msg + "\n")
|
print(msg + "\n")
|
||||||
return
|
return
|
||||||
|
@ -70,6 +75,9 @@ class Output::Stdio < Rex::Ui::Text::Output
|
||||||
print(input.line_buffer.tr("\001\002", ''))
|
print(input.line_buffer.tr("\001\002", ''))
|
||||||
print("\033[u\033[B") # Restore cursor, move down one line
|
print("\033[u\033[B") # Restore cursor, move down one line
|
||||||
end
|
end
|
||||||
|
=end
|
||||||
|
|
||||||
|
print(msg + "\n")
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue