#todo 聚合功能<概况>
This commit is contained in:
parent
017b229240
commit
1df61c4f23
|
@ -10,6 +10,7 @@ import traceback
|
||||||
|
|
||||||
from bson import ObjectId
|
from bson import ObjectId
|
||||||
from fastapi import APIRouter, Depends, BackgroundTasks
|
from fastapi import APIRouter, Depends, BackgroundTasks
|
||||||
|
from pymongo import DESCENDING
|
||||||
|
|
||||||
from api.task import create_scan_task, delete_asset
|
from api.task import create_scan_task, delete_asset
|
||||||
from api.users import verify_token
|
from api.users import verify_token
|
||||||
|
@ -55,3 +56,32 @@ async def get_projects_asset_count(request_data: dict, db=Depends(get_mongo_db),
|
||||||
"subdomainCount": subdomain_count,
|
"subdomainCount": subdomain_count,
|
||||||
"vulCount": vulnerability_count
|
"vulCount": vulnerability_count
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/project/vul/statistics")
|
||||||
|
async def get_projects_vul_statistics(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
||||||
|
id = request_data.get("id", "")
|
||||||
|
pipeline = [
|
||||||
|
{"$match": {"project": id}},
|
||||||
|
{
|
||||||
|
"$group": {
|
||||||
|
"_id": "$level",
|
||||||
|
"count": {"$sum": 1}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
result = await db['vulnerability'].aggregate(pipeline).to_list(None)
|
||||||
|
return {"code": 200, "data": result}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/project/vul/data")
|
||||||
|
async def get_projects_vul_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
||||||
|
id = request_data.get("id", "")
|
||||||
|
cursor: AsyncIOMotorCursor = db.vulnerability.find({"project": id}, {"_id": 0, "url": 1, "vulname": 1, "level": 1, "time": 1, "matched": 1}).sort([("time", DESCENDING)])
|
||||||
|
result = await cursor.to_list(length=None)
|
||||||
|
return {
|
||||||
|
"code": 200,
|
||||||
|
"data": {
|
||||||
|
'list': result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -43,7 +43,6 @@ async def get_system_version(redis_con=Depends(get_redis_pool), _: dict = Depend
|
||||||
scan_lversion = r_json["scan"]
|
scan_lversion = r_json["scan"]
|
||||||
scan_msg = r_json['scan_msg']
|
scan_msg = r_json['scan_msg']
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
# logger.error(traceback.format_exc())
|
|
||||||
logger.error(f"An unexpected error occurred: {e}")
|
logger.error(f"An unexpected error occurred: {e}")
|
||||||
|
|
||||||
result_list = [{"name": "ScopeSentry-Server", "cversion": VERSION, "lversion": server_lversion, "msg": server_msg}]
|
result_list = [{"name": "ScopeSentry-Server", "cversion": VERSION, "lversion": server_lversion, "msg": server_msg}]
|
||||||
|
|
|
@ -34,7 +34,7 @@ async def get_vul_data(request_data: dict, db=Depends(get_mongo_db), _: dict = D
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Perform pagination query
|
# Perform pagination query
|
||||||
cursor: AsyncIOMotorCursor = db.vulnerability.find(query).skip((page_index - 1) * page_size).limit(page_size).sort([("timestamp", DESCENDING)])
|
cursor: AsyncIOMotorCursor = db.vulnerability.find(query).skip((page_index - 1) * page_size).limit(page_size).sort([("time", DESCENDING)])
|
||||||
result = await cursor.to_list(length=None)
|
result = await cursor.to_list(length=None)
|
||||||
# Process the result as needed
|
# Process the result as needed
|
||||||
response_data = []
|
response_data = []
|
||||||
|
|
Loading…
Reference in New Issue