Skip to content
Snippets Groups Projects
Commit b9bf3512 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 #201338 passed
...@@ -8,26 +8,28 @@ from contrib.descriptions import VulnDescriptionProvider ...@@ -8,26 +8,28 @@ from contrib.descriptions import VulnDescriptionProvider
from contrib.report_builders import JsonReportBuilder from contrib.report_builders import JsonReportBuilder
class Severity: class ReportInfo:
def __init__(self, severity): def __init__(self, severity='SeverityNone', is_empty=False):
self.level = severity self.severity = severity
self.num_level = 0 self.num_severity = 0
if severity == 'Low': self.empty = is_empty
self.num_level = 1
if severity == 'Medium': if severity == 'SeverityLow':
self.num_level = 2 self.num_severity = 1
if severity == 'High': if severity == 'SeverityMedium':
self.num_level = 3 self.num_severity = 2
if severity == 'SeverityHigh':
self.num_severity = 3
def toJSON(self): def toJSON(self):
return json.dumps(self, default=lambda o: o.__dict__, return json.dumps(self, default=lambda o: o.__dict__,
sort_keys=True, indent=4) sort_keys=True, indent=4)
def __lt__(self, other): def __lt__(self, other):
return self.num_level < other.num_level return self.num_severity < other.num_severity
class JinjaHtmlReportBuilder(JsonReportBuilder): class JinjaHtmlReportBuilder(JsonReportBuilder):
...@@ -40,16 +42,20 @@ class JinjaHtmlReportBuilder(JsonReportBuilder): ...@@ -40,16 +42,20 @@ class JinjaHtmlReportBuilder(JsonReportBuilder):
def build(self) -> Any: def build(self) -> Any:
json_data = self._buffer 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 vv in json_data['vulnerable'].values():
for v in vv['vulnerabilities']: for v in vv['vulnerabilities']:
s = Severity(v['severity_str']) r = ReportInfo(f'Severity{v["severity_str"]}')
if s > max_severity: if r > report_info:
max_severity = s report_info = r
with open(f'{json_data["output_path"]}.severity', 'w+') as severity: with open(f'{json_data["output_path"]}.info', 'w+') as info:
severity.write(max_severity.toJSON()) info.write(report_info.toJSON())
return self._template.render(data=json_data) return self._template.render(data=json_data)
......
...@@ -20,7 +20,7 @@ xml_subdir=$xml_dir/$current_time ...@@ -20,7 +20,7 @@ xml_subdir=$xml_dir/$current_time
report_subdir=$report_dir/$current_time report_subdir=$report_dir/$current_time
report_file=report_$current_time.$report_extension report_file=report_$current_time.$report_extension
severity_file=report_$current_time.severity info_file=report_$current_time.info
if [[ ! -z $project ]] if [[ ! -z $project ]]
then then
...@@ -28,7 +28,7 @@ then ...@@ -28,7 +28,7 @@ then
report_subdir=$report_dir/$project/$current_time report_subdir=$report_dir/$project/$current_time
report_file=report_$project\_$current_time.$report_extension report_file=report_$project\_$current_time.$report_extension
severity_file=report_$project\_$current_time.severity info_file=report_$project\_$current_time.info
fi fi
function upload { function upload {
...@@ -87,4 +87,4 @@ then ...@@ -87,4 +87,4 @@ then
sed -i 's/%/\\%/g' $root_dir/$report_dir/$report_file sed -i 's/%/\\%/g' $root_dir/$report_dir/$report_file
fi fi
upload $report_subdir/$report_file upload $report_subdir/$report_file
upload $report_subdir/$severity_file upload $report_subdir/$info_file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment