Skip to content
This repository was archived by the owner on Apr 20, 2022. It is now read-only.

Commit 9d8d835

Browse files
authored
Merge pull request #118 from Bidaya0/report-export
fix:report export vul_name incorrect
2 parents 6919b13 + 1286cd4 commit 9d8d835

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

core/plugins/export_report.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from lingzhi_engine.settings import MEDIA_ROOT
2424
from django.utils.translation import gettext as _
2525
from django.utils.translation import activate
26+
from dongtai.models.strategy import IastStrategyModel
2627

2728
import os
2829

@@ -46,19 +47,39 @@ def delete_old_files(path, save_seconds=3600):
4647

4748

4849
def get_vul_count_by_agent(agent_ids, vid, user):
49-
typeInfo = IastVulnerabilityModel.objects.filter(
50-
agent_id__in=agent_ids).values().order_by("level")
50+
queryset = IastVulnerabilityModel.objects.filter(
51+
agent_id__in=agent_ids)
52+
typeInfo = queryset.values().order_by("level")
5153
if vid:
5254
typeInfo = typeInfo.filter(id=vid)
5355
type_summary = []
5456
levelCount = {}
5557
vulDetail = {}
58+
strategy_ids = queryset.values_list('strategy_id',
59+
flat=True).distinct()
60+
strategys = {
61+
strategy['id']: strategy
62+
for strategy in IastStrategyModel.objects.filter(
63+
pk__in=strategy_ids).values('id', 'vul_name').all()
64+
}
65+
hook_type_ids = queryset.values_list('hook_type_id',
66+
flat=True).distinct()
67+
hooktypes = {
68+
hooktype['id']: hooktype
69+
for hooktype in HookType.objects.filter(
70+
pk__in=hook_type_ids).values('id', 'name').all()
71+
}
5672
if typeInfo:
5773
typeArr = {}
5874
typeLevel = {}
5975
for one in typeInfo:
60-
hook_type = HookType.objects.filter(pk=one['hook_type_id']).first()
61-
one['type'] = hook_type.name if hook_type else ''
76+
hook_type = hooktypes.get('hook_type_id', None)
77+
hook_type_name = hook_type['name'] if hook_type else None
78+
strategy = strategys.get('strategy_id', None)
79+
strategy_name = strategy['vul_name'] if strategy else None
80+
type_ = list(
81+
filter(lambda x: x is not None, [strategy_name, hook_type_name]))
82+
one['type']= type_[0] if type_ else ''
6283
typeArr[one['type']] = typeArr.get(one['type'], 0) + 1
6384
typeLevel[one['type']] = one['level_id']
6485
levelCount[one['level_id']] = levelCount.get(one['level_id'], 0) + 1

0 commit comments

Comments
 (0)