mirror of
https://github.com/volatilityfoundation/volatility
synced 2026-06-08 18:04:46 +00:00
48 lines
2.2 KiB
Python
48 lines
2.2 KiB
Python
import StringIO
|
|
from volatility.renderers.basic import Renderer
|
|
import json
|
|
|
|
__author__ = 'mike'
|
|
|
|
class HTMLRenderer(Renderer):
|
|
|
|
def __init__(self):
|
|
pass
|
|
|
|
def render(self, outfd, data):
|
|
"""Renders the treegrid to HTML"""
|
|
column_titles = ", \n".join(["{ \"title\": \"" + column.name + "\"}" for column in data.columns])
|
|
json = StringIO.StringIO()
|
|
JSONRenderer().render(json, data)
|
|
outfd.write("""<html>
|
|
<head>
|
|
<link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.2/css/jquery.dataTables.css">
|
|
<script type="text/javascript" language="javascript" src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
|
|
<script type="text/javascript" language="javascript" src="http://cdn.datatables.net/1.10.2/js/jquery.dataTables.min.js"></script>
|
|
<script type="text/javascript" class="init">
|
|
var dataSet = """ + json.getvalue() + """;
|
|
$(document).ready(function() {
|
|
$('#page').html( '<table cellpadding="0" cellspacing="0" border="0" class="display" id="data"></table>' );
|
|
$('#data').dataTable( {
|
|
"data": dataSet['rows'],
|
|
"columns": [""" + column_titles + """]
|
|
} );
|
|
} );
|
|
|
|
</script>
|
|
</head>
|
|
<body><div id="page"></div></body></html>""" + "\n")
|
|
|
|
class JSONRenderer(Renderer):
|
|
def render_row(self, node, accumulator):
|
|
return accumulator + [node.values]
|
|
|
|
def render(self, outfd, data):
|
|
"""Renderers a treegrid as columns/row items in JSON format"""
|
|
# TODO: Implement tree structure in JSON
|
|
if data.max_depth() > 1:
|
|
raise NotImplementedError("JSON output for trees has not yet been implemented")
|
|
# TODO: Output (basic) type information in JSON
|
|
json_input = {"columns": [column.name for column in data.columns], "rows": data.visit(None, self.render_row, [])}
|
|
return outfd.write(json.dumps(json_input))
|