mirror of
https://github.com/chipsec/chipsec
synced 2026-06-08 13:31:00 +00:00
37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from flask import Flask, render_template, request
|
|
from werkzeug.utils import secure_filename
|
|
from logging import getLogger
|
|
from chipsec_parser import parse_chipsec_xml
|
|
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
|
import tempfile
|
|
import os
|
|
import random
|
|
from typing import Any, Dict, List, Tuple
|
|
|
|
app = Flask(__name__)
|
|
logger = getLogger("ChipsecParser")
|
|
env = Environment(loader=FileSystemLoader('templates'),autoescape=select_autoescape(['html']))
|
|
upload_template = env.get_template("report.html")
|
|
|
|
def parse_file(f: request) -> Tuple[Dict[Any, Any], List[Any]]:
|
|
save_path = os.path.join(tempfile.gettempdir(),secure_filename(f.filename) + str(random.randint(2**63,2**64)))
|
|
f.save(save_path)
|
|
suite_data, case_data = parse_chipsec_xml(save_path)
|
|
os.unlink(save_path)
|
|
return suite_data, case_data
|
|
|
|
|
|
@app.route('/', methods=['GET', 'POST'])
|
|
def upload() -> render_template:
|
|
if request.method == 'POST':
|
|
f = request.files['file']
|
|
suite_data, case_data = parse_file(f)
|
|
return render_template('report.html',suite=suite_data, cases=case_data)
|
|
|
|
else:
|
|
return render_template('upload.html')
|
|
|
|
@app.route("/healthz")
|
|
def healthz() -> Tuple[str, int]:
|
|
return "{}", 200
|