def report(): # Create LogParser instance for this report logparser = LogParser(gi, KEYWORDS) filename = request.args.get("filename") if "/" in filename: # Prevent directory traversal attacks return "Go away!" path = os.path.join("/home/malyhass/log-parser", filename) logparser.parse_file( gzip.open(path) if path.endswith(".gz") else open(path)) return env.get_template("report.html").render({ "map_svg": render_map(open(os.path.join(PROJECT_ROOT, "templates", "map.svg")), logparser.countries), "humanize": humanize.naturalsize, "keyword_hits": sorted(logparser.d.items(), key=lambda i: i[1], reverse=True), "url_hits": sorted(logparser.urls.items(), key=lambda i: i[1], reverse=True), "user_bytes": sorted(logparser.user_bytes.items(), key=lambda item: item[1], reverse=True) })
def report(): # Create LogParser instance for this report logparser = LogParser(gi, KEYWORDS) filename = request.args.get("filename") if "/" in filename: # Prevent directory traversal attacks return "Go away!" path = os.path.join("/home/ebarrier/Documents/Python/logs", filename) logparser.parse_file(gzip.open(path) if path.endswith(".gz") else open(path)) return env.get_template("report.html").render({ "map_svg": render_map(open(os.path.join(PROJECT_ROOT, "templates", "map.svg")), logparser.countries), "humanize": humanize.naturalsize, "keyword_hits": sorted(logparser.d.items(), key=lambda i:i[1], reverse=True), "url_hits": sorted(logparser.urls.items(), key=lambda i:i[1], reverse=True), "user_bytes": sorted(logparser.user_bytes.items(), key = lambda item:item[1], reverse=True) })
elif bytes < 1024**3: return "%.1f MB" % (bytes / 1024.0**2) else: return "%.1f GB" % (bytes / 1024.0**3) from jinja2 import Environment, FileSystemLoader # This it the templating engine we will use env = Environment(loader=FileSystemLoader( os.path.join(PROJECT_ROOT, "templates")), trim_blocks=True) import codecs rendered_map = render_map( open(os.path.join(PROJECT_ROOT, 'templates', 'map.svg')), logparser.countries) context = { "map_svg": rendered_map, "humanize": humanize, # This is why we use locals() :D "keyword_hits": sorted(logparser.d.items(), key=lambda i: i[1], reverse=True), "url_hits": sorted(logparser.urls.items(), key=lambda i: i[1], reverse=True), "user_bytes": sorted(logparser.user_bytes.items(), key=lambda item: item[1], reverse=True),
elif bytes < 1024 ** 3: return "%.1f MB" % (bytes / 1024.0 ** 2) else: return "%.1f GB" % (bytes / 1024.0 ** 3) from jinja2 import Environment, FileSystemLoader # This it the templating engine we will use env = Environment( loader=FileSystemLoader(os.path.join(PROJECT_ROOT, "templates")), trim_blocks=True) import codecs rendered_map = render_map( open(os.path.join(PROJECT_ROOT, 'templates', 'map.svg')), logparser.countries) context = { "map_svg": rendered_map, "humanize": humanize, # This is why we use locals() :D "keyword_hits": sorted(logparser.d.items(), key=lambda i:i[1], reverse=True), "url_hits": sorted(logparser.urls.items(), key=lambda i:i[1], reverse=True), "user_bytes": sorted(logparser.user_bytes.items(), key = lambda item:item[1], reverse=True), } with codecs.open(os.path.join(args.output, "report.html"), "w", encoding="utf-8") as fh: fh.write(env.get_template("report.html").render(context))