50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
# -------------------------------------
|
|
# @file : dirscan.py
|
|
# @author : Autumn
|
|
# @contact : rainy-autumn@outlook.com
|
|
# @time : 2024/5/9 20:22
|
|
# -------------------------------------------
|
|
|
|
from bson import ObjectId
|
|
from fastapi import APIRouter, Depends
|
|
from motor.motor_asyncio import AsyncIOMotorCursor
|
|
from api.users import verify_token
|
|
from core.db import get_mongo_db
|
|
from core.util import search_to_mongodb
|
|
from loguru import logger
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/dirscan/result/data")
|
|
async def dirscan_data(request_data: dict, db=Depends(get_mongo_db), _: dict = Depends(verify_token)):
|
|
try:
|
|
search_query = request_data.get("search", "")
|
|
page_index = request_data.get("pageIndex", 1)
|
|
page_size = request_data.get("pageSize", 10)
|
|
keyword = {
|
|
'project': 'project',
|
|
'statuscode': 'status',
|
|
'url': 'url',
|
|
'redirect': 'msg'
|
|
}
|
|
query = await search_to_mongodb(search_query, keyword)
|
|
if query == "" or query is None:
|
|
return {"message": "Search condition parsing error", "code": 500}
|
|
query = query[0]
|
|
total_count = await db['DirScanResult'].count_documents(query)
|
|
cursor: AsyncIOMotorCursor = ((db['DirScanResult'].find(query, {"_id": 0})
|
|
.sort([('_id', -1)])
|
|
.skip((page_index - 1) * page_size)
|
|
.limit(page_size)))
|
|
result = await cursor.to_list(length=None)
|
|
return {
|
|
"code": 200,
|
|
"data": {
|
|
'list': result,
|
|
'total': total_count
|
|
}
|
|
}
|
|
except Exception as e:
|
|
logger.error(str(e))
|
|
# Handle exceptions as needed
|
|
return {"message": "error", "code": 500} |