Added first revision of our renderers. Needs a lot more work, but will start producing nicer output.

git-svn-id: https://beef.googlecode.com/svn/trunk@967 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9
This commit is contained in:
passbe
2011-05-11 23:57:05 +00:00
parent 02de9133c2
commit 129a9caff6
6 changed files with 87 additions and 4 deletions

View File

@@ -22,6 +22,9 @@ require 'term/ansicolor'
# Include the filters
require 'core/filters'
# Include the filters
require 'core/renderers'
# Include our patches for ruby and gems
require 'core/ruby'

11
core/renderers.rb Normal file
View File

@@ -0,0 +1,11 @@
module BeEF
module Renderers
end
end
# Include the filters
require 'core/renderers/html'
require 'core/renderers/html/basic'

20
core/renderers/html.rb Normal file
View File

@@ -0,0 +1,20 @@
module BeEF
module Renderers
module HTML
#fires the HTML render function, attempting to match the appropriate data type
def self.render(cat, type, data)
kclass = self.const_get(cat.capitalize)
if kclass
if kclass.respond_to?(type.downcase)
return kclass.send type.downcase.to_sym, data
else
return kclass.send :string, data
end
end
return data.to_s
end
end
end
end

View File

@@ -0,0 +1,40 @@
module BeEF
module Renderers
module HTML
module Basic
#renders basic string
def self.string(d)
return '<p>'+d.to_s+'</p>'
end
#renders list of strings from an array
def self.array(d)
if d.kind_of?(Array)
html = '<ul>'
d.each{|v|
html += "<li>#{v.to_s}</li>"
}
return html+'</ul>'
end
print_debug "BeEF::Renderers::HTML::Basic.array encountered a non-array data type"
return self.string(d)
end
#renders list of strings from a hash with key values
def self.hash(d)
if d.kind_of?(Hash)
html = '<ul>'
d.each{|k,v|
html += "<li><b>#{k.to_s}</b>: #{v.to_s}</li>"
}
return html+'</ul>'
end
print_debug "BeEF::Renderers::HTML::Basic.hash encountered a non-hash data type"
return self.string(d)
end
end
end
end
end

View File

@@ -513,8 +513,16 @@ class Modules < BeEF::Extension::AdminUI::HttpController
resultsdb = BeEF::Core::Models::Result.all(:command_id => command_id)
raise WEBrick::HTTPStatus::BadRequest, "Command id result is nil" if resultsdb.nil?
resultsdb.each{ |result| results.push({'date' => result.date, 'data' => JSON.parse(result.data)}) }
resultsdb.each{ |result|
begin
r = JSON.parse(result.data)
results.push({'date' => result.date, 'data' => BeEF::Renderers::HTML.render('basic', r['type'], r['data'])})
rescue JSON::ParserError => e
print_debug "Invalid JSON on command_id: #{command_id}"
print_error "Unable to JSON parse result set from database"
end
}
@body = {
'success' => 'true',
'command_module_name' => command_module.name,

View File

@@ -243,7 +243,7 @@ function genExisingExploitPanel(panel, command_id, zombie, sb) {
sortable: false,
renderer: function(value, p, record) {
html = String.format("<div style='color:#385F95;text-align:right;'>{0}</div>", value);
html += '<p>';
/*html += '<p>';
for(index in record.data.data) {
result = record.data.data[index];
@@ -252,7 +252,8 @@ function genExisingExploitPanel(panel, command_id, zombie, sb) {
html += String.format('<b>{0}</b>: {1}<br>', index, result);
}
html += '</p>';
html += '</p>';*/
html += record.data.data;
return html;
}
}]