62 lines
1.5 KiB
Ruby
62 lines
1.5 KiB
Ruby
module Msf
|
|
module Ui
|
|
module Gtk2
|
|
|
|
class MsfDialog
|
|
|
|
##
|
|
# Class for the payload rendering
|
|
# title: the payload refname
|
|
# payload: the generated payload
|
|
##
|
|
class Payload < Msf::Ui::Gtk2::SkeletonView
|
|
def initialize(title, payload)
|
|
@buffer = Gtk::TextBuffer.new
|
|
super(title, @buffer)
|
|
|
|
colorize()
|
|
display(payload)
|
|
|
|
self.default_response = Gtk::Dialog::RESPONSE_NONE
|
|
show_all and run
|
|
destroy
|
|
end
|
|
|
|
#
|
|
# Display the generated payload with color
|
|
#
|
|
def display(payload)
|
|
filter = /^\#/
|
|
@buffer.delete(*@buffer.bounds)
|
|
start = @buffer.get_iter_at_offset(0)
|
|
|
|
payload.each do |line|
|
|
if ( line.match(filter) )
|
|
@buffer.insert_with_tags(start, line, 'comments')
|
|
else
|
|
@buffer.insert_with_tags(start, line, '_')
|
|
end
|
|
end
|
|
end
|
|
|
|
#
|
|
# Create tags for the syntax color
|
|
#
|
|
def colorize
|
|
@buffer.create_tag("comments",
|
|
:'foreground' => 'RosyBrown',
|
|
:'weight' => Pango::FontDescription::WEIGHT_BOLD
|
|
)
|
|
|
|
@buffer.create_tag("_",
|
|
:'weight' => Pango::FontDescription::WEIGHT_BOLD
|
|
)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|