diff --git a/contrib/report_builders/html_report_builder.py b/contrib/report_builders/html_report_builder.py index f3d2f389274e8097c94c11fffb7277fdc6080b1d..8b41679bc3a07a054d7ecbd37207c8da677070ea 100644 --- a/contrib/report_builders/html_report_builder.py +++ b/contrib/report_builders/html_report_builder.py @@ -8,26 +8,28 @@ from contrib.descriptions import VulnDescriptionProvider from contrib.report_builders import JsonReportBuilder -class Severity: - def __init__(self, severity): - self.level = severity - self.num_level = 0 +class ReportInfo: + def __init__(self, severity='SeverityNone', is_empty=False): + self.severity = severity + self.num_severity = 0 - if severity == 'Low': - self.num_level = 1 + self.empty = is_empty - if severity == 'Medium': - self.num_level = 2 + if severity == 'SeverityLow': + self.num_severity = 1 - if severity == 'High': - self.num_level = 3 + if severity == 'SeverityMedium': + self.num_severity = 2 + + if severity == 'SeverityHigh': + self.num_severity = 3 def toJSON(self): return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True, indent=4) def __lt__(self, other): - return self.num_level < other.num_level + return self.num_severity < other.num_severity class JinjaHtmlReportBuilder(JsonReportBuilder): @@ -40,16 +42,20 @@ class JinjaHtmlReportBuilder(JsonReportBuilder): def build(self) -> Any: json_data = self._buffer - max_severity = Severity('Empty') + report_info = ReportInfo() + + if len(json_data['ips']) == 0: + report_info.empty = True + for vv in json_data['vulnerable'].values(): for v in vv['vulnerabilities']: - s = Severity(v['severity_str']) + r = ReportInfo(f'Severity{v["severity_str"]}') - if s > max_severity: - max_severity = s + if r > report_info: + report_info = r - with open(f'{json_data["output_path"]}.severity', 'w+') as severity: - severity.write(max_severity.toJSON()) + with open(f'{json_data["output_path"]}.info', 'w+') as info: + info.write(report_info.toJSON()) return self._template.render(data=json_data)