Skip to content
Snippets Groups Projects
Commit fb55fb59 authored by Lukas Koenen's avatar Lukas Koenen
Browse files

refactor: report info

parent 6eed154b
No related branches found
No related tags found
No related merge requests found
Pipeline #160972 passed
......@@ -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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment